Rework the keyboard layout handling
We now use a 32-bit structure to describe each key, and an `uhk_key_t` type that wraps all the supported things into a union. But this is not the only change: to be able to move the Fn/Mod keys anywhere, instead of hardcoding their location, they are now proper layer keys. To make it easier to handle turning a layer off, key releases can be handled explicitly, too. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
This commit is contained in:
@@ -1,77 +1,77 @@
|
||||
#include "default_layout.h"
|
||||
|
||||
KEYBOARD_LAYOUT(defaultKeyboardLayout)={
|
||||
{HID_KEYBOARD_SC_7_AND_AMPERSAND, HID_KEYBOARD_SC_F7},
|
||||
{HID_KEYBOARD_SC_8_AND_ASTERISK, HID_KEYBOARD_SC_F8},
|
||||
{HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS, HID_KEYBOARD_SC_F9},
|
||||
{HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS, HID_KEYBOARD_SC_F10},
|
||||
{HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE, HID_KEYBOARD_SC_F11},
|
||||
{HID_KEYBOARD_SC_EQUAL_AND_PLUS, HID_KEYBOARD_SC_F12},
|
||||
{HID_KEYBOARD_SC_BACKSPACE, HID_KEYBOARD_SC_DELETE},
|
||||
{HID_KEYBOARD_SC_U},
|
||||
{HID_KEYBOARD_SC_I, HID_KEYBOARD_SC_UP_ARROW},
|
||||
{HID_KEYBOARD_SC_O},
|
||||
{HID_KEYBOARD_SC_P, HID_KEYBOARD_SC_PRINT_SCREEN},
|
||||
{HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE, HID_KEYBOARD_SC_SCROLL_LOCK},
|
||||
{HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE, HID_KEYBOARD_SC_PAUSE},
|
||||
{HID_KEYBOARD_SC_BACKSLASH_AND_PIPE},
|
||||
{HID_KEYBOARD_SC_Y, HID_KEYBOARD_SC_PAGE_UP},
|
||||
{HID_KEYBOARD_SC_J, HID_KEYBOARD_SC_LEFT_ARROW},
|
||||
{HID_KEYBOARD_SC_K, HID_KEYBOARD_SC_DOWN_ARROW},
|
||||
{HID_KEYBOARD_SC_L, HID_KEYBOARD_SC_RIGHT_ARROW},
|
||||
{HID_KEYBOARD_SC_SEMICOLON_AND_COLON},
|
||||
{HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE},
|
||||
{HID_KEYBOARD_SC_ENTER},
|
||||
{HID_KEYBOARD_SC_H, HID_KEYBOARD_SC_PAGE_DOWN},
|
||||
{HID_KEYBOARD_SC_N, HID_KEYBOARD_SC_MEDIA_MUTE},
|
||||
{HID_KEYBOARD_SC_M},
|
||||
{HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN},
|
||||
{HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN},
|
||||
{HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK},
|
||||
{HID_KEYBOARD_SC_RIGHT_SHIFT},
|
||||
{0}, //??
|
||||
{HID_KEYBOARD_SC_SPACE},
|
||||
{0}, //??
|
||||
{0}, //Fn
|
||||
{HID_KEYBOARD_SC_RIGHT_ALT},
|
||||
{HID_KEYBOARD_SC_RIGHT_GUI},
|
||||
{HID_KEYBOARD_SC_RIGHT_CONTROL},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_7_AND_AMPERSAND } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F7 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_8_AND_ASTERISK } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F8 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F9 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F10 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F11 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_EQUAL_AND_PLUS } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F12 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_BACKSPACE } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_DELETE } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_U } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_I } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_UP_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_O } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_P } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_PRINT_SCREEN } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_SCROLL_LOCK } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_PAUSE } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_BACKSLASH_AND_PIPE } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_Y } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_PAGE_UP } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_J } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_LEFT_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_K } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_DOWN_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_L } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_RIGHT_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_SEMICOLON_AND_COLON } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_ENTER } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_H } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_PAGE_DOWN } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_N } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MEDIA_MUTE } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_M } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_RIGHT_SHIFT } }},
|
||||
{Key_NoKey}, //??
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_SPACE } }},
|
||||
{Key_NoKey}, //??
|
||||
{{.type = UHK_KEY_LAYER, .layer = { .target = LAYER_FN }}}, //Fn
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_RIGHT_ALT } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_RIGHT_GUI } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_RIGHT_CONTROL } }},
|
||||
|
||||
//Left half
|
||||
{HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE, HID_KEYBOARD_SC_ESCAPE},
|
||||
{HID_KEYBOARD_SC_1_AND_EXCLAMATION, HID_KEYBOARD_SC_F1},
|
||||
{HID_KEYBOARD_SC_2_AND_AT, HID_KEYBOARD_SC_F2},
|
||||
{HID_KEYBOARD_SC_3_AND_HASHMARK, HID_KEYBOARD_SC_F3},
|
||||
{HID_KEYBOARD_SC_4_AND_DOLLAR, HID_KEYBOARD_SC_F4},
|
||||
{HID_KEYBOARD_SC_5_AND_PERCENTAGE, HID_KEYBOARD_SC_F5},
|
||||
{HID_KEYBOARD_SC_6_AND_CARET, HID_KEYBOARD_SC_F6},
|
||||
{HID_KEYBOARD_SC_TAB},
|
||||
{HID_KEYBOARD_SC_Q},
|
||||
{HID_KEYBOARD_SC_W, HID_KEYBOARD_SC_UP_ARROW},
|
||||
{HID_KEYBOARD_SC_E},
|
||||
{HID_KEYBOARD_SC_R},
|
||||
{0}, //??
|
||||
{HID_KEYBOARD_SC_T, HID_KEYBOARD_SC_HOME},
|
||||
{HID_KEYBOARD_SC_CAPS_LOCK},
|
||||
{HID_KEYBOARD_SC_A, HID_KEYBOARD_SC_LEFT_ARROW},
|
||||
{HID_KEYBOARD_SC_S, HID_KEYBOARD_SC_DOWN_ARROW},
|
||||
{HID_KEYBOARD_SC_D, HID_KEYBOARD_SC_RIGHT_ARROW},
|
||||
{HID_KEYBOARD_SC_F, HID_KEYBOARD_SC_DELETE},
|
||||
{0}, //??
|
||||
{HID_KEYBOARD_SC_G, HID_KEYBOARD_SC_END},
|
||||
{HID_KEYBOARD_SC_LEFT_SHIFT},
|
||||
{HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE}, //no idea if this is the right one},
|
||||
{HID_KEYBOARD_SC_Z, HID_KEYBOARD_SC_MEDIA_BACKWARD},
|
||||
{HID_KEYBOARD_SC_X, HID_KEYBOARD_SC_MEDIA_PLAY},
|
||||
{HID_KEYBOARD_SC_C, HID_KEYBOARD_SC_MEDIA_FORWARD},
|
||||
{HID_KEYBOARD_SC_V, HID_KEYBOARD_SC_MEDIA_VOLUME_DOWN},
|
||||
{HID_KEYBOARD_SC_B, HID_KEYBOARD_SC_MEDIA_VOLUME_UP},
|
||||
{HID_KEYBOARD_SC_LEFT_CONTROL},
|
||||
{HID_KEYBOARD_SC_LEFT_GUI},
|
||||
{HID_KEYBOARD_SC_LEFT_ALT},
|
||||
{0}, //Fn
|
||||
{0}, //??
|
||||
{0}, //Mod
|
||||
{0} //??
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_ESCAPE } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_1_AND_EXCLAMATION } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F1 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_2_AND_AT } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F2 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_3_AND_HASHMARK } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F3 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_4_AND_DOLLAR } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F4 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_5_AND_PERCENTAGE } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F5 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_6_AND_CARET } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F6 } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_TAB } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_Q } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_W } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_UP_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_E } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_R } }},
|
||||
{Key_NoKey}, //??
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_T } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_HOME } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_CAPS_LOCK } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_A } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_LEFT_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_S } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_DOWN_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_D } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_RIGHT_ARROW } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_F } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_DELETE } }},
|
||||
{Key_NoKey}, //??
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_G } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_END } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_LEFT_SHIFT } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE } }}, //no idea if this is the right one},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_Z } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MEDIA_BACKWARD } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_X } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MEDIA_PLAY } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_C } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MEDIA_FORWARD } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_V } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MEDIA_VOLUME_DOWN } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_B } }, {.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_MEDIA_VOLUME_UP } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_LEFT_CONTROL } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_LEFT_GUI } }},
|
||||
{{.type = UHK_KEY_SIMPLE, .simple = { .key = HID_KEYBOARD_SC_LEFT_ALT } }},
|
||||
{{.type = UHK_KEY_LAYER, .layer = { .target = LAYER_FN }}}, //Fn
|
||||
{Key_NoKey}, //??
|
||||
{{.type = UHK_KEY_LAYER, .layer = { .target = LAYER_MOD }}}, //Mod
|
||||
{Key_NoKey} //??
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user