PS2 Keyboard Handling program Both Ctrl and Alt key are do not handling yet. This program performs the original handling using my keyboard. PS2 clk -> p12 PS2 data -> p11 I thank Shinichiro Nakamura who offered PS2 library.
Dependencies: TextLCD mbed PS2
main.cpp@0:8d515d89ad8c, 2011-05-24 (annotated)
- Committer:
- jf1vrr
- Date:
- Tue May 24 14:29:16 2011 +0000
- Revision:
- 0:8d515d89ad8c
Rev. 0.01A new
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jf1vrr | 0:8d515d89ad8c | 1 | #include "mbed.h" |
jf1vrr | 0:8d515d89ad8c | 2 | #include "TextLCD.h" |
jf1vrr | 0:8d515d89ad8c | 3 | |
jf1vrr | 0:8d515d89ad8c | 4 | #include "PS2Keyboard.h" |
jf1vrr | 0:8d515d89ad8c | 5 | |
jf1vrr | 0:8d515d89ad8c | 6 | TextLCD lcd(p24, p26, p27, p28, p29, p30); |
jf1vrr | 0:8d515d89ad8c | 7 | PS2Keyboard ps2kb(p12, p11); |
jf1vrr | 0:8d515d89ad8c | 8 | |
jf1vrr | 0:8d515d89ad8c | 9 | PS2Keyboard::keyboard_event_t evt_kb; |
jf1vrr | 0:8d515d89ad8c | 10 | |
jf1vrr | 0:8d515d89ad8c | 11 | int shift, ctrl, alt, numlock = 0, capslock = 0; |
jf1vrr | 0:8d515d89ad8c | 12 | |
jf1vrr | 0:8d515d89ad8c | 13 | char kb_getc() { |
jf1vrr | 0:8d515d89ad8c | 14 | char ascii; |
jf1vrr | 0:8d515d89ad8c | 15 | |
jf1vrr | 0:8d515d89ad8c | 16 | ascii = 0; |
jf1vrr | 0:8d515d89ad8c | 17 | while(ascii == 0) { |
jf1vrr | 0:8d515d89ad8c | 18 | if (ps2kb.processing(&evt_kb)) { |
jf1vrr | 0:8d515d89ad8c | 19 | lcd.locate(0, 1); |
jf1vrr | 0:8d515d89ad8c | 20 | for (int i = 0; i < evt_kb.length; i++) { |
jf1vrr | 0:8d515d89ad8c | 21 | lcd.printf("%02X", evt_kb.scancode[i]); |
jf1vrr | 0:8d515d89ad8c | 22 | } |
jf1vrr | 0:8d515d89ad8c | 23 | for (int i = 0; i < 16 - evt_kb.length * 2; i++) { |
jf1vrr | 0:8d515d89ad8c | 24 | lcd.printf("-"); |
jf1vrr | 0:8d515d89ad8c | 25 | } |
jf1vrr | 0:8d515d89ad8c | 26 | if ( evt_kb.length == 1) { |
jf1vrr | 0:8d515d89ad8c | 27 | switch (evt_kb.scancode[0]) { |
jf1vrr | 0:8d515d89ad8c | 28 | //Keyboard mode key -Make- |
jf1vrr | 0:8d515d89ad8c | 29 | case (0x12) : shift = 1; lcd.locate(11,0); lcd.putc('S'); break; |
jf1vrr | 0:8d515d89ad8c | 30 | case (0x59) : shift = 1; lcd.locate(11,0); lcd.putc('S'); break; |
jf1vrr | 0:8d515d89ad8c | 31 | case (0x14) : ctrl = 1; lcd.locate(12,0); lcd.putc('C'); break; |
jf1vrr | 0:8d515d89ad8c | 32 | case (0x11) : alt = 1; lcd.locate(13,0); lcd.putc('A'); break; |
jf1vrr | 0:8d515d89ad8c | 33 | case (0x77) : numlock = (numlock) == 0 ? 1 : 0; |
jf1vrr | 0:8d515d89ad8c | 34 | if (numlock == 1) {lcd.locate(14,0); lcd.putc('N');} |
jf1vrr | 0:8d515d89ad8c | 35 | else {lcd.locate(14,0); lcd.putc(' ');} break; |
jf1vrr | 0:8d515d89ad8c | 36 | case (0x58) : capslock = (shift) == 1 ? !capslock : capslock; |
jf1vrr | 0:8d515d89ad8c | 37 | if (capslock == 1) lcd.locate(15,0), lcd.putc('L'); |
jf1vrr | 0:8d515d89ad8c | 38 | else lcd.locate(15,0), lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 39 | //Character keys(ASCII) -Make- |
jf1vrr | 0:8d515d89ad8c | 40 | case (0x29) : ascii = ' '; break; //space |
jf1vrr | 0:8d515d89ad8c | 41 | case (0x0D) : ascii = 0x09; break; //tab |
jf1vrr | 0:8d515d89ad8c | 42 | case (0x66) : ascii = 0x08; break; //BS |
jf1vrr | 0:8d515d89ad8c | 43 | case (0x5A) : ascii = 0x0D; break; //ENTER |
jf1vrr | 0:8d515d89ad8c | 44 | case (0x76) : ascii = 0x1B; break; //ESC |
jf1vrr | 0:8d515d89ad8c | 45 | case (0x1C) : ascii = (shift + capslock) == 1 ? 'A' : 'a'; break; |
jf1vrr | 0:8d515d89ad8c | 46 | case (0x32) : ascii = (shift + capslock) == 1 ? 'B' : 'b'; break; |
jf1vrr | 0:8d515d89ad8c | 47 | case (0x21) : ascii = (shift + capslock) == 1 ? 'C' : 'c'; break; |
jf1vrr | 0:8d515d89ad8c | 48 | case (0x23) : ascii = (shift + capslock) == 1 ? 'D' : 'd'; break; |
jf1vrr | 0:8d515d89ad8c | 49 | case (0x24) : ascii = (shift + capslock) == 1 ? 'E' : 'e'; break; |
jf1vrr | 0:8d515d89ad8c | 50 | case (0x2B) : ascii = (shift + capslock) == 1 ? 'F' : 'f'; break; |
jf1vrr | 0:8d515d89ad8c | 51 | case (0x34) : ascii = (shift + capslock) == 1 ? 'G' : 'g'; break; |
jf1vrr | 0:8d515d89ad8c | 52 | case (0x33) : ascii = (shift + capslock) == 1 ? 'H' : 'h'; break; |
jf1vrr | 0:8d515d89ad8c | 53 | case (0x43) : ascii = (shift + capslock) == 1 ? 'I' : 'i'; break; |
jf1vrr | 0:8d515d89ad8c | 54 | case (0x3B) : ascii = (shift + capslock) == 1 ? 'J' : 'j'; break; |
jf1vrr | 0:8d515d89ad8c | 55 | case (0x42) : ascii = (shift + capslock) == 1 ? 'K' : 'k'; break; |
jf1vrr | 0:8d515d89ad8c | 56 | case (0x4B) : ascii = (shift + capslock) == 1 ? 'L' : 'l'; break; |
jf1vrr | 0:8d515d89ad8c | 57 | case (0x3A) : ascii = (shift + capslock) == 1 ? 'M' : 'm'; break; |
jf1vrr | 0:8d515d89ad8c | 58 | case (0x31) : ascii = (shift + capslock) == 1 ? 'N' : 'n'; break; |
jf1vrr | 0:8d515d89ad8c | 59 | case (0x44) : ascii = (shift + capslock) == 1 ? 'O' : 'o'; break; |
jf1vrr | 0:8d515d89ad8c | 60 | case (0x4D) : ascii = (shift + capslock) == 1 ? 'P' : 'p'; break; |
jf1vrr | 0:8d515d89ad8c | 61 | case (0x15) : ascii = (shift + capslock) == 1 ? 'Q' : 'q'; break; |
jf1vrr | 0:8d515d89ad8c | 62 | case (0x2D) : ascii = (shift + capslock) == 1 ? 'R' : 'r'; break; |
jf1vrr | 0:8d515d89ad8c | 63 | case (0x1B) : ascii = (shift + capslock) == 1 ? 'S' : 's'; break; |
jf1vrr | 0:8d515d89ad8c | 64 | case (0x2C) : ascii = (shift + capslock) == 1 ? 'T' : 't'; break; |
jf1vrr | 0:8d515d89ad8c | 65 | case (0x3C) : ascii = (shift + capslock) == 1 ? 'U' : 'u'; break; |
jf1vrr | 0:8d515d89ad8c | 66 | case (0x2A) : ascii = (shift + capslock) == 1 ? 'V' : 'v'; break; |
jf1vrr | 0:8d515d89ad8c | 67 | case (0x1D) : ascii = (shift + capslock) == 1 ? 'W' : 'w'; break; |
jf1vrr | 0:8d515d89ad8c | 68 | case (0x22) : ascii = (shift + capslock) == 1 ? 'X' : 'x'; break; |
jf1vrr | 0:8d515d89ad8c | 69 | case (0x35) : ascii = (shift + capslock) == 1 ? 'Y' : 'y'; break; |
jf1vrr | 0:8d515d89ad8c | 70 | case (0x1A) : ascii = (shift + capslock) == 1 ? 'Z' : 'z'; break; |
jf1vrr | 0:8d515d89ad8c | 71 | case (0x45) : ascii = shift == 1 ? '0' : '0'; break; |
jf1vrr | 0:8d515d89ad8c | 72 | case (0x16) : ascii = shift == 1 ? '!' : '1'; break; |
jf1vrr | 0:8d515d89ad8c | 73 | case (0x1E) : ascii = shift == 1 ? '"' : '2'; break; |
jf1vrr | 0:8d515d89ad8c | 74 | case (0x26) : ascii = shift == 1 ? '#' : '3'; break; |
jf1vrr | 0:8d515d89ad8c | 75 | case (0x25) : ascii = shift == 1 ? '$' : '4'; break; |
jf1vrr | 0:8d515d89ad8c | 76 | case (0x2E) : ascii = shift == 1 ? '%' : '5'; break; |
jf1vrr | 0:8d515d89ad8c | 77 | case (0x36) : ascii = shift == 1 ? '&' : '6'; break; |
jf1vrr | 0:8d515d89ad8c | 78 | case (0x3D) : ascii = shift == 1 ? '\'' : '7'; break; |
jf1vrr | 0:8d515d89ad8c | 79 | case (0x3E) : ascii = shift == 1 ? '(' : '8'; break; |
jf1vrr | 0:8d515d89ad8c | 80 | case (0x46) : ascii = shift == 1 ? ')' : '9'; break; |
jf1vrr | 0:8d515d89ad8c | 81 | case (0x4E) : ascii = shift == 1 ? '=' : '-'; break; |
jf1vrr | 0:8d515d89ad8c | 82 | case (0x7B) : ascii = shift == 1 ? '-' : '-'; break; |
jf1vrr | 0:8d515d89ad8c | 83 | case (0x4A) : ascii = shift == 1 ? '?' : '/'; break; |
jf1vrr | 0:8d515d89ad8c | 84 | case (0x41) : ascii = shift == 1 ? '<' : ','; break; |
jf1vrr | 0:8d515d89ad8c | 85 | case (0x49) : ascii = shift == 1 ? '>' : '.'; break; |
jf1vrr | 0:8d515d89ad8c | 86 | case (0x6A) : ascii = shift == 1 ? '|' : '\\'; break; |
jf1vrr | 0:8d515d89ad8c | 87 | case (0x5B) : ascii = shift == 1 ? '{' : '['; break; |
jf1vrr | 0:8d515d89ad8c | 88 | case (0x5D) : ascii = shift == 1 ? '}' : ']'; break; |
jf1vrr | 0:8d515d89ad8c | 89 | case (0x4C) : ascii = shift == 1 ? '+' : ';'; break; |
jf1vrr | 0:8d515d89ad8c | 90 | case (0x79) : ascii = shift == 1 ? '+' : '+'; break; |
jf1vrr | 0:8d515d89ad8c | 91 | case (0x51) : ascii = shift == 1 ? '_' : '\\'; break; |
jf1vrr | 0:8d515d89ad8c | 92 | case (0x54) : ascii = shift == 1 ? '`' : '@'; break; |
jf1vrr | 0:8d515d89ad8c | 93 | case (0x55) : ascii = shift == 1 ? '~' : '^'; break; |
jf1vrr | 0:8d515d89ad8c | 94 | case (0x7C) : ascii = shift == 1 ? '*' : '*'; break; |
jf1vrr | 0:8d515d89ad8c | 95 | case (0x52) : ascii = shift == 1 ? '*' : ':'; break; |
jf1vrr | 0:8d515d89ad8c | 96 | //Function keys -Make- |
jf1vrr | 0:8d515d89ad8c | 97 | case (0x05) : ascii = 0x05; break; //F1 |
jf1vrr | 0:8d515d89ad8c | 98 | case (0x06) : ascii = 0x06; break; //F2 |
jf1vrr | 0:8d515d89ad8c | 99 | case (0x04) : ascii = 0x04; break; //F3 |
jf1vrr | 0:8d515d89ad8c | 100 | case (0x0C) : ascii = 0x12; break; //F4 |
jf1vrr | 0:8d515d89ad8c | 101 | case (0x03) : ascii = 0x03; break; //F5 |
jf1vrr | 0:8d515d89ad8c | 102 | case (0x0B) : ascii = 0x11; break; //F6 |
jf1vrr | 0:8d515d89ad8c | 103 | case (0x83) : ascii = 0x13; break; //F7 |
jf1vrr | 0:8d515d89ad8c | 104 | case (0x0A) : ascii = 0x10; break; //F8 |
jf1vrr | 0:8d515d89ad8c | 105 | case (0x01) : ascii = 0x01; break; //F9 |
jf1vrr | 0:8d515d89ad8c | 106 | case (0x09) : ascii = 0x02; break; //F10 |
jf1vrr | 0:8d515d89ad8c | 107 | case (0x78) : ascii = 0x14; break; //F11 |
jf1vrr | 0:8d515d89ad8c | 108 | case (0x07) : ascii = 0x07; break; //F12 |
jf1vrr | 0:8d515d89ad8c | 109 | //Tenkeys -Make- |
jf1vrr | 0:8d515d89ad8c | 110 | case (0x75) : ascii = numlock == 1 ? '8' : 0x15; break; //UP |
jf1vrr | 0:8d515d89ad8c | 111 | case (0x72) : ascii = numlock == 1 ? '2' : 0x16; break; //DOWN |
jf1vrr | 0:8d515d89ad8c | 112 | case (0x6B) : ascii = numlock == 1 ? '4' : 0x17; break; //LEFT |
jf1vrr | 0:8d515d89ad8c | 113 | case (0x74) : ascii = numlock == 1 ? '6' : 0x18; break; //RIGHT |
jf1vrr | 0:8d515d89ad8c | 114 | case (0x6C) : ascii = numlock == 1 ? '7' : 0x1C; break; //HOME |
jf1vrr | 0:8d515d89ad8c | 115 | case (0x69) : ascii = numlock == 1 ? '1' : 0x1D; break; //END |
jf1vrr | 0:8d515d89ad8c | 116 | case (0x70) : ascii = numlock == 1 ? '0' : 0x1E; break; //INS |
jf1vrr | 0:8d515d89ad8c | 117 | case (0x7D) : ascii = numlock == 1 ? '9' : 0x19; break; //PAGE UP |
jf1vrr | 0:8d515d89ad8c | 118 | case (0x7A) : ascii = numlock == 1 ? '3' : 0x1A; break; //PAGE DOWN |
jf1vrr | 0:8d515d89ad8c | 119 | case (0x71) : ascii = numlock == 1 ? '.' : 0x7F; break; //DEL |
jf1vrr | 0:8d515d89ad8c | 120 | case (0x73) : ascii = numlock == 1 ? '5' : '5'; break; |
jf1vrr | 0:8d515d89ad8c | 121 | } |
jf1vrr | 0:8d515d89ad8c | 122 | } else { |
jf1vrr | 0:8d515d89ad8c | 123 | //Keyboard mode key -Break- F0xx |
jf1vrr | 0:8d515d89ad8c | 124 | if ( evt_kb.length == 2 && evt_kb.scancode[0] == 0xF0) { |
jf1vrr | 0:8d515d89ad8c | 125 | switch (evt_kb.scancode[1]) { |
jf1vrr | 0:8d515d89ad8c | 126 | case (0x12) : shift = 0; lcd.locate(11,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 127 | case (0x59) : shift = 0; lcd.locate(11,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 128 | case (0x14) : ctrl = 0; lcd.locate(12,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 129 | case (0x11) : alt = 0; lcd.locate(13,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 130 | } |
jf1vrr | 0:8d515d89ad8c | 131 | } else { |
jf1vrr | 0:8d515d89ad8c | 132 | //Keyboard right mode keys, Arrow, Del -Make- E0xx |
jf1vrr | 0:8d515d89ad8c | 133 | if ( evt_kb.length == 2 && evt_kb.scancode[0] == 0xE0) { |
jf1vrr | 0:8d515d89ad8c | 134 | switch (evt_kb.scancode[1]) { |
jf1vrr | 0:8d515d89ad8c | 135 | case (0x14) : ctrl = 0; lcd.locate(12,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 136 | case (0x11) : alt = 0; lcd.locate(13,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 137 | case (0x4A) : ascii = '/'; break; |
jf1vrr | 0:8d515d89ad8c | 138 | case (0x75) : ascii = 0x15; break; //UP |
jf1vrr | 0:8d515d89ad8c | 139 | case (0x72) : ascii = 0x16; break; //DOWN |
jf1vrr | 0:8d515d89ad8c | 140 | case (0x6B) : ascii = 0x17; break; //LEFT |
jf1vrr | 0:8d515d89ad8c | 141 | case (0x74) : ascii = 0x18; break; //RIGHT |
jf1vrr | 0:8d515d89ad8c | 142 | case (0x70) : ascii = 0x1E; break; //INSERT |
jf1vrr | 0:8d515d89ad8c | 143 | case (0x71) : ascii = 0x7F; break; //DEL |
jf1vrr | 0:8d515d89ad8c | 144 | case (0x5A) : ascii = 0x0D; break; //ENTER |
jf1vrr | 0:8d515d89ad8c | 145 | } |
jf1vrr | 0:8d515d89ad8c | 146 | } else { |
jf1vrr | 0:8d515d89ad8c | 147 | //Keyboard right mode keys -Break- E0F0xx |
jf1vrr | 0:8d515d89ad8c | 148 | if ( evt_kb.length == 3 && evt_kb.scancode[0] == 0xE0 && evt_kb.scancode[1] == 0xF0) { |
jf1vrr | 0:8d515d89ad8c | 149 | switch (evt_kb.scancode[2]) { |
jf1vrr | 0:8d515d89ad8c | 150 | case (0x14) : ctrl = 0; lcd.locate(12,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 151 | case (0x11) : alt = 0; lcd.locate(13,0); lcd.putc(' '); break; |
jf1vrr | 0:8d515d89ad8c | 152 | } |
jf1vrr | 0:8d515d89ad8c | 153 | } |
jf1vrr | 0:8d515d89ad8c | 154 | } |
jf1vrr | 0:8d515d89ad8c | 155 | } |
jf1vrr | 0:8d515d89ad8c | 156 | } |
jf1vrr | 0:8d515d89ad8c | 157 | } |
jf1vrr | 0:8d515d89ad8c | 158 | } //while(ascii == 0) |
jf1vrr | 0:8d515d89ad8c | 159 | return ascii; |
jf1vrr | 0:8d515d89ad8c | 160 | } //kb_getc() |
jf1vrr | 0:8d515d89ad8c | 161 | |
jf1vrr | 0:8d515d89ad8c | 162 | int main() { |
jf1vrr | 0:8d515d89ad8c | 163 | char chr; |
jf1vrr | 0:8d515d89ad8c | 164 | |
jf1vrr | 0:8d515d89ad8c | 165 | lcd.locate(0, 0); |
jf1vrr | 0:8d515d89ad8c | 166 | lcd.printf("PS/2 Keyboard"); |
jf1vrr | 0:8d515d89ad8c | 167 | wait(2.0); |
jf1vrr | 0:8d515d89ad8c | 168 | |
jf1vrr | 0:8d515d89ad8c | 169 | lcd.cls(); |
jf1vrr | 0:8d515d89ad8c | 170 | while (1) { |
jf1vrr | 0:8d515d89ad8c | 171 | chr = kb_getc(); |
jf1vrr | 0:8d515d89ad8c | 172 | lcd.locate(0, 1); //Scan code |
jf1vrr | 0:8d515d89ad8c | 173 | for (int i = 0; i < evt_kb.length; i++) { |
jf1vrr | 0:8d515d89ad8c | 174 | lcd.printf("%02X", evt_kb.scancode[i]); |
jf1vrr | 0:8d515d89ad8c | 175 | } |
jf1vrr | 0:8d515d89ad8c | 176 | for (int i = 0; i < 16 - evt_kb.length * 2; i++) { |
jf1vrr | 0:8d515d89ad8c | 177 | lcd.printf("-"); |
jf1vrr | 0:8d515d89ad8c | 178 | } |
jf1vrr | 0:8d515d89ad8c | 179 | lcd.locate(0,0); |
jf1vrr | 0:8d515d89ad8c | 180 | lcd.printf(" "); |
jf1vrr | 0:8d515d89ad8c | 181 | lcd.locate(0,0); //Character name or key name |
jf1vrr | 0:8d515d89ad8c | 182 | if (chr != 0) { |
jf1vrr | 0:8d515d89ad8c | 183 | switch (chr) { |
jf1vrr | 0:8d515d89ad8c | 184 | case (0x01) : lcd.printf("F9"); break; |
jf1vrr | 0:8d515d89ad8c | 185 | case (0x02) : lcd.printf("F10"); break; |
jf1vrr | 0:8d515d89ad8c | 186 | case (0x03) : lcd.printf("F5"); break; |
jf1vrr | 0:8d515d89ad8c | 187 | case (0x04) : lcd.printf("F3"); break; |
jf1vrr | 0:8d515d89ad8c | 188 | case (0x05) : lcd.printf("F1"); break; |
jf1vrr | 0:8d515d89ad8c | 189 | case (0x06) : lcd.printf("F2"); break; |
jf1vrr | 0:8d515d89ad8c | 190 | case (0x07) : lcd.printf("F12"); break; |
jf1vrr | 0:8d515d89ad8c | 191 | case (0x08) : lcd.printf("BS"); break; |
jf1vrr | 0:8d515d89ad8c | 192 | case (0x09) : lcd.printf("TAB"); break; |
jf1vrr | 0:8d515d89ad8c | 193 | case (0x0D) : lcd.printf("ENTER"); break; |
jf1vrr | 0:8d515d89ad8c | 194 | case (0x10) : lcd.printf("F8"); break; |
jf1vrr | 0:8d515d89ad8c | 195 | case (0x11) : lcd.printf("F6"); break; |
jf1vrr | 0:8d515d89ad8c | 196 | case (0x12) : lcd.printf("F4"); break; |
jf1vrr | 0:8d515d89ad8c | 197 | case (0x13) : lcd.printf("F7"); break; |
jf1vrr | 0:8d515d89ad8c | 198 | case (0x14) : lcd.printf("F11"); break; |
jf1vrr | 0:8d515d89ad8c | 199 | case (0x15) : lcd.printf("UP ARROW"); break; |
jf1vrr | 0:8d515d89ad8c | 200 | case (0x16) : lcd.printf("DOWN ARROW"); break; |
jf1vrr | 0:8d515d89ad8c | 201 | case (0x17) : lcd.printf("LEFT ARROW"); break; |
jf1vrr | 0:8d515d89ad8c | 202 | case (0x18) : lcd.printf("RIGHT ARROW"); break; |
jf1vrr | 0:8d515d89ad8c | 203 | case (0x19) : lcd.printf("PAGE UP"); break; |
jf1vrr | 0:8d515d89ad8c | 204 | case (0x1A) : lcd.printf("PAGE DOWN"); break; |
jf1vrr | 0:8d515d89ad8c | 205 | case (0x1B) : lcd.printf("ESC"); break; |
jf1vrr | 0:8d515d89ad8c | 206 | case (0x1C) : lcd.printf("HOME"); break; |
jf1vrr | 0:8d515d89ad8c | 207 | case (0x1D) : lcd.printf("END"); break; |
jf1vrr | 0:8d515d89ad8c | 208 | case (0x1E) : lcd.printf("INS"); break; |
jf1vrr | 0:8d515d89ad8c | 209 | case (0x7F) : lcd.printf("DEL"); break; |
jf1vrr | 0:8d515d89ad8c | 210 | default: lcd.printf("ASCII %c", chr); break; // ASCII character |
jf1vrr | 0:8d515d89ad8c | 211 | } |
jf1vrr | 0:8d515d89ad8c | 212 | } |
jf1vrr | 0:8d515d89ad8c | 213 | } //while(1) |
jf1vrr | 0:8d515d89ad8c | 214 | } //main() |