keyboard handle maj
This commit is contained in:
parent
7429ab83c8
commit
6dd33393df
5 changed files with 687 additions and 10 deletions
258
kernel-rs/keycode
Normal file
258
kernel-rs/keycode
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
0x01 escape pressed
|
||||
0x02 1 pressed
|
||||
0x03 2 pressed
|
||||
0x04 3 pressed
|
||||
0x05 4 pressed
|
||||
0x06 5 pressed
|
||||
0x07 6 pressed
|
||||
0x08 7 pressed
|
||||
0x09 8 pressed
|
||||
0x0A 9 pressed
|
||||
0x0B 0 (zero) pressed
|
||||
0x0C - pressed
|
||||
0x0D = pressed
|
||||
0x0E backspace pressed
|
||||
0x0F tab pressed
|
||||
0x10 Q pressed
|
||||
0x11 W pressed
|
||||
0x12 E pressed
|
||||
0x13 R pressed
|
||||
0x14 T pressed
|
||||
0x15 Y pressed
|
||||
0x16 U pressed
|
||||
0x17 I pressed
|
||||
0x18 O pressed
|
||||
0x19 P pressed
|
||||
0x1A [ pressed
|
||||
0x1B ] pressed
|
||||
0x1C enter pressed
|
||||
0x1D left control pressed
|
||||
0x1E A pressed
|
||||
0x1F S pressed
|
||||
0x20 D pressed
|
||||
0x21 F pressed
|
||||
0x22 G pressed
|
||||
0x23 H pressed
|
||||
0x24 J pressed
|
||||
0x25 K pressed
|
||||
0x26 L pressed
|
||||
0x27 ; pressed
|
||||
0x28 ' (single quote) pressed
|
||||
0x29 ` (back tick) pressed
|
||||
0x2A left shift pressed
|
||||
0x2B \ pressed
|
||||
0x2C Z pressed
|
||||
0x2D X pressed
|
||||
0x2E C pressed
|
||||
0x2F V pressed
|
||||
0x30 B pressed
|
||||
0x31 N pressed
|
||||
0x32 M pressed
|
||||
0x33 , pressed
|
||||
0x34 . pressed
|
||||
0x35 / pressed
|
||||
0x36 right shift pressed
|
||||
0x37 (keypad) * pressed
|
||||
0x38 left alt pressed
|
||||
0x39 space pressed
|
||||
0x3A CapsLock pressed
|
||||
0x3B F1 pressed
|
||||
0x3C F2 pressed
|
||||
0x3D F3 pressed
|
||||
0x3E F4 pressed
|
||||
0x3F F5 pressed
|
||||
0x40 F6 pressed
|
||||
0x41 F7 pressed
|
||||
0x42 F8 pressed
|
||||
0x43 F9 pressed
|
||||
0x44 F10 pressed
|
||||
0x45 NumberLock pressed
|
||||
0x46 ScrollLock pressed
|
||||
0x47 (keypad) 7 pressed
|
||||
0x48 (keypad) 8 pressed
|
||||
0x49 (keypad) 9 pressed
|
||||
0x4A (keypad) - pressed
|
||||
0x4B (keypad) 4 pressed
|
||||
0x4C (keypad) 5 pressed
|
||||
0x4D (keypad) 6 pressed
|
||||
0x4E (keypad) + pressed
|
||||
0x4F (keypad) 1 pressed
|
||||
0x50 (keypad) 2 pressed
|
||||
0x51 (keypad) 3 pressed
|
||||
0x52 (keypad) 0 pressed
|
||||
0x53 (keypad) . pressed
|
||||
0x57 F11 pressed
|
||||
0x58 F12 pressed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
0x81 escape released
|
||||
0x82 1 released
|
||||
0x83 2 released
|
||||
0x84 3 released
|
||||
0x85 4 released
|
||||
0x86 5 released
|
||||
0x87 6 released
|
||||
0x88 7 released
|
||||
0x89 8 released
|
||||
0x8A 9 released
|
||||
0x8B 0 (zero) released
|
||||
0x8C - released
|
||||
0x8D = released
|
||||
0x8E backspace released
|
||||
0x8F tab released
|
||||
0x90 Q released
|
||||
0x91 W released
|
||||
0x92 E released
|
||||
0x93 R released
|
||||
0x94 T released
|
||||
0x95 Y released
|
||||
0x96 U released
|
||||
0x97 I released
|
||||
0x98 O released
|
||||
0x99 P released
|
||||
0x9A [ released
|
||||
0x9B ] released
|
||||
0x9C enter released
|
||||
0x9D left control released
|
||||
0x9E A released
|
||||
0x9F S released
|
||||
0xA0 D released
|
||||
0xA1 F released
|
||||
0xA2 G released
|
||||
0xA3 H released
|
||||
0xA4 J released
|
||||
0xA5 K released
|
||||
0xA6 L released
|
||||
0xA7 ; released
|
||||
0xA8 ' (single quote) released
|
||||
0xA9 ` (back tick) released
|
||||
0xAA left shift released
|
||||
0xAB \ released
|
||||
0xAC Z released
|
||||
0xAD X released
|
||||
0xAE C released
|
||||
0xAF V released
|
||||
0xB0 B released
|
||||
0xB1 N released
|
||||
0xB2 M released
|
||||
0xB3 , released
|
||||
0xB4 . released
|
||||
0xB5 / released
|
||||
0xB6 right shift released
|
||||
0xB7 (keypad) * released
|
||||
0xB8 left alt released
|
||||
0xB9 space released
|
||||
0xBA CapsLock released
|
||||
0xBB F1 released
|
||||
0xBC F2 released
|
||||
0xBD F3 released
|
||||
0xBE F4 released
|
||||
0xBF F5 released
|
||||
0xC0 F6 released
|
||||
0xC1 F7 released
|
||||
0xC2 F8 released
|
||||
0xC3 F9 released
|
||||
0xC4 F10 released
|
||||
0xC5 NumberLock released
|
||||
0xC6 ScrollLock released
|
||||
0xC7 (keypad) 7 released
|
||||
0xC8 (keypad) 8 released
|
||||
0xC9 (keypad) 9 released
|
||||
0xCA (keypad) - released
|
||||
0xCB (keypad) 4 released
|
||||
0xCC (keypad) 5 released
|
||||
0xCD (keypad) 6 released
|
||||
0xCE (keypad) + released
|
||||
0xCF (keypad) 1 released
|
||||
0xD0 (keypad) 2 released
|
||||
0xD1 (keypad) 3 released
|
||||
0xD2 (keypad) 0 released
|
||||
0xD3 (keypad) . released
|
||||
0xD7 F11 released
|
||||
0xD8 F12 released
|
||||
0xE0, 0x10 (multimedia) previous track pressed
|
||||
0xE0, 0x19 (multimedia) next track pressed
|
||||
0xE0, 0x1C (keypad) enter pressed
|
||||
0xE0, 0x1D right control pressed
|
||||
0xE0, 0x20 (multimedia) mute pressed
|
||||
0xE0, 0x21 (multimedia) calculator pressed
|
||||
0xE0, 0x22 (multimedia) play pressed
|
||||
0xE0, 0x24 (multimedia) stop pressed
|
||||
0xE0, 0x2E (multimedia) volume down pressed
|
||||
0xE0, 0x30 (multimedia) volume up pressed
|
||||
0xE0, 0x32 (multimedia) WWW home pressed
|
||||
0xE0, 0x35 (keypad) / pressed
|
||||
0xE0, 0x38 right alt (or altGr) pressed
|
||||
0xE0, 0x47 home pressed
|
||||
0xE0, 0x48 cursor up pressed
|
||||
0xE0, 0x49 page up pressed
|
||||
0xE0, 0x4B cursor left pressed
|
||||
0xE0, 0x4D cursor right pressed
|
||||
0xE0, 0x4F end pressed
|
||||
0xE0, 0x50 cursor down pressed
|
||||
0xE0, 0x51 page down pressed
|
||||
0xE0, 0x52 insert pressed
|
||||
0xE0, 0x53 delete pressed
|
||||
0xE0, 0x5B left GUI pressed
|
||||
0xE0, 0x5C right GUI pressed
|
||||
0xE0, 0x5D "apps" pressed
|
||||
0xE0, 0x5E (ACPI) power pressed
|
||||
0xE0, 0x5F (ACPI) sleep pressed
|
||||
0xE0, 0x63 (ACPI) wake pressed
|
||||
0xE0, 0x65 (multimedia) WWW search pressed
|
||||
0xE0, 0x66 (multimedia) WWW favorites pressed
|
||||
0xE0, 0x67 (multimedia) WWW refresh pressed
|
||||
0xE0, 0x68 (multimedia) WWW stop pressed
|
||||
0xE0, 0x69 (multimedia) WWW forward pressed
|
||||
0xE0, 0x6A (multimedia) WWW back pressed
|
||||
0xE0, 0x6B (multimedia) my computer pressed
|
||||
0xE0, 0x6C (multimedia) email pressed
|
||||
0xE0, 0x6D (multimedia) media select pressed
|
||||
0xE0, 0x90 (multimedia) previous track released
|
||||
0xE0, 0x99 (multimedia) next track released
|
||||
0xE0, 0x9C (keypad) enter released
|
||||
0xE0, 0x9D right control released
|
||||
0xE0, 0xA0 (multimedia) mute released
|
||||
0xE0, 0xA1 (multimedia) calculator released
|
||||
0xE0, 0xA2 (multimedia) play released
|
||||
0xE0, 0xA4 (multimedia) stop released
|
||||
0xE0, 0xAE (multimedia) volume down released
|
||||
0xE0, 0xB0 (multimedia) volume up released
|
||||
0xE0, 0xB2 (multimedia) WWW home released
|
||||
0xE0, 0xB5 (keypad) / released
|
||||
0xE0, 0xB8 right alt (or altGr) released
|
||||
0xE0, 0xC7 home released
|
||||
0xE0, 0xC8 cursor up released
|
||||
0xE0, 0xC9 page up released
|
||||
0xE0, 0xCB cursor left released
|
||||
0xE0, 0xCD cursor right released
|
||||
0xE0, 0xCF end released
|
||||
0xE0, 0xD0 cursor down released
|
||||
0xE0, 0xD1 page down released
|
||||
0xE0, 0xD2 insert released
|
||||
0xE0, 0xD3 delete released
|
||||
0xE0, 0xDB left GUI released
|
||||
0xE0, 0xDC right GUI released
|
||||
0xE0, 0xDD "apps" released
|
||||
0xE0, 0xDE (ACPI) power released
|
||||
0xE0, 0xDF (ACPI) sleep released
|
||||
0xE0, 0xE3 (ACPI) wake released
|
||||
0xE0, 0xE5 (multimedia) WWW search released
|
||||
0xE0, 0xE6 (multimedia) WWW favorites released
|
||||
0xE0, 0xE7 (multimedia) WWW refresh released
|
||||
0xE0, 0xE8 (multimedia) WWW stop released
|
||||
0xE0, 0xE9 (multimedia) WWW forward released
|
||||
0xE0, 0xEA (multimedia) WWW back released
|
||||
0xE0, 0xEB (multimedia) my computer released
|
||||
0xE0, 0xEC (multimedia) email released
|
||||
0xE0, 0xED (multimedia) media select released
|
||||
0xE0, 0x2A, 0xE0, 0x37 print screen pressed
|
||||
0xE0, 0xB7, 0xE0, 0xAA print screen released
|
||||
0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5 pause pressed
|
||||
249
kernel-rs/keycode2
Normal file
249
kernel-rs/keycode2
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
0x01 F9 pressed
|
||||
0x03 F5 pressed
|
||||
0x04 F3 pressed
|
||||
0x05 F1 pressed
|
||||
0x06 F2 pressed
|
||||
0x07 F12 pressed
|
||||
0x09 F10 pressed
|
||||
0x0A F8 pressed
|
||||
0x0B F6 pressed
|
||||
0x0C F4 pressed
|
||||
0x0D tab pressed
|
||||
0x0E ` (back tick) pressed
|
||||
0x11 left alt pressed
|
||||
0x12 left shift pressed
|
||||
0x14 left control pressed
|
||||
0x15 Q pressed
|
||||
0x16 1 pressed
|
||||
0x1A Z pressed
|
||||
0x1B S pressed
|
||||
0x1C A pressed
|
||||
0x1D W pressed
|
||||
0x1E 2 pressed
|
||||
0x21 C pressed
|
||||
0x22 X pressed
|
||||
0x23 D pressed
|
||||
0x24 E pressed
|
||||
0x25 4 pressed
|
||||
0x26 3 pressed
|
||||
0x29 space pressed
|
||||
0x2A V pressed
|
||||
0x2B F pressed
|
||||
0x2C T pressed
|
||||
0x2D R pressed
|
||||
0x2E 5 pressed
|
||||
0x31 N pressed
|
||||
0x32 B pressed
|
||||
0x33 H pressed
|
||||
0x34 G pressed
|
||||
0x35 Y pressed
|
||||
0x36 6 pressed
|
||||
0x3A M pressed
|
||||
0x3B J pressed
|
||||
0x3C U pressed
|
||||
0x3D 7 pressed
|
||||
0x3E 8 pressed
|
||||
0x41 , pressed
|
||||
0x42 K pressed
|
||||
0x43 I pressed
|
||||
0x44 O pressed
|
||||
0x45 0 (zero) pressed
|
||||
0x46 9 pressed
|
||||
0x49 . pressed
|
||||
0x4A / pressed
|
||||
0x4B L pressed
|
||||
0x4C ; pressed
|
||||
0x4D P pressed
|
||||
0x4E - pressed
|
||||
0x52 ' pressed
|
||||
0x54 [ pressed
|
||||
0x55 = pressed
|
||||
0x58 CapsLock pressed
|
||||
0x59 right shift pressed
|
||||
0x5A enter pressed
|
||||
0x5B ] pressed
|
||||
0x5D \ pressed
|
||||
0x66 backspace pressed
|
||||
0x69 (keypad) 1 pressed
|
||||
0x6B (keypad) 4 pressed
|
||||
0x6C (keypad) 7 pressed
|
||||
0x70 (keypad) 0 pressed
|
||||
0x71 (keypad) . pressed
|
||||
0x72 (keypad) 2 pressed
|
||||
0x73 (keypad) 5 pressed
|
||||
0x74 (keypad) 6 pressed
|
||||
0x75 (keypad) 8 pressed
|
||||
0x76 escape pressed
|
||||
0x77 NumberLock pressed
|
||||
0x78 F11 pressed
|
||||
0x79 (keypad) + pressed
|
||||
0x7A (keypad) 3 pressed
|
||||
0x7B (keypad) - pressed
|
||||
0x7C (keypad) * pressed
|
||||
0x7D (keypad) 9 pressed
|
||||
0x7E ScrollLock pressed
|
||||
0x83 F7 pressed
|
||||
0xE0, 0x10 (multimedia) WWW search pressed
|
||||
0xE0, 0x11 right alt pressed
|
||||
0xE0, 0x14 right control pressed
|
||||
0xE0, 0x15 (multimedia) previous track pressed
|
||||
0xE0, 0x18 (multimedia) WWW favourites pressed
|
||||
0xE0, 0x1F left GUI pressed
|
||||
0xE0, 0x20 (multimedia) WWW refresh pressed
|
||||
0xE0, 0x21 (multimedia) volume down pressed
|
||||
0xE0, 0x23 (multimedia) mute pressed
|
||||
0xE0, 0x27 right GUI pressed
|
||||
0xE0, 0x28 (multimedia) WWW stop pressed
|
||||
0xE0, 0x2B (multimedia) calculator pressed
|
||||
0xE0, 0x2F apps pressed
|
||||
0xE0, 0x30 (multimedia) WWW forward pressed
|
||||
0xE0, 0x32 (multimedia) volume up pressed
|
||||
0xE0, 0x34 (multimedia) play/pause pressed
|
||||
0xE0, 0x37 (ACPI) power pressed
|
||||
0xE0, 0x38 (multimedia) WWW back pressed
|
||||
0xE0, 0x3A (multimedia) WWW home pressed
|
||||
0xE0, 0x3B (multimedia) stop pressed
|
||||
0xE0, 0x3F (ACPI) sleep pressed
|
||||
0xE0, 0x40 (multimedia) my computer pressed
|
||||
0xE0, 0x48 (multimedia) email pressed
|
||||
0xE0, 0x4A (keypad) / pressed
|
||||
0xE0, 0x4D (multimedia) next track pressed
|
||||
0xE0, 0x50 (multimedia) media select pressed
|
||||
0xE0, 0x5A (keypad) enter pressed
|
||||
0xE0, 0x5E (ACPI) wake pressed
|
||||
0xE0, 0x69 end pressed
|
||||
0xE0, 0x6B cursor left pressed
|
||||
0xE0, 0x6C home pressed
|
||||
0xE0, 0x70 insert pressed
|
||||
0xE0, 0x71 delete pressed
|
||||
0xE0, 0x72 cursor down pressed
|
||||
0xE0, 0x74 cursor right pressed
|
||||
0xE0, 0x75 cursor up pressed
|
||||
0xE0, 0x7A page down pressed
|
||||
0xE0, 0x7D page up pressed
|
||||
0xF0, 0x01 F9 released
|
||||
0xF0, 0x03 F5 released
|
||||
0xF0, 0x04 F3 released
|
||||
0xF0, 0x05 F1 released
|
||||
0xF0, 0x06 F2 released
|
||||
0xF0, 0x07 F12 released
|
||||
0xF0, 0x09 F10 released
|
||||
0xF0, 0x0A F8 released
|
||||
0xF0, 0x0B F6 released
|
||||
0xF0, 0x0C F4 released
|
||||
0xF0, 0x0D tab released
|
||||
0xF0, 0x0E ` (back tick) released
|
||||
0xF0, 0x11 left alt released
|
||||
0xF0, 0x12 left shift released
|
||||
0xF0, 0x14 left control released
|
||||
0xF0, 0x15 Q released
|
||||
0xF0, 0x16 1 released
|
||||
0xF0, 0x1A Z released
|
||||
0xF0, 0x1B S released
|
||||
0xF0, 0x1C A released
|
||||
0xF0, 0x1D W released
|
||||
0xF0, 0x1E 2 released
|
||||
0xF0, 0x21 C released
|
||||
0xF0, 0x22 X released
|
||||
0xF0, 0x23 D released
|
||||
0xF0, 0x24 E released
|
||||
0xF0, 0x25 4 released
|
||||
0xF0, 0x26 3 released
|
||||
0xF0, 0x29 space released
|
||||
0xF0, 0x2A V released
|
||||
0xF0, 0x2B F released
|
||||
0xF0, 0x2C T released
|
||||
0xF0, 0x2D R released
|
||||
0xF0, 0x2E 5 released
|
||||
0xF0, 0x31 N released
|
||||
0xF0, 0x32 B released
|
||||
0xF0, 0x33 H released
|
||||
0xF0, 0x34 G released
|
||||
0xF0, 0x35 Y released
|
||||
0xF0, 0x36 6 released
|
||||
0xF0, 0x3A M released
|
||||
0xF0, 0x3B J released
|
||||
0xF0, 0x3C U released
|
||||
0xF0, 0x3D 7 released
|
||||
0xF0, 0x3E 8 released
|
||||
0xF0, 0x41 , released
|
||||
0xF0, 0x42 K released
|
||||
0xF0, 0x43 I released
|
||||
0xF0, 0x44 O released
|
||||
0xF0, 0x45 0 (zero) released
|
||||
0xF0, 0x46 9 released
|
||||
0xF0, 0x49 . released
|
||||
0xF0, 0x4A / released
|
||||
0xF0, 0x4B L released
|
||||
0xF0, 0x4C ; released
|
||||
0xF0, 0x4D P released
|
||||
0xF0, 0x4E - released
|
||||
0xF0, 0x52 ' released
|
||||
0xF0, 0x54 [ released
|
||||
0xF0, 0x55 = released
|
||||
0xF0, 0x58 CapsLock released
|
||||
0xF0, 0x59 right shift released
|
||||
0xF0, 0x5A enter released
|
||||
0xF0, 0x5B ] released
|
||||
0xF0, 0x5D \ released
|
||||
0xF0, 0x66 backspace released
|
||||
0xF0, 0x69 (keypad) 1 released
|
||||
0xF0, 0x6B (keypad) 4 released
|
||||
0xF0, 0x6C (keypad) 7 released
|
||||
0xF0, 0x70 (keypad) 0 released
|
||||
0xF0, 0x71 (keypad) . released
|
||||
0xF0, 0x72 (keypad) 2 released
|
||||
0xF0, 0x73 (keypad) 5 released
|
||||
0xF0, 0x74 (keypad) 6 released
|
||||
0xF0, 0x75 (keypad) 8 released
|
||||
0xF0, 0x76 escape released
|
||||
0xF0, 0x77 NumberLock released
|
||||
0xF0, 0x78 F11 released
|
||||
0xF0, 0x79 (keypad) + released
|
||||
0xF0, 0x7A (keypad) 3 released
|
||||
0xF0, 0x7B (keypad) - released
|
||||
0xF0, 0x7C (keypad) * released
|
||||
0xF0, 0x7D (keypad) 9 released
|
||||
0xF0, 0x7E ScrollLock released
|
||||
0xF0, 0x83 F7 released
|
||||
0xE0, 0x12, 0xE0, 0x7C print screen pressed
|
||||
0xE0, 0xF0, 0x10 (multimedia) WWW search released
|
||||
0xE0, 0xF0, 0x11 right alt released
|
||||
0xE0, 0xF0, 0x14 right control released
|
||||
0xE0, 0xF0, 0x15 (multimedia) previous track released
|
||||
0xE0, 0xF0, 0x18 (multimedia) WWW favourites released
|
||||
0xE0, 0xF0, 0x1F left GUI released
|
||||
0xE0, 0xF0, 0x20 (multimedia) WWW refresh released
|
||||
0xE0, 0xF0, 0x21 (multimedia) volume down released
|
||||
0xE0, 0xF0, 0x23 (multimedia) mute released
|
||||
0xE0, 0xF0, 0x27 right GUI released
|
||||
0xE0, 0xF0, 0x28 (multimedia) WWW stop released
|
||||
0xE0, 0xF0, 0x2B (multimedia) calculator released
|
||||
0xE0, 0xF0, 0x2F apps released
|
||||
0xE0, 0xF0, 0x30 (multimedia) WWW forward released
|
||||
0xE0, 0xF0, 0x32 (multimedia) volume up released
|
||||
0xE0, 0xF0, 0x34 (multimedia) play/pause released
|
||||
0xE0, 0xF0, 0x37 (ACPI) power released
|
||||
0xE0, 0xF0, 0x38 (multimedia) WWW back released
|
||||
0xE0, 0xF0, 0x3A (multimedia) WWW home released
|
||||
0xE0, 0xF0, 0x3B (multimedia) stop released
|
||||
0xE0, 0xF0, 0x3F (ACPI) sleep released
|
||||
0xE0, 0xF0, 0x40 (multimedia) my computer released
|
||||
0xE0, 0xF0, 0x48 (multimedia) email released
|
||||
0xE0, 0xF0, 0x4A (keypad) / released
|
||||
0xE0, 0xF0, 0x4D (multimedia) next track released
|
||||
0xE0, 0xF0, 0x50 (multimedia) media select released
|
||||
0xE0, 0xF0, 0x5A (keypad) enter released
|
||||
0xE0, 0xF0, 0x5E (ACPI) wake released
|
||||
0xE0, 0xF0, 0x69 end released
|
||||
0xE0, 0xF0, 0x6B cursor left released
|
||||
0xE0, 0xF0, 0x6C home released
|
||||
0xE0, 0xF0, 0x70 insert released
|
||||
0xE0, 0xF0, 0x71 delete released
|
||||
0xE0, 0xF0, 0x72 cursor down released
|
||||
0xE0, 0xF0, 0x74 cursor right released
|
||||
0xE0, 0xF0, 0x75 cursor up released
|
||||
0xE0, 0xF0, 0x7A page down released
|
||||
0xE0, 0xF0, 0x7D page up released
|
||||
0xE0, 0xF0, 0x7C, 0xE0, 0xF0, 0x12 print screen released
|
||||
0xE1, 0x14, 0x77, 0xE1, 0xF0, 0x14, 0xF0, 0x77 pause pressed
|
||||
|
|
@ -1 +1,158 @@
|
|||
pub static KEY_CODE_TO_ASCII: [u8; 59] = *b"??1234567890-=??qwertyuiop[]\n?asdfghjkl;'`?\\zxcvbnm,./?*? ?";
|
||||
// pub static KEY_CODE_TO_ASCII: [u8; 59] = *b"\0\01234567890-=\0\0qwertyuiop[]\n\0asdfghjkl;'`\0\\zxcvbnm,./\0*\0 \0";
|
||||
|
||||
const MAX_KEYS: usize = 59;
|
||||
const TOUCH_RELEASE: u8 = 1 << 7;
|
||||
// static ASCII_GUARD:[u8;2] = *b"\0\0";
|
||||
|
||||
static mut SHIFT: bool = false;
|
||||
const KEYMAP_US: [[u8;2]; MAX_KEYS] = [
|
||||
*b"\0\0",
|
||||
*b"\0\0",//escape
|
||||
*b"1!",
|
||||
*b"2@",
|
||||
*b"3#",
|
||||
*b"4$",
|
||||
*b"5%",
|
||||
*b"6^",
|
||||
*b"7&",
|
||||
*b"8*",
|
||||
*b"9(",
|
||||
*b"0)",
|
||||
*b"-_",
|
||||
*b"=+",
|
||||
*b"\0\0",//backspace
|
||||
*b"\0\0",//tab
|
||||
*b"qQ",
|
||||
*b"wW",
|
||||
*b"eE",
|
||||
*b"rR",
|
||||
*b"tT",
|
||||
*b"yY",
|
||||
*b"uU",
|
||||
*b"iI",
|
||||
*b"oO",
|
||||
*b"pP",
|
||||
*b"[{",
|
||||
*b"]}",
|
||||
*b"\n\n",
|
||||
*b"\0\0",//left_control
|
||||
*b"aA",
|
||||
*b"sS",
|
||||
*b"dD",
|
||||
*b"fF",
|
||||
*b"gG",
|
||||
*b"hH",
|
||||
*b"jJ",
|
||||
*b"kK",
|
||||
*b"lL",
|
||||
*b";:",
|
||||
*b"'\"",
|
||||
*b"`~",
|
||||
*b"\0\0",//left shift
|
||||
*b"\\|",
|
||||
*b"zZ",
|
||||
*b"xX",
|
||||
*b"cC",
|
||||
*b"vV",
|
||||
*b"bB",
|
||||
*b"nN",
|
||||
*b"mM",
|
||||
*b",<",
|
||||
*b".>",
|
||||
*b"/?",
|
||||
*b"\0\0",//right shift
|
||||
*b"**",
|
||||
*b"\0\0",//left alt
|
||||
*b" ",
|
||||
*b"\0\0",//capslock
|
||||
];
|
||||
// use vga_buffer;
|
||||
use cpuio;
|
||||
|
||||
// use vga_buffer::buffer::{Writer, Screen};
|
||||
use vga_buffer::WRITER;
|
||||
|
||||
fn check_touch_state(key: u8) -> (bool, usize) {
|
||||
if (key & TOUCH_RELEASE) == TOUCH_RELEASE {
|
||||
(true, (key - TOUCH_RELEASE) as usize)
|
||||
} else {
|
||||
(false, key as usize)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn kbd_loop() {
|
||||
// let terminal_one: vga::terminal::Terminal = vga::Screen::new();
|
||||
// let terminal_two: vga::terminal::Terminal = vga::Screen::new();
|
||||
|
||||
let control = unsafe { cpuio::inb(0x64) };
|
||||
if (control & 1) == 1 {
|
||||
let scancode = unsafe { cpuio::inb(0x60) };
|
||||
let (is_release, scancode) = check_touch_state(scancode);
|
||||
if scancode < MAX_KEYS {
|
||||
let key_array = KEYMAP_US[scancode];
|
||||
if key_array == *b"\0\0"{
|
||||
match scancode {
|
||||
0x2A | 0x36 => {
|
||||
unsafe {SHIFT = !is_release};
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
else if !is_release {
|
||||
unsafe {
|
||||
if SHIFT {
|
||||
WRITER.lock().write_byte(key_array[1]);
|
||||
}
|
||||
else {
|
||||
WRITER.lock().write_byte(key_array[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//match self::KEYMAP_US.get(scancode as usize) {
|
||||
// Some(ASCII_GUARD) => {},
|
||||
// Some(touch_array) if !is_release => {
|
||||
// //TODO screen switching logic
|
||||
// // if let Some(action) = Screen::keypress(current_screen, *ascii as char) {
|
||||
// if let Some(action) = current_screen.keypress(*ascii as char) {
|
||||
// writer.action(action);
|
||||
// }
|
||||
// },
|
||||
// _ =>{},
|
||||
// None => println!("nokey ctrl {:x}", control),
|
||||
// }
|
||||
// if scancode < MAX_KEYS {
|
||||
// let ascii = KEYMAP_US[scancode];
|
||||
// if ascii != *b"\0\0" {
|
||||
// if shift {
|
||||
// writer.write(ascii[1] as char);
|
||||
// }
|
||||
// else {
|
||||
// writer.write(ascii[0] as char);
|
||||
// }
|
||||
|
||||
// }
|
||||
// else {
|
||||
// if scancode == 0x2A || scancode == 0x36
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
//TODO current_screen() with mutex lock?
|
||||
// let current_screen = terminal_one;
|
||||
|
||||
//TODO implement logic to translate scancode->ascii
|
||||
//match self::SCANCODE_TO_ASCII.get(scancode as usize) {
|
||||
// Some(ascii) => {
|
||||
// //TODO screen switching logic
|
||||
// // if let Some(action) = Screen::keypress(current_screen, *ascii as char) {
|
||||
// if let Some(action) = current_screen.keypress(*ascii as char) {
|
||||
// writer.action(action);
|
||||
// }
|
||||
// },
|
||||
// None =>{},
|
||||
// // None => println!("nokey ctrl {:x}", control),
|
||||
//}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,15 @@ mod vga_buffer;
|
|||
mod cpuio;
|
||||
mod keyboard;
|
||||
|
||||
// fn check_shift(key: u8) -> u8 {
|
||||
// print!("{:b} vs {:b}\n", key as u8, (1<<7) as u8);
|
||||
// if (key >> 7 & 1) == 1 {
|
||||
// print!("MATCH");
|
||||
// key - (1 << 7)
|
||||
// } else {
|
||||
// key
|
||||
// }
|
||||
// }
|
||||
#[no_mangle]
|
||||
pub extern fn kmain() -> ! {
|
||||
use vga_buffer::WRITER;
|
||||
|
|
@ -40,15 +49,16 @@ pub extern fn kmain() -> ! {
|
|||
WRITER.lock().color_code = ColorCode::new(Color::White, Color::Black);
|
||||
println!(">> Kernel startup...");
|
||||
loop {
|
||||
let control = unsafe { cpuio::inb(0x64) };
|
||||
if (control & 1) == 1 {
|
||||
let keycode = unsafe { cpuio::inb(0x60) };
|
||||
match keyboard::KEY_CODE_TO_ASCII.get(keycode as usize) {
|
||||
Some(ascii) => print!("{}", *ascii as char),
|
||||
None =>{},
|
||||
// None => println!("nokey ctrl {:x}", control),
|
||||
}
|
||||
}
|
||||
keyboard::kbd_loop();
|
||||
// let control = unsafe { cpuio::inb(0x64) };
|
||||
// if (control & 1) == 1 {
|
||||
// let keycode = unsafe { cpuio::inb(0x60) };
|
||||
// match keyboard::KEY_CODE_TO_ASCII.get(keycode as usize) {
|
||||
// Some(ascii) => print!("{}", *ascii as char),
|
||||
// None =>{},
|
||||
// // None => println!("nokey ctrl {:x}", control),
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,9 @@ impl Writer {
|
|||
self.column_position += 1;
|
||||
}
|
||||
}
|
||||
if self.column_position >= BUFFER_WIDTH {
|
||||
self.new_line();
|
||||
}
|
||||
let row = BUFFER_HEIGHT - 1;
|
||||
let col = self.column_position;
|
||||
self.buffer().chars[row][col].write(CURSOR);
|
||||
|
|
|
|||
Loading…
Reference in a new issue