tmk_keyboard/keyboard/ergodox/keymap_cub.h

360 lines
17 KiB
C
Raw Normal View History

2013-08-10 22:57:01 +03:00
static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
2013-09-09 04:32:19 +03:00
/*
* Keymap: Default Layer in QWERTY
2013-08-10 22:57:01 +03:00
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ~ | 1 | 2 | 3 | 4 | 5 | \ | | - | 6 | 7 | 8 | 9 | 0 | = |
2013-08-10 22:57:01 +03:00
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | ~L1 | | ~L3 | Y | U | I | O | P | [ |
2013-08-10 22:57:01 +03:00
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | LShift | A | S | D | F | G |------| |------| H | J | K | L | ; | ' FN14 |
2013-09-09 04:32:19 +03:00
* |--------+------+------+------+------+------| L0 | | ~L4 |------+------+------+------+------+--------|
* | LCtrl | Z | X | C | V | B | | | | N | M | , | . | / | ] FN15 |
2013-08-10 22:57:01 +03:00
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
2013-09-09 04:32:19 +03:00
* | ~L1 | ~L2 | Caps | LAlt | LGui | | Lft | Up | Dn | Rght | ~L4 |
2013-08-10 22:57:01 +03:00
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
2013-09-09 04:32:19 +03:00
* | +L2 | Home | | PgUp | Del |
2013-08-10 22:57:01 +03:00
* ,------|------|------| |------+------+------.
* | | | End | | PgDn | | |
* | BkSp | ESC |------| |------| Enter| Space|
* | | | Spc | | Ins | | |
* `--------------------' `--------------------'
2013-09-09 04:32:19 +03:00
*
*
*
****************************************************************************************************
*
* Under XOrg, I use my own mapping from QWERTY to "Workman for Programmers"
* See XOrg files in ./addons/ subdirectory.
*
* I have to do so, because of two things:
* 1) my native language is Russian, and XOrg keymap for it is based on QWERTY layout
* 2) I want to have non-standart shifted keys, like $ (as normal) and @ (as shifted), or _ and -
*
* And even if (2) could be solved using FN* keys (but there is limit in firmware for only 32 such
* keys), then (1) can't be solved at firmware level at all.
*
* So, I have to stick with QWERTY as my main layout + my own XOrg keyboard layout for English.
* But sometimes I have to input something when XOrg is not active - for example, in Linux console,
* or in firmware console (while debugging firmware), or when keyboard is connected to not my computer.
*
* For such cases I have Layer5 :)
* // hint: switch to Layer5 is only at Layer4
*
****************************************************************************************************
*
*
*
* Keymap: Default Layer in Workman
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ~ | ; | ! | # | { | } | ' | | ^ | [ | ] | * | ( | ) | = |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | D | R | W | B | ~L1 | | ~L3 | J | F | U | P | $ | : |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | LShift | A | S | H | T | G |------| |------| Y | N | E | O | I | - FN14 |
2013-09-09 04:32:19 +03:00
* |--------+------+------+------+------+------| L0 | | ~L4 |------+------+------+------+------+--------|
* | LCtrl | Z | X | M | C | V | | | | K | L | , | . | / | | FN15 |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ~L1 | ~L2 | Caps | LAlt | LGui | | Lft | Up | Dn | Rght | ~L4 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | +L2 | Home | | PgUp | Del |
* ,------|------|------| |------+------+------.
* | | | End | | PgDn | | |
* | BkSp | ESC |------| |------| Enter| Space|
* | | | Spc | | Ins | | |
* `--------------------' `--------------------'
*
* Keymap: Default Layer in Workman / with Shift
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | " | | \ | 6 | 7 | 8 | 9 | 0 | + |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | D | R | W | B | ~L1 | | ~L3 | J | F | U | P | @ | % |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | LShift | A | S | H | T | G |------| |------| Y | N | E | O | I | _ FN14 |
2013-09-09 04:32:19 +03:00
* |--------+------+------+------+------+------| L0 | | ~L4 |------+------+------+------+------+--------|
* | LCtrl | Z | X | M | C | V | | | | K | L | , | . | / | & FN15 |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ~L1 | ~L2 | Caps | LAlt | LGui | | Lft | Up | Dn | Rght | ~L4 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | +L2 | Home | | PgUp | Del |
* ,------|------|------| |------+------+------.
* | | | End | | PgDn | | |
* | BkSp | ESC |------| |------| Enter| Space|
* | | | Spc | | Ins | | |
* `--------------------' `--------------------'
*
2013-08-10 22:57:01 +03:00
*/
KEYMAP( // layout: layer 0: default
// left hand
GRV, 1, 2, 3, 4, 5, BSLS,
2013-08-10 22:57:01 +03:00
TAB, Q, W, E, R, T, FN1,
2013-09-09 19:52:46 +03:00
FN16,FN20,S, D, F, G,
LCTL,Z, X, C, FN19,B, FN0,
2013-09-09 19:27:38 +03:00
FN1, FN6, CAPS,LALT,FN17,
2013-08-10 22:57:01 +03:00
FN2, HOME,
END,
2013-09-05 00:03:22 +03:00
FN8, FN9, FN10,
2013-08-10 22:57:01 +03:00
// right hand
MINS,6, 7, 8, 9, 0, EQL,
FN3, Y, U, I, O, P, LBRC,
2013-09-09 19:52:46 +03:00
FN18,J, K, L, FN21,FN14,
FN4, N, M, COMM,DOT, SLSH,FN15,
2013-08-10 22:57:01 +03:00
LEFT,UP, DOWN,RGHT,FN4,
PGUP,DEL,
PGDN,
2013-09-05 00:03:22 +03:00
FN11,FN12,FN13
2013-08-10 22:57:01 +03:00
),
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,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,
TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
// right hand
2013-09-05 00:03:22 +03:00
F7, F8, F9, F10, F11, F12, TRNS,
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,
TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS
2013-08-10 22:57:01 +03:00
),
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,
2013-09-09 19:52:46 +03:00
TRNS,NO, NO, NO, TRNS,BTN3,TRNS,
2013-08-10 22:57:01 +03:00
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,
TRNS,P4, P5, P6, PPLS,PENT,
2013-08-10 22:57:01 +03:00
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
2013-09-09 04:32:19 +03:00
TRNS,NO, NO, NO, NO, NO, NO,
2013-08-10 22:57:01 +03:00
TRNS,F13, F14, F15, F16, NO, TRNS,
2013-09-09 04:32:19 +03:00
TRNS,F17, F18, F19, F20, NO,
2013-08-10 22:57:01 +03:00
TRNS,F21, F22, F23, F24, NO, TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,
TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
// 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,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,
TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS
2013-08-10 22:57:01 +03:00
),
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,
2013-09-05 00:03:22 +03:00
FN5, TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,
TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
// 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,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS,TRNS,TRNS,
2013-08-10 22:57:01 +03:00
TRNS,TRNS,
TRNS,
2013-09-05 00:03:22 +03:00
TRNS,TRNS,TRNS
2013-08-10 22:57:01 +03:00
),
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
),
2013-09-09 04:32:19 +03:00
KEYMAP( // layout: layer 6: F-keys on home+1 row
// left hand
TRNS,NO, NO, NO, NO, NO, NO,
TRNS,F1, F2, F3, F4, F5, F11,
TRNS,TRNS,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,
F12, F6, F7, F8, F9, F10, PGUP,
NO, NO, NO, NO, TRNS,PGDN,
TRNS,NO, NO, NO, NO, NO, TRNS,
RGUI,RALT,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
TRNS,RSFT,RCTL
),
2013-09-09 19:58:53 +03:00
KEYMAP( // layout: layer 7: F-keys on right hand
// left hand
TRNS,NO, NO, NO, NO, NO, NO,
TRNS,NO, NO, NO, NO, NO, TRNS,
TRNS,TRNS,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,MINS,F1, F2, F3, F4, PGUP,
BSLS,F5, F6, F7, F8, PGDN,
TRNS,FN22,F9, F10, F11, F12, FN23,
2013-09-09 19:58:53 +03:00
RGUI,RALT,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
TRNS,RSFT,RCTL
),
2013-08-10 22:57:01 +03:00
/*
2013-09-05 00:03:22 +03:00
// templates to copy from
2013-08-10 22:57:01 +03:00
KEYMAP( // layout: layer N: transparent on edges, all others are empty
// left hand
2013-09-09 04:32:19 +03:00
TRNS,NO, NO, NO, NO, NO, NO,
2013-08-10 22:57:01 +03:00
TRNS,NO, NO, NO, NO, NO, TRNS,
2013-09-09 04:32:19 +03:00
TRNS,NO, NO, NO, NO, NO,
2013-08-10 22:57:01 +03:00
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[] = {
2013-09-05 00:03:22 +03:00
ACTION_LAYER_SET(0, ON_BOTH), // FN0 - switch to Layer0
2013-08-10 22:57:01 +03:00
ACTION_LAYER_MOMENTARY(1), // FN1 - push Layer1
2013-09-05 00:03:22 +03:00
ACTION_LAYER_SET(2, ON_BOTH), // FN2 - switch to Layer2
2013-08-10 22:57:01 +03:00
ACTION_LAYER_MOMENTARY(3), // FN3 - push Layer3
ACTION_LAYER_MOMENTARY(4), // FN4 - push Layer4
2013-09-05 00:03:22 +03:00
ACTION_LAYER_SET(5, ON_BOTH), // FN5 - switch to Layer5
2013-08-10 22:57:01 +03:00
ACTION_LAYER_MOMENTARY(2), // FN6 - push Layer2
ACTION_FUNCTION(TEENSY_KEY), // FN7 - Teensy key
2013-09-05 00:03:22 +03:00
ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPC), // FN8 = LShift with tap BackSpace
ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC), // FN9 = LCtrl with tap Escape
ACTION_MODS_TAP_KEY(MOD_LALT, KC_SPC), // FN10 = LAlt with tap Space
ACTION_MODS_TAP_KEY(MOD_RALT, KC_INS), // FN11 = RAlt with tap Ins
ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // FN12 = RShift with tap Enter
ACTION_MODS_TAP_KEY(MOD_RCTL, KC_SPC), // FN13 = RCtrl with tap Space
ACTION_MODS_TAP_KEY(MOD_RSFT, KC_QUOT), // FN14 = RShift with tap quotes
ACTION_MODS_TAP_KEY(MOD_RCTL, KC_RBRC), // FN15 = RCtrl with tap ]
2013-09-09 04:32:19 +03:00
ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB), // FN16 = LShift with tap Tab
ACTION_MODS_TAP_KEY(MOD_LGUI, KC_ESC), // FN17 = LShift with tap Escape
2013-09-05 00:03:22 +03:00
ACTION_LAYER_TAP_KEY(2, KC_H), // FN18 = L2 symbols on H key, to use with Mouse keys
2013-09-09 19:52:46 +03:00
ACTION_LAYER_TAP_KEY(2, KC_V), // FN19 = L2 symbols on V key, to use with Numpad keys
2013-09-09 19:58:53 +03:00
ACTION_LAYER_TAP_KEY(7, KC_A), // FN20 = L7 symbols on A key, to use with F* keys
2013-09-09 19:52:46 +03:00
ACTION_LAYER_TAP_KEY(6, KC_SCLN), // FN21 = L6 symbols on ; key, to use with F* keys
ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN22 = Shifted BackSlash // " in Workman
ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // FN23 = Shifted Minus // \ in Workman
2013-08-10 22:57:01 +03:00
};
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");
}
}