# PC keyboard scancode set 2 from http://www.computer-engineering.org/ps2keyboard/scancodes2.html
set2 = {
    "A" : {"make" : [0x1C], "break" : [0xF0,0x1C] },
    "B" : {"make" : [0x32], "break" : [0xF0,0x32] },
    "C" : {"make" : [0x21], "break" : [0xF0,0x21] },
    "D" : {"make" : [0x23], "break" : [0xF0,0x23] },
    "E" : {"make" : [0x24], "break" : [0xF0,0x24] },
    "F" : {"make" : [0x2B], "break" : [0xF0,0x2B] },
    "G" : {"make" : [0x34], "break" : [0xF0,0x34] },
    "H" : {"make" : [0x33], "break" : [0xF0,0x33] },
    "I" : {"make" : [0x43], "break" : [0xF0,0x43] },
    "J" : {"make" : [0x3B], "break" : [0xF0,0x3B] },
    "K" : {"make" : [0x42], "break" : [0xF0,0x42] },
    "L" : {"make" : [0x4B], "break" : [0xF0,0x4B] },
    "M" : {"make" : [0x3A], "break" : [0xF0,0x3A] },
    "N" : {"make" : [0x31], "break" : [0xF0,0x31] },
    "O" : {"make" : [0x44], "break" : [0xF0,0x44] },
    "P" : {"make" : [0x4D], "break" : [0xF0,0x4D] },
    "Q" : {"make" : [0x15], "break" : [0xF0,0x15] },
    "R" : {"make" : [0x2D], "break" : [0xF0,0x2D] },
    "S" : {"make" : [0x1B], "break" : [0xF0,0x1B] },
    "T" : {"make" : [0x2C], "break" : [0xF0,0x2C] },
    "U" : {"make" : [0x3C], "break" : [0xF0,0x3C] },
    "V" : {"make" : [0x2A], "break" : [0xF0,0x2A] },
    "W" : {"make" : [0x1D], "break" : [0xF0,0x1D] },
    "X" : {"make" : [0x22], "break" : [0xF0,0x22] },
    "Y" : {"make" : [0x35], "break" : [0xF0,0x35] },
    "Z" : {"make" : [0x1A], "break" : [0xF0,0x1A] },
    "0" : {"make" : [0x45], "break" : [0xF0,0x45] },
    "1" : {"make" : [0x16], "break" : [0xF0,0x16] },
    "2" : {"make" : [0x1E], "break" : [0xF0,0x1E] },
    "3" : {"make" : [0x26], "break" : [0xF0,0x26] },
    "4" : {"make" : [0x25], "break" : [0xF0,0x25] },
    "5" : {"make" : [0x2E], "break" : [0xF0,0x2E] },
    "6" : {"make" : [0x36], "break" : [0xF0,0x36] },
    "7" : {"make" : [0x3D], "break" : [0xF0,0x3D] },
    "8" : {"make" : [0x3E], "break" : [0xF0,0x3E] },
    "9" : {"make" : [0x46], "break" : [0xF0,0x46] },
    "`" : {"make" : [0x0E], "break" : [0xF0,0x0E] },
    "-" : {"make" : [0x4E], "break" : [0xF0,0x4E] },
    "=" : {"make" : [0x55], "break" : [0xF0,0x55] },
    "\\" : {"make" : [0x5D], "break" : [0xF0,0x5D] },
    "BKSP" : {"make" : [0x66], "break" : [0xF0,0x66] },
    "SPACE" : {"make" : [0x29], "break" : [0xF0,0x29] },
    "TAB" : {"make" : [0x0D], "break" : [0xF0,0x0D] },
    "CAPS" : {"make" : [0x58], "break" : [0xF0,0x58] },
    "L SHFT" : {"make" : [0x12], "break" : [0xF0,0x12] },
    "L CTRL" : {"make" : [0x14], "break" : [0xF0,0x14] },
    "L GUI" : {"make" : [0xE0,0x1F], "break" : [0xE0,0xF0,0x1F] },
    "L ALT" : {"make" : [0x11], "break" : [0xF0,0x11] },
    "R SHFT" : {"make" : [0x59], "break" : [0xF0,0x59] },
    "R CTRL" : {"make" : [0xE0,0x14], "break" : [0xE0,0xF0,0x14] },
    "R GUI" : {"make" : [0xE0,0x27], "break" : [0xE0,0xF0,0x27] },
    "R ALT" : {"make" : [0xE0,0x11], "break" : [0xE0,0xF0,0x11] },
    "APPS" : {"make" : [0xE0,0x2F], "break" : [0xE0,0xF0,0x2F] },
    "ENTER" : {"make" : [0x5A], "break" : [0xF0,0x5A] },
    "ESC" : {"make" : [0x76], "break" : [0xF0,0x76] },
    "F1" : {"make" : [0x05], "break" : [0xF0,0x05] },
    "F2" : {"make" : [0x06], "break" : [0xF0,0x06] },
    "F3" : {"make" : [0x04], "break" : [0xF0,0x04] },
    "F4" : {"make" : [0x0C], "break" : [0xF0,0x0C] },
    "F5" : {"make" : [0x03], "break" : [0xF0,0x03] },
    "F6" : {"make" : [0x0B], "break" : [0xF0,0x0B] },
    "F7" : {"make" : [0x83], "break" : [0xF0,0x83] },
    "F8" : {"make" : [0x0A], "break" : [0xF0,0x0A] },
    "F9" : {"make" : [0x01], "break" : [0xF0,0x01] },
    "F10" : {"make" : [0x09], "break" : [0xF0,0x09] },
    "F11" : {"make" : [0x78], "break" : [0xF0,0x78] },
    "F12" : {"make" : [0x07], "break" : [0xF0,0x07] },
    "PRNT SCRN" : {"make" : [0xE0,0x12,0xE0,0x7C], "break" : [0xE0,0xF0,0x7C,0xE0,0xF0,0x12] },
    "SCROLL" : {"make" : [0x7E], "break" : [0xF0,0x7E] },
    "PAUSE" : {"make" : [0xE1,0x14,0x77,0xE1,0xF0,0x14,0xF0,0x77], "break" : [] },
    "[" : {"make" : [0x54], "break" : [0xF0,0x54] },
    "INSERT" : {"make" : [0xE0,0x70], "break" : [0xE0,0xF0,0x7] },
    "HOME" : {"make" : [0xE0,0x6C], "break" : [0xE0,0xF0,0x6] },
    "PG UP" : {"make" : [0xE0,0x7D], "break" : [0xE0,0xF0,0x7] },
    "DELETE" : {"make" : [0xE0,0x71], "break" : [0xE0,0xF0,0x7] },
    "END" : {"make" : [0xE0,0x69], "break" : [0xE0,0xF0,0x6] },
    "PG DN" : {"make" : [0xE0,0x7A], "break" : [0xE0,0xF0,0x7] },
    "U ARROW" : {"make" : [0xE0,0x75], "break" : [0xE0,0xF0,0x7] },
    "L ARROW" : {"make" : [0xE0,0x6B], "break" : [0xE0,0xF0,0x6] },
    "D ARROW" : {"make" : [0xE0,0x72], "break" : [0xE0,0xF0,0x7] },
    "R ARROW" : {"make" : [0xE0,0x74], "break" : [0xE0,0xF0,0x7] },
    "NUM" : {"make" : [0x77], "break" : [0xF0,0x77] },
    "KP /" : {"make" : [0xE0,0x4A], "break" : [0xE0,0xF0,0x4] },
    "KP *" : {"make" : [0x7C], "break" : [0xF0,0x7C] },
    "KP -" : {"make" : [0x7B], "break" : [0xF0,0x7B] },
    "KP EN" : {"make" : [0xE0,0x5A], "break" : [0xE0,0xF0,0x5] },
    "KP ." : {"make" : [0x71], "break" : [0xF0,0x71] },
    "KP 0" : {"make" : [0x70], "break" : [0xF0,0x70] },
    "KP 1" : {"make" : [0x69], "break" : [0xF0,0x69] },
    "KP 2" : {"make" : [0x72], "break" : [0xF0,0x72] },
    "KP 3" : {"make" : [0x7A], "break" : [0xF0,0x7A] },
    "KP 4" : {"make" : [0x6B], "break" : [0xF0,0x6B] },
    "KP 5" : {"make" : [0x73], "break" : [0xF0,0x73] },
    "KP 6" : {"make" : [0x74], "break" : [0xF0,0x74] },
    "KP 7" : {"make" : [0x6C], "break" : [0xF0,0x6C] },
    "KP 8" : {"make" : [0x75], "break" : [0xF0,0x75] },
    "KP 9" : {"make" : [0x7D], "break" : [0xF0,0x7D] },
    "]" : {"make" : [0x5B], "break" : [0xF0,0x5B] },
    ";" : {"make" : [0x4C], "break" : [0xF0,0x4C] },
    "'" : {"make" : [0x52], "break" : [0xF0,0x52] },
    "," : {"make" : [0x41], "break" : [0xF0,0x41] },
    "" : {"make" : [0x], "break" : [0x] },
    "." : {"make" : [0x49], "break" : [0xF0,0x49] },
    "" : {"make" : [0x], "break" : [0x] },
    "/" : {"make" : [0x4A], "break" : [0xF0,0x4A] },
    "ACPI Power" : {"make" : [0xE0,0x37], "break" : [0xE0,0xF0,0x37] },
    "ACPI Sleep" : {"make" : [0xE0,0x3F], "break" : [0xE0,0xF0,0x3F] },
    "ACPI Wake" : {"make" : [0xE0,0x5E], "break" : [0xE0,0xF0,0x5E] },
    "Next Track" : {"make" : [0xE0,0x4D], "break" : [0xE0,0xF0,0x4D] },
    "Previous Track" : {"make" : [0xE0,0x15], "break" : [0xE0,0xF0,0x15] },
    "Stop" : {"make" : [0xE0,0x3B], "break" : [0xE0,0xF0,0x3B] },
    "Play/Pause" : {"make" : [0xE0,0x34], "break" : [0xE0,0xF0,0x34] },
    "Mute" : {"make" : [0xE0,0x23], "break" : [0xE0,0xF0,0x23] },
    "Volume Up" : {"make" : [0xE0,0x32], "break" : [0xE0,0xF0,0x32] },
    "Volume Down" : {"make" : [0xE0,0x21], "break" : [0xE0,0xF0,0x21] },
    "Media Select" : {"make" : [0xE0,0x50], "break" : [0xE0,0xF0,0x50] },
    "E-Mail" : {"make" : [0xE0,0x48], "break" : [0xE0,0xF0,0x48] },
    "Calculator" : {"make" : [0xE0,0x2B], "break" : [0xE0,0xF0,0x2B] },
    "My Computer" : {"make" : [0xE0,0x40], "break" : [0xE0,0xF0,0x40] },
    "WWW Search" : {"make" : [0xE0,0x10], "break" : [0xE0,0xF0,0x10] },
    "WWW Home" : {"make" : [0xE0,0x3A], "break" : [0xE0,0xF0,0x3A] },
    "WWW Back" : {"make" : [0xE0,0x38], "break" : [0xE0,0xF0,0x38] },
    "WWW Forward" : {"make" : [0xE0,0x30], "break" : [0xE0,0xF0,0x30] },
    "WWW Stop" : {"make" : [0xE0,0x28], "break" : [0xE0,0xF0,0x28] },
    "WWW Refresh" : {"make" : [0xE0,0x20], "break" : [0xE0,0xF0,0x20] },
    "WWW Favorites" : {"make" : [0xE0,0x18], "break" : [0xE0,0xF0,0x18] }
};

stickykeys = {
    "L SHFT" : None,
    "L CTRL" : None,
    "L GUI" : None,
    "L ALT" : None,
    "R SHFT" : None,
    "R CTRL" : None,
    "R GUI" : None,
    "R ALT" : None,
    };

simplelayout = [
    ["SCROLL"],
    ["0","1","2","3","4","5","6","7","8","9","0"],
    ["Q","W","E","R","T","Y","U","I","O","P"],
    ["A","S","D","F","G","H","I","J","K","L"],
    ["Z","X","C","V","B","N","M",",",".","-"],
    ["L SHFT", "L CTRL", "L ALT", "SPACE", "R ALT", "R CTRL", "R SHFT"]
    ];
