Add basic numpad support

This commit is contained in:
K. Lange 2018-06-08 15:11:41 +09:00
parent f4ba7b0e50
commit 74e4ee5f56
3 changed files with 98 additions and 1 deletions

View File

@ -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);

View File

@ -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

View File

@ -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;
}