/trunk/uspace/srv/kbd/include/keys.h |
---|
37,11 → 37,11 |
#ifndef _KBD_KEYS_H_ |
#define _KBD_KEYS_H_ |
#define KBD_PUSHCHAR 1024 |
#define KBD_MS_LEFT 1025 |
#define KBD_MS_RIGHT 1026 |
#define KBD_MS_MIDDLE 1027 |
#define KBD_MS_MOVE 1028 |
#define KBD_EVENT 1024 |
#define KBD_MS_LEFT 1025 |
#define KBD_MS_RIGHT 1026 |
#define KBD_MS_MIDDLE 1027 |
#define KBD_MS_MOVE 1028 |
#define KBD_KEY_F1 0x3b |
#define KBD_KEY_F2 0x3c |
/trunk/uspace/srv/kbd/include/key_buffer.h |
---|
38,23 → 38,25 |
#define __KEY_BUFFER_H__ |
#include <sys/types.h> |
#include <kbd/kbd.h> |
/** Size of buffer for pressed keys */ |
#define KEYBUFFER_SIZE 128 |
typedef struct { |
int fifo[KEYBUFFER_SIZE]; |
kbd_event_t fifo[KEYBUFFER_SIZE]; |
unsigned long head; |
unsigned long tail; |
unsigned long items; |
} keybuffer_t; |
void keybuffer_free(keybuffer_t *keybuffer); |
void keybuffer_init(keybuffer_t *keybuffer); |
int keybuffer_available(keybuffer_t *keybuffer); |
int keybuffer_empty(keybuffer_t *keybuffer); |
void keybuffer_push(keybuffer_t *keybuffer, int key); |
int keybuffer_pop(keybuffer_t *keybuffer, int *c); |
extern void keybuffer_free(keybuffer_t *); |
extern void keybuffer_init(keybuffer_t *); |
extern int keybuffer_available(keybuffer_t *); |
extern int keybuffer_empty(keybuffer_t *); |
extern void keybuffer_push(keybuffer_t *, const kbd_event_t *); |
extern void keybuffer_push0(keybuffer_t *, int c); |
extern int keybuffer_pop(keybuffer_t *, kbd_event_t *); |
#endif |
/trunk/uspace/srv/kbd/genarch/src/kbd.c |
---|
73,6 → 73,7 |
int ascii = sc_primary_map[key]; |
int shift, capslock; |
int letter = 0; |
kbd_event_t ev; |
static int esc_count = 0; |
102,8 → 103,12 |
shift = !shift; |
if (shift) |
map = sc_secondary_map; |
if (map[key] != SPECIAL) |
keybuffer_push(keybuffer, map[key]); |
if (map[key] != SPECIAL) { |
ev.key = map[key]; |
ev.mods = 0; |
ev.c = map[key]; |
keybuffer_push(keybuffer, &ev); |
} |
break; |
} |
} |
/trunk/uspace/srv/kbd/genarch/src/nofb.c |
---|
66,43 → 66,43 |
if (scan_code == 0x7e) { |
switch (buf) { |
case KEY_F5: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 5); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 5); |
buf = count = 0; |
return 1; |
case KEY_F6: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 6); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 6); |
buf = count = 0; |
return 1; |
case KEY_F7: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 7); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 7); |
buf = count = 0; |
return 1; |
case KEY_F8: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 8); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 8); |
buf = count = 0; |
return 1; |
case KEY_F9: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 9); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 9); |
buf = count = 0; |
return 1; |
case KEY_F10: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 10); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 10); |
buf = count = 0; |
return 1; |
case KEY_F11: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 11); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 11); |
buf = count = 0; |
return 1; |
case KEY_F12: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 12); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 12); |
buf = count = 0; |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push(keybuffer, (buf >> 16) &0xff); |
keybuffer_push(keybuffer, (buf >> 24) &0xff); |
keybuffer_push(keybuffer, scan_code); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, (buf >> 16) &0xff); |
keybuffer_push0(keybuffer, (buf >> 24) &0xff); |
keybuffer_push0(keybuffer, scan_code); |
buf = count = 0; |
return 1; |
} |
111,7 → 111,7 |
buf |= ((unsigned long) scan_code)<<(8*(count++)); |
if((buf & 0xff) != (KEY_F1 & 0xff)) { |
keybuffer_push(keybuffer, buf); |
keybuffer_push0(keybuffer, buf); |
buf = count = 0; |
return 1; |
} |
122,8 → 122,8 |
if ((buf & 0xffff) != (KEY_F1 & 0xffff) |
&& (buf & 0xffff) != (KEY_F5 & 0xffff) ) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
buf = count = 0; |
return 1; |
} |
133,19 → 133,19 |
switch (buf) { |
case KEY_F1: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 1); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 1); |
buf = count = 0; |
return 1; |
case KEY_F2: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 2); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 2); |
buf = count = 0; |
return 1; |
case KEY_F3: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 3); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 3); |
buf = count = 0; |
return 1; |
case KEY_F4: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 4); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 4); |
buf = count = 0; |
return 1; |
} |
154,9 → 154,9 |
if((buf & 0xffffff) != (KEY_F5 & 0xffffff) |
&& (buf & 0xffffff) != (KEY_F9 & 0xffffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
buf=count=0; |
return 1; |
} |
175,10 → 175,10 |
case KEY_F12: |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push(keybuffer, (buf >> 16) &0xff); |
keybuffer_push(keybuffer, (buf >> 24) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, (buf >> 16) &0xff); |
keybuffer_push0(keybuffer, (buf >> 24) &0xff); |
buf = count = 0; |
return 1; |
} |
/trunk/uspace/srv/kbd/generic/kbd.c |
---|
42,12 → 42,14 |
#include <stdlib.h> |
#include <stdio.h> |
#include <ipc/ns.h> |
#include <async.h> |
#include <errno.h> |
#include <libadt/fifo.h> |
#include <kbd/kbd.h> |
#include <arch/kbd.h> |
#include <kbd.h> |
#include <libadt/fifo.h> |
#include <key_buffer.h> |
#include <async.h> |
#include <keys.h> |
#define NAME "kbd" |
58,7 → 60,7 |
static void irq_handler(ipc_callid_t iid, ipc_call_t *call) |
{ |
int chr; |
kbd_event_t ev; |
#ifdef MOUSE_ENABLED |
if (mouse_arch_process(phone2cons, call)) |
69,14 → 71,15 |
if (cons_connected && phone2cons != -1) { |
/* |
* recode to ASCII - one interrupt can produce more than one |
* code so result is stored in fifo |
* One interrupt can produce more than one event so the result |
* is stored in a FIFO. |
*/ |
while (!keybuffer_empty(&keybuffer)) { |
if (!keybuffer_pop(&keybuffer, (int *)&chr)) |
if (!keybuffer_pop(&keybuffer, &ev)) |
break; |
async_msg_1(phone2cons, KBD_PUSHCHAR, chr); |
async_msg_4(phone2cons, KBD_EVENT, ev.type, ev.key, |
ev.mods, ev.c); |
} |
} |
} |
/trunk/uspace/srv/kbd/generic/key_buffer.c |
---|
40,7 → 40,7 |
/** Clear key buffer. |
*/ |
void keybuffer_free(keybuffer_t *keybuffer) |
void keybuffer_free(keybuffer_t *keybuffer) |
{ |
futex_down(&keybuffer_futex); |
keybuffer->head = 0; |
75,15 → 75,18 |
return (keybuffer->items == 0); |
} |
/** Push key to key buffer. |
* If buffer is full, character is ignored. |
* @param key code of stored key |
/** Push key event to key buffer. |
* |
* If the buffer is full, the event is ignored. |
* |
* @param keybuffer The keybuffer. |
* @param ev The event to push. |
*/ |
void keybuffer_push(keybuffer_t *keybuffer, int key) |
void keybuffer_push(keybuffer_t *keybuffer, const kbd_event_t *ev) |
{ |
futex_down(&keybuffer_futex); |
if (keybuffer->items < KEYBUFFER_SIZE) { |
keybuffer->fifo[keybuffer->tail] = key; |
keybuffer->fifo[keybuffer->tail] = *ev; |
keybuffer->tail = (keybuffer->tail + 1) % KEYBUFFER_SIZE; |
keybuffer->items++; |
} |
90,16 → 93,25 |
futex_up(&keybuffer_futex); |
} |
/** Pop character from buffer. |
* @param c pointer to space where to store character from buffer. |
* @return zero on empty buffer, nonzero else |
void keybuffer_push0(keybuffer_t *keybuffer, int c) |
{ |
kbd_event_t ev; |
ev.key = c; ev.mods = 0; ev.c = c; |
keybuffer_push(keybuffer, &ev); |
} |
/** Pop event from buffer. |
* |
* @param edst Pointer to where the event should be saved. |
* @return Zero on empty buffer, nonzero otherwise. |
*/ |
int keybuffer_pop(keybuffer_t *keybuffer, int *c) |
int keybuffer_pop(keybuffer_t *keybuffer, kbd_event_t *edst) |
{ |
futex_down(&keybuffer_futex); |
if (keybuffer->items > 0) { |
keybuffer->items--; |
*c = (keybuffer->fifo[keybuffer->head]) ; |
*edst = (keybuffer->fifo[keybuffer->head]) ; |
keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE; |
futex_up(&keybuffer_futex); |
return 1; |
/trunk/uspace/srv/kbd/arch/ia64/src/kbd.c |
---|
178,39 → 178,39 |
if(scan_code == 0x7e) { |
switch (buf) { |
case NSKEY_F6: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 6); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 6); |
buf = count = 0; |
return 1; |
case NSKEY_F7: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 7); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 7); |
buf = count = 0; |
return 1; |
case NSKEY_F8: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 8); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 8); |
buf = count = 0; |
return 1; |
case NSKEY_F9: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 9); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 9); |
buf = count = 0; |
return 1; |
case NSKEY_F10: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 10); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 10); |
buf = count = 0; |
return 1; |
case NSKEY_F11: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 11); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 11); |
buf = count = 0; |
return 1; |
case NSKEY_F12: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 12); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 12); |
buf = count = 0; |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push(keybuffer, (buf >> 16) &0xff); |
keybuffer_push(keybuffer, (buf >> 24) &0xff); |
keybuffer_push(keybuffer, scan_code); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, (buf >> 16) &0xff); |
keybuffer_push0(keybuffer, (buf >> 24) &0xff); |
keybuffer_push0(keybuffer, scan_code); |
buf = count = 0; |
return 1; |
} |
219,7 → 219,7 |
buf |= ((unsigned long) scan_code)<<(8*(count++)); |
if((buf & 0xff) != (NSKEY_F1 & 0xff)) { |
keybuffer_push(keybuffer, buf); |
keybuffer_push0(keybuffer, buf); |
buf = count = 0; |
return 1; |
} |
229,8 → 229,8 |
if ((buf & 0xffff) != (NSKEY_F1 & 0xffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
buf = count = 0; |
return 1; |
} |
243,9 → 243,9 |
&& (buf & 0xffffff) != (NSKEY_F6 & 0xffffff) |
&& (buf & 0xffffff) != (NSKEY_F9 & 0xffffff) ) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push(keybuffer, (buf >> 16) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, (buf >> 16) &0xff); |
buf = count = 0; |
return 1; |
} |
255,23 → 255,23 |
switch (buf) { |
case NSKEY_F1: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 1); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 1); |
buf = count = 0; |
return 1; |
case NSKEY_F2: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 2); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 2); |
buf = count = 0; |
return 1; |
case NSKEY_F3: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 3); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 3); |
buf = count = 0; |
return 1; |
case NSKEY_F4: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 4); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 4); |
buf = count = 0; |
return 1; |
case NSKEY_F5: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 5); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 5); |
buf = count = 0; |
return 1; |
} |
288,10 → 288,10 |
case NSKEY_F12: |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push(keybuffer, (buf >> 16) &0xff); |
keybuffer_push(keybuffer, (buf >> 24) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, (buf >> 16) &0xff); |
keybuffer_push0(keybuffer, (buf >> 24) &0xff); |
buf = count = 0; |
return 1; |
} |
308,10 → 308,10 |
/* |
* Please preserve this code (it can be used to determine scancodes) |
*/ |
//keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); |
//keybuffer_push(keybuffer, to_hex(scan_code&0xf)); |
//keybuffer_push(keybuffer, ' '); |
//keybuffer_push(keybuffer, ' '); |
//keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf)); |
//keybuffer_push0(keybuffer, to_hex(scan_code&0xf)); |
//keybuffer_push0(keybuffer, ' '); |
//keybuffer_push0(keybuffer, ' '); |
//*/ |
if (scan_code) { |
328,44 → 328,44 |
} |
if (!(buf & 0xff00)) { |
keybuffer_push(keybuffer, buf); |
keybuffer_push0(keybuffer, buf); |
} else { |
switch (buf) { |
case KEY_F1: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 1); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 1); |
break; |
case KEY_F2: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 2); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 2); |
break; |
case KEY_F3: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 3); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 3); |
break; |
case KEY_F4: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 4); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 4); |
break; |
case KEY_F5: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 5); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 5); |
break; |
case KEY_F6: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 6); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 6); |
break; |
case KEY_F7: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 7); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 7); |
break; |
case KEY_F8: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 8); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 8); |
break; |
case KEY_F9: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 9); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 9); |
break; |
case KEY_F10: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 10); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 10); |
break; |
case KEY_F11: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 11); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 11); |
break; |
case KEY_F12: |
keybuffer_push(keybuffer, FUNCTION_KEYS | 12); |
keybuffer_push0(keybuffer, FUNCTION_KEYS | 12); |
break; |
} |
} |
/trunk/uspace/srv/kbd/arch/arm32/src/kbd_gxemul.c |
---|
122,10 → 122,10 |
/* |
// Preserve for detecting scan codes. |
keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); |
keybuffer_push(keybuffer, to_hex(scan_code&0xf)); |
keybuffer_push(keybuffer, 'X'); |
keybuffer_push(keybuffer, 'Y'); |
keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf)); |
keybuffer_push0(keybuffer, to_hex(scan_code&0xf)); |
keybuffer_push0(keybuffer, 'X'); |
keybuffer_push0(keybuffer, 'Y'); |
return 1; |
*/ |
136,43 → 136,43 |
if (scan_code == GXEMUL_KEY_F5_F12_START_CODE) { |
switch (buf) { |
case GXEMUL_KEY_F5: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 5); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 5); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F6: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 6); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 6); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F7: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 7); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 7); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F8: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 8); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 8); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F9: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 9); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 9); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F10: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 10); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 10); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F11: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 11); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 11); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F12: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 12); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 12); |
buf = count = 0; |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push(keybuffer, (buf >> 24) & 0xff); |
keybuffer_push(keybuffer, scan_code); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 24) & 0xff); |
keybuffer_push0(keybuffer, scan_code); |
buf = count = 0; |
return 1; |
} |
182,7 → 182,7 |
buf |= ((unsigned long) scan_code) << (8 * (count++)); |
if ((buf & 0xff) != (GXEMUL_KEY_F1 & 0xff)) { |
keybuffer_push(keybuffer, buf); |
keybuffer_push0(keybuffer, buf); |
buf = count = 0; |
return 1; |
} |
194,8 → 194,8 |
if ((buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff) |
&& (buf & 0xffff) != (GXEMUL_KEY_F5 & 0xffff) ) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
buf = count = 0; |
return 1; |
} |
206,19 → 206,19 |
switch (buf) { |
case GXEMUL_KEY_F1: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 1); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 1); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F2: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 2); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 2); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F3: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 3); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 3); |
buf = count = 0; |
return 1; |
case GXEMUL_KEY_F4: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 4); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 4); |
buf = count = 0; |
return 1; |
} |
227,9 → 227,9 |
if ((buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff) |
&& (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
buf = count = 0; |
return 1; |
} |
249,10 → 249,10 |
case GXEMUL_KEY_F12: |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push(keybuffer, (buf >> 24) & 0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 24) & 0xff); |
buf = count = 0; |
return 1; |
} |
278,10 → 278,10 |
/* |
// Please preserve this code (it can be used to determine scancodes) |
keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); |
keybuffer_push(keybuffer, to_hex(scan_code&0xf)); |
keybuffer_push(keybuffer, ' '); |
keybuffer_push(keybuffer, ' '); |
keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf)); |
keybuffer_push0(keybuffer, to_hex(scan_code&0xf)); |
keybuffer_push0(keybuffer, ' '); |
keybuffer_push0(keybuffer, ' '); |
return 1; |
*/ |
294,7 → 294,7 |
if ((buf & 0xff) != (GXEMUL_FB_KEY_F1 & 0xff)) { |
keybuffer_push(keybuffer, buf); |
keybuffer_push0(keybuffer, buf); |
buf = count = 0; |
return 1; |
} |
304,8 → 304,8 |
} |
if ((buf & 0xffff) != (GXEMUL_FB_KEY_F1 & 0xffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
buf = count = 0; |
return 1; |
} |
318,9 → 318,9 |
&& (buf & 0xffffff) != (GXEMUL_FB_KEY_F5 & 0xffffff) |
&& (buf & 0xffffff) != (GXEMUL_FB_KEY_F9 & 0xffffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
buf = count = 0; |
return 1; |
} |
331,58 → 331,58 |
switch (buf) { |
case GXEMUL_FB_KEY_F1: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 1 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 1 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F2: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 2 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 2 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F3: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 3 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 3 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F4: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 4 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 4 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F5: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 5 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 5 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F6: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 6 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 6 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F7: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 7 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 7 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F8: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 8 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 8 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F9: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 9 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 9 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F10: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 10 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 10 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F11: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 11 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 11 ); |
buf = count = 0; |
return 1; |
case GXEMUL_FB_KEY_F12: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 12 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 12 ); |
buf = count = 0; |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff ); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push(keybuffer, (buf >> 24) & 0xff); |
keybuffer_push0(keybuffer, buf & 0xff ); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 24) & 0xff); |
buf = count = 0; |
return 1; |
} |
/trunk/uspace/srv/kbd/arch/ppc32/src/kbd.c |
---|
192,7 → 192,7 |
int key = lchars[scancode & 0x7f]; |
if (key != SPECIAL) |
keybuffer_push(keybuffer, key); |
keybuffer_push0(keybuffer, key); |
} |
} |
/trunk/uspace/srv/kbd/arch/mips32/src/kbd.c |
---|
107,10 → 107,10 |
/* Please preserve this code (it can be used to determine scancodes) |
keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); |
keybuffer_push(keybuffer, to_hex(scan_code&0xf)); |
keybuffer_push(keybuffer, ' '); |
keybuffer_push(keybuffer, ' '); |
keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf)); |
keybuffer_push0(keybuffer, to_hex(scan_code&0xf)); |
keybuffer_push0(keybuffer, ' '); |
keybuffer_push0(keybuffer, ' '); |
return 1; |
*/ |
122,7 → 122,7 |
if ((buf & 0xff) != (GXEMUL_KEY_F1 & 0xff)) { |
keybuffer_push(keybuffer, buf); |
keybuffer_push0(keybuffer, buf); |
buf = count = 0; |
return 1; |
} |
131,8 → 131,8 |
return 1; |
if ((buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) &0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
buf = count = 0; |
return 1; |
} |
145,9 → 145,9 |
&& (buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff) |
&& (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff)) { |
keybuffer_push(keybuffer, buf & 0xff); |
keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
keybuffer_push0(keybuffer, buf & 0xff); |
keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
buf = count = 0; |
return 1; |
} |
158,58 → 158,58 |
switch (buf) { |
case GXEMUL_KEY_F1: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 1 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 1 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F2: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 2 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 2 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F3: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 3 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 3 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F4: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 4 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 4 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F5: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 5 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 5 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F6: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 6 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 6 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F7: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 7 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 7 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F8: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 8 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 8 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F9: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 9 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 9 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F10: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 10 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 10 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F11: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 11 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 11 ); |
buf=count=0; |
return 1; |
case GXEMUL_KEY_F12: |
keybuffer_push(keybuffer,FUNCTION_KEYS | 12 ); |
keybuffer_push0(keybuffer,FUNCTION_KEYS | 12 ); |
buf=count=0; |
return 1; |
default: |
keybuffer_push(keybuffer, buf & 0xff ); |
keybuffer_push(keybuffer, (buf >> 8) &0xff ); |
keybuffer_push(keybuffer, (buf >> 16) &0xff ); |
keybuffer_push(keybuffer, (buf >> 24) &0xff ); |
keybuffer_push0(keybuffer, buf & 0xff ); |
keybuffer_push0(keybuffer, (buf >> 8) &0xff ); |
keybuffer_push0(keybuffer, (buf >> 16) &0xff ); |
keybuffer_push0(keybuffer, (buf >> 24) &0xff ); |
buf=count=0; |
return 1; |
} |