diff options
-rw-r--r-- | common/host.c | 8 | ||||
-rw-r--r-- | common/host.h | 1 | ||||
-rw-r--r-- | common/keyboard.c | 122 | ||||
-rw-r--r-- | common/mousekey.c | 7 | ||||
-rw-r--r-- | common/usb_keycodes.h | 41 |
5 files changed, 141 insertions, 38 deletions
diff --git a/common/host.c b/common/host.c index fddd5b662..0a03807f7 100644 --- a/common/host.c +++ b/common/host.c | |||
@@ -69,6 +69,14 @@ void host_unregister_key(uint8_t key) | |||
69 | host_send_keyboard_report(); | 69 | host_send_keyboard_report(); |
70 | } | 70 | } |
71 | 71 | ||
72 | void host_clear_all_keys_but_mods(void) | ||
73 | { | ||
74 | for (int8_t i = 0; i < REPORT_KEYS; i++) { | ||
75 | keyboard_report->keys[i] = 0; | ||
76 | } | ||
77 | host_send_keyboard_report(); | ||
78 | } | ||
79 | |||
72 | /* keyboard report operations */ | 80 | /* keyboard report operations */ |
73 | void host_add_key(uint8_t key) | 81 | void host_add_key(uint8_t key) |
74 | { | 82 | { |
diff --git a/common/host.h b/common/host.h index 84a6c2477..a6dff8de0 100644 --- a/common/host.h +++ b/common/host.h | |||
@@ -42,6 +42,7 @@ uint8_t host_keyboard_leds(void); | |||
42 | /* new interface */ | 42 | /* new interface */ |
43 | void host_register_key(uint8_t key); | 43 | void host_register_key(uint8_t key); |
44 | void host_unregister_key(uint8_t key); | 44 | void host_unregister_key(uint8_t key); |
45 | void host_clear_all_keys_but_mods(void); | ||
45 | 46 | ||
46 | /* keyboard report operations */ | 47 | /* keyboard report operations */ |
47 | void host_add_key(uint8_t key); | 48 | void host_add_key(uint8_t key); |
diff --git a/common/keyboard.c b/common/keyboard.c index b7063a264..328941df3 100644 --- a/common/keyboard.c +++ b/common/keyboard.c | |||
@@ -41,8 +41,6 @@ typedef enum keykind { | |||
41 | FNK_DOWN, FNK_UP, | 41 | FNK_DOWN, FNK_UP, |
42 | KEY_DOWN, KEY_UP, | 42 | KEY_DOWN, KEY_UP, |
43 | MOD_DOWN, MOD_UP, | 43 | MOD_DOWN, MOD_UP, |
44 | MOUSEKEY_DOWN, MOUSEKEY_UP, | ||
45 | DELAY | ||
46 | } keykind_t; | 44 | } keykind_t; |
47 | 45 | ||
48 | typedef enum { IDLE, DELAYING, WAITING, PRESSING } kbdstate_t; | 46 | typedef enum { IDLE, DELAYING, WAITING, PRESSING } kbdstate_t; |
@@ -69,15 +67,17 @@ static const char *state_str(kbdstate_t state) | |||
69 | 67 | ||
70 | static inline keykind_t get_keykind(uint8_t code, bool pressed) | 68 | static inline keykind_t get_keykind(uint8_t code, bool pressed) |
71 | { | 69 | { |
72 | if IS_KEY(code) return (pressed ? KEY_DOWN : KEY_UP); | 70 | if IS_KEY(code) return (pressed ? KEY_DOWN : KEY_UP); |
73 | if IS_MOD(code) return (pressed ? MOD_DOWN : MOD_UP); | 71 | if IS_MOD(code) return (pressed ? MOD_DOWN : MOD_UP); |
74 | if IS_FN(code) { | 72 | if IS_FN(code) { |
75 | if (keymap_fn_keycode(FN_INDEX(code))) | 73 | if (keymap_fn_keycode(FN_INDEX(code))) |
76 | return (pressed ? FNK_DOWN : FNK_UP); | 74 | return (pressed ? FNK_DOWN : FNK_UP); |
77 | else | 75 | else |
78 | return (pressed ? FN_DOWN : FN_UP); | 76 | return (pressed ? FN_DOWN : FN_UP); |
79 | } | 77 | } |
80 | if IS_MOUSEKEY(code) return (pressed ? MOUSEKEY_DOWN : MOUSEKEY_UP); | 78 | if IS_MOUSEKEY(code) return (pressed ? KEY_DOWN : KEY_UP); |
79 | if IS_SYSTEM(code) return (pressed ? KEY_DOWN : KEY_UP); | ||
80 | if IS_CONSUMER(code) return (pressed ? KEY_DOWN : KEY_UP); | ||
81 | return NONE; | 81 | return NONE; |
82 | } | 82 | } |
83 | 83 | ||
@@ -86,7 +86,13 @@ static void layer_switch_on(uint8_t code) | |||
86 | if (!IS_FN(code)) return; | 86 | if (!IS_FN(code)) return; |
87 | fn_state_bits |= FN_BIT(code); | 87 | fn_state_bits |= FN_BIT(code); |
88 | if (current_layer != keymap_fn_layer(FN_INDEX(code))) { | 88 | if (current_layer != keymap_fn_layer(FN_INDEX(code))) { |
89 | //TODO: clear all key execpt Mod key | 89 | // clear all key execpt Mod key |
90 | host_clear_all_keys_but_mods(); | ||
91 | host_system_send(0); | ||
92 | host_consumer_send(0); | ||
93 | mousekey_clear(); | ||
94 | mousekey_send(); | ||
95 | |||
90 | debug("Layer Switch(on): "); debug_hex(current_layer); | 96 | debug("Layer Switch(on): "); debug_hex(current_layer); |
91 | current_layer = keymap_fn_layer(FN_INDEX(code)); | 97 | current_layer = keymap_fn_layer(FN_INDEX(code)); |
92 | debug(" -> "); debug_hex(current_layer); debug("\n"); | 98 | debug(" -> "); debug_hex(current_layer); debug("\n"); |
@@ -98,7 +104,13 @@ static void layer_switch_off(uint8_t code) | |||
98 | if (!IS_FN(code)) return; | 104 | if (!IS_FN(code)) return; |
99 | fn_state_bits &= ~FN_BIT(code); | 105 | fn_state_bits &= ~FN_BIT(code); |
100 | if (current_layer != keymap_fn_layer(biton(fn_state_bits))) { | 106 | if (current_layer != keymap_fn_layer(biton(fn_state_bits))) { |
101 | //TODO: clear all key execpt Mod key | 107 | // clear all key execpt Mod key |
108 | host_clear_all_keys_but_mods(); | ||
109 | host_system_send(0); | ||
110 | host_consumer_send(0); | ||
111 | mousekey_clear(); | ||
112 | mousekey_send(); | ||
113 | |||
102 | debug("Layer Switch(off): "); debug_hex(current_layer); | 114 | debug("Layer Switch(off): "); debug_hex(current_layer); |
103 | current_layer = keymap_fn_layer(biton(fn_state_bits)); | 115 | current_layer = keymap_fn_layer(biton(fn_state_bits)); |
104 | debug(" -> "); debug_hex(current_layer); debug("\n"); | 116 | debug(" -> "); debug_hex(current_layer); debug("\n"); |
@@ -128,6 +140,7 @@ static inline bool is_anykey_down(void) | |||
128 | 140 | ||
129 | static void register_code(uint8_t code) | 141 | static void register_code(uint8_t code) |
130 | { | 142 | { |
143 | debug("register_code\n"); | ||
131 | if IS_KEY(code) { | 144 | if IS_KEY(code) { |
132 | host_add_key(code); | 145 | host_add_key(code); |
133 | host_send_keyboard_report(); | 146 | host_send_keyboard_report(); |
@@ -140,6 +153,84 @@ static void register_code(uint8_t code) | |||
140 | mousekey_on(code); | 153 | mousekey_on(code); |
141 | mousekey_send(); | 154 | mousekey_send(); |
142 | } | 155 | } |
156 | else if IS_CONSUMER(code) { | ||
157 | debug("consumer\n"); | ||
158 | uint16_t usage = 0; | ||
159 | switch (code) { | ||
160 | case KB_AUDIO_MUTE: | ||
161 | usage = AUDIO_MUTE; | ||
162 | break; | ||
163 | case KB_AUDIO_VOL_UP: | ||
164 | usage = AUDIO_VOL_UP; | ||
165 | break; | ||
166 | case KB_AUDIO_VOL_DOWN: | ||
167 | usage = AUDIO_VOL_DOWN; | ||
168 | break; | ||
169 | case KB_MEDIA_NEXT_TRACK: | ||
170 | usage = TRANSPORT_NEXT_TRACK; | ||
171 | break; | ||
172 | case KB_MEDIA_PREV_TRACK: | ||
173 | usage = TRANSPORT_PREV_TRACK; | ||
174 | break; | ||
175 | case KB_MEDIA_STOP: | ||
176 | usage = TRANSPORT_STOP; | ||
177 | break; | ||
178 | case KB_MEDIA_PLAY_PAUSE: | ||
179 | usage = TRANSPORT_PLAY_PAUSE; | ||
180 | break; | ||
181 | case KB_MEDIA_SELECT: | ||
182 | usage = AL_CC_CONFIG; | ||
183 | break; | ||
184 | case KB_MAIL: | ||
185 | usage = AL_EMAIL; | ||
186 | break; | ||
187 | case KB_CALCULATOR: | ||
188 | usage = AL_CALCULATOR; | ||
189 | break; | ||
190 | case KB_MY_COMPUTER: | ||
191 | usage = AL_LOCAL_BROWSER; | ||
192 | break; | ||
193 | case KB_WWW_SEARCH: | ||
194 | usage = AC_SEARCH; | ||
195 | break; | ||
196 | case KB_WWW_HOME: | ||
197 | usage = AC_HOME; | ||
198 | break; | ||
199 | case KB_WWW_BACK: | ||
200 | usage = AC_BACK; | ||
201 | break; | ||
202 | case KB_WWW_FORWARD: | ||
203 | usage = AC_FORWARD; | ||
204 | break; | ||
205 | case KB_WWW_STOP: | ||
206 | usage = AC_STOP; | ||
207 | break; | ||
208 | case KB_WWW_REFRESH: | ||
209 | usage = AC_REFRESH; | ||
210 | break; | ||
211 | case KB_WWW_FAVORITES: | ||
212 | usage = AC_BOOKMARKS; | ||
213 | break; | ||
214 | } | ||
215 | debug("usage: "); phex16(usage); debug("\n"); | ||
216 | host_consumer_send(usage); | ||
217 | } | ||
218 | else if IS_SYSTEM(code) { | ||
219 | uint16_t usage = 0; | ||
220 | switch (code) { | ||
221 | case KB_SYSTEM_POWER: | ||
222 | usage = SYSTEM_POWER_DOWN; | ||
223 | break; | ||
224 | case KB_SYSTEM_SLEEP: | ||
225 | usage = SYSTEM_SLEEP; | ||
226 | break; | ||
227 | case KB_SYSTEM_WAKE: | ||
228 | usage = SYSTEM_WAKE_UP; | ||
229 | break; | ||
230 | } | ||
231 | host_system_send(usage); | ||
232 | } | ||
233 | |||
143 | } | 234 | } |
144 | 235 | ||
145 | static void unregister_code(uint8_t code) | 236 | static void unregister_code(uint8_t code) |
@@ -156,6 +247,12 @@ static void unregister_code(uint8_t code) | |||
156 | mousekey_off(code); | 247 | mousekey_off(code); |
157 | mousekey_send(); | 248 | mousekey_send(); |
158 | } | 249 | } |
250 | else if IS_CONSUMER(code) { | ||
251 | host_consumer_send(0x0000); | ||
252 | } | ||
253 | else if IS_SYSTEM(code) { | ||
254 | host_system_send(0x0000); | ||
255 | } | ||
159 | } | 256 | } |
160 | 257 | ||
161 | /* | 258 | /* |
@@ -254,7 +351,6 @@ static inline void process_key(keyevent_t event) | |||
254 | layer_switch_off(code); | 351 | layer_switch_off(code); |
255 | break; | 352 | break; |
256 | case KEY_DOWN: | 353 | case KEY_DOWN: |
257 | case MOUSEKEY_DOWN: | ||
258 | register_code(code); | 354 | register_code(code); |
259 | NEXT(PRESSING); | 355 | NEXT(PRESSING); |
260 | break; | 356 | break; |
@@ -262,7 +358,6 @@ static inline void process_key(keyevent_t event) | |||
262 | register_code(code); | 358 | register_code(code); |
263 | break; | 359 | break; |
264 | case KEY_UP: | 360 | case KEY_UP: |
265 | case MOUSEKEY_UP: | ||
266 | case MOD_UP: | 361 | case MOD_UP: |
267 | unregister_code(code); | 362 | unregister_code(code); |
268 | break; | 363 | break; |
@@ -283,16 +378,16 @@ static inline void process_key(keyevent_t event) | |||
283 | register_code(keymap_fn_keycode(FN_INDEX(code))); | 378 | register_code(keymap_fn_keycode(FN_INDEX(code))); |
284 | break; | 379 | break; |
285 | case FNK_UP: | 380 | case FNK_UP: |
381 | // can't know whether layer switched or not | ||
382 | layer_switch_off(code); | ||
286 | unregister_code(keymap_fn_keycode(FN_INDEX(code))); | 383 | unregister_code(keymap_fn_keycode(FN_INDEX(code))); |
287 | break; | 384 | break; |
288 | case KEY_DOWN: | 385 | case KEY_DOWN: |
289 | case MOD_DOWN: | 386 | case MOD_DOWN: |
290 | case MOUSEKEY_DOWN: | ||
291 | register_code(code); | 387 | register_code(code); |
292 | break; | 388 | break; |
293 | case KEY_UP: | 389 | case KEY_UP: |
294 | case MOD_UP: | 390 | case MOD_UP: |
295 | case MOUSEKEY_UP: | ||
296 | unregister_code(code); | 391 | unregister_code(code); |
297 | // no key registered? mousekey, mediakey, systemkey | 392 | // no key registered? mousekey, mediakey, systemkey |
298 | if (!host_has_anykey()) | 393 | if (!host_has_anykey()) |
@@ -307,7 +402,6 @@ static inline void process_key(keyevent_t event) | |||
307 | case FN_DOWN: | 402 | case FN_DOWN: |
308 | case FNK_DOWN: | 403 | case FNK_DOWN: |
309 | case KEY_DOWN: | 404 | case KEY_DOWN: |
310 | case MOUSEKEY_DOWN: | ||
311 | waiting_key = (keyrecord_t) { | 405 | waiting_key = (keyrecord_t) { |
312 | .event = event, | 406 | .event = event, |
313 | .code = code, | 407 | .code = code, |
@@ -339,7 +433,6 @@ static inline void process_key(keyevent_t event) | |||
339 | } | 433 | } |
340 | break; | 434 | break; |
341 | case KEY_UP: | 435 | case KEY_UP: |
342 | case MOUSEKEY_UP: | ||
343 | unregister_code(code); | 436 | unregister_code(code); |
344 | NEXT(IDLE); | 437 | NEXT(IDLE); |
345 | break; | 438 | break; |
@@ -355,7 +448,6 @@ static inline void process_key(keyevent_t event) | |||
355 | case FN_DOWN: | 448 | case FN_DOWN: |
356 | case FNK_DOWN: | 449 | case FNK_DOWN: |
357 | case KEY_DOWN: | 450 | case KEY_DOWN: |
358 | case MOUSEKEY_DOWN: | ||
359 | tmp_mods = keyboard_report->mods; | 451 | tmp_mods = keyboard_report->mods; |
360 | host_set_mods(delayed_fn.mods); | 452 | host_set_mods(delayed_fn.mods); |
361 | register_code(keymap_fn_keycode(FN_INDEX(delayed_fn.code))); | 453 | register_code(keymap_fn_keycode(FN_INDEX(delayed_fn.code))); |
@@ -389,7 +481,6 @@ static inline void process_key(keyevent_t event) | |||
389 | } | 481 | } |
390 | break; | 482 | break; |
391 | case KEY_UP: | 483 | case KEY_UP: |
392 | case MOUSEKEY_UP: | ||
393 | if (code == waiting_key.code) { | 484 | if (code == waiting_key.code) { |
394 | layer_switch_on(delayed_fn.code); | 485 | layer_switch_on(delayed_fn.code); |
395 | NEXT(IDLE); | 486 | NEXT(IDLE); |
@@ -444,7 +535,6 @@ void keyboard_task(void) | |||
444 | matrix_row = matrix_get_row(r); | 535 | matrix_row = matrix_get_row(r); |
445 | matrix_change = matrix_row ^ matrix_prev[r]; | 536 | matrix_change = matrix_row ^ matrix_prev[r]; |
446 | if (matrix_change) { | 537 | if (matrix_change) { |
447 | // TODO: print once per scan | ||
448 | if (debug_matrix) matrix_print(); | 538 | if (debug_matrix) matrix_print(); |
449 | 539 | ||
450 | for (int c = 0; c < MATRIX_COLS; c++) { | 540 | for (int c = 0; c < MATRIX_COLS; c++) { |
diff --git a/common/mousekey.c b/common/mousekey.c index 7f8e860aa..222d9e445 100644 --- a/common/mousekey.c +++ b/common/mousekey.c | |||
@@ -135,13 +135,6 @@ void mousekey_send(void) | |||
135 | void mousekey_clear(void) | 135 | void mousekey_clear(void) |
136 | { | 136 | { |
137 | report = (report_mouse_t){}; | 137 | report = (report_mouse_t){}; |
138 | /* | ||
139 | report.buttons = 0; | ||
140 | report.x = 0; | ||
141 | report.y = 0; | ||
142 | report.v = 0; | ||
143 | report.h = 0; | ||
144 | */ | ||
145 | } | 138 | } |
146 | 139 | ||
147 | static void mousekey_debug(void) | 140 | static void mousekey_debug(void) |
diff --git a/common/usb_keycodes.h b/common/usb_keycodes.h index 61d6bf002..6a4437418 100644 --- a/common/usb_keycodes.h +++ b/common/usb_keycodes.h | |||
@@ -24,15 +24,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
24 | 24 | ||
25 | 25 | ||
26 | #define IS_ERROR(code) (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED) | 26 | #define IS_ERROR(code) (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED) |
27 | #define IS_ANY(code) (KB_A <= (code)) | 27 | #define IS_ANY(code) (KB_A <= (code) && (code) <= 0xFF) |
28 | #define IS_KEY(code) (KB_A <= (code) && (code) <= KB_EXSEL) | 28 | #define IS_KEY(code) (KB_A <= (code) && (code) <= KB_EXSEL) |
29 | #define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI) | 29 | #define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI) |
30 | |||
30 | #define IS_FN(code) (KB_FN0 <= (code) && (code) <= KB_FN7) | 31 | #define IS_FN(code) (KB_FN0 <= (code) && (code) <= KB_FN7) |
31 | #define IS_MOUSEKEY(code) (KB_MS_UP <= (code) && (code) <= KB_MS_WH_RIGHT) | 32 | #define IS_MOUSEKEY(code) (KB_MS_UP <= (code) && (code) <= KB_MS_WH_RIGHT) |
32 | #define IS_MOUSEKEY_MOVE(code) (KB_MS_UP <= (code) && (code) <= KB_MS_RIGHT) | 33 | #define IS_MOUSEKEY_MOVE(code) (KB_MS_UP <= (code) && (code) <= KB_MS_RIGHT) |
33 | #define IS_MOUSEKEY_BUTTON(code) (KB_MS_BTN1 <= (code) && (code) <= KB_MS_BTN5) | 34 | #define IS_MOUSEKEY_BUTTON(code) (KB_MS_BTN1 <= (code) && (code) <= KB_MS_BTN5) |
34 | #define IS_MOUSEKEY_WHEEL(code) (KB_MS_WH_UP <= (code) && (code) <= KB_MS_WH_RIGHT) | 35 | #define IS_MOUSEKEY_WHEEL(code) (KB_MS_WH_UP <= (code) && (code) <= KB_MS_WH_RIGHT) |
35 | 36 | ||
37 | #define IS_SPECIAL(code) ((0xB0 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF)) | ||
38 | #define IS_CONSUMER(code) (KB_MUTE <= (code) && (code) <= KB_WFAV) | ||
39 | #define IS_SYSTEM(code) (KB_POWER <= (code) && (code) <= KB_WAKE) | ||
40 | |||
36 | #define MOD_BIT(code) (1<<((code) & 0x07)) | 41 | #define MOD_BIT(code) (1<<((code) & 0x07)) |
37 | #define FN_BIT(code) (1<<((code) - KB_FN0)) | 42 | #define FN_BIT(code) (1<<((code) - KB_FN0)) |
38 | #define FN_INDEX(code) ((code) - KB_FN0) | 43 | #define FN_INDEX(code) ((code) - KB_FN0) |
@@ -137,14 +142,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
137 | 142 | ||
138 | 143 | ||
139 | /* Special keycode */ | 144 | /* Special keycode */ |
145 | /* NOTE: 0xA5-DF and 0xE8-FF can be used for internal special purpose */ | ||
140 | enum special_keycodes { | 146 | enum special_keycodes { |
141 | /* System Control */ | 147 | /* System Control */ |
142 | KB_SYSTEM_POWER = 0xB0, | 148 | KB_SYSTEM_POWER = 0xA5, |
143 | KB_SYSTEM_SLEEP, | 149 | KB_SYSTEM_SLEEP, |
144 | KB_SYSTEM_WAKE, | 150 | KB_SYSTEM_WAKE, /* 0xA7 */ |
151 | /* 0xA8-AF */ | ||
145 | 152 | ||
146 | /* Consumer Page */ | 153 | /* Consumer Page */ |
147 | KB_AUDIO_MUTE, | 154 | KB_AUDIO_MUTE = 0xB0, |
148 | KB_AUDIO_VOL_UP, | 155 | KB_AUDIO_VOL_UP, |
149 | KB_AUDIO_VOL_DOWN, | 156 | KB_AUDIO_VOL_DOWN, |
150 | KB_MEDIA_NEXT_TRACK, | 157 | KB_MEDIA_NEXT_TRACK, |
@@ -157,13 +164,14 @@ enum special_keycodes { | |||
157 | KB_MY_COMPUTER, | 164 | KB_MY_COMPUTER, |
158 | KB_WWW_SEARCH, | 165 | KB_WWW_SEARCH, |
159 | KB_WWW_HOME, | 166 | KB_WWW_HOME, |
160 | KB_WWW_BACK, /* 0xC0 */ | 167 | KB_WWW_BACK, |
161 | KB_WWW_FORWARD, | 168 | KB_WWW_FORWARD, |
162 | KB_WWW_STOP, | 169 | KB_WWW_STOP, |
163 | KB_WWW_REFRESH, | 170 | KB_WWW_REFRESH, /* 0xC0 */ |
164 | KB_WWW_FAVORITES, | 171 | KB_WWW_FAVORITES, /* 0xC1 */ |
172 | /* 0xC2-DF vacant for future use */ | ||
165 | 173 | ||
166 | /* reserve 0xE0-E7 for Modifiers */ | 174 | /* 0xE0-E7 for Modifiers. DO NOT USE. */ |
167 | 175 | ||
168 | /* Layer Switching */ | 176 | /* Layer Switching */ |
169 | KB_FN0 = 0xE8, | 177 | KB_FN0 = 0xE8, |
@@ -173,7 +181,7 @@ enum special_keycodes { | |||
173 | KB_FN4, | 181 | KB_FN4, |
174 | KB_FN5, | 182 | KB_FN5, |
175 | KB_FN6, | 183 | KB_FN6, |
176 | KB_FN7, | 184 | KB_FN7, /* 0xEF */ |
177 | 185 | ||
178 | /* Mousekey */ | 186 | /* Mousekey */ |
179 | KB_MS_UP = 0xF0, | 187 | KB_MS_UP = 0xF0, |
@@ -189,11 +197,13 @@ enum special_keycodes { | |||
189 | KB_MS_WH_UP, | 197 | KB_MS_WH_UP, |
190 | KB_MS_WH_DOWN, | 198 | KB_MS_WH_DOWN, |
191 | KB_MS_WH_LEFT, | 199 | KB_MS_WH_LEFT, |
192 | KB_MS_WH_RIGHT, | 200 | KB_MS_WH_RIGHT, /* 0xFC */ |
201 | /* 0xFD-FF vacant for future use */ | ||
193 | }; | 202 | }; |
194 | 203 | ||
204 | /* USB HID Keyboard/Keypad Usage(0x07) */ | ||
195 | enum keycodes { | 205 | enum keycodes { |
196 | KB_NO = 0, | 206 | KB_NO = 0x00, |
197 | KB_ROLL_OVER, | 207 | KB_ROLL_OVER, |
198 | KB_POST_FAIL, | 208 | KB_POST_FAIL, |
199 | KB_UNDEFINED, | 209 | KB_UNDEFINED, |
@@ -357,9 +367,10 @@ enum keycodes { | |||
357 | KB_OPER, | 367 | KB_OPER, |
358 | KB_CLEAR_AGAIN, | 368 | KB_CLEAR_AGAIN, |
359 | KB_CRSEL, | 369 | KB_CRSEL, |
360 | KB_EXSEL, | 370 | KB_EXSEL, /* 0xA4 */ |
371 | |||
372 | /* NOTE: 0xA5-DF are used for internal special purpose */ | ||
361 | 373 | ||
362 | /* NOTE: 0xB0-DF are used as special_keycodes */ | ||
363 | #if 0 | 374 | #if 0 |
364 | KB_KP_00 = 0xB0, | 375 | KB_KP_00 = 0xB0, |
365 | KB_KP_000, | 376 | KB_KP_000, |
@@ -406,7 +417,7 @@ enum keycodes { | |||
406 | KB_KP_BINARY, | 417 | KB_KP_BINARY, |
407 | KB_KP_OCTAL, | 418 | KB_KP_OCTAL, |
408 | KB_KP_DECIMAL, | 419 | KB_KP_DECIMAL, |
409 | KB_KP_HEXADECIMAL, | 420 | KB_KP_HEXADECIMAL, /* 0xDD */ |
410 | #endif | 421 | #endif |
411 | 422 | ||
412 | /* Modifiers */ | 423 | /* Modifiers */ |
@@ -419,7 +430,7 @@ enum keycodes { | |||
419 | KB_RALT, | 430 | KB_RALT, |
420 | KB_RGUI, | 431 | KB_RGUI, |
421 | 432 | ||
422 | /* NOTE: 0xE8-FF are used as special_keycodes */ | 433 | /* NOTE: 0xE8-FF are used for internal special purpose */ |
423 | }; | 434 | }; |
424 | 435 | ||
425 | #endif /* USB_KEYCODES_H */ | 436 | #endif /* USB_KEYCODES_H */ |