Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1559 → Rev 1560

/uspace/trunk/kbd/include/key_buffer.h
35,7 → 35,7
#define KEYBUFFER_SIZE 128
 
typedef struct {
char fifo[KEYBUFFER_SIZE];
int fifo[KEYBUFFER_SIZE];
unsigned long head;
unsigned long tail;
unsigned long items;
45,8 → 45,8
void keybuffer_init(keybuffer_t *keybuffer);
int keybuffer_available(keybuffer_t *keybuffer);
int keybuffer_empty(keybuffer_t *keybuffer);
void keybuffer_push(keybuffer_t *keybuffer, char key);
int keybuffer_pop(keybuffer_t *keybuffer, char *c);
void keybuffer_push(keybuffer_t *keybuffer, int key);
int keybuffer_pop(keybuffer_t *keybuffer, int *c);
 
#endif
 
/uspace/trunk/kbd/generic/kbd.c
91,16 → 91,21
 
case IPC_M_INTERRUPT:
if (connected) {
int chr;
/* recode to ASCII - one interrupt can produce more than one code so result is stored in fifo */
kbd_arch_process(&keybuffer, IPC_GET_ARG2(call));
 
retval = 0;
 
while (!keybuffer_empty(&keybuffer)) {
if (!keybuffer_pop(&keybuffer, (char *)&arg1)) {
if (!keybuffer_pop(&keybuffer, (int *)&chr)) {
break;
}
send_call(phoneid, KBD_PUSHCHAR, arg1);
{
arg1=chr;
send_call(phoneid, KBD_PUSHCHAR, arg1);
}
}
 
}
/uspace/trunk/kbd/generic/key_buffer.c
72,7 → 72,7
* If buffer is full, character is ignored.
* @param key code of stored key
*/
void keybuffer_push(keybuffer_t *keybuffer, char key)
void keybuffer_push(keybuffer_t *keybuffer, int key)
{
futex_down(&keybuffer_futex);
if (keybuffer->items < KEYBUFFER_SIZE) {
87,12 → 87,12
* @param c pointer to space where to store character from buffer.
* @return zero on empty buffer, nonzero else
*/
int keybuffer_pop(keybuffer_t *keybuffer, char *c)
int keybuffer_pop(keybuffer_t *keybuffer, int *c)
{
futex_down(&keybuffer_futex);
if (keybuffer->items > 0) {
keybuffer->items--;
*c = keybuffer->fifo[keybuffer->head];
*c = (keybuffer->fifo[keybuffer->head]) ;
keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE;
futex_up(&keybuffer_futex);
return 1;
/uspace/trunk/kbd/arch/ia32/src/kbd.c
57,11 → 57,13
#define SC_HOME 0x47
#define SC_END 0x4f
 
#define FUNCTION_KEYS 0x100
 
static volatile int keyflags; /**< Tracking of multiple keypresses. */
static volatile int lockflags; /**< Tracking of multiple keys lockings. */
 
/** Primary meaning of scancodes. */
static char sc_primary_map[] = {
static int sc_primary_map[] = {
SPECIAL, /* 0x00 */
SPECIAL, /* 0x01 - Esc */
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=',
78,16 → 80,16
SPECIAL, /* 0x38 - LAlt */
' ',
SPECIAL, /* 0x3a - CapsLock */
SPECIAL, /* 0x3b - F1 */
SPECIAL, /* 0x3c - F2 */
SPECIAL, /* 0x3d - F3 */
SPECIAL, /* 0x3e - F4 */
SPECIAL, /* 0x3f - F5 */
SPECIAL, /* 0x40 - F6 */
SPECIAL, /* 0x41 - F7 */
SPECIAL, /* 0x42 - F8 */
SPECIAL, /* 0x43 - F9 */
SPECIAL, /* 0x44 - F10 */
(FUNCTION_KEYS | 1), /* 0x3b - F1 */
(FUNCTION_KEYS | 2), /* 0x3c - F2 */
(FUNCTION_KEYS | 3), /* 0x3d - F3 */
(FUNCTION_KEYS | 4), /* 0x3e - F4 */
(FUNCTION_KEYS | 5), /* 0x3f - F5 */
(FUNCTION_KEYS | 6), /* 0x40 - F6 */
(FUNCTION_KEYS | 7), /* 0x41 - F7 */
(FUNCTION_KEYS | 8), /* 0x42 - F8 */
(FUNCTION_KEYS | 9), /* 0x43 - F9 */
(FUNCTION_KEYS | 10), /* 0x44 - F10 */
SPECIAL, /* 0x45 - NumLock */
SPECIAL, /* 0x46 - ScrollLock */
'7', '8', '9', '-',
97,8 → 99,8
SPECIAL, /* 0x54 - Alt-SysRq */
SPECIAL, /* 0x55 - F11/F12/PF1/FN */
SPECIAL, /* 0x56 - unlabelled key next to LAlt */
SPECIAL, /* 0x57 - F11 */
SPECIAL, /* 0x58 - F12 */
FUNCTION_KEYS | 11, /* 0x57 - F11 */
FUNCTION_KEYS | 12, /* 0x58 - F12 */
SPECIAL, /* 0x59 */
SPECIAL, /* 0x5a */
SPECIAL, /* 0x5b */
250,10 → 252,10
 
static int key_pressed(keybuffer_t *keybuffer, unsigned char key)
{
char *map = sc_primary_map;
char ascii = sc_primary_map[key];
char shift, capslock;
char letter = 0;
int *map = sc_primary_map;
int ascii = sc_primary_map[key];
int shift, capslock;
int letter = 0;
 
switch (key) {
case SC_LSHIFT:
/uspace/trunk/console/console.c
284,7 → 284,7
ipc_callid_t callid;
ipc_call_t call;
int retval;
char c;
int c;
connection_t *conn;
/* Ignore parameters, the connection is alread opened */
304,11 → 304,11
conn = &connections[active_console];
// if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) {
if ((c >= '0') && (c < '0' + CONSOLE_COUNT)) {
if (c == '0')
if ((c >= 0x101) && (c < 0x101 + CONSOLE_COUNT)) {
if (c == 0x112)
change_console(KERNEL_CONSOLE);
else
change_console(c - '1');
change_console(c - 0x101);
break;
}
/uspace/trunk/fb/main.c
56,6 → 56,7
ipcarg_t phonead;
int initialized = 0;
 
#ifdef ia32
if (sysinfo_value("fb.kind") == 1) {
if (fb_init() == 0)
initialized = 1;
63,6 → 64,19
if (ega_init() == 0)
initialized = 1;
}
#endif
 
#ifdef amd64
if (sysinfo_value("fb.kind") == 1) {
if (fb_init() == 0)
initialized = 1;
} else if (sysinfo_value("fb.kind") == 2) {
if (ega_init() == 0)
initialized = 1;
}
#endif
 
 
if (!initialized)
sysio_init();
/uspace/trunk/fb/Makefile
45,13 → 45,24
 
OUTPUT = fb
SOURCES = \
fb.c \
font-8x16.c \
main.c \
sysio.c \
ega.c \
ppm.c
 
ifeq ($(ARCH), ia32)
SOURCES += fb.c \
font-8x16.c \
ega.c
endif
ifeq ($(ARCH), amd64)
SORCES += fb.c \
font-8x16.c \
ega.c
endif
 
CFLAGS += -D$(ARCH)
 
 
OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
 
.PHONY: all clean depend disasm