Skip to content

Instantly share code, notes, and snippets.

@ordnungswidrig
Created November 21, 2014 10:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ordnungswidrig/c0e67fa538fc6ec4881d to your computer and use it in GitHub Desktop.
Save ordnungswidrig/c0e67fa538fc6ec4881d to your computer and use it in GitHub Desktop.
Work in progress German (Quertz) ergodox keyboard layout for tmk firmware. Includes Braces, Arrows / Mouse-Pointer on Layer 2 and 3. Created using vikeys.
static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEYMAP( // Layer 0
ESC, 1, 2, 3, 4, 5, EQL, TAB, Q, W, E, R, T, FN6, LSFT, A, S, D, F, G, LCTL, Z, X, C, V, B, FN1, FN3, GRV, NO, LALT, LGUI, INS, HOME, END, SPC, ENT, LGUI, BSPC, 6, 7, 8, 9, 0, MINS, FN6, Y, U, I, O, P, NUHS, H, J, K, L, SCLN, RSFT, FN1, N, M, COMM, DOT, SLSH, RCTL, RGUI, RALT, QUOT, LBRC, FN3, PGUP, DEL, PGDN, RGUI, ENT, SPC),
KEYMAP( // Layer 1
TRNS, F1, F2, F3, F4, F5, F6, TRNS, TRNS, TRNS, MPRV, MPLY, MNXT, TRNS, TRNS, TRNS, TRNS, VOLD, VOLU, MUTE, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN7, TRNS, TRNS, LALT, LGUI, TRNS, TRNS, TRNS, LCTL, LSFT, TRNS, F7, F8, F9, F10, F11, F12, MINS, TRNS, TRNS, FN10, FN11, TRNS, TRNS, RBRC, FN12, FN8, FN9, FN13, TRNS, TRNS, TRNS, TRNS, FN15, FN16, TRNS, TRNS, TRNS, RGUI, RALT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RSFT, RCTL),
KEYMAP( // Layer 2
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, TRNS, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, TRNS, TRNS, NO, NO, NO, NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO, NO, NO, NO, NO, NO, NO, TRNS, HOME, PGDN, PGUP, END, NO, NO, LEFT, DOWN, UP, RGHT, NO, NO, TRNS, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
KEYMAP( // Layer 3
TRNS, NO, NO, NO, NO, NO, NO, TRNS, F13, F14, F15, F16, NO, TRNS, TRNS, F17, F18, F19, F20, NO, TRNS, F21, F22, F23, F24, NO, TRNS, TRNS, TRNS, TRNS, LALT, LGUI, TRNS, TRNS, TRNS, LCTL, LSFT, TRNS, NO, NO, NO, NO, NO, NO, TRNS, TRNS, NO, BTN1, BTN2, F3, F4, TRNS, MS_L, MS_D, MS_U, MS_R, F8, TRNS, TRNS, WH_L, WH_D, WH_U, WH_R, F12, TRNS, RGUI, RALT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RSFT, RCTL),
KEYMAP( // Layer 4
TRNS, F1, F2, F3, F4, F5, F6, FN7, NO, PGUP, UP, PGDN, PGUP, TRNS, TRNS, NO, LEFT, DOWN, RGHT, PGDN, TRNS, NO, NO, END, HOME, NO, TRNS, FN5, TRNS, TRNS, LALT, LGUI, TRNS, TRNS, TRNS, LCTL, LSFT, TRNS, F7, F8, F9, F10, F11, F12, MINS, TRNS, PGUP, PGUP, UP, PGDN, NO, FN7, PGDN, LEFT, DOWN, RGHT, NO, TRNS, TRNS, NO, HOME, END, NO, NO, TRNS, RGUI, RALT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RSFT, RCTL),
KEYMAP( // Layer 5
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, Q, D, R, W, B, TRNS, TRNS, A, S, H, T, G, TRNS, Z, X, M, C, V, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, J, F, U, P, 4, TRNS, Y, N, E, O, I, TRNS, TRNS, K, L, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS)
};
enum function_id {
TEENSY_KEY,
};
static const uint16_t PROGMEM fn_actions[] = {
ACTION_DEFAULT_LAYER_SET(0),
ACTION_LAYER_MOMENTARY(1),
ACTION_DEFAULT_LAYER_SET(2),
ACTION_LAYER_MOMENTARY(3),
ACTION_LAYER_MOMENTARY(4),
ACTION_DEFAULT_LAYER_SET(5),
ACTION_LAYER_MOMENTARY(2),
ACTION_FUNCTION(TEENSY_KEY),
ACTION_MODS_KEY(MOD_RSFT, KC_8),
ACTION_MODS_KEY(MOD_RSFT, KC_9),
ACTION_MODS_KEY(MOD_RALT, KC_5),
ACTION_MODS_KEY(MOD_RALT, KC_6),
ACTION_MODS_KEY(MOD_RALT, KC_8),
ACTION_MODS_KEY(MOD_RALT, KC_9),
ACTION_MODS_KEY(MOD_RALT, KC_7),
ACTION_MODS_KEY(MOD_RALT|MOD_RSFT, KC_7),
ACTION_MODS_KEY(MOD_RSFT, KC_7),
};
void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
{
print("action_function called\n");
print("id = "); phex(id); print("\n");
print("opt = "); phex(opt); print("\n");
if (id == TEENSY_KEY) {
clear_keyboard();
print("\n\nJump to bootloader... ");
_delay_ms(250);
bootloader_jump(); // should not return
print("not supported.\n");
}
}
@ordnungswidrig
Copy link
Author

Features (for programming)

Prominent keys for Shift, Ctrl, Alt, Gui
Shift on Home-Row, Ctrl the row below

Braces, Brackets, Parenthesis, Curlys and Slashes on Layer 1 keys hjkl uinm
Media Keys on Layer 1: dfg ert
Cursor keys on Layer 2 hjkl zuio
Mouse Pointer Keys on Layer 3: hjkl and zuio

TMK firmware from here https://github.com/cub-uanic/tmk_keyboard.git
Vikeys is available here https://github.com/cjne/vikeys/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment