#include "project.h" static int at_to_usb_keyboard[AT_SC_MAX] = { [AT_SC_GRAVE] = USB_K_SC_GRAVE, [AT_SC_1] = USB_K_SC_1, [AT_SC_2] = USB_K_SC_2, [AT_SC_3] = USB_K_SC_3, [AT_SC_4] = USB_K_SC_4, [AT_SC_5] = USB_K_SC_5, [AT_SC_6] = USB_K_SC_6, [AT_SC_7] = USB_K_SC_7, [AT_SC_8] = USB_K_SC_8, [AT_SC_9] = USB_K_SC_9, [AT_SC_0] = USB_K_SC_0, [AT_SC_MINUS] = USB_K_SC_MINUS, [AT_SC_EQUAL] = USB_K_SC_EQUAL, [AT_SC_BACKSPACE] = USB_K_SC_BACKSPACE, [AT_SC_TAB] = USB_K_SC_TAB, [AT_SC_Q] = USB_K_SC_Q, [AT_SC_W] = USB_K_SC_W, [AT_SC_E] = USB_K_SC_E, [AT_SC_R] = USB_K_SC_R, [AT_SC_T] = USB_K_SC_T, [AT_SC_Y] = USB_K_SC_Y, [AT_SC_U] = USB_K_SC_U, [AT_SC_I] = USB_K_SC_I, [AT_SC_O] = USB_K_SC_O, [AT_SC_P] = USB_K_SC_P, [AT_SC_LEFTBRACE] = USB_K_SC_LEFTBRACE, [AT_SC_RIGHTBRACE] = USB_K_SC_RIGHTBRACE, [AT_SC_BACKSLASH] = USB_K_SC_BACKSLASH, [AT_SC_CAPSLOCK] = USB_K_SC_CAPSLOCK, [AT_SC_A] = USB_K_SC_A, [AT_SC_S] = USB_K_SC_S, [AT_SC_D] = USB_K_SC_D, [AT_SC_F] = USB_K_SC_F, [AT_SC_G] = USB_K_SC_G, [AT_SC_H] = USB_K_SC_H, [AT_SC_J] = USB_K_SC_J, [AT_SC_K] = USB_K_SC_K, [AT_SC_L] = USB_K_SC_L, [AT_SC_SEMICOLON] = USB_K_SC_SEMICOLON, [AT_SC_APOSTROPHE] = USB_K_SC_APOSTROPHE, [AT_SC_102ND] = USB_K_SC_102ND, [AT_SC_ENTER] = USB_K_SC_ENTER, [AT_SC_LEFTSHIFT] = USB_K_SC_LEFTSHIFT, [AT_SC_Z] = USB_K_SC_Z, [AT_SC_X] = USB_K_SC_X, [AT_SC_C] = USB_K_SC_C, [AT_SC_V] = USB_K_SC_V, [AT_SC_B] = USB_K_SC_B, [AT_SC_N] = USB_K_SC_N, [AT_SC_M] = USB_K_SC_M, [AT_SC_COMMA] = USB_K_SC_COMMA, [AT_SC_DOT] = USB_K_SC_DOT, [AT_SC_SLASH] = USB_K_SC_SLASH, [AT_SC_RIGHTSHIFT] = USB_K_SC_RIGHTSHIFT, [AT_SC_LEFTCTRL] = USB_K_SC_LEFTCTRL, [AT_SC_LEFTALT] = USB_K_SC_LEFTALT, [AT_SC_SPACE] = USB_K_SC_SPACE, [AT_SC_RIGHTALT] = USB_K_SC_RIGHTALT, [AT_SC_RIGHTCTRL] = USB_K_SC_RIGHTCTRL, [AT_SC_INSERT] = USB_K_SC_INSERT, [AT_SC_DELETE] = USB_K_SC_DELETE, [AT_SC_LEFT] = USB_K_SC_LEFT, [AT_SC_HOME] = USB_K_SC_HOME, [AT_SC_END] = USB_K_SC_END, [AT_SC_UP] = USB_K_SC_UP, [AT_SC_DOWN] = USB_K_SC_DOWN, [AT_SC_PAGEUP] = USB_K_SC_PAGEUP, [AT_SC_PAGEDOWN] = USB_K_SC_PAGEDOWN, [AT_SC_RIGHT] = USB_K_SC_RIGHT, [AT_SC_NUMLOCK] = USB_K_SC_NUMLOCK, [AT_SC_KP7] = USB_K_SC_KP7, [AT_SC_KP4] = USB_K_SC_KP4, [AT_SC_KP1] = USB_K_SC_KP1, [AT_SC_KPSLASH] = USB_K_SC_KPSLASH, [AT_SC_KP8] = USB_K_SC_KP8, [AT_SC_KP5] = USB_K_SC_KP5, [AT_SC_KP2] = USB_K_SC_KP2, [AT_SC_KP0] = USB_K_SC_KP0, [AT_SC_KPASTERISK] = USB_K_SC_KPASTERISK, [AT_SC_KP9] = USB_K_SC_KP9, [AT_SC_KP6] = USB_K_SC_KP6, [AT_SC_KP3] = USB_K_SC_KP3, [AT_SC_KPDOT] = USB_K_SC_KPDOT, [AT_SC_KPMINUS] = USB_K_SC_KPMINUS, [AT_SC_KPPLUS] = USB_K_SC_KPPLUS, [AT_SC_KPENTER] = USB_K_SC_KPENTER, [AT_SC_ESC] = USB_K_SC_ESC, [AT_SC_F1] = USB_K_SC_F1, [AT_SC_F2] = USB_K_SC_F2, [AT_SC_F3] = USB_K_SC_F3, [AT_SC_F4] = USB_K_SC_F4, [AT_SC_F5] = USB_K_SC_F5, [AT_SC_F6] = USB_K_SC_F6, [AT_SC_F7] = USB_K_SC_F7, [AT_SC_F8] = USB_K_SC_F8, [AT_SC_F9] = USB_K_SC_F9, [AT_SC_F10] = USB_K_SC_F10, [AT_SC_F11] = USB_K_SC_F11, [AT_SC_F12] = USB_K_SC_F12, [AT_SC_SYSRQ] = USB_K_SC_SYSRQ, [AT_SC_SCROLLLOCK] = USB_K_SC_SCROLLLOCK, [AT_SC_PAUSE] = USB_K_SC_PAUSE, [AT_SC_LEFTMETA] = USB_K_SC_LEFTMETA, [AT_SC_RIGHTMETA] = USB_K_SC_RIGHTMETA, [AT_SC_MENU] = USB_K_SC_MENU, [AT_SC_POWER] = USB_K_SC_POWER, [AT_SC_SLEEP] = USB_K_SC_SLEEP, // [ AT_SC_WAKEUP ] = USB_K_SC_WAKEUP, // [ AT_SC_DBE_KATAKANA ] = USB_K_SC_DBE_KATAKANA, // [ AT_SC_DBE_SBCSCHAR ] = USB_K_SC_DBE_SBCSCHAR, // [ AT_SC_CONVERT ] = USB_K_SC_CONVERT, // [ AT_SC_NONCONVERT ] = USB_K_SC_NONCONVERT, }; static int at_to_usb_consumer[AT_SC_MAX] = { [AT_SC_HOMEPAGE] = USB_C_BF_HOMEPAGE, [AT_SC_MUTE] = USB_C_BF_MUTE, [AT_SC_VOLUMEUP] = USB_C_BF_VOLUMEUP, [AT_SC_VOLUMEDOWN] = USB_C_BF_VOLUMEDOWN, [AT_SC_KEY_PREVIOUSSONG] = USB_C_BF_PREVIOUSSONG, [AT_SC_KEY_PLAYPAUSE] = USB_C_BF_PLAYPAUSE, [AT_SC_KEY_STOPCD] = USB_C_BF_STOPCD, [AT_SC_KEY_NEXTSONG] = USB_C_BF_NEXTSONG, }; void scancode_error (void) { keyboard_error (); consumer_error (); } void scancode_dispatch (int key, int updown) { if (at_to_usb_keyboard[key]) keyboard_dispatch (at_to_usb_keyboard[key], updown); if (at_to_usb_consumer[key]) consumer_dispatch (at_to_usb_consumer[key], updown); }