* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | ~L5 | | ~L6 | Y | U | I | O | P | [ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | LShift | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
+ * | Tab/Shf| A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| L0 | | ~L7 |------+------+------+------+------+--------|
* | LCtrl | Z | X | C | V | B | | | | N | M | , | . | / | ] |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* Keymap: Default Layer in Workman
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | ~ | ; | ! | # | { | } | ' | | ^ | [ | ] | * | ( | ) | = |
+ * | ~ | ; | ! | # | { | } | ' | | ^ | [ | ] | * | ( | ) | = |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Tab | Q | D | R | W | B | ~L5 | | ~L6 | J | F | U | P | $ | : |
+ * | Tab | Q | D | R | W | B | NO | | ~L7 | J | F | U | P | $ | : |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | LShift | A | S | H | T | G |------| |------| Y | N | E | O | I | - |
- * |--------+------+------+------+------+------| L0 | | ~L7 |------+------+------+------+------+--------|
+ * | Tab/Shf| A | S | H | T | G |------| |------| Y | N | E | O | I | - |
+ * |--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
* | LCtrl | Z | X | M | C | V | | | | K | L | , | . | / | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ~L5 | ~L2 | Caps | LAlt | LGui | | Lft | Up | Dn | Rght | ~L6 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * | +L2 | Home | | PgUp | Del |
+ * | L0 | +L2 | | PgUp | Del |
* ,------|------|------| |------+------+------.
- * | | | End | | PgDn | | |
+ * | | | NO | | PgDn | | |
* | BkSp | ESC |------| |------| Enter| Space|
* | | | Spc | | Ins | | |
* `--------------------' `--------------------'
* Keymap: Default Layer in Workman / with Shift
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | " | | \ | 6 | 7 | 8 | 9 | 0 | + |
+ * | ` | 1 | 2 | 3 | 4 | 5 | " | | \ | 6 | 7 | 8 | 9 | 0 | + |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Tab | Q | D | R | W | B | ~L5 | | ~L6 | J | F | U | P | @ | % |
+ * | Tab | Q | D | R | W | B | NO | | ~L7 | J | F | U | P | @ | % |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | LShift | A | S | H | T | G |------| |------| Y | N | E | O | I | _ |
- * |--------+------+------+------+------+------| L0 | | ~L7 |------+------+------+------+------+--------|
+ * | Tab/Shf| A | S | H | T | G |------| |------| Y | N | E | O | I | _ |
+ * |--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
* | LCtrl | Z | X | M | C | V | | | | K | L | , | . | / | & |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ~L5 | ~L2 | Caps | LAlt | LGui | | Lft | Up | Dn | Rght | ~L6 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * | +L2 | Home | | PgUp | Del |
+ * | L0 | +L2 | | PgUp | Del |
* ,------|------|------| |------+------+------.
- * | | | End | | PgDn | | |
+ * | | | NO | | PgDn | | |
* | BkSp | ESC |------| |------| Enter| Space|
* | | | Spc | | Ins | | |
* `--------------------' `--------------------'
KEYMAP( // Layer0: default, leftled:none
// left hand
GRV, 1, 2, 3, 4, 5, BSLS,
- TAB, Q, W, E, R, T, FN19,
- FN11,FN24,FN23,FN25,FN22,G,
- LCTL,FN28,FN27,FN29,FN26,B, FN15,
- FN19,FN18,CAPS,LALT,FN12,
- FN17,HOME,
- END,
+ TAB, Q, W, E, R, T, FN23,
+ FN11,FN28,FN29,FN30,FN31,G,
+ FN12,FN24,FN25,FN26,FN27,B, HOME,
+ FN21,FN20,CAPS,FN13,FN14,
+ FN17,FN19,
+ NO,
FN5, FN6, FN7,
// right hand
MINS,6, 7, 8, 9, 0, EQL,
- FN20,Y, U, I, O, P, LBRC,
- H, J, K, L, SCLN,FN13,
- FN21,N, M, COMM,DOT, SLSH,FN14,
- LEFT,UP, DOWN,RGHT,FN20,
+ FN23,Y, U, I, O, P, LBRC,
+ H, J, K, L, SCLN,FN15,
+ END, N, M, COMM,DOT, SLSH,FN16,
+ LEFT,UP, DOWN,RGHT,FN22,
PGUP,DEL,
PGDN,
FN8, FN9, FN10
TRNS,TRNS,TRNS
),
- KEYMAP( // Layer2: numpad, leftled:blue
+ KEYMAP( // Layer2: numpad, leftled:mid/blue
// left hand
TRNS,NO, NO, NO, NO, PAUS,PSCR,
TRNS,NO, NO, NO, NO, NO, 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,
+ TRNS,NO, P7, P8, P9, PMNS,PGUP,
+ TRNS,P4, P5, P6, PPLS,PGDN,
TRNS,NO, P1, P2, P3, PPLS,PENT,
P0, PDOT,SLSH,PENT,PENT,
TRNS,TRNS,
TRNS,TRNS,TRNS
),
- KEYMAP( // Layer3: F-keys + PgUp/PgDn on right hand, leftled:green
+ KEYMAP( // Layer3: F-keys + PgUp/PgDn on right hand, leftled:bot/green
// left hand
TRNS,NO, NO, NO, NO, NO, NO,
TRNS,NO, NO, NO, NO, NO, TRNS,
NO, NO, NO, NO, NO, NO, TRNS,
TRNS,NO, F1, F2, F3, F4, PGUP,
NO, F5, F6, F7, F8, PGDN,
- TRNS,NO, F9, F10, F11, F12, NO,
+ TRNS,NO, F9, F10, F11, F12, APP,
RGUI,RALT,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
TRNS,RSFT,RCTL
),
- KEYMAP( // Layer4: unconvenient keys on right hand, leftled:red
+ KEYMAP( // Layer4: unconvenient keys on right hand, leftled:top/white
// left hand
TRNS,NO, NO, NO, NO, NO, NO,
TRNS,NO, NO, NO, NO, NO, TRNS,
TRNS,
TRNS,TRNS,TRNS,
- // in Workman right hand will be:
- // =
- // ^ { } ( ) +
- // ' ! $ " ; \
- // # [ < > ] AppMenu
- //
+ /* in Workman right hand will be:
+ +
+ ^ { } ( ) =
+ ' ! $ " ; \
+ # [ < > ] \
+ */
// right hand
- NO, NO, NO, NO, NO, NO, TRNS,
- TRNS,MINS,4, 5, 9, 0, PPLS,
+ NO, NO, NO, NO, NO, NO, PPLS,
+ TRNS,MINS,4, 5, 9, 0, EQL,
BSLS,2, P, FN1, 1, FN2,
- TRNS,3, 6, FN3, FN4, 7, APP,
+ TRNS,3, 6, FN3, FN4, 7, FN2,
TRNS,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
TRNS,TRNS,TRNS
),
- KEYMAP( // Layer5: F-keys instead of numbers, leftled:red
+ KEYMAP( // Layer5: F-keys instead of numbers, leftled:top/white
// left hand
TRNS,F1, F2, F3, F4, F5, F6,
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,TRNS
),
- KEYMAP( // Layer6: F-keys, cursor, Workman-layer switch, Teensy, leftled:red+onboard
+ KEYMAP( // Layer6: F-keys, Teensy, Workman-layer switch, leftled:top/white+onboard
// left hand
TRNS,F1, F2, F3, F4, F5, F6,
- FN0, NO, PGUP,UP, PGDN,PGUP,TRNS,
- TRNS,NO, LEFT,DOWN,RGHT,PGDN,
- TRNS,INS, DEL, END, HOME,NO, TRNS,
- FN16,TRNS,TRNS,TRNS,TRNS,
+ FN0, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
+ FN18,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
TRNS,TRNS,TRNS,
// right hand
- F7, F8, F9, F10, F11, F12, MINS,
- TRNS,PGUP,PGUP,UP, PGDN,NO, FN0,
- PGDN,LEFT,DOWN,RGHT,NO, TRNS,
- TRNS,NO, HOME,END, DEL, INS, TRNS,
+ F7, F8, F9, F10, F11, F12, TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,FN0,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
// rarely used
//
- KEYMAP( // Layer7: F-keys only, leftled:red
+ KEYMAP( // Layer7: F-keys only, leftled:top/white
// left hand
TRNS,NO, NO, NO, NO, NO, NO,
TRNS,F13, F14, F15, F16, NO, TRNS,
TRNS,TRNS,TRNS
),
- KEYMAP( // Layer8: mouse and navigation, leftled:blue and green
+ KEYMAP( // Layer8: mouse and navigation, leftled:mid/blue+bot/green
// left hand
TRNS,NO, NO, NO, NO, NO, NO,
- TRNS,NO, NO, NO, NO, NO, TRNS,
- TRNS,NO, NO, TRNS,NO, NO,
- TRNS,NO, NO, TRNS,NO, NO, TRNS,
+ TRNS,NO, NO, NO, ACL0,NO, TRNS,
+ TRNS,NO, NO, TRNS,ACL1,NO,
+ TRNS,NO, NO, TRNS,ACL2,NO, TRNS,
TRNS,TRNS,TRNS,TRNS,TRNS,
TRNS,TRNS,
TRNS,
/* id for user defined functions */
enum function_id {
TEENSY_KEY,
+ L_CTRL_ALT_ENT,
+ R_CTRL_ALT_ENT,
};
/*
* Fn action definition
*/
static const uint16_t PROGMEM fn_actions[] = {
- ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key
+ [0] = ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key
- ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN1 = Shifted BackSlash // " in Workman
- ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // FN2 = Shifted Minus // \ in Workman
- ACTION_MODS_KEY(MOD_LSFT, KC_COMM), // FN3 = Shifted comma // < in Workman
- ACTION_MODS_KEY(MOD_LSFT, KC_DOT), // FN4 = Shifted dot // > in Workman
+ [1] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN1 = Shifted BackSlash // " in Workman
+ [2] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // FN2 = Shifted Minus // \ in Workman
+ [3] = ACTION_MODS_KEY(MOD_LSFT, KC_COMM), // FN3 = Shifted comma // < in Workman
+ [4] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT), // FN4 = Shifted dot // > in Workman
- ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPC), // FN5 = LShift with tap BackSpace
- ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC), // FN6 = LCtrl with tap Escape
- ACTION_MODS_TAP_KEY(MOD_LALT, KC_SPC), // FN7 = LAlt with tap Space
- ACTION_MODS_TAP_KEY(MOD_RALT, KC_INS), // FN8 = RAlt with tap Ins
- ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // FN9 = RShift with tap Enter
- ACTION_MODS_TAP_KEY(MOD_RCTL, KC_SPC), // FN10 = RCtrl with tap Space
+ [5] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPC), // FN5 = LShift with tap BackSpace
+ [6] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_DEL), // FN6 = LCtrl with tap Delete
+ [7] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_ESC), // FN7 = LAlt with tap Escape
+ [8] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_INS), // FN8 = RAlt with tap Ins
+ [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // FN9 = RShift with tap Enter
+ [10] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_SPC), // FN10 = RCtrl with tap Space
- ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB), // FN11 = LShift with tap Tab
- ACTION_MODS_TAP_KEY(MOD_LGUI, KC_ESC), // FN12 = LGui with tap Escape
- ACTION_MODS_TAP_KEY(MOD_RSFT, KC_QUOT), // FN13 = RShift with tap quotes
- ACTION_MODS_TAP_KEY(MOD_RCTL, KC_RBRC), // FN14 = RCtrl with tap ]
+ [11] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB), // FN11 = LShift with tap Tab
+ [12] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_GRV), // FN12 = LCtrl with tap Tilda
+ [13] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_SPC), // FN13 = LAlt with tap Space
+ [14] = ACTION_MODS_TAP_KEY(MOD_LGUI, KC_ESC), // FN14 = LGui with tap Escape
+ [15] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_QUOT), // FN15 = RShift with tap quotes
+ [16] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_RBRC), // FN16 = RCtrl with tap ]
- ACTION_LAYER_SET(0, ON_BOTH), // FN15 - set Layer0
- ACTION_LAYER_SET(1, ON_BOTH), // FN16 - set Layer1, to use Workman layout at firmware level
- ACTION_LAYER_SET(2, ON_BOTH), // FN17 - set Layer2, to use with Numpad keys
+ [17] = ACTION_LAYER_SET(0, ON_BOTH), // FN17 - set Layer0
+ [18] = ACTION_LAYER_SET(1, ON_BOTH), // FN18 - set Layer1, to use Workman layout at firmware level
+ [19] = ACTION_LAYER_SET(2, ON_BOTH), // FN19 - set Layer2, to use with Numpad keys
- ACTION_LAYER_MOMENTARY(2), // FN18 - momentary Layer2, to use with Numpad keys
- ACTION_LAYER_MOMENTARY(5), // FN19 - momentary Layer5, to use with F* keys on top row
- ACTION_LAYER_MOMENTARY(6), // FN20 - momentary Layer6, to use with F* keys on top row, cursor, Teensy, Workman-layer switch
- ACTION_LAYER_MOMENTARY(7), // FN21 - momentary Layer7, to use with F* keys (F1-F24)
+ [20] = ACTION_LAYER_MOMENTARY(2), // FN20 - momentary Layer2, to use with Numpad keys
+ [21] = ACTION_FUNCTION_TAP(L_CTRL_ALT_ENT), // FN21 - momentary Layer5+CTRL+ALT on Enter, to use with F* keys on top row
+ [22] = ACTION_FUNCTION_TAP(R_CTRL_ALT_ENT), // FN22 - momentary Layer6+CTRL+ALT on Enter, to use with F* keys on top row, Teensy, Workman-layer switch
+ [23] = ACTION_LAYER_TAP_KEY(7, KC_BSLS), // FN23 - momentary Layer7 on ' , to use with F* keys (F1-F24)
- ACTION_LAYER_TAP_KEY(2, KC_F), // FN22 = momentary Layer2 on F key, to use with Numpad keys
- ACTION_LAYER_TAP_KEY(3, KC_S), // FN23 = momentary Layer3 on S key, to use with F* keys
- ACTION_LAYER_TAP_KEY(4, KC_A), // FN24 = momentary Layer4 on A key, to use with unconvenient keys
- ACTION_LAYER_TAP_KEY(8, KC_D), // FN25 = momentary Layer8 on D key, to use with mouse and navigation keys
+ [24] = ACTION_LAYER_TAP_KEY(4, KC_Z), // FN24 = momentary Layer4 on Z key, to use with unconvenient keys
+ [25] = ACTION_LAYER_TAP_KEY(3, KC_X), // FN25 = momentary Layer3 on X key, to use with F* keys
+ [26] = ACTION_LAYER_TAP_KEY(8, KC_C), // FN26 = momentary Layer8 on C key, to use with mouse and navigation keys
+ [27] = ACTION_LAYER_TAP_KEY(2, KC_V), // FN27 = momentary Layer2 on V key, to use with Numpad keys
- ACTION_LAYER_TAP_KEY(2, KC_V), // FN26 = momentary Layer2 on V key, to use with Numpad keys
- ACTION_LAYER_TAP_KEY(3, KC_X), // FN27 = momentary Layer3 on X key, to use with F* keys
- ACTION_LAYER_TAP_KEY(4, KC_Z), // FN28 = momentary Layer4 on Z key, to use with unconvenient keys
- ACTION_LAYER_TAP_KEY(8, KC_C), // FN29 = momentary Layer8 on C key, to use with mouse and navigation keys
+ // i'd like to remove this - will try to get used to live without this and convert them to usual keys
+ [28] = ACTION_LAYER_TAP_KEY(4, KC_A), // FN28 = momentary Layer4 on A key, to use with unconvenient keys
+ [29] = ACTION_LAYER_TAP_KEY(3, KC_S), // FN29 = momentary Layer3 on S key, to use with F* keys
+ [30] = ACTION_LAYER_TAP_KEY(8, KC_D), // FN30 = momentary Layer8 on D key, to use with mouse and navigation keys
+ [31] = ACTION_LAYER_TAP_KEY(2, KC_F), // FN31 = momentary Layer2 on F key, to use with Numpad keys
};
-void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
- print("action_function called\n");
- print("id = "); phex(id); print("\n");
- print("opt = "); phex(opt); print("\n");
+ // 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);
+ _delay_ms(50);
bootloader_jump(); // should not return
print("not supported.\n");
}
+
+ if (id == L_CTRL_ALT_ENT || id == R_CTRL_ALT_ENT) {
+ if (record->tap.count == 0 || record->tap.interrupted) {
+ uint8_t weak_mods;
+ uint8_t layer;
+
+ if (id == L_CTRL_ALT_ENT) {
+ weak_mods = MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT);
+ layer = 5;
+ } else {
+ weak_mods = MOD_BIT(KC_RCTL) | MOD_BIT(KC_RALT);
+ layer = 6;
+ }
+
+ if (record->event.pressed) {
+ layer_on(layer);
+ add_weak_mods(weak_mods);
+ } else {
+ del_weak_mods(weak_mods);
+ layer_off(layer);
+ }
+ } else {
+ if (record->event.pressed) {
+ add_key(KC_ENT);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ENT);
+ send_keyboard_report();
+ }
+ }
+ }
}