Add basic numpad support
This commit is contained in:
parent
f4ba7b0e50
commit
74e4ee5f56
|
@ -2071,7 +2071,7 @@ int main(int argc, char * argv[]) {
|
|||
int index = syscall_fswait(amfd == -1 ? 3 : 4, fds);
|
||||
|
||||
if (index == 2) {
|
||||
char buf[1];
|
||||
unsigned char buf[1];
|
||||
int r = read(kfd, buf, 1);
|
||||
if (r > 0) {
|
||||
kbd_scancode(&state, buf[0], &event);
|
||||
|
|
|
@ -83,6 +83,25 @@
|
|||
#define KEY_END 2016
|
||||
#define KEY_DEL 2017
|
||||
#define KEY_INSERT 2018
|
||||
#define KEY_PAUSE 2019
|
||||
#define KEY_SCROLL_LOCK 2020
|
||||
|
||||
#define KEY_NUM_0 2500
|
||||
#define KEY_NUM_1 2501
|
||||
#define KEY_NUM_2 2502
|
||||
#define KEY_NUM_3 2503
|
||||
#define KEY_NUM_4 2504
|
||||
#define KEY_NUM_5 2505
|
||||
#define KEY_NUM_6 2506
|
||||
#define KEY_NUM_7 2507
|
||||
#define KEY_NUM_8 2508
|
||||
#define KEY_NUM_9 2509
|
||||
#define KEY_NUM_DOT 2510
|
||||
#define KEY_NUM_DIV 2511
|
||||
#define KEY_NUM_STAR 2512
|
||||
#define KEY_NUM_MINUS 2513
|
||||
#define KEY_NUM_PLUS 2514
|
||||
#define KEY_NUM_ENTER 2515
|
||||
|
||||
#define KEY_SCANCODE_F1 0x3b
|
||||
#define KEY_SCANCODE_F2 0x3c
|
||||
|
@ -97,6 +116,23 @@
|
|||
#define KEY_SCANCODE_F11 0x57
|
||||
#define KEY_SCANCODE_F12 0x58
|
||||
|
||||
#define KEY_SCANCODE_NUM_1 0x4f
|
||||
#define KEY_SCANCODE_NUM_2 0x50
|
||||
#define KEY_SCANCODE_NUM_3 0x51
|
||||
#define KEY_SCANCODE_NUM_4 0x4B
|
||||
#define KEY_SCANCODE_NUM_5 0x4C
|
||||
#define KEY_SCANCODE_NUM_6 0x4D
|
||||
#define KEY_SCANCODE_NUM_7 0x47
|
||||
#define KEY_SCANCODE_NUM_8 0x48
|
||||
#define KEY_SCANCODE_NUM_9 0x49
|
||||
#define KEY_SCANCODE_NUM_0 0x52
|
||||
#define KEY_SCANCODE_NUM_DOT 0x53
|
||||
#define KEY_SCANCODE_NUM_MIN 0x4a
|
||||
#define KEY_SCANCODE_NUM_ADD 0x4e
|
||||
|
||||
#define KEY_SCANCODE_NUM_LK 0x45
|
||||
#define KEY_SCANCODE_SCROLL 0x46
|
||||
|
||||
#define KEY_MOD_LEFT_CTRL 0x01
|
||||
#define KEY_MOD_LEFT_SHIFT 0x02
|
||||
#define KEY_MOD_LEFT_ALT 0x04
|
||||
|
|
61
lib/kbd.c
61
lib/kbd.c
|
@ -11,6 +11,7 @@
|
|||
* - It translates incoming keys to escape sequences
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <toaru/kbd.h>
|
||||
|
||||
#define DEBUG_SCANCODES 0
|
||||
|
@ -351,6 +352,58 @@ int kbd_scancode(key_event_state_t * state, unsigned char c, key_event_t * event
|
|||
event->keycode = KEY_LEFT_ALT;
|
||||
SET_UNSET(event->modifiers, KEY_MOD_LEFT_ALT, down);
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_0:
|
||||
event->keycode = KEY_NUM_0;
|
||||
event->key = '0';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_1:
|
||||
event->keycode = KEY_NUM_1;
|
||||
event->key = '1';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_2:
|
||||
event->keycode = KEY_NUM_2;
|
||||
event->key = '2';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_3:
|
||||
event->keycode = KEY_NUM_3;
|
||||
event->key = '3';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_4:
|
||||
event->keycode = KEY_NUM_4;
|
||||
event->key = '4';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_5:
|
||||
event->keycode = KEY_NUM_5;
|
||||
event->key = '5';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_6:
|
||||
event->keycode = KEY_NUM_6;
|
||||
event->key = '6';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_7:
|
||||
event->keycode = KEY_NUM_7;
|
||||
event->key = '7';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_8:
|
||||
event->keycode = KEY_NUM_8;
|
||||
event->key = '8';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_9:
|
||||
event->keycode = KEY_NUM_9;
|
||||
event->key = '9';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_DOT:
|
||||
event->keycode = KEY_NUM_DOT;
|
||||
event->key = '.';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_MIN:
|
||||
event->keycode = KEY_NUM_MINUS;
|
||||
event->key = '-';
|
||||
break;
|
||||
case KEY_SCANCODE_NUM_ADD:
|
||||
event->keycode = KEY_NUM_PLUS;
|
||||
event->key = '+';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -469,6 +522,14 @@ int kbd_scancode(key_event_state_t * state, unsigned char c, key_event_t * event
|
|||
case 0x53:
|
||||
event->keycode = KEY_DEL;
|
||||
break;
|
||||
case 0x35:
|
||||
event->keycode = KEY_NUM_DIV;
|
||||
event->key = '/';
|
||||
break;
|
||||
case 0x1C:
|
||||
event->keycode = KEY_NUM_ENTER;
|
||||
event->key = '\n';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue