diff options
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/char/keyboard.c')
-rw-r--r-- | uClinux-2.4.20-uc1/drivers/char/keyboard.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/char/keyboard.c b/uClinux-2.4.20-uc1/drivers/char/keyboard.c index ac8795d..09242a3 100644 --- a/uClinux-2.4.20-uc1/drivers/char/keyboard.c +++ b/uClinux-2.4.20-uc1/drivers/char/keyboard.c @@ -21,6 +21,7 @@ * * 27-05-97: Added support for the Magic SysRq Key (Martin Mares) * 30-07-98: Dead keys redone, aeb@cwi.nl. + * 01-09-05: Winbond modifications by PC34 MCLi */ #include <linux/config.h> @@ -191,6 +192,12 @@ int getkeycode(unsigned int scancode) return kbd_getkeycode(scancode); } +#ifdef CONFIG_BOARD_W90N745 +extern unsigned char IsExt; +extern unsigned char gvLEDCode; +extern struct tty_struct *key_tty; +#endif + void handle_scancode(unsigned char scancode, int down) { unsigned char keycode; @@ -200,7 +207,12 @@ void handle_scancode(unsigned char scancode, int down) pm_access(pm_kbd); add_keyboard_randomness(scancode | up_flag); +#ifndef CONFIG_BOARD_W90N745 tty = ttytab? ttytab[fg_console]: NULL; +#else + tty = key_tty; +#endif + if (tty && (!tty->driver_data)) { /* * We touch the tty structure via the ttytab array @@ -282,7 +294,14 @@ void handle_scancode(unsigned char scancode, int down) ushort *key_map = key_maps[shift_final]; if (key_map != NULL) { +#ifndef CONFIG_BOARD_W90N745 keysym = key_map[keycode]; +#else + if(shift_state && !IsExt && (keycode==0x4A)) + keysym=0xF03F; + else + keysym = key_map[keycode]; +#endif type = KTYP(keysym); if (type >= 0xf0) { @@ -297,7 +316,13 @@ void handle_scancode(unsigned char scancode, int down) keysym = key_map[keycode]; } } +#ifndef CONFIG_BOARD_W90N745 (*key_handler[type])(keysym & 0xff, up_flag); +#else + if(keysym!=0xF303) + (*key_handler[type])(keysym & 0xff, up_flag); +#endif + if (type != KT_SLOCK) kbd->slockstate = 0; } else { @@ -907,11 +932,19 @@ static void kbd_bh(unsigned long dummy) { unsigned char leds = getleds(); +#ifndef CONFIG_BOARD_W90N745 if (leds != ledstate) { ledstate = leds; kbd_leds(leds); if (kbd_ledfunc) kbd_ledfunc(leds); } +#else + if (gvLEDCode != ledstate) { + ledstate = gvLEDCode; + kbd_leds(gvLEDCode); + if (kbd_ledfunc) kbd_ledfunc(gvLEDCode); + } +#endif } EXPORT_SYMBOL(keyboard_tasklet); |