From: Vincent Palatin Date: Mon, 9 Jan 2012 12:59:36 +0000 (+0000) Subject: usb: add numeric keypad support to HID driver X-Git-Tag: v2012.04-rc1~92 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d53da847cf274b8fd3ea362a3dfff68ea6206613;p=oweals%2Fu-boot.git usb: add numeric keypad support to HID driver When keys are pressed on the numeric keypad, emit key codes for the numbers, operators, dot and enter. Signed-off-by: Vincent Palatin --- diff --git a/common/usb_kbd.c b/common/usb_kbd.c index aaf7d6fa3d..2472d25d4a 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;