Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4631 → Rev 4632

/branches/arm/uspace/srv/kbd/Makefile
72,13 → 72,13
genarch/src/kbd.c
endif
ifeq ($(ARCH), arm32)
GENARCH_SOURCES = \
genarch/src/kbd.c
ifeq ($(MACHINE), gxemul_testarm)
ARCH_SOURCES += \
arch/$(ARCH)/src/kbd_gxemul.c
endif
ifeq ($(MACHINE), qemu_icp)
GENARCH_SOURCES = \
genarch/src/kbd.c
ARCH_SOURCES += \
arch/$(ARCH)/src/kbd_icp.c \
arch/$(ARCH)/src/scanc.c
/branches/arm/uspace/srv/kbd/arch/arm32/src/scanc.c
53,7 → 53,7
(FUNCTION_KEYS | 6), /* 0x0B - F6 */
(FUNCTION_KEYS | 4), /* 0x0C - F4 */
'\t', /* 0x0D - Tab */
'~',
'`',
SPECIAL, /* 0x0F */
SPECIAL, /* 0x10 */
SPECIAL, /* 0x11 - LAlt */
86,15 → 86,15
'.', '/', 'l', ';', 'p', '-',
SPECIAL, /* 0x4F */
SPECIAL, /* 0x50 */
SPECIAL, /* 0x51 */
'\'',
SPECIAL, /* 0x52 */
SPECIAL, /* 0x53 */
'{', '=',
'[', '=',
SPECIAL, /* 0x56 */
SPECIAL, /* 0x57 */
SPECIAL, /* 0x58 - Caps Lock */
SPECIAL, /* 0x59 - RShift */
'\n', '}',
'\n', ']',
SPECIAL, /* 0x5C */
'\\',
SPECIAL, /* 0x5E */
182,8 → 182,8
'>', '?', 'L', ':', 'P', '_',
SPECIAL, /* 0x4F */
SPECIAL, /* 0x50 */
SPECIAL, /* 0x51 */
'"',
SPECIAL, /* 0x52 */
SPECIAL, /* 0x53 */
'{', '+',
SPECIAL, /* 0x56 */
/branches/arm/uspace/srv/kbd/arch/arm32/src/kbd_icp.c
91,19 → 91,29
int kbd_arch_process(keybuffer_t *keybuffer, ipc_call_t *call)
{
static int key_released_flag = 0;
static uint8_t prev_char = 0xFF;
static int caps_count = 0;
int scan_code = IPC_GET_ARG1(*call);
 
if (scan_code == 0x58) {
if (caps_count == 2) {
caps_count = 0;
return 1;
} else if (key_released_flag && !caps_count) {
key_released_flag = 0;
return 1;
}
caps_count++;
}
 
if (scan_code == PL050_KEY_RELEASE) {
key_released_flag = 1;
} else {
if (key_released_flag && prev_char == scan_code) {
prev_char = 0xFF;
if (key_released_flag) {
key_released(keybuffer, scan_code);
} else {
key_pressed(keybuffer, scan_code);
prev_char = scan_code;
}
key_released_flag = 0;
}