make it work better
This commit is contained in:
parent
f3f4b08a49
commit
dc85c9405b
1 changed files with 89 additions and 1 deletions
90
keyboard.c
90
keyboard.c
|
|
@ -58,6 +58,17 @@ static bool write_expect_fa(int value, const char *msg) {
|
|||
|
||||
}
|
||||
bool keyboard_setup(PIO pio) {
|
||||
gpio_init(KEYBOARD_DATA_PIN);
|
||||
gpio_init(KEYBOARD_DATA_PIN + 1);
|
||||
|
||||
gpio_pull_down(KEYBOARD_DATA_PIN);
|
||||
gpio_pull_down(KEYBOARD_DATA_PIN + 1);
|
||||
|
||||
while(!(gpio_get(KEYBOARD_DATA_PIN) && gpio_get(KEYBOARD_DATA_PIN + 1)))
|
||||
scrnprintf("Waiting for keyboard to boot...\r\n");
|
||||
|
||||
sleep_ms(10);
|
||||
|
||||
kbd_pio = pio;
|
||||
uint offset = pio_add_program(pio, &atkbd_program);
|
||||
kbd_sm = pio_claim_unused_sm(pio, true);
|
||||
|
|
@ -83,7 +94,7 @@ bool keyboard_setup(PIO pio) {
|
|||
return ok;
|
||||
}
|
||||
|
||||
enum { SHIFT=1, CTRL=2, ALT=3 };
|
||||
enum { SHIFT=1, CTRL=2, ALT=4 };
|
||||
const char keyboard_modifiers[256] = {
|
||||
[0x12] = SHIFT,
|
||||
[0x59] = SHIFT,
|
||||
|
|
@ -99,10 +110,87 @@ const char *keyboard_codes[256] = {
|
|||
[0x0f] = "F2",
|
||||
[0x17] = "F3",
|
||||
[0x1f] = "F4",
|
||||
[0x27] = "F4",
|
||||
[0x2f] = "F4",
|
||||
[0x37] = "F4",
|
||||
[0x3f] = "F4",
|
||||
[0x47] = "F4",
|
||||
[0x4f] = "F10",
|
||||
[0x56] = "F11",
|
||||
[0x5e] = "F12",
|
||||
[0x76] = "NUMLOCK",
|
||||
[0x57] = "PRTSCR",
|
||||
[0x5f] = "SCRLCK",
|
||||
[0x62] = "PAUSE",
|
||||
[0x67] = "INSERT",
|
||||
[0x64] = "DELETE",
|
||||
|
||||
[0x0e] = "`",
|
||||
[0x16] = "1",
|
||||
[0x1e] = "2",
|
||||
[0x26] = "3",
|
||||
[0x25] = "4",
|
||||
[0x2e] = "5",
|
||||
[0x36] = "6",
|
||||
[0x3d] = "7",
|
||||
[0x3e] = "8",
|
||||
[0x46] = "9",
|
||||
[0x45] = "0",
|
||||
[0x4e] = "-",
|
||||
[0x55] = "=",
|
||||
[0x66] = "\010",
|
||||
|
||||
[0x0d] = "\t",
|
||||
[0x15] = "q",
|
||||
[0x1d] = "w",
|
||||
[0x24] = "e",
|
||||
[0x2d] = "r",
|
||||
[0x2c] = "t",
|
||||
[0x35] = "y",
|
||||
[0x3c] = "u",
|
||||
[0x43] = "i",
|
||||
[0x44] = "o",
|
||||
[0x4d] = "p",
|
||||
[0x54] = "[",
|
||||
[0x5b] = "]",
|
||||
[0x5c] = "\\",
|
||||
|
||||
[0x14] = "CAPS",
|
||||
[0x1c] = "a",
|
||||
[0x1b] = "s",
|
||||
[0x23] = "d",
|
||||
[0x2b] = "f",
|
||||
[0x34] = "g",
|
||||
[0x33] = "h",
|
||||
[0x3b] = "j",
|
||||
[0x42] = "k",
|
||||
[0x4b] = "l",
|
||||
[0x4c] = ";",
|
||||
[0x52] = "'",
|
||||
[0x5a] = "\n",
|
||||
|
||||
[0x1a] = "z",
|
||||
[0x22] = "x",
|
||||
[0x21] = "c",
|
||||
[0x2a] = "v",
|
||||
[0x32] = "b",
|
||||
[0x31] = "n",
|
||||
[0x3a] = "m",
|
||||
[0x41] = ",",
|
||||
[0x49] = ".",
|
||||
[0x4a] = "/",
|
||||
[0x63] = "uparrow",
|
||||
|
||||
[0x29] = " ",
|
||||
[0x61] = "leftarrow",
|
||||
[0x6a] = "rightarrow",
|
||||
[0x60] = "downarrow",
|
||||
|
||||
|
||||
[0x6e] = "home",
|
||||
[0x65] = "end",
|
||||
[0x6f] = "pgup",
|
||||
[0x6d] = "pgdn",
|
||||
};
|
||||
|
||||
bool pending_release;
|
||||
|
|
|
|||
Loading…
Reference in a new issue