make it work better

This commit is contained in:
Jeff Epler 2024-10-07 19:07:28 -05:00
parent f3f4b08a49
commit dc85c9405b

View file

@ -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;