-/* TypeMatrix-2030-like keymap
- * ---------------------------
- * Currently supported features:
- * Layer 0: default layer close to the TM with the following differences:
- * - top row and rightmost column are removed, corresponding keys are displaced, except app-keys which are removed
- * - bottom-left keys are reorganized on a single roz as: Ctrl, "Fn", Gui, Play, App/Alt
- * - "shuffle" and "desktop" are not supported
- * - right-shift is moved on ' and \
- * - right-ctrl is moved on End
- * - ] is moved in place of the dash (-)
- * - dash (-) and = are moved on bottom right row
- * - arrows and PgUp/PgDn are moved on the thumbs
- * Layer 1: same as Layer 0 but with Dvorak layout, to use with QWERTY OS layout.
- * Enable Dvorak layout with Magic-1 (LShift-RShift-1), disable with Magic-0.
- * Layer 8: numbers layer close to the TM when toggling "num" with the following differences:
- * - numpad is displaced by 1 to the top left
- * - arrows are displaced by 1 to the left
- * - provides access to F1-F12, caps lock and num lock
- * Layer 9: "fn" layer ("fn" key toggles both layers 1 & 2) with the following differences:
- * - VolUp & VolDn are only on left hand to keep access to arrows on right hand
- * LEDs:
- * - left (1st) led is used to indicate the numbers layer
- * - middle (2nd) led is used to indicate Dvorak layout
- * - right (3rd) led is used to indicate caps-lock
- */
+/* TypeMatrix-2030-like keymap */
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
#define BASE 0 // default layer
#define DVRK 1 // Dvorak layer
-#define NMBR 8 // numbers layer
+#define NUMR 8 // numeric layer
#define FNLR 9 // fn layer
#define MDBL0 1
#define MFNLR 2
-#define MCUT 3
-#define MCOPY 4
-#define MPSTE 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Basic layer
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT,
KC_LCTL, M(MFNLR), KC_LGUI,KC_MPLY,ALT_T(KC_APP),
- ALT_T(KC_ESC), TG(NMBR),
+ ALT_T(KC_ESC), TG(NUMR),
KC_PGUP,
KC_SPC, KC_LSFT, KC_PGDN,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ENT,
KC_LCTL, M(MFNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP),
- ALT_T(KC_ESC), TG(NMBR),
+ ALT_T(KC_ESC), TG(NUMR),
KC_PGUP,
KC_SPC, KC_LSFT, KC_PGDN,
KC_UP,
KC_DOWN, KC_RSFT, KC_SPC
),
-/* Numbers Layer
+/* Numeric Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | | | | | Tab | / | * | - |
* `--------------------' `--------------------'
*/
// SYMBOLS
-[NMBR] = KEYMAP(
+[NUMR] = KEYMAP(
// left hand
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS,KC_TRNS,
// right hand
- KC_INS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS,
KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT,
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | |VolUp | | | | | | | | Pause |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | |------| |------| | | | | | |
+ * | | | | Calc | Mail |Browsr|------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | cut | copy |paste | Mute |VolDn | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
[FNLR] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, M(MCUT), M(MCOPY), M(MPSTE), KC_MUTE, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM,
+ KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
}
break;
case MFNLR:
- layer_state ^= (1 << NMBR) | (1 << FNLR);
- break;
- case MCUT:
- if (record->event.pressed) {
- return MACRO(D(LSFT), T(DELT), U(LSFT), END);
- }
- break;
- case MCOPY:
- if (record->event.pressed) {
- return MACRO(D(LCTL), T(INS), U(LCTL), END);
- }
- break;
- case MPSTE:
- if (record->event.pressed) {
- return MACRO(D(LSFT), T(INS), U(LSFT), END);
- }
+ layer_invert(NUMR);
+ layer_invert(FNLR);
break;
}
return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
-void * matrix_init_user(void) {
+void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
-void * matrix_scan_user(void) {
+void matrix_scan_user(void) {
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
- // led 1: numbers layer
- if (layer_state & (1 << NMBR)) {
+ // led 1: numeric layer
+ if (layer_state & (1 << NUMR)) {
ergodox_right_led_1_on();
}
// led 2: Dvorak layer
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
ergodox_right_led_3_on();
}
+
};