module spec_trans(scan_code,byte,bit, shift,ss); input [7:0] scan_code; output reg [2:0] byte; output reg [2:0] bit; output reg shift,ss; /* 7 6 5 4 3 2 1 0 4 B H Y 6 5 T G V 3 N J U 7 4 R F C 2 M K I 8 3 E D X 1 SYMBOL L 0 9 2 W S Z SHIFT 0 SPACE ENTER P 0 1 Q A shift */ always @(scan_code) begin shift <= 0; case (scan_code) 8'h74 : begin // => byte <= 2; bit <= 4; shift <= 1; // 8 end 8'h75 : begin // UP byte <= 3; bit <= 4; shift <= 1; // 7 end 8'h6b : begin // <= byte <= 4; bit <= 3; shift <= 1; // 5 end 8'h72 : begin // DOWN byte <= 4; bit <= 4; shift <= 1; // 6 end 8'h66: begin // backspace map to shift-0 byte <= 0; bit <= 4; shift <= 1; end 8'h59: begin // right shift byte <= 0; bit <= 0; shift <= 1; end 8'h12: begin // shift byte <= 0; bit <= 0; end 8'h11: begin // alt byte <= 1; bit <= 7; end 8'h5a: begin // Carriage return ("enter" key) byte <= 0; bit <= 6; end 8'h29 : begin // Space byte <= 0; bit <= 7; end 8'h45 : begin byte <= 0; bit <= 4; // 0 end 8'h16 : begin byte <= 0; bit <= 3; // 1 end 8'h1e : begin byte <= 1; bit <= 3; // 2 end 8'h26 : begin byte <= 2; bit <= 3; // 3 end 8'h25 : begin byte <= 3; bit <= 3; // 4 end 8'h2e : begin byte <= 4; bit <= 3; // 5 end 8'h36 : begin byte <= 4; bit <= 4; // 6 end 8'h3d : begin byte <= 3; bit <= 4; // 7 end 8'h3e : begin byte <= 2; bit <= 4; // 8 end 8'h46 : begin byte <= 1; bit <= 4; // 9 end 8'h1c : begin byte <= 0; bit <= 1; // a end 8'h32 : begin byte <= 4; bit <= 7; // b end 8'h21 : begin byte <= 3; bit <= 0; // c end 8'h23 : begin byte <= 2; bit <= 1; // d end 8'h24 : begin byte <= 2; bit <= 2; // e end 8'h2b : begin byte <= 3; bit <= 1; // f end 8'h34 : begin byte <= 4; bit <= 1; // g end 8'h33 : begin byte <= 4; bit <= 6; // h end 8'h43 : begin byte <= 2; bit <= 5; // i end 8'h3b : begin byte <= 3; bit <= 6; // j end 8'h42 : begin byte <= 2; bit <= 6; // k end 8'h4b : begin byte <= 1; bit <= 6; // l end 8'h3a : begin byte <= 2; bit <= 7; // m end 8'h31 : begin byte <= 3; bit <= 7; // n end 8'h44 : begin byte <= 1; bit <= 5; // o end 8'h4d : begin byte <= 0; bit <= 5; // p end 8'h15 : begin byte <= 0; bit <= 2; // q end 8'h2d : begin byte <= 3; bit <= 2; // r end 8'h1b : begin byte <= 1; bit <= 1; // s end 8'h2c : begin byte <= 4; bit <= 2; // t end 8'h3c : begin byte <= 3; bit <= 5; // u end 8'h2a : begin byte <= 4; bit <= 0; // v end 8'h1d : begin byte <= 1; bit <= 2; // w end 8'h22 : begin byte <= 2; bit <= 0; // x end 8'h35 : begin byte <= 4; bit <= 5; // y end 8'h1a : begin byte <= 1; bit <= 0; // z end default : begin byte <= 5; bit <= 7; // 0x00 used for unlisted characters. end endcase end //always endmodule