diff options
| -rw-r--r-- | common/usb_kbd.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/common/usb_kbd.c b/common/usb_kbd.c index aaf7d6fa3..2472d25d4 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -87,6 +87,12 @@ static const unsigned char usb_kbd_numkey_shifted[] = {  	'|', '~', ':', '"', '~', '<', '>', '?'  }; +static const unsigned char usb_kbd_num_keypad[] = { +	'/', '*', '-', '+', '\r', +	'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', +	'.', 0, 0, 0, '=' +}; +  /*   * NOTE: It's important for the NUM, CAPS, SCROLL-lock bits to be in this   *       order. See usb_kbd_setled() function! @@ -218,6 +224,10 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode,  			keycode = usb_kbd_numkey[scancode - 0x1e];  	} +	/* Numeric keypad */ +	if ((scancode >= 0x54) && (scancode <= 0x67)) +		keycode = usb_kbd_num_keypad[scancode - 0x54]; +  	if (data->flags & USB_KBD_CTRL)  		keycode = scancode - 0x3; |