static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Default Layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | ~ | 1 | 2 | 3 | 4 | 5 | \ | | ' | 6 | 7 | 8 | 9 | 0 | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Tab | Q | W | E | R | T | ~Fn1 | | ~Fn3 | Y | U | I | O | P | [ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | LShift | A | S | D | F | G |------| |------| H | J | K | L | ; | RShift | * |--------+------+------+------+------+------| Fn0 | | ~Fn4 |------+------+------+------+------+--------| * | LCtrl | Z | X | C | V | B | | | | N | M | , | . | / | RCtrl | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | ~Fn1 | ~Fn2 | Caps | LAlt | LGui | | Lft | Up | Dn | Rght | ~Fn4 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | +Fn2 | Home | | PgUp | Del | * ,------|------|------| |------+------+------. * | | | End | | PgDn | | | * | BkSp | ESC |------| |------| Enter| Space| * | | | Spc | | Ins | | | * `--------------------' `--------------------' */ KEYMAP( // layout: layer 0: default // left hand GRV, 1, 2, 3, 4, 5, BSLS, TAB, Q, W, E, R, T, FN1, LSFT,A, S, D, F, G, LCTL,Z, X, C, V, B, FN0, FN1, FN6, CAPS,LALT,LGUI, FN2, HOME, END, BSPC,ESC, SPC, // right hand QUOT,6, 7, 8, 9, 0, EQL, FN3, Y, U, I, O, P, LBRC, H, J, K, L, SCLN,RSFT, FN4, N, M, COMM,DOT, SLSH,RCTL, LEFT,UP, DOWN,RGHT,FN4, PGUP,DEL, PGDN, INS, ENT, SPC ), KEYMAP( // layout: layer 1: F-keys instead of numbers // left hand TRNS,F1, F2, F3, F4, F5, F6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,LALT,LGUI, TRNS,TRNS, TRNS, LCTL,LSFT,TRNS, // right hand F7, F8, F9, F10, F11, F12, MINS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,RBRC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, RGUI,RALT,TRNS,TRNS,TRNS, TRNS,TRNS, TRNS, TRNS,RSFT,RCTL ), KEYMAP( // layout: layer 2: mouse + numpad // left hand TRNS,NO, NO, NO, NO, PAUS,PSCR, TRNS,WH_L,WH_U,WH_D,WH_R,BTN2,TRNS, TRNS,MS_L,MS_U,MS_D,MS_R,BTN1, TRNS,NO, NO, NO, NO, BTN3,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, // right hand SLCK,NLCK,PSLS,PAST,PAST,PMNS,BSPC, TRNS,NO, P7, P8, P9, PMNS,BSPC, NO, P4, P5, P6, PPLS,PENT, TRNS,NO, P1, P2, P3, PPLS,PENT, P0, PDOT,SLSH,PENT,PENT, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS ), KEYMAP( // layout: layer 3: F-keys only // left hand 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, // right hand NO, NO, NO, NO, NO, NO, TRNS, TRNS,NO, F1, F2, F3, F4, TRNS, NO, F5, F6, F7, F8, TRNS, TRNS,NO, F9, F10, F11, F12, TRNS, RGUI,RALT,TRNS,TRNS,TRNS, TRNS,TRNS, TRNS, TRNS,RSFT,RCTL ), KEYMAP( // layout: layer 4: F-keys + cursor // left hand 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, // right hand 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( // layout: layer 5: Workman layout // left hand 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, // right hand 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 ), /* KEYMAP( // layout: layer N: transparent on edges, all others are empty // left hand TRNS,NO, NO, NO, NO, NO, NO, TRNS,NO, NO, NO, NO, NO, TRNS, TRNS,NO, NO, NO, NO, NO, TRNS,NO, NO, NO, NO, NO, TRNS, TRNS,TRNS,TRNS,LALT,LGUI, TRNS,TRNS, TRNS, LCTL,LSFT,TRNS, // right hand NO, NO, NO, NO, NO, NO, TRNS, TRNS,NO, NO, NO, NO, NO, TRNS, NO, NO, NO, NO, NO, TRNS, TRNS,NO, NO, NO, NO, NO, TRNS, RGUI,RALT,TRNS,TRNS,TRNS, TRNS,TRNS, TRNS, TRNS,RSFT,RCTL ), KEYMAP( // layout: layer N: fully transparent // left hand TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, // right hand TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS ), */ }; /* id for user defined functions */ enum function_id { TEENSY_KEY, }; /* * Fn action definition */ static const uint16_t PROGMEM fn_actions[] = { ACTION_DEFAULT_LAYER_SET(0), // FN0 - switch to Layer0 ACTION_LAYER_MOMENTARY(1), // FN1 - push Layer1 ACTION_DEFAULT_LAYER_SET(2), // FN2 - switch to Layer2 ACTION_LAYER_MOMENTARY(3), // FN3 - push Layer3 ACTION_LAYER_MOMENTARY(4), // FN4 - push Layer4 ACTION_DEFAULT_LAYER_SET(5), // FN5 - switch to Layer5 ACTION_LAYER_MOMENTARY(2), // FN6 - push Layer2 ACTION_FUNCTION(TEENSY_KEY), // FN7 - Teensy key }; 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"); } }