diff options
author | inmarket <andrewh@inmarket.com.au> | 2015-01-07 13:20:23 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2015-01-07 13:20:23 +1000 |
commit | 87cca4f7a5d3e79f3e0d3a0d669da22081f7b024 (patch) | |
tree | 190408d9dda3ca72bad7eba2feb6cba96b30eedc /src/ginput/keyboard_microcode.c | |
parent | 128a3b972cc50b084415b5fb69fc355fe5db9520 (diff) | |
download | uGFX-87cca4f7a5d3e79f3e0d3a0d669da22081f7b024.tar.gz uGFX-87cca4f7a5d3e79f3e0d3a0d669da22081f7b024.tar.bz2 uGFX-87cca4f7a5d3e79f3e0d3a0d669da22081f7b024.zip |
New keyboard driver interface with international keyboard support.
Diffstat (limited to 'src/ginput/keyboard_microcode.c')
-rw-r--r-- | src/ginput/keyboard_microcode.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/ginput/keyboard_microcode.c b/src/ginput/keyboard_microcode.c new file mode 100644 index 00000000..e3c04d5f --- /dev/null +++ b/src/ginput/keyboard_microcode.c @@ -0,0 +1,73 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/ginput/keyboard_microcode.c + * @brief GINPUT keyboard standard microcode definitions. + */ + +#include "gfx.h" + +#if GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD && !GKEYBOARD_LAYOUT_OFF + +#include "keyboard_microcode.h" + +#if GKEYBOARD_LAYOUT_SCANCODE2_US + + #error "Keyboard Layout SCANCODE2_US is not fully implemented yet" + + uint8_t KeyboardLayout_ScancodeSet2_US[] = { + KMC_HEADERSTART, KMC_HEADER_ID1, KMC_HEADER_ID2, KMC_HEADER_VER_1, + + KMC_RECORDSTART, 0x03, // Handle E0 codes (ignore for now assuming a single character) + KMC_TEST_LASTCODE, 0xE0, + KMC_ACT_DONE, + KMC_RECORDSTART, 0x03, + KMC_TEST_CODE, 0xE0, + KMC_ACT_STOP, + + KMC_RECORDSTART, 0x03, // Handle E1 codes (ignore for now assuming a single character) + KMC_TEST_LASTCODE, 0xE1, + KMC_ACT_DONE, + KMC_RECORDSTART, 0x03, + KMC_TEST_CODE, 0xE1, + KMC_ACT_STOP, + + KMC_RECORDSTART, 0x03, // Handle E2 codes (ignore for now assuming a single character) + KMC_TEST_LASTCODE, 0xE2, + KMC_ACT_DONE, + KMC_RECORDSTART, 0x03, + KMC_TEST_CODE, 0xE2, + KMC_ACT_STOP, + + KMC_RECORDSTART, 0x06, // KeyUp + KMC_TEST_CODEBIT, 0x80, + KMC_ACT_STATEBIT, GKEYSTATE_KEYUP_BIT, + KMC_ACT_CODEBIT, 0x80 | KMC_BIT_CLEAR, + + KMC_RECORDSTART, 0x05, // CapsLock (on keyup to avoid repeats) + KMC_TEST_CODE, 0x58, + KMC_TEST_STATEBIT, GKEYSTATE_KEYUP_BIT | KMC_BIT_CLEAR, + KMC_ACT_DONE, + KMC_RECORDSTART, 0x05, + KMC_TEST_CODE, 0x58, + KMC_ACT_STATEBIT, GKEYSTATE_CAPSLOCK_BIT | KMC_BIT_INVERT, + KMC_ACT_DONE, + + KMC_RECORDSTART, 0x05, // Detect Shift Keys + //KMC_ACT_LAYOUTBIT, SCANCODESET2_LAYOUT_E0_BIT | KMC_BIT_CLEAR, + KMC_ACT_STOP, + + KMC_RECORDSTART, 0x03, + KMC_ACT_CHARRANGE, 0x00, + KMC_ACT_DONE, + + KMC_RECORDSTART, 0x00, + }; +#endif // GKEYBOARD_LAYOUT_SCANCODE2_US + +#endif // GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD && !GKEYBOARD_LAYOUT_OFF |