From 220ea4c9b7acefa45fd0c58d58f4e79f07dace0f Mon Sep 17 00:00:00 2001 From: Christoffer Holmberg Date: Tue, 21 Aug 2018 18:37:29 +0300 Subject: Keymap: Nordic layouts for ErgoDox, Planck (#3693) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * first verion of skug * zudvp layer added and new thumb cluster * move del to arrw cluster and switch places of algr and no_circ * first verion of skug * zudvp layer added and new thumb cluster * move del to arrw cluster and switch places of algr and no_circ * rework layouts * Adds SYMB layer toggle to 'ä' Closes #2 Also moves ctrl away from '-' and 'z' to the outer bottom corners and removes redundant SYMB layer binds from there * Adds mouse movement to right hand on ARRW layer Closes #3 * Fix typoed keycodes * planck qwerty nordic * Update README.md * Update README.md * Implemented changes to planck layout requested by drashna * Implemented changes to ergodox layout requested by drashna NOTE: `version.h` is still required. --- keyboards/ergodox_ez/keymaps/skug/config.h | 6 + keyboards/ergodox_ez/keymaps/skug/keymap.c | 275 ++++++++++++++++++++++++++++ keyboards/ergodox_ez/keymaps/skug/readme.md | 4 + 3 files changed, 285 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/skug/config.h create mode 100644 keyboards/ergodox_ez/keymaps/skug/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/skug/readme.md (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/skug/config.h b/keyboards/ergodox_ez/keymaps/skug/config.h new file mode 100644 index 000000000..d97281392 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/skug/config.h @@ -0,0 +1,6 @@ +#pragma once + +#undef LSPO_KEY +#undef RSPC_KEY +#define LSPO_KEY KC_8 // Nordic Left SpaceCadet +#define RSPC_KEY KC_9 // Nordic Right SpaceCadet diff --git a/keyboards/ergodox_ez/keymaps/skug/keymap.c b/keyboards/ergodox_ez/keymaps/skug/keymap.c new file mode 100644 index 000000000..0d2ec1dd9 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/skug/keymap.c @@ -0,0 +1,275 @@ +/* Copyright 2018 Andreas Lindhé, Christoffer Holmberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + + + + +#include QMK_KEYBOARD_H +#include "version.h" +#include "keymap_swedish.h" + +#define _______ KC_TRNS + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys +#define ARRW 3 // arrow + soon mouse + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + EPRM, + VRSN, + RGB_SLD +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ½ | ! | " | # | # | % | Ins | | L1 | & | / | ( | ) | = | ? | + * | § | 1 | 2 @ | 3 £ | 4 $ | 5 | | | | 6 | 7 { | 8 [ | 9 ] | 0 } | + \ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L2 | | L2 | Y | U | I | O | P | Å | + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | L4 | A | S | D | F | G |------| |------| H | J | K | L |Ö / L3| Ä/L2 | + * | | | | | | | Hypr/| | Meh/ | | | | | | | + * |--------+------+------+------+------+------| Esc | | Ent |------+------+------+------+------+--------| + * | LShift/| Z | X | C | V | B | | | | N | M | ; | : | _ | RShift/| + * | ( | | | | | | | | | | | , | . | - | ) | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | '/ | ` |Alt | Left | Right| | Spc | Bksp | AltGr| * | ~/ | + * | Ctrl | ' | | | | | | | | | Ctrl | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | <>| | End | | Home | ^ | + * ,------|------|------| |------+--------+------. + * | Left | Right| PgDn | | PgUp | Up | Down | + * |------|------|------| |------|--------|------| + * | Ctrl/| Alt/ | | | | Alt/ | Ctrl/| + * | Enter| Esc | Lgui | | Lgui | Esc | Enter| + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_ +// Otherwise, it needs KC_* +[BASE] = LAYOUT_ergodox_80( // layer 0 : default + // left hand + NO_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_ESC), + CTL_T(NO_APOS), NO_ACUT, KC_LALT, KC_BSPC, KC_SPC, + NO_LESS, KC_END, + KC_LEFT, KC_RIGHT, KC_PGDN, + CTL_T(KC_ENT), ALT_T(KC_ESC), KC_LGUI, + + // right hand + TO(ARRW), KC_6, KC_7, KC_8, KC_9, KC_0, NO_PLUS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), LT(SYMB, NO_AE), + MEH_T(KC_ENT), KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC, + KC_SPC, KC_BSPC, NO_ALGR, NO_ASTR, CTL_T(NO_TILD), + KC_HOME, NO_CIRC, + KC_PGUP, KC_UP, KC_DOWN, + KC_LGUI, ALT_T(KC_ESC), CTL_T(KC_ENT) +), +/* Keymap: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | - | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Animat| | |Toggle|Solid | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * |------|------|------| |------|------|------| + * |BNess-|Bness+| | | |Hue- |Hue+ | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = LAYOUT_ergodox_80( + // left hand + VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, + _______,KC_EXLM,NO_AT, NO_LCBR,NO_RCBR,NO_PIPE,_______, + _______,KC_HASH,NO_DLR, NO_LPRN,NO_RPRN,NO_GRV, + _______,KC_PERC,NO_CIRC,NO_LBRC,NO_RBRC,NO_TILD,_______, + EPRM,_______,_______,_______,_______, + RGB_MOD,_______, + _______,_______,_______, + RGB_VAD,RGB_VAI,_______, + // right hand + _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, KC_UP, KC_7, KC_8, KC_9, NO_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, NO_PLUS, _______, + _______, NO_AMPR, KC_1, KC_2, KC_3, NO_MINS, _______, + _______,KC_DOT, KC_0, NO_EQL, _______, + RGB_TOG, RGB_SLD, + _______, _______, _______, + _______, RGB_HUD, RGB_HUI +), + +/* Keymap: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | MsUp | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |MsLeft|MsDown|MsRght| | |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | |------|------| |------|------|------| + * | | | | | | |BrBck | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = LAYOUT_ergodox_80( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MS_U, _______, _______, _______, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_BTN1, KC_BTN2, + _______, _______, + _______, _______, _______, + _______, _______, _______, + // right hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, + _______, _______, + _______, _______, _______, + _______, _______, KC_WBAK +), + // Keymap: Ducky Style arrows +[ARRW] = LAYOUT_ergodox_80( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP , _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DEL, _______, + _______, _______, + _______, _______, _______, + _______, _______, _______, + // right hand + TO(BASE), _______, _______, _______, _______, _______, _______, + _______, _______, KC_BTN4, KC_MS_U, KC_BTN5, _______, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, + _______, _______, + _______, _______, _______, + _______, _______, _______ +), + +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + case 1: + if (record->event.pressed) { // For resetting EEPROM + eeconfig_init(); + } + break; + } + return MACRO_NONE; +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case EPRM: + if (record->event.pressed) { + eeconfig_init(); + } + return false; + break; + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case RGB_SLD: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); + #endif + } + return false; + break; + } + return true; +} + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // Binary: lsb at bottom + case 1: + ergodox_right_led_3_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_board_led_on(); + default: + // none + break; + } +}; diff --git a/keyboards/ergodox_ez/keymaps/skug/readme.md b/keyboards/ergodox_ez/keymaps/skug/readme.md new file mode 100644 index 000000000..5c155619c --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/skug/readme.md @@ -0,0 +1,4 @@ +# Nordic Qwerty layout for ErgoDox EZ, based on Andreas Lindhe's version + +*NOTE:* it might still be desirable to set the software layout to sv_SE in your +OS. -- cgit v1.2.3-24-g4f1b From 444def8411d6ac67203c14ec92f8e33d77330895 Mon Sep 17 00:00:00 2001 From: Jacob Jerrell Date: Tue, 28 Aug 2018 18:48:41 -0500 Subject: Keymap: Bocaj - Create Userspace and Ergodox Layout (#3750) * Bocaj Layout Revamp * Pull in Upstream (#1) * Various tweaks for some Input:Club build processes * change KEYMAP to LAYOUT for all new keyboards made using this script * Add support for rev3 of the Atom47 (#2672) * Added support for rev3 of the Atom47 * Updated Atom47 readme's * Fix redefine error on rev2 and add maartenwut's keymap * Fix redefine error on LEdiodes keymap * Add Nyquist keymap (#2692) * nyquist * danielhklein nyquist setup * shift left controls * remove readme * cleanup before pr * ready for pr * Adds Phantom TKL support (#2696) * Add an info.json to phantom keyboard * Add layouts - KEYMAP_WINKEYLESS - KEYMAP_7BIT - KEYMAP_ISO - KEYMAP_ISO_WINKEYLESS * Add key_counts * Add 2 missing F-Row keys * Add TKC1800 info.json Created an info.json for the tkc1800. * Clueboard 60 info.json - adds - LAYOUT_60_ansi - LAYOUT_60_iso - KEYMAP_AEK - KEYMAP - LAYOUT_60_ansi_split_bs_rshift * Add the Speedo keyboard * Fix KC60 info.json file (#2707) * change KEYMAP to LAYOUT in all the KC60 files * Redo the info.json file * Small fixes to TKC1800 - adjust F-row to use 0.25 spacing - split left shift - add key_count * Fix some Configurator Warnings regarding LAYOUT vs KEYMAP (#2708) * change diverge 3 KC_KEYMAP to LAYOUT * Change KEYMAP to LAYOUT for handwired arrow pad * change M10A to LAYOUT for m10-a * Change KC_KEYMAP to LAYOUT_kc and KEYMAP to LAYOUT for mf68 * change KC_KEYMAP to LAYOUT for nano * Refactor to LAYOUT * refactor to LAYOUT-ansi and LAYOUT_iso for s65 * LAYOUT conversions for lfkkeyboards * missed a few renames * mini1800 for lfkeyobards support of LAYOUT * Improve state/chord handling and clean up namespace Some values that can never, ever, change were held in local variables, rather than in PROGMEM. Fixed. Change "pressed" to a signed int so the test for < 0 makes sense, and to avoid possible weird failure modes in the case where a key release comes in when pressed is already zero. (Shouldn't happen, sure, but computers are weird.) A lot of things in process_steno had external linkage for no particular reason. They've been marked static. Stuff still builds. Distinguish between currently-held keys and keys that have been held, and expose these values through a nicely-named API so other code could, say, check on the current set of steno chording in order to make displays. Also in passing fix up the "state" value having external linkage so it could clash with other people's variable declarations. The API also provides hooks for key processing and steno chord events, so you can monitor those events without having to run in matrix_scan_user and recheck the values directly. Also document these. There is no path through processing a key that doesn't end with a return false, so the nested return foo() are gone and we just return false. * Pull information from config.h and rules.mk (#2711) * Pull information from config.h and rules.mk * Readd the kbd75 maintainer * Remove obsolete info.json entries (#2712) * Clean up some long-standing errors when populating the API (#2715) * More Configurator Warning Fixes (#2716) * mf68_ble did not have the correct .c and .h files * Fix JC65 KEYMAP to LAYOUT * Change KEYMAP to LAYOUT for s60_x * Convert KEYMAP to LAYOUT for lets_split boards * Convert KEYMAP to LAYOUT * more fixes to keymap for iris * convert KEYMAP to LAYOUT for levinson keyboard * change losinggeneration's KEYMAP to LAYOUT * convert KEYMAP to LAYOUT * convert KEYMAP to LAYOUT for nyquist * convert KEYMAP to LAYOUT * convert KEYMAP to LAYOUT for viterbi * convert KEYMAP to LAYOUT * convert KEYMAP and its subsidiries to the LAYOUT standard * convert KEYMAP and its subsidiries to the new LAYOUT standard * Normacos keymap for let's split keyboard (#2691) * Cheers let's split keymap * fixed typo on norman layer of cheers keymap for let's split * fixed right handed mappings for home row * cheers keymap for let's split redefinition * updated Cheers keymap for let's split * cheers keymap for let's split updated with some terminal macros * renamed cheers let's split keymap to a more appropriate normacos * updated normacos keymap doc / removed non functional keys * reset let's split rules to default values * added more spotlight search macros * normalized keymap comments * Moved numpad on lower layer * hhkb jp personal keymap (#2698) * Add JJ40 Cockpit personal keymap (#2713) * Add JJ40 Cockpit keymap * Fix lower layer symbols * Add readme for "major" keyboards to eliminate more QMK Configurator errors (#2718) * add readme to ktype keyboard * add readme to m10a * add readme to mini1800 * add readme to parent directory * Revert "Pull in Upstream (#1)" This reverts commit eeba0cec17ccb636e4225eed88aeae72b99f5e45. * Updates to Bocaj Files - Gave up on Tap Dance for ' -> ' + Added another 'Secret' + Add ' -> ' to the Swap Hands key + Add Swap Hands to the ' -> ' key + Made Hand Swapping a momentary toggle - Removed Auto Shift + Added Layer Toggle to KC_QUOTE for the _TOOLS layer - Disabled Tap Dance * Merge remote-tracking branch 'upstream/master' * Updates to Bocaj Added Game Layers, Removed Unused Macros * Removed 'secrets.h' * Updates to Bocaj Remove 'secrets'. Remove 'sendstring_workman.h' and set related layer back to qwerty due to macro compatibility issues * Total revisioning of keymap and layout structure * Missed readme.md file * Bocaj - Permissive Hold setting enabled * Switching from ErgoDox EZ centric configuration to the layout/user approach * Bocaj - Create Userspace and Ergodox layout * Update settings.json --- keyboards/ergodox_ez/keymaps/bocaj/bocaj.h | 146 ------------ keyboards/ergodox_ez/keymaps/bocaj/config.h | 21 -- keyboards/ergodox_ez/keymaps/bocaj/keymap.c | 340 --------------------------- keyboards/ergodox_ez/keymaps/bocaj/readme.md | 48 ---- keyboards/ergodox_ez/keymaps/bocaj/rules.mk | 5 - 5 files changed, 560 deletions(-) delete mode 100644 keyboards/ergodox_ez/keymaps/bocaj/bocaj.h delete mode 100644 keyboards/ergodox_ez/keymaps/bocaj/config.h delete mode 100644 keyboards/ergodox_ez/keymaps/bocaj/keymap.c delete mode 100644 keyboards/ergodox_ez/keymaps/bocaj/readme.md delete mode 100644 keyboards/ergodox_ez/keymaps/bocaj/rules.mk (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/bocaj/bocaj.h b/keyboards/ergodox_ez/keymaps/bocaj/bocaj.h deleted file mode 100644 index 2c41c01aa..000000000 --- a/keyboards/ergodox_ez/keymaps/bocaj/bocaj.h +++ /dev/null @@ -1,146 +0,0 @@ -/* -Copyright 2018 Jacob Jerrell - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "quantum.h" - -// Layers -enum layers { - _SWRKMN = 0, - _HWRKMN, - _LOWER, - _RAISE, - _ADJUST, - _DIABLO -}; - - - -enum custom_keycodes { - KC_EPRM = SAFE_RANGE, - KC_SWRK, - KC_HWRK, - KC_VRSN, - JJ_COPY, - JJ_PASTE, - JJ_ARRW, - MC_LOCK, - KC_DIABLO_CLEAR, - KC_NMPD -// UC_FLIP -}; - -// Space Cadet Hyper/Meh and [/] -#define HYP_LBK ALL_T(KC_LBRACKET) -#define MEH_RBK MEH_T(KC_RBRACKET) - -#define KC_LWSP LT(_LOWER, KC_SPACE) -#define KC_RSEN LT(_RAISE, KC_ENTER) -#define KC_ADJS TT(_ADJUST) - -#define XXXXXXX KC_NO -#define _______ KC_TRNS - -#ifdef TAP_DANCE_ENABLE -enum { - TD_D3_1 = 0, - TD_D3_2, - TD_D3_3, - TD_D3_4 -}; -#endif // TAP_DANCE_ENABLE - -// Custom Keycodes for Diablo 3 layer -// But since TD() doesn't work when tap dance is disabled -// We use custom codes here, so we can substitute the right stuff -#ifdef TAP_DANCE_ENABLE -#define KC_D3_1 TD(TD_D3_1) -#define KC_D3_2 TD(TD_D3_2) -#define KC_D3_3 TD(TD_D3_3) -#define KC_D3_4 TD(TD_D3_4) -#else // TAP_DANCE_ENABLE -#define KC_D3_1 KC_1 -#define KC_D3_2 KC_2 -#define KC_D3_3 KC_3 -#define KC_D3_4 KC_4 -#endif // TAP_DANCE_ENABLE - -//define diablo macro timer variables -extern uint16_t diablo_timer[4]; -extern uint8_t diablo_times[]; -extern uint8_t diablo_key_time[4]; - - -void run_diablo_macro_check(void); - - -#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) - -/* Pretty Layout -.---------------------------------------------. .---------------------------------------------. -| 1 | 2 | 3 | 4 | 5 | 6 | 7 | ! 8 | 9 | 10 | 11 | 12 | 13 | 14 | -!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! -| 15 | 16 | 17 | 18 | 19 | 20 | 21 | ! 22 | 23 | 24 | 25 | 26 | 27 | 28 | -!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! -| 29 | 30 | 31 | 32 | 33 | 34 |-------! !-------! 35 | 36 | 37 | 38 | 39 | 40 | -!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! -| 41 | 42 | 43 | 44 | 45 | 46 | 47 | ! 48 | 49 | 50 | 51 | 52 | 53 | 54 | -'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | 55 | 56 | 57 | 58 | 59 | .---------------. .---------------. ! 60 | 61 | 62 | 63 | 64 | - '------------------------------' | 65 | 66 | ! 67 | 68 | '------------------------------' - .-------+-------+-------! !-------+-------+-------. - ! ! | 69 | ! 70 | ! ! - ! ! !-------! !-------! ! ! - | 71 | 72 | 73 | ! 74 | 75 | 76 | - '-----------------------' '-----------------------' -*/ - -#define ______________________NUMBER_LEFT________________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ______________________NUMBER_RIGHT_______________________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define ______________________SPECIAL_LEFT_______________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define ______________________SPECIAL_RIGHT______________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN - -#define _______________________FUNC_LEFT_________________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _______________________FUNC_RIGHT________________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define _________________________________________________________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -#define XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX KC_NO, KC_NO, KC_NO, KC_NO, KC_NO - -#define _______________________SWORKMAN_L1_______________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _______________________SWORKMAN_L2_______________________ KC_A, SFT_T(KC_S), GUI_T(KC_D), ALT_T(KC_F), KC_G -#define _______________________SWORKMAN_L3_______________________ CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B - -#define _______________________SWORKMAN_R1_______________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _______________________SWORKMAN_R2_______________________ KC_H, ALT_T(KC_J), GUI_T(KC_K), SFT_T(KC_L), KC_SCLN -#define _______________________SWORKMAN_R3_______________________ KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLASH) - -// Hardware Driven Workman -#define _______________________HWORKMAN_L1_______________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _______________________HWORKMAN_L2_______________________ KC_A, SFT_T(KC_S), GUI_T(KC_H), ALT_T(KC_T), KC_G -#define _______________________HWORKMAN_L3_______________________ CTL_T(KC_Z), KC_X, KC_M, KC_C, KC_V - -#define _______________________HWORKMAN_R1_______________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _______________________HWORKMAN_R2_______________________ KC_Y, ALT_T(KC_N), GUI_T(KC_E), SFT_T(KC_O), KC_I -#define _______________________HWORKMAN_R3_______________________ KC_K, KC_L, KC_COMM, KC_DOT, CTL_T(KC_SLASH) - -#define ___________________ERGODOX_BOTTOM_LEFT___________________ TT(_DIABLO), TT(_ADJUST), XXXXXXX, KC_UP, KC_LEFT -#define ___________________ERGODOX_BOTTOM_RIGHT__________________ KC_RIGHT, KC_DOWN, TT(_RAISE), TT(_LOWER), TT(_ADJUST) - -// LEFT | RIGHT -#define ______________________ERGODOX_THUMBS_____________________ KC_APP,KC_HOME, KC_PGUP,KC_ESC, \ - KC_END, KC_PGDOWN, \ - KC_LWSP,KC_BSPACE,JJ_COPY, JJ_PASTE,KC_TAB,KC_RSEN diff --git a/keyboards/ergodox_ez/keymaps/bocaj/config.h b/keyboards/ergodox_ez/keymaps/bocaj/config.h deleted file mode 100644 index 59605bc25..000000000 --- a/keyboards/ergodox_ez/keymaps/bocaj/config.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef USERSPACE_CONFIG_H - #define USERSPACE_CONFIG_H - - #ifndef QMK_KEYS_PER_SCAN - #define QMK_KEYS_PER_SCAN 4 - #endif // QMK KEYS PER SCAN - - // this makes it possible to do rolling combos (zx) with keys that - // convert to other keys on hold (z becomes ctrl when you hold it, - // and when this option isn't enabled, z rapidly followed by x - // actually sends Ctrl-x. That's bad.) - #define IGNORE_MOD_TAP_INTERRUPT - #define PERMISSIVE_HOLD - #undef PREVENT_STUCK_MODIFIERS - - // Disable action_get_macro and fn_actions, since we don't use these - // and it saves on space in the firmware. - #define NO_ACTION_MACRO - #define NO_ACTION_FUNCTION - -#endif // !USERSPACE_CONFIG_H diff --git a/keyboards/ergodox_ez/keymaps/bocaj/keymap.c b/keyboards/ergodox_ez/keymaps/bocaj/keymap.c deleted file mode 100644 index 07117f116..000000000 --- a/keyboards/ergodox_ez/keymaps/bocaj/keymap.c +++ /dev/null @@ -1,340 +0,0 @@ -/* -Copyright 2018 Jacob Jerrell -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include QMK_KEYBOARD_H -#include "bocaj.h" - -#ifdef UNICODEMAP_ENABLE -#include "bocaj_unicode.h" -#endif // UNICODEMAP_ENABLE - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Software Workman / QWERTY - http://www.keyboard-layout-editor.com/#/gists/b6c016a22a9d31381a276a603a42fe5f - .---------------------------------------------. .---------------------------------------------. - | ESC | 1 | 2 | 3 | 4 | 5 | -> | ! - | 6 | 7 | 8 | 9 | 0 | = | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | DEL | Q | W | E | R | T | ( | ! ) | Y | U | I | O | P | \ | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | ADJST | A | S | D | F | G |-------! !-------! H | J | K | L | ; | ' | - !-------+-----+-----+-----x-----x-----! HYP ! ! MEH !-----x-----x-----+-----+-----+-------! - | SHIFT | Z | X | C | V | B | { | ! } | N | M | , | . | / | SHIFT | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | GAME | NUM | VRS | UP | LFT | .---------------. .---------------. ! RGT | DWN | RSE | LWR | ADJ | - '------------------------------' | APP | HOME | ! PGUP | ESC | '------------------------------' - .-------+-------+-------! !-------+-------+-------. - ! SPACE ! | END | ! PGDN | ! ENTER ! - ! / ! BSPCE !-------! !-------! TAB ! / ! - | LOWER | | COPY | ! PASTE | | RAISE | - '-----------------------' '-----------------------' -*/ - [_SWRKMN] = LAYOUT_ergodox_pretty_wrapper( - KC_ESC, ______________________NUMBER_LEFT________________________, JJ_ARRW, KC_MINUS, ______________________NUMBER_RIGHT_______________________, KC_EQUAL, - KC_DEL, _______________________SWORKMAN_L1_______________________, KC_LPRN, KC_RPRN, _______________________SWORKMAN_R1_______________________, KC_BSLS, - KC_ADJS,_______________________SWORKMAN_L2_______________________, _______________________SWORKMAN_R2_______________________, KC_QUOTE, - KC_LSFT,_______________________SWORKMAN_L3_______________________, HYP_LBK, MEH_RBK, _______________________SWORKMAN_R3_______________________, KC_RSFT, - ___________________ERGODOX_BOTTOM_LEFT___________________, ___________________ERGODOX_BOTTOM_RIGHT__________________, - ______________________ERGODOX_THUMBS_____________________ - ), -/* Hardware Workman - http://www.keyboard-layout-editor.com/#/gists/7a07cb982ec3597ba3e3d947554225f1 - .---------------------------------------------. .---------------------------------------------. - | ESC | 1 | 2 | 3 | 4 | 5 | -> | ! - | 6 | 7 | 8 | 9 | 0 | = | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | DEL | Q | D | R | W | B | ( | ! ) | J | F | U | P | ; | \ | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | ADJST | A | S | H | T | G |-------! !-------! Y | N | E | O | I | ' | - !-------+-----+-----+-----x-----x-----! HYP ! ! MEH !-----x-----x-----+-----+-----+-------! - | SHIFT | Z | X | M | C | V | { | ! } | K | L | , | . | / | SHIFT | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | GAME | NUM | VRS | UP | LFT | .---------------. .---------------. ! RGT | DWN | RSE | LWR | ADJ | - '------------------------------' | APP | HOME | ! PGUP | ESC | '------------------------------' - .-------+-------+-------! !-------+-------+-------. - ! SPACE ! | END | ! PGDN | ! ENTER ! - ! / ! BSPCE !-------! !-------! TAB ! / ! - | LOWER | | COPY | ! PASTE | | RAISE | - '-----------------------' '-----------------------' -*/ - [_HWRKMN] = LAYOUT_ergodox_pretty_wrapper( - KC_ESC, ______________________NUMBER_LEFT________________________, JJ_ARRW, KC_MINUS, ______________________NUMBER_RIGHT_______________________, KC_EQUAL, - KC_DEL, _______________________HWORKMAN_L1_______________________, KC_LPRN, KC_RPRN, _______________________HWORKMAN_R1_______________________, KC_BSLS, - KC_ADJS,_______________________HWORKMAN_L2_______________________, _______________________HWORKMAN_R2_______________________, KC_QUOTE, - KC_LSFT,_______________________HWORKMAN_L3_______________________, HYP_LBK, MEH_RBK, _______________________HWORKMAN_R3_______________________, KC_RSFT, - ___________________ERGODOX_BOTTOM_LEFT___________________, ___________________ERGODOX_BOTTOM_RIGHT__________________, - ______________________ERGODOX_THUMBS_____________________ - ), -/* Lower - http://www.keyboard-layout-editor.com/#/gists/f1d745a88d1c48ab55e095efd9e7a43a - .---------------------------------------------. .---------------------------------------------. - | | F1 | F2 | F3 | F4 | F5 | | ! | F6 | F7 | F8 | F9 | F10 | | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | ` | 1 | 2 | 3 | 4 | 5 | | ! | 6 | 7 | 8 | 9 | 0 | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | |-------! !-------! | | | | | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | | | ! | | | | | | | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | | | | | | .---------------. .---------------. ! | | | | | - '------------------------------' | | | ! | | '------------------------------' - .-------+-------+-------! !-------+-------+-------. - ! ! | | ! | ! ! - ! ! !-------! !-------! ! ! - | | | | ! | | | - '-----------------------' '-----------------------' -*/ - [_LOWER] = LAYOUT_ergodox_pretty_wrapper( - _______,_______________________FUNC_LEFT_________________________, _______, _______, _______________________FUNC_RIGHT________________________, _______, - KC_GRV ,______________________NUMBER_LEFT________________________, _______, _______, ______________________NUMBER_RIGHT_______________________, _______, - _______,_________________________________________________________, _________________________________________________________, _______, - _______,_________________________________________________________, _______, _______, _________________________________________________________, _______, - _________________________________________________________, _________________________________________________________, - ______________________ERGODOX_THUMBS_____________________ - ), -/* Raise - http://www.keyboard-layout-editor.com/#/gists/e0f591ec2ce9f24675a02d15c7048b25 - .---------------------------------------------. .---------------------------------------------. - | | F1 | F2 | F3 | F4 | F5 | | ! _ | F6 | F7 | F8 | F9 | F10 | | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | ~ | ! | @ | # | $ | % | | ! | ^ | & | * | ( | ) | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | |-------! !-------! | | | | | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | | | ! | | | | | | | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | | | | | | .---------------. .---------------. ! | | | | | - '------------------------------' | | | ! | | '------------------------------' - .-------+-------+-------! !-------+-------+-------. - ! ! | | ! | ! ! - ! ! !-------! !-------! ! ! - | | | | ! | | | - '-----------------------' '-----------------------' -*/ - [_RAISE] = LAYOUT_ergodox_pretty_wrapper( - _______,_______________________FUNC_LEFT_________________________, _______, KC_UNDS, _______________________FUNC_RIGHT________________________, _______, - KC_TILD,______________________SPECIAL_LEFT_______________________, _______, _______, ______________________SPECIAL_RIGHT______________________, _______, - _______,_________________________________________________________, _________________________________________________________, _______, - _______,_________________________________________________________, _______, _______, _________________________________________________________, _______, - _________________________________________________________, _________________________________________________________, - ______________________ERGODOX_THUMBS_____________________ - ), - /* Adjust - http://www.keyboard-layout-editor.com/#/gists/dedeae17b35a5d5f745a42aaea78f007 - .---------------------------------------------. .---------------------------------------------. - | | | | | | | EPRM | ! EPRM | | | | | | | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | | | | | | | | ! | | 7 | 8 | 9 | * | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | 🔇 | 🔉 | 🔊 | LCK | |-------! !-------! | 4 | 5 | 6 | + | SWRKM | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | | | ! | | 1 | 2 | 3 | - | HWRKM | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | | | | | | .---------------. .---------------. ! 0 | . | , | = | | - '------------------------------' | | | ! | | '------------------------------' - .-------+-------+-------! !-------+-------+-------. - ! ! | | ! | ! ! - ! ! !-------! !-------! ! ! - | | | | ! | | | - '-----------------------' '-----------------------' -*/ - [_ADJUST] = LAYOUT_ergodox_pretty_wrapper( - XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, KC_EPRM, KC_EPRM, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX, - XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PAST, XXXXXXX, - _______,KC__MUTE, KC__VOLDOWN, KC__VOLUP, MC_LOCK, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_SWRK, - XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, KC_HWRK, - XXXXXXX,_______,XXXXXXX,XXXXXXX,XXXXXXX, KC_KP_0, KC_PDOT, KC_COMM, KC_PEQL, _______, - ______________________ERGODOX_THUMBS_____________________ - ), -// Diablo - http://www.keyboard-layout-editor.com/#/gists/28476e4237e77d4835ac8a9d7e5f9b2c - [_DIABLO] = LAYOUT_ergodox_pretty_wrapper( - KC_ESC , KC_V , KC_D ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_TAB , KC_S , KC_I , KC_F , KC_T , KC_J ,XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, XXXXXXX, XXXXXXX, - KC_Q , KC_1 , KC_2 , KC_3 , KC_4 , KC_M , XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, XXXXXXX, XXXXXXX, - KC_LSFT,KC_D3_1 ,KC_D3_2 ,KC_D3_3 ,KC_D3_4 ,XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, XXXXXXX, XXXXXXX, - _______,ALT_T(KC_Z) ,KC_G ,KC_Y ,XXXXXXX , KC_KP_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, - XXXXXXX, XXXXXXX, - KC_BTN1,KC_BTN2,KC_DIABLO_CLEAR, XXXXXXX,XXXXXXX,XXXXXXX - ) -}; - -// Defines actions for my custom keycodes -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - // KC_COPY and KC_PASTE have problems with different hardware/software mappings - // e.g. If the mappings conflict, KC_COPY will send Cmd+M which minimizes the - // window and is very annoying. JJ_COPY and JJ_PASTE fix this by sending the - // raw character rather than the KC_* code - case JJ_COPY: - if (!record->event.pressed) { - SEND_STRING(SS_LGUI("c")); - } - return false; - break; - case JJ_PASTE: - if (!record->event.pressed) { - SEND_STRING(SS_LGUI("v")); - } - return false; - break; - case JJ_ARRW: - if (!record->event.pressed) { - SEND_STRING("->"); - } - return false; - break; - case KC_SWRK: - if (!record->event.pressed) { - set_single_persistent_default_layer(_SWRKMN); - layer_move(_SWRKMN); - ergodox_blink_all_leds(); - ergodox_blink_all_leds(); - } - return false; - break; - case KC_HWRK: - if (!record->event.pressed) { - set_single_persistent_default_layer(_HWRKMN); - layer_move(_HWRKMN); - ergodox_blink_all_leds(); - ergodox_blink_all_leds(); - } - return false; - break; - case KC_EPRM: - if (!record->event.pressed) { - ergodox_blink_all_leds(); - eeconfig_init(); - } - return false; - break; - case MC_LOCK: - if (!record->event.pressed) { - layer_move(_HWRKMN); - SEND_STRING(SS_LCTRL(SS_LGUI("q"))); - } - return false; - break; - case KC_DIABLO_CLEAR: -#ifdef TAP_DANCE_ENABLE - if (record->event.pressed) { - uint8_t dtime; - for (dtime = 0; dtime < 4; dtime++) { - diablo_key_time[dtime] = diablo_times[0]; - } - } -#endif // TAP_DANCE_ENABLE - return false; - break; - } - return true; -} - -void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); }; - -// Diablo III Fun stuff -//define diablo macro timer variables -uint16_t diablo_timer[4]; -uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 }; -uint8_t diablo_key_time[4]; - -// has the correct number of seconds elapsed (as defined by diablo_times) -bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; }; - -// Cycle through the times for the macro, starting at 0, for disabled. -// Max of six values, so don't exceed -void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) { - if (state->count >= 7) { - diablo_key_time[diablo_key] = diablo_times[0]; - reset_tap_dance(state); - } else { - diablo_key_time[diablo_key] = diablo_times[state->count - 1]; - } -} - -// Would rather have one function for all of this, but no idea how to do that... -void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 0); } -void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 1); } -void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 2); } -void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 3); } - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - // tap once to disable, and more to enable timed micros - [TD_D3_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1), - [TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), - [TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), - [TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), -}; - -// Sends the key press to system, but only if on the Diablo layer -void send_diablo_keystroke(uint8_t diablo_key) { - if (biton32(layer_state) == _DIABLO) { - switch (diablo_key) { - case 0: - tap(KC_1); break; - case 1: - tap(KC_2); break; - case 2: - tap(KC_3); break; - case 3: - tap(KC_4); break; - } - } -} - -// Checks each of the 4 timers/keys to see if enough time has elapsed -// Runs the "send string" command if enough time has passed, and resets the timer. -void run_diablo_macro_check(void) { - uint8_t dtime; - for (dtime = 0; dtime < 4; dtime++) { - if (check_dtimer(dtime) && diablo_key_time[dtime]) { - diablo_timer[dtime] = timer_read(); - send_diablo_keystroke(dtime); - } - } -} - -void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - /* - Lights are treated as binary here for easy identification. - LED1 = 4; LED2 = 2; LED1 = 1 - This allows for up to 8 identified layers (default layers being no lights on) - Which is way more than I should ever need - */ - case _LOWER: - ergodox_right_led_3_on(); - ergodox_right_led_3_set(10); // Default brightness is deadly in a dark room - break; - case _RAISE: - ergodox_right_led_2_on(); - ergodox_right_led_2_set(10); - break; - case _ADJUST: - ergodox_right_led_2_on(); - ergodox_right_led_2_set(10); - ergodox_right_led_3_on(); - ergodox_right_led_3_set(10); - break; - case _DIABLO: - ergodox_right_led_1_on(); - ergodox_right_led_1_set(10); - break; - default: - // none - break; - } - #ifdef TAP_DANCE_ENABLE - run_diablo_macro_check(); - #endif -}; diff --git a/keyboards/ergodox_ez/keymaps/bocaj/readme.md b/keyboards/ergodox_ez/keymaps/bocaj/readme.md deleted file mode 100644 index 9d5aa6050..000000000 --- a/keyboards/ergodox_ez/keymaps/bocaj/readme.md +++ /dev/null @@ -1,48 +0,0 @@ -# Ergodox EZ Layout by JacobJerrell - -My personal Ergodox EZ layout. - -## Summary - -Contains two base layers because I carry my keyboard between different machines and occassionally use the machines without this keyboard. A side-effect to using it in this manner (with a non-QWERTY layout) is that software/hardware mappings conflict so this allows a quick (2-buttons) to get the keyboard to a compatible layer - -## Layers - -| Layer | Purpose | -| ----- | ------- | -| 0 | [Hardware Workman](#hardware-workman) - For OS mapped to QWERTY | -| 1 | [Software Workman](#software-workman) - For OS mapped to Workman | -| 2 | [Lower](#lower) | -| 3 | [Raise](#raise) | -| 4 | [Adjust](#adjust) | -| 5 | [Diablo III](#diablo-iii) | - -### Hardware Workman - -For easy plug and play into QWERTY machines -![Hardware Workman](https://imgur.com/HHMIOEf.png) - -### Software Workman - -To switch to when I was previously using the laptop keyboard with software mapped to Workman. Or so other people can take the Ergodox for a spin. -![Software Workman](https://imgur.com/WnSci7o.png) - -### Lower - -Reveals F1-12 keys and brings numkeys down. -![Lowered](https://imgur.com/mGfjwcn.png) - -### Raise - -Reveals F1-F12 keys and gives shifted numkeys. -![Raised](https://imgur.com/NC96Jus.png) - -### Adjust - -Numpad, Wipe EEPROM, OSX Volume Control, OSX Lockscreen, and Default Layer Switching. -![Adjusted](https://imgur.com/aQtOxZU.png) - -### Diablo III - -Arranged to make playing on a laptop much more enjoyable. Credit for the D1-4 macros (as well as much of the ideas in this layout goes to Drashna) -![Diablo III](https://imgur.com/5eQcDOQ.png) diff --git a/keyboards/ergodox_ez/keymaps/bocaj/rules.mk b/keyboards/ergodox_ez/keymaps/bocaj/rules.mk deleted file mode 100644 index b667841a1..000000000 --- a/keyboards/ergodox_ez/keymaps/bocaj/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUTO_SHIFT_ENABLE = no -COMMAND_ENABLE = no -SWAP_HANDS_ENABLE = no -TAP_DANCE_ENABLE = yes -EXTRAKEY_ENABLE = no -- cgit v1.2.3-24-g4f1b From 155850187de7897dcd8f216d704fecce446f0a68 Mon Sep 17 00:00:00 2001 From: Luke Stanley Date: Wed, 5 Sep 2018 15:45:19 -0500 Subject: Keyboard: Add IBM 122-key Terminal keyboard and my Ergodox EZ keymap (Programmer's Dvorak + Gaming/QWERTY layer) (#3850) * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * Add keyboard information and separated my custom layout from the default * Add readme to Lukaus' Ergodox EZ keymap * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * Add keyboard information and separated my custom layout from the default * Add readme to Lukaus' Ergodox EZ keymap * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * Fix merge conflict again? * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * Add keyboard information and separated my custom layout from the default * Add readme to Lukaus' Ergodox EZ keymap * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * added my lukaus keymap (programmers dvorak with QWERTY, function, and mouse/keypad layers) * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * updated ergodox_ez keymap and initial commit for IBM Model M 122 key * Add keyboard information and separated my custom layout from the default * update keymap * Update rules.mk to remove redundant commented line * Fix missing key on default layout for IBM Model M 122 key * Fix issues identified by drashna and noroadsleft * Update readme for IBM 122 key --- keyboards/ergodox_ez/keymaps/lukaus/config.h | 16 + keyboards/ergodox_ez/keymaps/lukaus/keymap.c | 843 ++++++++++++++++++++++++++ keyboards/ergodox_ez/keymaps/lukaus/readme.md | 3 + keyboards/ergodox_ez/keymaps/lukaus/rules.mk | 1 + 4 files changed, 863 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/lukaus/config.h create mode 100644 keyboards/ergodox_ez/keymaps/lukaus/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/lukaus/readme.md create mode 100644 keyboards/ergodox_ez/keymaps/lukaus/rules.mk (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/lukaus/config.h b/keyboards/ergodox_ez/keymaps/lukaus/config.h new file mode 100644 index 000000000..2b9344537 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/lukaus/config.h @@ -0,0 +1,16 @@ +#pragma once +#define CONFIG_USER_H + +#define TAPPING_TERM 200 + +#ifdef RGBLIGHT_ENABLE +#undef RGBLIGHT_SAT_STEP +#define RGBLIGHT_SAT_STEP 12 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 7 +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 7 +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 +#endif // RGBLIGHT_ENABLE + +#define FORCE_NKRO + +#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) diff --git a/keyboards/ergodox_ez/keymaps/lukaus/keymap.c b/keyboards/ergodox_ez/keymaps/lukaus/keymap.c new file mode 100644 index 000000000..40156b3ff --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/lukaus/keymap.c @@ -0,0 +1,843 @@ +#include QMK_KEYBOARD_H +#include "version.h" + +#include "keymap_german.h" + +#include "keymap_nordic.h" + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + + // Programmer's Dvorak "macros" : + // To be paired with get_mods to enable both + // Shift functionality and Programmer's Dvorak + + DVP_ESC, // Grave escape basically i think + DVP_AMPR, + DVP_LBRACKET, + DVP_LCBR, + DVP_RCBR, + DVP_LPRN, + DVP_AT, + + DVP_EQUAL, + DVP_ASTERISK, + DVP_RPRN, + DVP_PLUS, + DVP_RBRACKET, + DVP_EXLM, + DVP_HASH, + + RU_2, + RU_3, + RU_4, + RU_6, + RU_7, + RU_DOT, + + SHFT_COMMA, + SHFT_DOT, + + RGB_SLD, + RGB_FF0000, + RGB_008000, + RGB_0000FF, + RGB_FFFFFF, + RGB_800080 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Programmer's Dvorak layer + [0] = LAYOUT_ergodox( + DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_AT, + KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, MO(4), + MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSHIFT, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_HYPR, + KC_LCTL, KC_LALT, KC_LGUI, LCTL(KC_C), LCTL(KC_V), + + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, MO(4), KC_END, + + DVP_EQUAL, DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH, + TT(4), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS, + KC_MEH, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(3), + KC_DELETE, KC_BSLASH, KC_RGUI, KC_RCTL, LCTL(KC_F), + + KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE + ), + // Gaming QWERTY layer + [1] = LAYOUT_ergodox( + KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F14, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F23, + MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F24, + KC_LCTL, KC_F8, KC_LALT, KC_F14, KC_F13, + + KC_HOME, TO(0), KC_F15, KC_SPACE, KC_LCTL, KC_LALT, + + KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, + KC_F24, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, + KC_F17, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT, + KC_DELETE, KC_F19, KC_LGUI, KC_F21, KC_F22, + + KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE + ), + [2] = LAYOUT_ergodox( + KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_C, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TO(0), + MO(3), KC_1, KC_2, KC_3, KC_4, KC_5, + KC_LSHIFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + KC_LCTL, KC_F8, KC_LALT, KC_I, KC_S, + + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END, + + KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO, KC_NO, + TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_NO, KC_NO, + KC_KP_4, KC_KP_5, KC_KP_6, KC_EQUAL, KC_NO, KC_NO, + KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_NO, KC_NO, + KC_KP_0, KC_KP_DOT, KC_NO, KC_NO, KC_NO, + + TO(0), KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE + ), + // Function Layer + [3] = LAYOUT_ergodox( + KC_DLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_NO, TT(4), + KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, KC_TRANSPARENT, + KC_LSHIFT, LALT(KC_Z), KC_TRANSPARENT, KC_TRANSPARENT, KC_F12, KC_TRANSPARENT, ALL_T(KC_NO), + KC_LCTL, KC_LALT, KC_LGUI, KC_CAPSLOCK, LSFT(KC_F12), + + KC_PSCREEN, KC_PGUP, KC_PGDOWN, KC_SPACE, KC_LSHIFT, KC_INSERT, + + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_NO, KC_HOME, KC_TRANSPARENT, KC_PSCREEN, KC_SLCK, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, + MEH_T(KC_NO), KC_CALCULATOR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_RSHIFT, + KC_DELETE, KC_INSERT, KC_TRANSPARENT, KC_F19, KC_RCTL, + + TO(2),KC_TRANSPARENT,KC_TRANSPARENT,LALT(KC_F10),KC_ENTER,KC_BSPACE + ), + // Keypad, Lighting, and Mouse emulation layer + ///* + [4] = LAYOUT_ergodox( + KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO, + KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0), + KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, + KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5), + KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, + + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END, + + KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, KC_NO, RGB_VAI, + TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_NO, RGB_VAD, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_NO, RGB_HUI, + KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, RGB_SLD, RGB_HUD, + KC_KP_0, KC_KP_DOT, KC_KP_ENTER, RGB_MOD, RGB_TOG, + + KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE + ) + //*/ + /* + // Keypad, Lighting, and Mouse emulation layer + [4] = KEYMAP( + KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO, + KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0), + KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, + KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5), + KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, + + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END, + + KC_NO, KC_I, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, RGB_VAI, + TO(0), KC_G, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, RGB_VAD, + SHFT_COMMA, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, RGB_HUI, + KC_NO, SHFT_DOT, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, RGB_HUD, + KC_NO, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, RGB_TOG, + + KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE + ) + */ + +}; + +void led_set_keymap(uint8_t usb_led) { + +} + +void matrix_init_user (void) { + +} + + +bool left_shift_down = false; +bool right_shift_down = false; + +bool numlock = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + switch (keycode) { + case KC_LSHIFT: + if (record->event.pressed) + { + left_shift_down = true; + return true; + } + else + { + left_shift_down = false; + return true; + } + break; + case KC_RSHIFT: + + if (record->event.pressed) + { + right_shift_down = true; + return true; + } + else + { + right_shift_down = false; + return true; + } + break; + case KC_NUMLOCK: + + if (record->event.pressed) + { + numlock = !numlock; + } + break; + + case DVP_ESC: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + SEND_STRING("~"); + return false; + } + else + { + if(record->event.pressed) + SEND_STRING(SS_DOWN(X_ESCAPE)); + else + SEND_STRING(SS_UP(X_ESCAPE)); + return false; + } + break; + + case DVP_AMPR: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + SEND_STRING("%"); + + } + } + else + { + if(record->event.pressed) + SEND_STRING("&"); + } + return false; + + break; + + case SHFT_DOT: + if(record->event.pressed) + SEND_STRING(">"); + break; + + case SHFT_COMMA: + if(record->event.pressed) + SEND_STRING("<"); + break; + + case DVP_LBRACKET: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_7); + unregister_code(KC_7); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("["); + } + return false; + + return false; + break; + + case DVP_LCBR: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_5); + unregister_code(KC_5); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("{"); + } + return false; + break; + + case DVP_RCBR: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_3); + unregister_code(KC_3); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("}"); + } + return false; + break; + + case DVP_LPRN: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_1); + unregister_code(KC_1); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("("); + } + return false; + break; + + case DVP_AT: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_LSHIFT); + register_code(KC_6); + unregister_code(KC_6); + unregister_code(KC_LSHIFT); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("@"); + } + return false; + break; + + + case DVP_EQUAL: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_9); + unregister_code(KC_9); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("="); + } + return false; + break; + + case DVP_ASTERISK: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_0); + unregister_code(KC_0); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("*"); + } + return false; + break; + + case DVP_RPRN: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_2); + unregister_code(KC_2); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING(")"); + } + return false; + break; + + case DVP_PLUS: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_4); + unregister_code(KC_4); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("+"); + } + return false; + break; + + case DVP_RBRACKET: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_6); + unregister_code(KC_6); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("]"); + } + return false; + break; + + case DVP_EXLM: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_8); + unregister_code(KC_8); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("!"); + } + return false; + break; + + case DVP_HASH: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; + + // Russian + case RU_2: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; +case RU_3: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; +case RU_4: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; +case RU_6: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; +case RU_7: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; + + case RU_DOT: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LSHIFT); + if(right_shift_down) + unregister_code(KC_RSHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LSHIFT); + if(right_shift_down) + register_code(KC_RSHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; + + + case RGB_SLD: + if (record->event.pressed) { + rgblight_mode(1); + } + return false; + break; + + case RGB_FF0000: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0xff,0x00,0x00); + #endif + } + return false; + break; + + case RGB_008000: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0x00,0x80,0x00); + #endif + } + return false; + break; + + case RGB_0000FF: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0x00,0x00,0xff); + #endif + } + return false; + break; + + case RGB_FFFFFF: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0xff,0xff,0xff); + #endif + } + return false; + break; + + case RGB_800080: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0x80,0x00,0x80); + #endif + } + return false; + break; + + } + return true; +} + +uint32_t layer_state_set_user(uint32_t state) { + + uint8_t layer = biton32(state); + + // ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case 0: + break; + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + default: + break; + } + return state; + +}; diff --git a/keyboards/ergodox_ez/keymaps/lukaus/readme.md b/keyboards/ergodox_ez/keymaps/lukaus/readme.md new file mode 100644 index 000000000..af091bb1b --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/lukaus/readme.md @@ -0,0 +1,3 @@ +# Lukaus' keymap + +Programmer's Dvorak as default layer with Qwerty gaming layer and two function layers diff --git a/keyboards/ergodox_ez/keymaps/lukaus/rules.mk b/keyboards/ergodox_ez/keymaps/lukaus/rules.mk new file mode 100644 index 000000000..fe05f599b --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/lukaus/rules.mk @@ -0,0 +1 @@ +#UNICODE_ENABLE = yes -- cgit v1.2.3-24-g4f1b From 87faf55b012bb33265801e9fecae105a23c2d57e Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Fri, 14 Sep 2018 00:12:03 +0800 Subject: Keymap: Cleanups on the ergodox EZ / atreus dvorak 42 key layouts (#3887) * add SCREEN_NAV layer for copy/pasting within screen * working readreg/paste macros * working read reg / paste macros * write log and tran patterns, and expand * add ls -la shortcut, add tab on combined layer * put delete word on the right pinky key on shell_nav layer * add TAB on the right side, add reset key * added Cloud9 macros * add cloud9 shortcuts to atreus layout * added BROWSER_CONTROL layer * finalized browser control layer * adding comment * add browser control layer to atreus * add flashing command line * remove the tab on combined layer * remove the tomouse * remove mouse layer, change log/tran expand patterns, cleanups * add dumptlog macro * add "delete to home" shortcut * fix conflict * remove unneeded mouse layer * add meh shortcuts on the browser_control layer * add/modify some macros * explain the various layers * putty paste is right mouse button --- keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c index 94d035c6b..dd5ee2897 100644 --- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c +++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c @@ -230,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, SHELL_EXPAND_OE_TRANPATTERN, RCTL(KC_L), RCTL(KC_W), KC_HOME, KC_UP, KC_END, KC_TRNS, SHELL_EXPAND_OE_LOGPATTERN, LALT(KC_B), KC_LEFT, KC_DOWN, KC_RIGHT, LALT(KC_F), RCTL(KC_W), - RCTL(KC_C), RCTL(KC_U), LALT(KC_DOT), RCTL(KC_R), MEH(KC_V), RCTL(KC_K), SHELL_DUMPTLOG, + RCTL(KC_C), RCTL(KC_U), LALT(KC_DOT), RCTL(KC_R), KC_BTN2, RCTL(KC_K), SHELL_DUMPTLOG, // bottom row (match functionality of base layer) KC_BSPC, RCTL(KC_W), KC_DELETE, LALT(KC_D), RCTL(KC_U), // thumb cluster -- cgit v1.2.3-24-g4f1b From 743449472e58651ec8111e6f70811103fb0a28bd Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Mon, 17 Sep 2018 10:48:02 -0700 Subject: Make `PREVENT_STUCK_MODIFIERS` the default (#3107) * Remove chording as it is not documented, not used, and needs work. * Make Leader Key an optional feature. * Switch from `PREVENT_STUCK_MODIFIERS` to `STRICT_LAYER_RELEASE` * Remove `#define PREVENT_STUCK_MODIFIERS` from keymaps. --- keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk | 3 ++- keyboards/ergodox_ez/keymaps/vim/vim.h | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk b/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk index 38112a906..db5e5d155 100644 --- a/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk +++ b/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk @@ -13,6 +13,7 @@ AUTOLOG_ENABLE = no RGBLIGHT_ENABLE = yes RGBLIGHT_ANIMATION = yes EXTRAKEY_ENABLE = yes +LEADER_ENABLE = yes OPT_DEFS += -DUSER_PRINT @@ -31,4 +32,4 @@ OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\" ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/ergodox_ez/keymaps/vim/vim.h b/keyboards/ergodox_ez/keymaps/vim/vim.h index e9b682fd3..7565c6e3e 100644 --- a/keyboards/ergodox_ez/keymaps/vim/vim.h +++ b/keyboards/ergodox_ez/keymaps/vim/vim.h @@ -9,7 +9,6 @@ #define PRESS(keycode) register_code16(keycode) #define RELEASE(keycode) unregister_code16(keycode) -#define PREVENT_STUCK_MODIFIERS uint16_t VIM_QUEUE = KC_NO; -- cgit v1.2.3-24-g4f1b From e885c793bcffcba03e18e93e41120b21cdfb6b75 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 1 Oct 2018 17:53:14 -0700 Subject: Add Function level EECONFIG code for EEPROM (#3084) * Add Function level EEPROM configuration Add kb and user functions for EEPROM, and example of how to use it. * Bug fixes and demo * Additional cleanup * Add EEPROM reset macro to example * Forgot init function in list * Move eeconfig_init_quantum function to quantum.c and actually set default layer * See if removing weak quantum function fixes issue * Fix travis compile error * Remove ifdef blocks from EECONFIG so settings are always set * Fix for ARM EEPROM updates * Fix merge issues * Fix potential STM32 EEPROM issues --- keyboards/ergodox_ez/keymaps/rgb_layer/config.h | 24 +++ keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c | 271 ++++++++++++++++++++++++ 2 files changed, 295 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/rgb_layer/config.h create mode 100644 keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/config.h b/keyboards/ergodox_ez/keymaps/rgb_layer/config.h new file mode 100644 index 000000000..59302b800 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/config.h @@ -0,0 +1,24 @@ +#ifndef KEYMAP_CONFIG_H +#define KEYMAP_CONFIG_H + + + #define RGBLIGHT_SLEEP + + +#ifndef QMK_KEYS_PER_SCAN +#define QMK_KEYS_PER_SCAN 4 +#endif // !QMK_KEYS_PER_SCAN + +#define IGNORE_MOD_TAP_INTERRUPT +#undef PERMISSIVE_HOLD +#undef PREVENT_STUCK_MODIFIERS + + +#define FORCE_NKRO + +#ifndef TAPPING_TOGGLE +#define TAPPING_TOGGLE 1 +#endif + +#endif // !USERSPACE_CONFIG_H + diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c new file mode 100644 index 000000000..384d7d094 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c @@ -0,0 +1,271 @@ +#include QMK_KEYBOARD_H +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + EPRM, + VRSN, + RGB_SLD, + RGB_LYR +}; + +typedef union { + uint32_t raw; + struct { + bool rgb_layer_change :1; + }; +} user_config_t; + +user_config_t user_config; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = LAYOUT_ergodox( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,---------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | EPRM | | | | | | | . | 0 | = | | + * `-----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Animat| LYR | |Toggle|Solid | + * ,------|------|------| |------+------+------. + * |Bright|Bright| | | |Hue- |Hue+ | + * |ness- |ness+ |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = LAYOUT_ergodox( + // left hand + VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + RESET, KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + EPRM,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + RGB_MOD,RGB_LYR, + KC_TRNS, + RGB_VAD,RGB_VAI,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + RGB_TOG, RGB_SLD, + KC_TRNS, + KC_TRNS, RGB_HUD, RGB_HUI +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = LAYOUT_ergodox( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +void eeconfig_init_user(void) { + rgblight_enable(); + rgblight_sethsv_cyan(); + rgblight_mode(1); + user_config.rgb_layer_change = true; + eeconfig_update_user(user_config.raw); +} + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case EPRM: + if (record->event.pressed) { + eeconfig_init(); + } + return false; + break; + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case RGB_SLD: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); + #endif + } + return false; + break; + case RGB_LYR: // This allows me to use underglow as layer indication, or as normal + if (record->event.pressed) { + user_config.rgb_layer_change ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + if (user_config.rgb_layer_change) { // if layer state indication is enabled, + layer_state_set(layer_state); // then immediately update the layer color + } + } + return false; break; + case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference) + if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled + if (user_config.rgb_layer_change) { // only if this is enabled + user_config.rgb_layer_change = false; // disable it, and + eeconfig_update_user(user_config.raw); // write the setings to EEPROM + } + } + return true; break; + } + return true; +} + +void matrix_init_user(void) { + // Call the keymap level matrix init. + + // Read the user config from EEPROM + user_config.raw = eeconfig_read_user(); + + // Set default layer, if enabled + if (user_config.rgb_layer_change) { + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom_cyan(); + rgblight_mode_noeeprom(1); + } +} + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + +}; + +uint32_t layer_state_set_user(uint32_t state) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (biton32(state)) { + case SYMB: + ergodox_right_led_1_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); } + break; + case MDIA: + ergodox_right_led_2_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_green(); rgblight_mode_noeeprom(1); } + break; + case 3: + ergodox_right_led_3_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_blue(); rgblight_mode_noeeprom(1); } + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_orange(); rgblight_mode_noeeprom(1); } + break; + case 5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_yellow(); rgblight_mode_noeeprom(1); } + break; + case 6: + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_pink(); rgblight_mode_noeeprom(1); } + break; + case 7: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); } + break; + default: // for any other layers, or the default layer + if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); } + break; + } + return state; +} + -- cgit v1.2.3-24-g4f1b From bf0bb1a4db98864fe04d40ca68fe6bc5a0184395 Mon Sep 17 00:00:00 2001 From: Christoffer Holmberg Date: Mon, 15 Oct 2018 20:43:11 +0300 Subject: Keymap: Update to ergodox layout (#4134) * Disable KB mouse & cleanup * fix ascii-layout * _______ is now defined by qmk and apparently has been for a year already ;) --- keyboards/ergodox_ez/keymaps/skug/config.h | 2 ++ keyboards/ergodox_ez/keymaps/skug/keymap.c | 30 ++++++++++++++---------------- 2 files changed, 16 insertions(+), 16 deletions(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/skug/config.h b/keyboards/ergodox_ez/keymaps/skug/config.h index d97281392..abf1c635f 100644 --- a/keyboards/ergodox_ez/keymaps/skug/config.h +++ b/keyboards/ergodox_ez/keymaps/skug/config.h @@ -1,5 +1,7 @@ #pragma once +#define FORCE_NKRO + #undef LSPO_KEY #undef RSPC_KEY #define LSPO_KEY KC_8 // Nordic Left SpaceCadet diff --git a/keyboards/ergodox_ez/keymaps/skug/keymap.c b/keyboards/ergodox_ez/keymaps/skug/keymap.c index 0d2ec1dd9..d17990481 100644 --- a/keyboards/ergodox_ez/keymaps/skug/keymap.c +++ b/keyboards/ergodox_ez/keymaps/skug/keymap.c @@ -22,8 +22,6 @@ #include "version.h" #include "keymap_swedish.h" -#define _______ KC_TRNS - #define BASE 0 // default layer #define SYMB 1 // symbols #define MDIA 2 // media keys @@ -47,8 +45,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | L4 | A | S | D | F | G |------| |------| H | J | K | L |Ö / L3| Ä/L2 | - * | | | | | | | Hypr/| | Meh/ | | | | | | | - * |--------+------+------+------+------+------| Esc | | Ent |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| Back | |Forwd |------+------+------+------+------+--------| * | LShift/| Z | X | C | V | B | | | | N | M | ; | : | _ | RShift/| * | ( | | | | | | | | | | | , | . | - | ) | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -71,8 +69,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { NO_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_ESC), - CTL_T(NO_APOS), NO_ACUT, KC_LALT, KC_BSPC, KC_SPC, + KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_WBAK, + CTL_T(NO_APOS), NO_ACUT, KC_LALT, KC_BSPC, KC_SPC, NO_LESS, KC_END, KC_LEFT, KC_RIGHT, KC_PGDN, CTL_T(KC_ENT), ALT_T(KC_ESC), KC_LGUI, @@ -81,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TO(ARRW), KC_6, KC_7, KC_8, KC_9, KC_0, NO_PLUS, TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA, KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), LT(SYMB, NO_AE), - MEH_T(KC_ENT), KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC, + KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC, KC_SPC, KC_BSPC, NO_ALGR, NO_ASTR, CTL_T(NO_TILD), KC_HOME, NO_CIRC, KC_PGUP, KC_UP, KC_DOWN, @@ -101,11 +99,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | . | 0 | = | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * |Animat| | |Toggle|Solid | + * | | | | | | * ,------|------|------| |------+------+------. * | | | | | | | | * |------|------|------| |------|------|------| - * |BNess-|Bness+| | | |Hue- |Hue+ | + * | | | | | | | | * `--------------------' `--------------------' */ // SYMBOLS @@ -116,18 +114,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,KC_HASH,NO_DLR, NO_LPRN,NO_RPRN,NO_GRV, _______,KC_PERC,NO_CIRC,NO_LBRC,NO_RBRC,NO_TILD,_______, EPRM,_______,_______,_______,_______, - RGB_MOD,_______, + _______,_______, + _______,_______,_______, _______,_______,_______, - RGB_VAD,RGB_VAI,_______, // right hand _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_UP, KC_7, KC_8, KC_9, NO_ASTR, KC_F12, KC_DOWN, KC_4, KC_5, KC_6, NO_PLUS, _______, _______, NO_AMPR, KC_1, KC_2, KC_3, NO_MINS, _______, _______,KC_DOT, KC_0, NO_EQL, _______, - RGB_TOG, RGB_SLD, + _______, _______, _______, _______, _______, - _______, RGB_HUD, RGB_HUI + _______, _______, _______ ), /* Keymap: Media and mouse keys @@ -183,10 +181,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, // right hand TO(BASE), _______, _______, _______, _______, _______, _______, - _______, _______, KC_BTN4, KC_MS_U, KC_BTN5, _______, _______, - _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -- cgit v1.2.3-24-g4f1b From 26d2ef2ad1c9b040151d1aac19c4fff3f8b55dd5 Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Sat, 20 Oct 2018 01:07:48 -0400 Subject: Ergodox EZ: Use Correct Const For LED Color --- keyboards/ergodox_ez/keymaps/default/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index e400ffcd3..ef70decd5 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -266,7 +266,7 @@ uint32_t layer_state_set_user(uint32_t state) { ergodox_right_led_2_on(); ergodox_right_led_3_on(); #ifdef RGBLIGHT_COLOR_LAYER_7 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); #endif break; default: -- cgit v1.2.3-24-g4f1b From 223b3d2be79594eddd3837067348ab97da2df8ae Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Sun, 18 Nov 2018 08:55:45 -0800 Subject: Fix i2c_master.d listed more than once warning --- keyboards/ergodox_ez/keymaps/default/keymap.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index ef70decd5..49de60773 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -1,6 +1,4 @@ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" #include "version.h" #define BASE 0 // default layer -- cgit v1.2.3-24-g4f1b From 4d66df5091412bb907bd95eef09a0b7e6567ab55 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Sun, 18 Nov 2018 08:59:52 -0800 Subject: Add default glow board --- keyboards/ergodox_ez/keymaps/default_glow/keymap.c | 1 + keyboards/ergodox_ez/keymaps/default_glow/readme.md | 15 +++++++++++++++ keyboards/ergodox_ez/keymaps/default_glow/rules.mk | 4 ++++ 3 files changed, 20 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/default_glow/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/default_glow/readme.md create mode 100644 keyboards/ergodox_ez/keymaps/default_glow/rules.mk (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default_glow/keymap.c b/keyboards/ergodox_ez/keymaps/default_glow/keymap.c new file mode 100644 index 000000000..526c36402 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/default_glow/keymap.c @@ -0,0 +1 @@ +// Placeholder. See ../default/keymap.c for details diff --git a/keyboards/ergodox_ez/keymaps/default_glow/readme.md b/keyboards/ergodox_ez/keymaps/default_glow/readme.md new file mode 100644 index 000000000..1150a4f70 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/default_glow/readme.md @@ -0,0 +1,15 @@ +# ErgoDox EZ Default Configuration + +## Changelog + +* Dec 2016: + * Added LED keys + * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now. +* Sep 22, 2016: + * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM. +* Feb 2, 2016 (V1.1): + * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). + +This is what we ship with out of the factory. :) The image says it all: + +![Default](https://i.imgur.com/Be53jH7.png) \ No newline at end of file diff --git a/keyboards/ergodox_ez/keymaps/default_glow/rules.mk b/keyboards/ergodox_ez/keymaps/default_glow/rules.mk new file mode 100644 index 000000000..360c3c51b --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/default_glow/rules.mk @@ -0,0 +1,4 @@ +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes # enable later + +SRC += ../default/keymap.c -- cgit v1.2.3-24-g4f1b From 9e0f68a6522a86625f2586003959fd12b18dd86b Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Sun, 18 Nov 2018 17:51:00 -0800 Subject: Delete readme.md --- keyboards/ergodox_ez/keymaps/default_glow/readme.md | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 keyboards/ergodox_ez/keymaps/default_glow/readme.md (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default_glow/readme.md b/keyboards/ergodox_ez/keymaps/default_glow/readme.md deleted file mode 100644 index 1150a4f70..000000000 --- a/keyboards/ergodox_ez/keymaps/default_glow/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# ErgoDox EZ Default Configuration - -## Changelog - -* Dec 2016: - * Added LED keys - * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now. -* Sep 22, 2016: - * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM. -* Feb 2, 2016 (V1.1): - * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). - -This is what we ship with out of the factory. :) The image says it all: - -![Default](https://i.imgur.com/Be53jH7.png) \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 929e6a3231d7b873bad475a7040f140712fb9c9d Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Tue, 27 Nov 2018 17:00:01 -0500 Subject: Ergodox EZ: Remove Unused Code From Keymap --- keyboards/ergodox_ez/keymaps/default/keymap.c | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 49de60773..0cd6d6c2c 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -145,24 +145,6 @@ const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) }; -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - break; - case 1: - if (record->event.pressed) { // For resetting EEPROM - eeconfig_init(); - } - break; - } - return MACRO_NONE; -}; - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { // dynamically generate these. @@ -197,11 +179,6 @@ void matrix_init_user(void) { #endif }; -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - -}; - // Runs whenever there is a layer state change. uint32_t layer_state_set_user(uint32_t state) { ergodox_board_led_off(); -- cgit v1.2.3-24-g4f1b From 6983c71efd9991e7f6b8290dff24a023bbe4eeb1 Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Tue, 27 Nov 2018 17:04:29 -0500 Subject: Ergodox EZ: Clean Up process_record_user Function Set ERPM = SAFE_RANGE --- keyboards/ergodox_ez/keymaps/default/keymap.c | 35 ++++++++++----------------- 1 file changed, 13 insertions(+), 22 deletions(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 0cd6d6c2c..12d6cf6fa 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -6,8 +6,7 @@ #define MDIA 2 // media keys enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - EPRM, + EPRM = SAFE_RANGE, VRSN, RGB_SLD }; @@ -146,28 +145,20 @@ const uint16_t PROGMEM fn_actions[] = { }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - // dynamically generate these. - case EPRM: - if (record->event.pressed) { + if (record->event.pressed) { + switch (keycode) { + case EPRM: eeconfig_init(); - } - return false; - break; - case VRSN: - if (record->event.pressed) { + return false; + case VRSN: SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - break; - case RGB_SLD: - if (record->event.pressed) { - #ifdef RGBLIGHT_ENABLE - rgblight_mode(1); - #endif - } - return false; - break; + return false; + #ifdef RGBLIGHT_ENABLE + case RGB_SLD: + rgblight_mode(1); + return false; + #endif + } } return true; } -- cgit v1.2.3-24-g4f1b From 59dc31a7371956b5ba9e54b7e19ddc7a3092c5df Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Tue, 4 Dec 2018 12:25:27 -0500 Subject: Keymap: Ergodox EZ: Clean Up Keymap Array Alignment (#4545) Remove layer name comments, they are above the visual layout Remove comments explaining things that are documented in qmk docs --- keyboards/ergodox_ez/keymaps/default/keymap.c | 115 +++++++++++++------------- 1 file changed, 56 insertions(+), 59 deletions(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 12d6cf6fa..5834fa43a 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -33,28 +33,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | |ace | End | | PgDn | | | * `--------------------' `----------------------' */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = LAYOUT_ergodox( // layer 0 : default - // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - ALT_T(KC_APP), KC_LGUI, - KC_HOME, - KC_SPC,KC_BSPC,KC_END, - // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, - KC_LALT, CTL_T(KC_ESC), - KC_PGUP, - KC_PGDN,KC_TAB, KC_ENT - ), +[BASE] = LAYOUT_ergodox( + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC, KC_BSPC, KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT), + MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN, KC_TAB, KC_ENT +), /* Keymap 1: Symbol Layer * * ,---------------------------------------------------. ,--------------------------------------------------. @@ -76,26 +74,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -// SYMBOLS [SYMB] = LAYOUT_ergodox( - // left hand - VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - RGB_MOD,KC_TRNS, - KC_TRNS, - RGB_VAD,RGB_VAI,KC_TRNS, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - RGB_TOG, RGB_SLD, - KC_TRNS, - KC_TRNS, RGB_HUD, RGB_HUI + // left hand + VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, + KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, + KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, + EPRM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_MOD, KC_TRNS, + KC_TRNS, + RGB_VAD, RGB_VAI, KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS, + RGB_TOG, RGB_SLD, + KC_TRNS, + KC_TRNS, RGB_HUD, RGB_HUI ), /* Keymap 2: Media and mouse keys * @@ -118,25 +115,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -// MEDIA AND MOUSE [MDIA] = LAYOUT_ergodox( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK + // left hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK ), }; -- cgit v1.2.3-24-g4f1b From 538874f90f5ae69b241f80baa639fb6dbc4cfa80 Mon Sep 17 00:00:00 2001 From: Ismael Venegas Castelló Date: Wed, 5 Dec 2018 10:12:35 -0600 Subject: Keymap: Hacker Dvorak (#4514) * Hacker Dvorak Programmer Dvorak based layout for the Ergodox EZ. * Address drashna comments. * Fix RGB and drop OSL for MO. * Add gulp file to automate development. * Fix gulpfile. * Caps, num and scroll lock indicators. * Fix scroll lock. --- .../ergodox_ez/keymaps/hacker_dvorak/.gitignore | 2 + .../ergodox_ez/keymaps/hacker_dvorak/config.h | 82 +++ .../keymaps/hacker_dvorak/default.png.md | 1 + .../keymaps/hacker_dvorak/default_highres.png.md | 1 + .../ergodox_ez/keymaps/hacker_dvorak/gulpfile.js | 13 + .../ergodox_ez/keymaps/hacker_dvorak/keymap.c | 781 +++++++++++++++++++++ .../ergodox_ez/keymaps/hacker_dvorak/package.json | 15 + .../ergodox_ez/keymaps/hacker_dvorak/readme.md | 62 ++ .../ergodox_ez/keymaps/hacker_dvorak/rules.mk | 35 + 9 files changed, 992 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/.gitignore create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/package.json create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/.gitignore b/keyboards/ergodox_ez/keymaps/hacker_dvorak/.gitignore new file mode 100644 index 000000000..504afef81 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +package-lock.json diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h new file mode 100644 index 000000000..c6b86004c --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h @@ -0,0 +1,82 @@ +/* + Set any config.h overrides for your specific keymap here. + See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file +*/ +#pragma once + + +/* Keyboard Settings */ +#undef TAPPING_TERM +#define TAPPING_TERM 150 + +#undef DEBOUNCE +#define DEBOUNCE 10 + +#undef IGNORE_MOD_TAP_INTERRUPT +#define IGNORE_MOD_TAP_INTERRUPT + +#undef FORCE_NKRO +#define FORCE_NKRO + +/* This isn't defined by default, so there is no need to undefine it first. */ +#define LEADER_TIMEOUT 500 +#define PERMISSIVE_HOLD +#define QMK_KEYS_PER_SCAN 4 + + +// RGB Lights +#undef RGBLIGHT_HUE_STEP +#define RGBLIGHT_HUE_STEP 24 + +#undef RGBLIGHT_SAT_STEP +#define RGBLIGHT_SAT_STEP 24 + +#undef RGBLIGHT_VAL_STEP +#define RGBLIGHT_VAL_STEP 24 + +#undef RGBLIGHT_BRI_STEP +#define RGBLIGHT_BRI_STEP 24 + +#undef RGBLIGHT_LIMIT_VAL +#define RGBLIGHT_LIMIT_VAL 255 + +/* This isn't defined by default, so there is no need to undefine it first. */ +#define RGBLIGHT_SLEEP + + +// Mouse +#undef MOUSEKEY_INTERVAL +#define MOUSEKEY_INTERVAL 10 + +#undef MOUSEKEY_DELAY +#define MOUSEKEY_DELAY 15 + +#undef MOUSEKEY_MAX_SPEED +#define MOUSEKEY_MAX_SPEED 15 + +#undef MOUSEKEY_TIME_TO_MAX +#define MOUSEKEY_TIME_TO_MAX 150 + +#undef MOUSEKEY_WHEEL_MAX_SPEED +#define MOUSEKEY_WHEEL_MAX_SPEED 15 + +#undef MOUSEKEY_WHEEL_TIME_TO_MAX +#define MOUSEKEY_WHEEL_TIME_TO_MAX 150 + + +/* This is defined only if CONSOLE_ENABLE is set to "yes" */ +// #undef NO_DEBUG +// #define NO_DEBUG + +// #undef NO_PRINT +// #define NO_PRINT + +/* For COMBO only*/ +// #define COMBO_COUNT 1 +// #define COMBO_TERM 200 + +/* For tap toggle */ +// #define TAPPING_TOGGLE 2 +// #define ONESHOT_TAP_TOGGLE 2 +// #define ONESHOT_TIMEOUT 300 + diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md b/keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md new file mode 100644 index 000000000..744e7d172 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md @@ -0,0 +1 @@ +https://i.imgur.com/fKX0Zbs.png diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md b/keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md new file mode 100644 index 000000000..074e0634d --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md @@ -0,0 +1 @@ +https://i.imgur.com/giAc3M9.jpg diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js b/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js new file mode 100644 index 000000000..338b0c6ba --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js @@ -0,0 +1,13 @@ +let gulp = require('gulp'); +let run = require('gulp-run-command').default; + + +gulp.task('clean', run('rm -rf ../../../../.build')); + +gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', { + ignoreErrors: true +})); + +gulp.task('watch', ['build'], () => { + gulp.watch(['keymap.c', 'config.h', 'rules.mk'], ['build']); +}); diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c new file mode 100644 index 000000000..c42b55108 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c @@ -0,0 +1,781 @@ +#include QMK_KEYBOARD_H +#include "keymap_dvorak.h" +#include "sendstring_dvorak.h" +#include "keymap_plover.h" +#include "keymap_plover_dvorak.h" + + +#define SCTL(kc) LSFT(LCTL(kc)) + +// Layers +enum layers { + DVORAK_US = 0, + PLOVER_US, + GAMING_US, + ARROWS_US, + MOUSE_US, + NUMPAD_US, + LAYERS_US, + DVORAK_DV, + PLOVER_DV, + GAMING_DV, + ARROWS_DV, + MOUSE_DV, + NUMPAD_DV, + LAYERS_DV, + MEDIA_FN, + HYPER_FN, + MEH_FN, + MEH_FN_PLUS, + FIRMWARE +}; + +int CAPS_LOCK = 0; +int NUM_LOCK = 0; +int SCROLL_LOCK = 0; + +enum tap_dances { + TD_ESC_CAPS = 0 +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CLCK) +}; + + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + RGB_GREEN // to set default RGB layer as green once +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ,--------------------------------------------------. ,--------------------------------------------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | | 38 | 39 | 40 | 41 | 42 | 43 | 44 | + * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 45 | 46 | 47 | 48 | 49 | 50 | 51 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | 14 | 15 | 16 | 17 | 18 | 19 |------| |------| 52 | 53 | 54 | 55 | 56 | 57 | + * |--------+------+------+------+------+------| 26 | | 58 |------+------+------+------+------+--------| + * | 20 | 21 | 22 | 23 | 24 | 25 | | | | 59 | 60 | 61 | 62 | 63 | 64 | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | 27 | 28 | 29 | 30 | 31 | | 65 | 66 | 67 | 68 | 69 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | 32 | 33 | | 70 | 71 | + * ,------+------+------| |------+------+------. + * | | | 34 | | 72 | | | + * | 35 | 36 |------| |------| 74 | 75 | + * | | | 37 | | 73 | | | + * `--------------------' `--------------------' + */ + [DVORAK_US] = LAYOUT_ergodox( + // left hand + KC_ESC, KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_EXLM, KC_AMPR, + KC_TAB, KC_QUOT, SCMD_T(KC_COMM), MEH_T(KC_DOT), ALL_T(KC_P), KC_Y, KC_AT, + KC_EQL, CTL_T(KC_A), SFT_T(KC_O), LT(NUMPAD_US, KC_E), LT(ARROWS_US, KC_U), KC_I, + KC_BSLS, ALGR_T(KC_SCLN), ALT_T(KC_Q), LT(MEDIA_FN, KC_J), GUI_T(KC_K), KC_X, KC_PERC, + MO(MEH_FN), TG(LAYERS_US), KC_CIRC, KC_PLUS, KC_COLN, + + // left thumb + KC_LEFT, KC_RGHT, + KC_HOME, + KC_SPC, KC_BSPC, KC_END, + + // right hand + KC_PIPE, KC_QUES, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, KC_ASTR, + KC_HASH, KC_F, ALL_T(KC_G), MEH_T(KC_C), SCMD_T(KC_R), KC_L, KC_SLSH, + KC_D, LT(MOUSE_US, KC_H), LT(HYPER_FN, KC_T), SFT_T(KC_N), CTL_T(KC_S), KC_MINS, + KC_DLR, KC_B, GUI_T(KC_M), LT(MEDIA_FN, KC_W), ALT_T(KC_V), ALGR_T(KC_Z), KC_GRV, + KC_DQUO, KC_UNDS, KC_TILD, TG(DVORAK_DV), MO(MEH_FN_PLUS), + + // right thumb + KC_UP, KC_DOWN, + KC_PGUP, + KC_PGDN, KC_DEL, KC_ENT + ), + + [PLOVER_US] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO), + KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM, + KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, + KC_CLCK, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, + MO(MEH_FN), TG(LAYERS_US), PV_NUM, PV_NUM, PV_NUM, + + // left thumb + KC_SPACE, KC_BSPACE, + KC_HOME, + PV_A, PV_O, KC_END, + + // right hand + KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP, + PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN, + PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, + PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, + PV_NUM, PV_NUM, PV_NUM, PV_NUM, MO(MEH_FN_PLUS), + + // right thumb + KC_DELETE, KC_ENTER, + KC_PGUP, + KC_PGDOWN, PV_E, PV_U + ), + + [GAMING_US] = LAYOUT_ergodox( + // left hand + KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T, + KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G, + LT(MOUSE_US, KC_GRV), KC_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F), + KC_BSLS, KC_LSHIFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M, + MO(MEH_FN), TG(LAYERS_US), KC_COMM, KC_DOT, KC_LBRC, + + // left thumb + MO(MEDIA_FN), KC_NLCK, + KC_SCLN, + KC_SPACE, KC_ENTER, KC_BSPACE, + + // right hand + KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9, + KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6, + KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3, + KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH, + KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS), + + // right thumb + KC_MS_BTN5, MO(HYPER_FN), + KC_MS_BTN4, + KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1 + ), + + [ARROWS_US] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX, + XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + KC_HOME, + KC_SPACE, KC_BSPACE, KC_END, + + // right hand + LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX, + LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z), + KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION, + LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, + + // right thumb + XXXXXXX, XXXXXXX, + KC_PGUP, + KC_PGDOWN, KC_DELETE, KC_ENTER + ), + + [MOUSE_US] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X), + LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C), + KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT, + LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V), + KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + KC_MS_BTN1, KC_MS_BTN2, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX, + XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2, + XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, KC_MS_ACCEL0 + ), + + [NUMPAD_US] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX, + _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX, + XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + KC_HOME, + KC_SPACE, KC_BSPACE, KC_END, + + // right hand + KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, + KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC, + KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS, + KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC, + KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS, + + // right thumb + XXXXXXX, XXXXXXX, + KC_PGUP, + KC_PGDOWN, KC_DELETE, KC_ENTER + ), + + [LAYERS_US] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, TO(DVORAK_US), TO(PLOVER_US), TO(GAMING_US), XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [DVORAK_DV] = LAYOUT_ergodox( + // left hand + KC_ESC, DV_LABK, DV_LCBR, DV_LBRC, DV_LPRN, DV_EXLM, DV_AMPR, + KC_TAB, DV_QUOT, SCMD_T(DV_COMM), MEH_T(DV_DOT), ALL_T(DV_P), DV_Y, DV_AT, + DV_EQL, CTL_T(DV_A), SFT_T(DV_O), LT(NUMPAD_DV, DV_E), LT(ARROWS_DV, DV_U), DV_I, + DV_BSLS, ALGR_T(DV_SCLN), ALT_T(DV_Q), LT(MEDIA_FN, DV_J), GUI_T(DV_K), DV_X, DV_PERC, + MO(MEH_FN), TG(LAYERS_DV), DV_CIRC, DV_PLUS, DV_COLN, + + // left thumb + KC_LEFT, KC_RGHT, + KC_HOME, + KC_SPC, KC_BSPC, KC_END, + + // right hand + DV_PIPE, DV_QUES, DV_RPRN, DV_RBRC, DV_RCBR, DV_RABK, DV_ASTR, + DV_HASH, DV_F, ALL_T(DV_G), MEH_T(DV_C), SCMD_T(DV_R), DV_L, DV_SLSH, + DV_D, LT(MOUSE_DV, DV_H), LT(HYPER_FN, DV_T), SFT_T(DV_N), CTL_T(DV_S), DV_MINS, + DV_DLR, DV_B, GUI_T(DV_M), LT(MEDIA_FN, DV_W), ALT_T(DV_V), ALGR_T(DV_Z), DV_GRV, + DV_DQUO, DV_UNDS, DV_TILD, _______, MO(MEH_FN_PLUS), + + // right thumb + KC_UP, KC_DOWN, + KC_PGUP, + KC_PGDN, KC_DEL, KC_ENT + ), + + [PLOVER_DV] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO), + KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PD_NUM, + KC_TAB, PD_LS, PD_LT, PD_LP, PD_LH, PD_STAR, + KC_CLCK, PD_LS, PD_LK, PD_LW, PD_LR, PD_STAR, PD_STAR, + MO(MEH_FN), TG(LAYERS_DV), PD_NUM, PD_NUM, PD_NUM, + + // left thumb + KC_SPACE, KC_BSPACE, + KC_HOME, + PD_A, PD_O, KC_END, + + // right hand + KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP, + PD_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN, + PD_STAR, PD_RF, PD_RP, PD_RL, PD_RT, PD_RD, + PD_STAR, PD_STAR, PD_RR, PD_RB, PD_RG, PD_RS, PD_RZ, + PD_NUM, PD_NUM, PD_NUM, PD_NUM, MO(MEH_FN_PLUS), + + // right thumb + KC_DELETE, KC_ENTER, + KC_PGUP, + KC_PGDOWN, PD_E, PD_U + ), + + [GAMING_DV] = LAYOUT_ergodox( + // left hand + KC_ESCAPE, GUI_T(DV_MINS), DV_I, DV_O, DV_P, ALGR_T(DV_EQL), DV_T, + KC_TAB, KC_LALT, DV_Q, DV_W, DV_E, ALL_T(DV_R), DV_G, + LT(MOUSE_DV, DV_GRV), KC_LCTRL, DV_A, DV_S, DV_D, MEH_T(DV_F), + DV_BSLS, KC_LSHIFT, DV_Z, DV_X, DV_C, SCMD_T(DV_V), DV_M, + MO(MEH_FN), TG(LAYERS_DV), DV_COMM, DV_DOT, DV_LBRC, + + // left thumb + MO(MEDIA_FN), KC_NLCK, + DV_SCLN, + KC_SPACE, KC_ENTER, KC_BSPACE, + + // right hand + DV_QUOT, DV_Y, DV_K, DV_U, KC_KP_7, KC_KP_8, KC_KP_9, + KC_MS_WH_UP, DV_H, DV_J, DV_L, KC_KP_4, KC_KP_2, KC_KP_6, + DV_B, KC_MS_UP, DV_N, KC_KP_1, KC_KP_5, KC_KP_3, + KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, DV_SLSH, + DV_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS), + + // right thumb + KC_MS_BTN5, MO(HYPER_FN), + KC_MS_BTN4, + KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1 + ), + + [ARROWS_DV] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX, + XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + KC_HOME, + KC_SPACE, KC_BSPACE, KC_END, + + // right hand + LGUI(DV_X), XXXXXXX, LCTL(DV_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX, + LGUI(DV_C), XXXXXXX, LCTL(DV_C), KC_UP, SCTL(DV_C), LCTL(DV_Z), LGUI(DV_Z), + KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION, + LGUI(DV_V), XXXXXXX, LCTL(DV_V), KC_MS_WH_DOWN, SCTL(DV_V), LCTL(DV_Y), SGUI(DV_Z), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, + + // right thumb + XXXXXXX, XXXXXXX, + KC_PGUP, + KC_PGDOWN, KC_DELETE, KC_ENTER + ), + + [MOUSE_DV] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(DV_X), XXXXXXX, LGUI(DV_X), + LGUI(DV_Z), LCTL(DV_Z), SCTL(DV_C), KC_MS_UP, LCTL(DV_C), KC_MS_BTN4, LGUI(DV_C), + KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT, + LGUI(DV_Z), LCTL(DV_Y), SCTL(DV_V), KC_MS_WH_DOWN, LCTL(DV_V), KC_MS_BTN5, LGUI(DV_V), + KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + KC_MS_BTN1, KC_MS_BTN2, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX, + XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2, + XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, KC_MS_ACCEL0 + ), + + [NUMPAD_DV] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX, + _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX, + XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + KC_HOME, + KC_SPACE, KC_BSPACE, KC_END, + + // right hand + DV_X, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, + DV_O, DV_I, DV_1, DV_2, DV_3, DV_SLSH, DV_PERC, + DV_M, DV_4, DV_5, DV_6, DV_PLUS, DV_MINS, + DV_L, DV_J, DV_7, DV_8, DV_9, DV_ASTR, DV_CIRC, + DV_DOT, DV_0, DV_COMM, DV_UNDS, DV_BSLS, + + // right thumb + XXXXXXX, XXXXXXX, + KC_PGUP, + KC_PGDOWN, KC_DELETE, KC_ENTER + ), + + [LAYERS_DV] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, TO(DVORAK_DV), TO(PLOVER_DV), TO(GAMING_DV), XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [MEDIA_FN] = LAYOUT_ergodox( + // left hand + KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH, + KC_MEDIA_PREV_TRACK, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME, + KC_PAUSE, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11, + RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK, + RGB_VAD, KC_CLCK, KC_PSCREEN, XXXXXXX, MO(FIRMWARE), + + // left thumb + _______, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, KC_MEDIA_EJECT, + + // right hand + KC_WWW_FAVORITES, KC_MY_COMPUTER, KC_CALCULATOR, XXXXXXX, RGB_MOD, RGB_M_P, KC_AUDIO_VOL_UP, + KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MEDIA_NEXT_TRACK, + KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MEDIA_PLAY_PAUSE, + KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI, + KC_SYSTEM_POWER, XXXXXXX, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, RGB_VAI, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + RGB_GREEN, XXXXXXX, XXXXXXX + ), + + [HYPER_FN] = LAYOUT_ergodox( + // left hand + XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX, + XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX, + XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15), + XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX, + XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24), + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, _______, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [MEH_FN] = LAYOUT_ergodox( + // left hand + LCA(KC_F11), LCA(KC_F9), LCA(KC_F7), LCA(KC_F5), LCA(KC_F3), LCA(KC_F1), XXXXXXX, + LCAG(KC_F11), LCAG(KC_F9), LCAG(KC_F7), LCAG(KC_F5), LCAG(KC_F3), LCAG(KC_F1), XXXXXXX, + MEH(KC_F11), MEH(KC_F9), MEH(KC_F7), MEH(KC_F5), MEH(KC_F3), MEH(KC_F1), + SGUI(KC_F11), SGUI(KC_F9), SGUI(KC_F7), SGUI(KC_F5), SGUI(KC_F3), SGUI(KC_F1), XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, LCA(KC_F2), LCA(KC_F4), LCA(KC_F6), LCA(KC_F8), LCA(KC_F10), LCA(KC_F12), + XXXXXXX, LCAG(KC_F2), LCAG(KC_F4), LCAG(KC_F6), LCAG(KC_F8), LCAG(KC_F10), LCAG(KC_F12), + MEH(KC_F2), MEH(KC_F4), MEH(KC_F6), MEH(KC_F8), MEH(KC_F10), MEH(KC_F12), + XXXXXXX, SGUI(KC_F2), SGUI(KC_F4), SGUI(KC_F6), SGUI(KC_F8), SGUI(KC_F10), SGUI(KC_F12), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [MEH_FN_PLUS] = LAYOUT_ergodox( + // left hand + LCA(KC_F23), LCA(KC_F21), LCA(KC_F19), LCA(KC_F17), LCA(KC_F15), LCA(KC_F13), XXXXXXX, + LCAG(KC_F23), LCAG(KC_F21), LCAG(KC_F19), LCAG(KC_F17), LCAG(KC_F15), LCAG(KC_F13), XXXXXXX, + MEH(KC_F23), MEH(KC_F21), MEH(KC_F19), MEH(KC_F17), MEH(KC_F15), MEH(KC_F13), + SGUI(KC_F23), SGUI(KC_F21), SGUI(KC_F19), SGUI(KC_F17), SGUI(KC_F15), SGUI(KC_F13), XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, LCA(KC_F14), LCA(KC_F16), LCA(KC_F18), LCA(KC_F20), LCA(KC_F22), LCA(KC_F24), + XXXXXXX, LCAG(KC_F14), LCAG(KC_F16), LCAG(KC_F18), LCAG(KC_F20), LCAG(KC_F22), LCAG(KC_F24), + MEH(KC_F14), MEH(KC_F16), MEH(KC_F18), MEH(KC_F20), MEH(KC_F22), MEH(KC_F24), + XXXXXXX, SGUI(KC_F14), SGUI(KC_F16), SGUI(KC_F18), SGUI(KC_F20), SGUI(KC_F22), SGUI(KC_F24), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [FIRMWARE] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + RESET, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, EEP_RST + ) +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_GREEN: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_sethsv_red(); + #endif + } + + return false; + + case KC_CLCK: + if (record->event.pressed) { + if (!(CAPS_LOCK)) { + ergodox_right_led_1_on(); + CAPS_LOCK = 1; + } else { + ergodox_right_led_1_off(); + CAPS_LOCK = 0; + } + } + + return true; + + case KC_NLCK: + if (record->event.pressed) { + if (!(NUM_LOCK)) { + ergodox_right_led_2_on(); + NUM_LOCK = 1; + } else { + ergodox_right_led_2_off(); + NUM_LOCK = 0; + } + } + + return true; + + case KC_SLCK: + if (record->event.pressed) { + if (!(SCROLL_LOCK)) { + ergodox_right_led_3_on(); + SCROLL_LOCK = 1; + } else { + ergodox_right_led_3_off(); + SCROLL_LOCK = 0; + } + } + + case KC_MS_WH_LEFT: + if (record->event.pressed) { + if (SCROLL_LOCK) { + return false; + } else { + return true; + } + } + + case KC_MS_WH_UP: + if (record->event.pressed) { + if (SCROLL_LOCK) { + return false; + } else { + return true; + } + } + + case KC_MS_WH_DOWN: + if (record->event.pressed) { + if (SCROLL_LOCK) { + return false; + } else { + return true; + } + } + + case KC_MS_WH_RIGHT: + if (record->event.pressed) { + if (SCROLL_LOCK) { + return false; + } else { + return true; + } + } + + default: + return true; + } +} + +uint32_t layer_state_set_user(uint32_t state) { + uint8_t layer = biton32(state); + + switch (layer) { + case DVORAK_US: + rgblight_sethsv_noeeprom_red(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + + break; + + case PLOVER_US: + rgblight_sethsv_noeeprom_red(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); + + break; + + case GAMING_US: + rgblight_sethsv_noeeprom_red(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); + + break; + + case ARROWS_US: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case MOUSE_US: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case NUMPAD_US: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case LAYERS_US: + rgblight_sethsv_noeeprom_cyan(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case DVORAK_DV: + rgblight_sethsv_noeeprom_green(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + + case PLOVER_DV: + rgblight_sethsv_noeeprom_green(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); + + break; + + case GAMING_DV: + rgblight_sethsv_noeeprom_green(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); + + break; + + case ARROWS_DV: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case MOUSE_DV: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case NUMPAD_DV: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case LAYERS_DV: + rgblight_sethsv_noeeprom_cyan(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case MEDIA_FN: + rgblight_sethsv_noeeprom_yellow(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case HYPER_FN: + rgblight_sethsv_noeeprom_magenta(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + case MEH_FN: + rgblight_sethsv_noeeprom_magenta(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 4); + + break; + + case MEH_FN_PLUS: + rgblight_sethsv_noeeprom_magenta(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5); + + break; + + case FIRMWARE: + rgblight_sethsv_noeeprom_pink(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + break; + + default: + break; + } + + return state; +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/package.json b/keyboards/ergodox_ez/keymaps/hacker_dvorak/package.json new file mode 100644 index 000000000..116911e46 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/package.json @@ -0,0 +1,15 @@ +{ + "name": "hacker_dvorak", + "version": "1.0.0", + "description": "Inspired by the [*Programmer Dvorak*](https://www.kaufmann.no/roland/dvorak) keyboard layout, cherry picked ideas from other layouts in the [EZ Repository](https://configure.ergodox-ez.com/search?q=dvorak&legacy=true), a character distribution [heatmap vizualizer](https://run.plnkr.co/plunks/5EEO8nJ2wRzYAfT3), my own subjective use cases and lots of trial and error.", + "main": "gulpfile.js", + "scripts": { + "test": "test" + }, + "author": "SalchiPapa", + "license": "GPL-2.0", + "dependencies": { + "gulp": "^3.9.1", + "gulp-run-command": "0.0.9" + } +} diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md b/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md new file mode 100644 index 000000000..c7df0d748 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md @@ -0,0 +1,62 @@ +# [Ergodox EZ Hacker Dvorak Layout](https://configure.ergodox-ez.com/layouts/Wadz/latest/0) + +Inspired by the [*Programmer Dvorak*](https://www.kaufmann.no/roland/dvorak) keyboard layout, cherry picked ideas from other layouts in the [EZ Repository](https://configure.ergodox-ez.com/search?q=dvorak&legacy=true), a character distribution [heatmap vizualizer](https://run.plnkr.co/plunks/5EEO8nJ2wRzYAfT3), my own subjective use cases and lots of trial and error. + +## Setup + +Configure your OS keyboard layout to US, or the keymap will be incorrect. + +## Limitations + +I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome some limitations of the Ergodox EZ [graphical configurator](https://configure.ergodox-ez.com/layouts/default/latest/0)), however I will defer that, until more progress is made to the new [configurator](https://medium.com/the-ergo/the-configurator-is-out-of-beta-e107aec80cae). + +## Layers + +1. Dvorak + * US Dvorak layout. + * All symbols (including shifted symbols). + * All modifier are dual keys positioned near the home row. +2. Querty + * Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use + Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on + the Ergodox EZ Shine at the same time, without changing back and forth tho OS layout. +3. Gaming + * Still in development. + * Left side is mainly "normal" Qwerty. + * Right side is mainly for movement, either using the mouse, the arrow keys, the number pad or the `H`, `J`, `K`, `L` as direction keys. +4. Arrows + * Arrow keys navigation. + * All modifier keys. + * Common text edititng shortcuts (doesn't work for MacOS). +5. Mouse + * Mouse navigation. + * All modifier keys. + * Common text edititng shortcuts (doesn't work for MacOS). +6. Numpad + * ATM style numpad. + * All modifier keys. + * Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming + languages, ie. `0b11001`). + * `X` for hexadecimal numeric literals in most programming languages, ie. `0xbeef`. + * `O` for octal numeric literals in most programming languages, ie `0o123`. + * `J` for complex numeric literals in Python, ie. `3j`. + * `I` and `M` for complex Julia numeric literals, ie. `3im`. + * Common symbols for mathematical operations. +7. Hyper Fn + * Useful for custom global shortcuts. +8. Media Fn + * Media keys. + * Function keys. + * EZ Shine keys. +9. Meh Fn + * Useful for custom application shortcuts. +10. Meh Fn + + * Useful for custom standard shortcuts. + +## To Do + +Add images. + +*** + +Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience! \ No newline at end of file diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk new file mode 100644 index 000000000..4aa2f262b --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk @@ -0,0 +1,35 @@ +# Set any rules.mk overrides for your specific keymap here. +# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +TAP_DANCE_ENABLE = yes +MOUSEKEY_ENABLE = yes # Mouse keys(+4700b). +EXTRAKEY_ENABLE = yes # Audio control and System control(+450b). +SLEEP_LED_ENABLE = yes # Turn off leds when computer is sleeping. +KEY_LOCK_ENABLE = yes # (+1730b) +RGBLIGHT_ENABLE = yes +LEADER_ENABLE = yes + + +UNICODE_ENABLE = no # For Unicode. +COMMAND_ENABLE = no # Commands for debug and configuration +SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard. + + +# This are by default off: +# CONSOLE_ENABLE = no # Console for debug(+400) +# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +# API_SYSEX_ENABLE = no +# MIDI_ENABLE = no +# UNICODEMAP_ENABLE = no +# BLUETOOTH_ENABLE = no +# AUDIO_ENABLE = no +# FAUXCLICKY_ENABLE = no +# VARIABLE_TRACE = no +# BACKLIGHT_ENABLE = no +# RGB_MATRIX_ENABLE = no +# COMBO_ENABLE = no + + +# This don't need argument: +# CUSTOM_MATRIX # Custom matrix file for the ErgoDox EZ +# SPLIT_KEYBOARD -- cgit v1.2.3-24-g4f1b From 5eb8f3f6b51cecc067aaedfb8b2f08cb626381bb Mon Sep 17 00:00:00 2001 From: Ismael Venegas Castelló Date: Wed, 19 Dec 2018 18:49:56 -0600 Subject: Keymap: Refactor Hacker Dvorak (#4688) Programmer Dvorak based layout for the Ergodox EZ. --- .../ergodox_ez/keymaps/hacker_dvorak/config.h | 50 +- .../keymaps/hacker_dvorak/default.png.md | 1 - .../keymaps/hacker_dvorak/default_highres.png.md | 1 - .../ergodox_ez/keymaps/hacker_dvorak/gulpfile.js | 10 +- .../keymaps/hacker_dvorak/hacker_dvorak.c | 353 +++++++++ .../hacker_dvorak/keycodes/aliases_definitions.c | 5 + .../hacker_dvorak/keycodes/custom_keycodes.c | 8 + .../ergodox_ez/keymaps/hacker_dvorak/keymap.c | 800 +-------------------- .../hacker_dvorak/layers/layers_definitions.c | 12 + .../hacker_dvorak/leader/leader_dictionary.c | 14 + .../keymaps/hacker_dvorak/leader/leader_setup.c | 14 + .../keymaps/hacker_dvorak/plover/plover_mode.c | 20 + .../ergodox_ez/keymaps/hacker_dvorak/readme.md | 10 +- .../ergodox_ez/keymaps/hacker_dvorak/rules.mk | 33 +- .../tap_dance/mod_tap_layer_dances/none_lead.c | 40 ++ .../hacker_dvorak/tap_dance/tap_dance_actions.c | 20 + .../hacker_dvorak/tap_dance/tap_dance_setup.c | 75 ++ .../keymaps/hacker_dvorak/tap_dance/tap_dances.c | 74 ++ .../hacker_dvorak/user/eeconfig_init_user.c | 3 + .../hacker_dvorak/user/layer_set_state_user.c | 121 ++++ .../keymaps/hacker_dvorak/user/matrix_scan_user.c | 12 + .../hacker_dvorak/user/process_record_user.c | 75 ++ 22 files changed, 925 insertions(+), 826 deletions(-) delete mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md delete mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/aliases_definitions.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/custom_keycodes.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/layers/layers_definitions.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_dictionary.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_setup.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/plover/plover_mode.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/mod_tap_layer_dances/none_lead.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_setup.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dances.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/user/eeconfig_init_user.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/user/matrix_scan_user.c create mode 100644 keyboards/ergodox_ez/keymaps/hacker_dvorak/user/process_record_user.c (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h index c6b86004c..e188d95d5 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h @@ -5,26 +5,33 @@ #pragma once -/* Keyboard Settings */ #undef TAPPING_TERM -#define TAPPING_TERM 150 +#define TAPPING_TERM 200 #undef DEBOUNCE #define DEBOUNCE 10 #undef IGNORE_MOD_TAP_INTERRUPT -#define IGNORE_MOD_TAP_INTERRUPT #undef FORCE_NKRO #define FORCE_NKRO -/* This isn't defined by default, so there is no need to undefine it first. */ -#define LEADER_TIMEOUT 500 +#undef TAPPING_TOGGLE +#define TAPPING_TOGGLE 5 + +#define LEADER_TIMEOUT 1000 +#define IGNORE_MOD_TAP_INTERRUPT #define PERMISSIVE_HOLD #define QMK_KEYS_PER_SCAN 4 +#define DANCING_TERM 175 + +#define ONESHOT_TAP_TOGGLE 5 +#define ONESHOT_TIMEOUT 5000 + +#define COMBO_COUNT 4 +#define COMBO_TERM 200 -// RGB Lights #undef RGBLIGHT_HUE_STEP #define RGBLIGHT_HUE_STEP 24 @@ -40,11 +47,7 @@ #undef RGBLIGHT_LIMIT_VAL #define RGBLIGHT_LIMIT_VAL 255 -/* This isn't defined by default, so there is no need to undefine it first. */ -#define RGBLIGHT_SLEEP - -// Mouse #undef MOUSEKEY_INTERVAL #define MOUSEKEY_INTERVAL 10 @@ -52,31 +55,34 @@ #define MOUSEKEY_DELAY 15 #undef MOUSEKEY_MAX_SPEED -#define MOUSEKEY_MAX_SPEED 15 +#define MOUSEKEY_MAX_SPEED 20 #undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 150 +#define MOUSEKEY_TIME_TO_MAX 200 #undef MOUSEKEY_WHEEL_MAX_SPEED -#define MOUSEKEY_WHEEL_MAX_SPEED 15 +#define MOUSEKEY_WHEEL_MAX_SPEED 20 #undef MOUSEKEY_WHEEL_TIME_TO_MAX -#define MOUSEKEY_WHEEL_TIME_TO_MAX 150 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 200 -/* This is defined only if CONSOLE_ENABLE is set to "yes" */ // #undef NO_DEBUG // #define NO_DEBUG // #undef NO_PRINT // #define NO_PRINT -/* For COMBO only*/ -// #define COMBO_COUNT 1 -// #define COMBO_TERM 200 +// #define RETRO_TAPPING +// #define TAPPING_FORCE_HOLD + +// #define AUTO_SHIFT_TIMEOUT 150 +// #define NO_AUTO_SHIFT_SPECIAL +// #define NO_AUTO_SHIFT_NUMERIC +// #define NO_AUTO_SHIFT_ALPHA -/* For tap toggle */ -// #define TAPPING_TOGGLE 2 -// #define ONESHOT_TAP_TOGGLE 2 -// #define ONESHOT_TIMEOUT 300 +// #define EXTRA_LONG_COMBOS +// #define EXTRA_EXTRA_LONG_COMBOS +// #define COMBO_ALLOW_ACTION_KEYS +// #define RGBLIGHT_SLEEP diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md b/keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md deleted file mode 100644 index 744e7d172..000000000 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/default.png.md +++ /dev/null @@ -1 +0,0 @@ -https://i.imgur.com/fKX0Zbs.png diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md b/keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md deleted file mode 100644 index 074e0634d..000000000 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/default_highres.png.md +++ /dev/null @@ -1 +0,0 @@ -https://i.imgur.com/giAc3M9.jpg diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js b/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js index 338b0c6ba..23f19d18a 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/gulpfile.js @@ -1,7 +1,7 @@ let gulp = require('gulp'); let run = require('gulp-run-command').default; - + gulp.task('clean', run('rm -rf ../../../../.build')); gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', { @@ -9,5 +9,11 @@ gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak })); gulp.task('watch', ['build'], () => { - gulp.watch(['keymap.c', 'config.h', 'rules.mk'], ['build']); + gulp.watch([ + 'keymap.c', + 'config.h', + 'rules.mk', + ], ['build']); }); + +gulp.task('default', ['watch']); diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c new file mode 100644 index 000000000..65878a67c --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c @@ -0,0 +1,353 @@ +// Keyboard keymap: +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DVORAK] = LAYOUT_ergodox( + + // HACKER DVORAK left hand + + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // ESCAPE | | | | | | START RECORDING // + // | | | | | | // + KC_ESC, TD(GRV_TILD), TD(AT_DLR), TD(LCBR_LABK), TD(LPRN_LBRC), TD(EXLM_QUES), DYN_REC_START1, // + // | ~ | $ | < | [ | ? | // + // | TAP DANCE: ` | TAP DANCE: @ TAP DANCE: { | TAP DANCE: ( | TAP DANCE: ! | DYNAMIC MARCO 1 // + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // TAB | MOD TAP: ALT+SHIFT | MOD TAP: CTRL+ALT | MOD TAP: CTRL+SHIFT | P | Y | // + // | | | | | | // + KC_TAB, TD(NONE_LEAD), TD(QUOT_DQUO), TD(DOT_COMM), ALL_T(KC_P), MEH_T(KC_Y), DYN_MACRO_PLAY1, // + // | LEAD | " | , | | | // + // | TAP DANCE: NONE | TAP DANCE: ' | TAP DANCE: . | MOD TAP: HYPER | MOD TAP: MEH | // + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| PLAY DYNAMIC MACRO 1 // + // | MOD TAP: ALT | MOD TAP: CTRL | LAYER TAP: SHIFT | LAYER TAP: ARROW KEYS | MOD TAP: GUI | // + // | | | | Ü | | // + TD(EQL_PLUS), ALT_T(KC_A), CTL_T(KC_O), SFT_T(KC_E), LT(ARROWS, KC_U), LGUI_T(KC_I), //-----------------------// + // + | Á | Ó | É | Ú | Í | // + // TAP DANCE: = | TAP DANCE: A | TAP DANCE: O | TAP DANCE: E | TAP DANCE: U | TAP DANCE: I | // + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| META // + // STOP RECORDING | MOD TAP: GUI+SHIFT+ALT | Q | J | K | X | // + // | | | | | | // + DYN_REC_STOP, TD(SCLN_COLN), SGUI_T(KC_Q), LT(MEDIA_FN, KC_J), LT(NUMPAD, KC_K), LCAG_T(KC_X), KC_LGUI, // + // | : | | | | | // + // DYNAMIC MACRO | TAP DANCE: ; | MOD TAP: SHIFT+GUI | LAYER TAP: MEDIA/F-KEYS | LAYER TAP: ATM NUMPAD | MOD TAP: CTL+ALT+GUI | // + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // LAYERS SWITCHER | APPLICATION MENU | | | // + // | | | | SCROLL // + TG(LAYERS), KC_APP, KC_NLCK, KC_SLCK, KC_CAPS, // + // | | | | NUM // + // LAYER TOGGLE | | | | TAP DANCE: CAPS // + //------------------------+-------------------------+-------------------------+-------------------------+------------------------// + + // HACKER DVORAK left thumb + + //------------------------+------------------------// + // MOUSE WHEEL LEFT | MOUSE WHEEL RIGHT // + // | // + KC_WH_L, KC_WH_R, // + // | // + // | // + //-------------------------+-------------------------+------------------------// + // | | HOME // + // | | // + /* SPACE | BACKSPACE */ KC_HOME, // + // | | // + // | | // + KC_SPC, KC_BSPC, //-----------------------// + // | | END // + // | | // + /* | */ KC_END, // + // | | // + // | | // + //-------------------------+-------------------------+------------------------// + + // HACKER DVORAK right hand + + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // | | | | | | // + // | | | | | | // + DYN_REC_START2, TD(APMR_PIPE), TD(RPRN_RBRC), TD(RCBR_RABK), TD(HASH_PERC), TD(ASTR_CIRC), XXXXXXX, // + // | | | | | | // + // | | | | | | // + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // | | | | | | // + // | | | | | | // + DYN_MACRO_PLAY2, MEH_T(KC_F), ALL_T(KC_G), C_S_T(KC_C), LCA_T(KC_R), LAS_T(KC_L), TD(SLSH_BSLS), // + // | | | | | | // + // | | | | | | // + // |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // | | | | | | // + // | | | | | | // + /*-----------------------*/ LGUI_T(KC_D), LT(MOUSE, KC_H), SFT_T(KC_T), CTL_T(KC_N), ALT_T(KC_S), TD(MINS_UNDS), // + // | | | | | | // + // | | | | | | // + // |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // | | | | | | // + // | | | | | | // + KC_LGUI, LCAG_T(KC_B), LT(HYPER, KC_M), LT(MEDIA_FN, KC_W), SGUI_T(KC_V), LGAS_T(KC_Z), COMPOSE, // + // | | | | | | // + // | | | | | | ⎄ // + //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// + // | | | | // + // | | | | // + KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_SYSREQ, // + // | | | | // + // | | | | // + //------------------------+-------------------------+-------------------------+-------------------------+------------------------// + + // HACKER DVORAK right thumb + + //------------------------+------------------------// + // | // + // | // + KC_WH_U, KC_WH_D, // + // | // + // | // + //------------------------+-------------------------+------------------------// + // | | // + // | | // + KC_PGUP, // | // + // | | // + // | | // + //------------------------| | // + // | | // + // | | // + KC_PGDN, KC_DEL, KC_ENT // + // | | // + // | | // + //------------------------+-------------------------+------------------------// + + ), + + [PLOVER] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO), + KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM, + KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, + KC_CLCK, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, + XXXXXXX, TG(LAYERS), PV_NUM, PV_NUM, PV_NUM, + + // left thumb + KC_SPACE, KC_BSPACE, + KC_HOME, + PV_A, PV_O, KC_END, + + // right hand + KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP, + PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN, + PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, + PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, + PV_NUM, PV_NUM, PV_NUM, PV_NUM, XXXXXXX, + + // right thumb + KC_DELETE, KC_ENTER, + KC_PGUP, + KC_PGDOWN, PV_E, PV_U + ), + + [GAMING] = LAYOUT_ergodox( + // left hand + KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T, + KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G, + LT(MOUSE, KC_GRV), KC_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F), + KC_BSLS, KC_LSHIFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M, + XXXXXXX, TG(LAYERS), KC_COMM, KC_DOT, KC_LBRC, + + // left thumb + MO(MEDIA_FN), KC_NLCK, + KC_SCLN, + KC_SPACE, KC_ENTER, KC_BSPACE, + + // right hand + KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9, + KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6, + KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3, + KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH, + KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, + + // right thumb + KC_MS_BTN5, MO(HYPER), + KC_MS_BTN4, + KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1 + ), + + [ARROWS] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX, + XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + KC_HOME, + KC_SPACE, KC_BSPACE, KC_END, + + // right hand + LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX, + LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z), + KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION, + LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, + + // right thumb + XXXXXXX, XXXXXXX, + KC_PGUP, + KC_PGDOWN, KC_DELETE, KC_ENTER + ), + + [MOUSE] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X), + LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C), + KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT, + LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V), + KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + KC_MS_BTN1, KC_MS_BTN2, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX, + XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2, + XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, KC_MS_ACCEL0 + ), + + [NUMPAD] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX, + _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX, + XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + KC_HOME, + KC_SPACE, KC_BSPACE, KC_END, + + // right hand + KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, + KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC, + KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS, + KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC, + KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS, + + // right thumb + XXXXXXX, XXXXXXX, + KC_PGUP, + KC_PGDOWN, KC_DELETE, KC_ENTER + ), + + [LAYERS] = LAYOUT_ergodox( + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, TO(DVORAK), TO(PLOVER), TO(GAMING), XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [MEDIA_FN] = LAYOUT_ergodox( + // left hand + KC_VOLD, KC_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH, + KC_MPRV, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME, + KC_PAUS, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11, + RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK, + RGB_VAD, KC_CLCK, KC_PSCREEN, XXXXXXX, MO(FIRMWARE), + + // left thumb + _______, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, KC_MEDIA_EJECT, + + // right hand + KC_WWW_FAVORITES, KC_MYCM, KC_CALC, XXXXXXX, RGB_MOD, RGB_M_P, KC_VOLU, + KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MNXT, + KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MPLY, + KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI, + KC_PWR, XXXXXXX, KC_SLEP, KC_WAKE, RGB_VAI, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + RGB_GREEN, XXXXXXX, XXXXXXX + ), + + [HYPER] = LAYOUT_ergodox( + // left hand + XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX, + XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX, + XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15), + XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX, + XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24), + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, _______, + XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX + ), + + [FIRMWARE] = LAYOUT_ergodox( + + // left hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + + // left thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + RESET, XXXXXXX, XXXXXXX, + + // right hand + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // right thumb + XXXXXXX, XXXXXXX, + XXXXXXX, + XXXXXXX, XXXXXXX, EEP_RST + ) +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/aliases_definitions.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/aliases_definitions.c new file mode 100644 index 000000000..e5eba1820 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/aliases_definitions.c @@ -0,0 +1,5 @@ +// Keycode aliases +#define SCTL(kc) LSFT(LCTL(kc)) // Modifier keys: SHIFT+CTRL+kc combination. +#define LGAS_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, GUI+ALT+SHIFT when held. +#define LAS_T(kc) MT(MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, ALT+SHIFT whin held. +#define COMPOSE KC_RALT // Compose key (used to input characters like á, ñ, ü). diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/custom_keycodes.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/custom_keycodes.c new file mode 100644 index 000000000..368062172 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keycodes/custom_keycodes.c @@ -0,0 +1,8 @@ +// Define custom user keycodes: +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // Can always be here. + RGB_GREEN, // To set default RGB layer as green once. + MY_CUSTOM_MACRO, // Custom macro example. + MY_OTHER_MACRO, // Custom macro example. + DYNAMIC_MACRO_RANGE // Should always be the last. +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c index c42b55108..af06d2bd8 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/keymap.c @@ -1,781 +1,19 @@ -#include QMK_KEYBOARD_H -#include "keymap_dvorak.h" -#include "sendstring_dvorak.h" -#include "keymap_plover.h" -#include "keymap_plover_dvorak.h" - - -#define SCTL(kc) LSFT(LCTL(kc)) - -// Layers -enum layers { - DVORAK_US = 0, - PLOVER_US, - GAMING_US, - ARROWS_US, - MOUSE_US, - NUMPAD_US, - LAYERS_US, - DVORAK_DV, - PLOVER_DV, - GAMING_DV, - ARROWS_DV, - MOUSE_DV, - NUMPAD_DV, - LAYERS_DV, - MEDIA_FN, - HYPER_FN, - MEH_FN, - MEH_FN_PLUS, - FIRMWARE -}; - -int CAPS_LOCK = 0; -int NUM_LOCK = 0; -int SCROLL_LOCK = 0; - -enum tap_dances { - TD_ESC_CAPS = 0 -}; - -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CLCK) -}; - - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - RGB_GREEN // to set default RGB layer as green once -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * ,--------------------------------------------------. ,--------------------------------------------------. - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | | 38 | 39 | 40 | 41 | 42 | 43 | 44 | - * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| - * | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 45 | 46 | 47 | 48 | 49 | 50 | 51 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | 14 | 15 | 16 | 17 | 18 | 19 |------| |------| 52 | 53 | 54 | 55 | 56 | 57 | - * |--------+------+------+------+------+------| 26 | | 58 |------+------+------+------+------+--------| - * | 20 | 21 | 22 | 23 | 24 | 25 | | | | 59 | 60 | 61 | 62 | 63 | 64 | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | 27 | 28 | 29 | 30 | 31 | | 65 | 66 | 67 | 68 | 69 | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | 32 | 33 | | 70 | 71 | - * ,------+------+------| |------+------+------. - * | | | 34 | | 72 | | | - * | 35 | 36 |------| |------| 74 | 75 | - * | | | 37 | | 73 | | | - * `--------------------' `--------------------' - */ - [DVORAK_US] = LAYOUT_ergodox( - // left hand - KC_ESC, KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_EXLM, KC_AMPR, - KC_TAB, KC_QUOT, SCMD_T(KC_COMM), MEH_T(KC_DOT), ALL_T(KC_P), KC_Y, KC_AT, - KC_EQL, CTL_T(KC_A), SFT_T(KC_O), LT(NUMPAD_US, KC_E), LT(ARROWS_US, KC_U), KC_I, - KC_BSLS, ALGR_T(KC_SCLN), ALT_T(KC_Q), LT(MEDIA_FN, KC_J), GUI_T(KC_K), KC_X, KC_PERC, - MO(MEH_FN), TG(LAYERS_US), KC_CIRC, KC_PLUS, KC_COLN, - - // left thumb - KC_LEFT, KC_RGHT, - KC_HOME, - KC_SPC, KC_BSPC, KC_END, - - // right hand - KC_PIPE, KC_QUES, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, KC_ASTR, - KC_HASH, KC_F, ALL_T(KC_G), MEH_T(KC_C), SCMD_T(KC_R), KC_L, KC_SLSH, - KC_D, LT(MOUSE_US, KC_H), LT(HYPER_FN, KC_T), SFT_T(KC_N), CTL_T(KC_S), KC_MINS, - KC_DLR, KC_B, GUI_T(KC_M), LT(MEDIA_FN, KC_W), ALT_T(KC_V), ALGR_T(KC_Z), KC_GRV, - KC_DQUO, KC_UNDS, KC_TILD, TG(DVORAK_DV), MO(MEH_FN_PLUS), - - // right thumb - KC_UP, KC_DOWN, - KC_PGUP, - KC_PGDN, KC_DEL, KC_ENT - ), - - [PLOVER_US] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO), - KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM, - KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, - KC_CLCK, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, - MO(MEH_FN), TG(LAYERS_US), PV_NUM, PV_NUM, PV_NUM, - - // left thumb - KC_SPACE, KC_BSPACE, - KC_HOME, - PV_A, PV_O, KC_END, - - // right hand - KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP, - PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN, - PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, - PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, - PV_NUM, PV_NUM, PV_NUM, PV_NUM, MO(MEH_FN_PLUS), - - // right thumb - KC_DELETE, KC_ENTER, - KC_PGUP, - KC_PGDOWN, PV_E, PV_U - ), - - [GAMING_US] = LAYOUT_ergodox( - // left hand - KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T, - KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G, - LT(MOUSE_US, KC_GRV), KC_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F), - KC_BSLS, KC_LSHIFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M, - MO(MEH_FN), TG(LAYERS_US), KC_COMM, KC_DOT, KC_LBRC, - - // left thumb - MO(MEDIA_FN), KC_NLCK, - KC_SCLN, - KC_SPACE, KC_ENTER, KC_BSPACE, - - // right hand - KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9, - KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6, - KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3, - KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH, - KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS), - - // right thumb - KC_MS_BTN5, MO(HYPER_FN), - KC_MS_BTN4, - KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1 - ), - - [ARROWS_US] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX, - XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - KC_HOME, - KC_SPACE, KC_BSPACE, KC_END, - - // right hand - LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX, - LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z), - KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION, - LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z), - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, - - // right thumb - XXXXXXX, XXXXXXX, - KC_PGUP, - KC_PGDOWN, KC_DELETE, KC_ENTER - ), - - [MOUSE_US] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X), - LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C), - KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT, - LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V), - KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - KC_MS_BTN1, KC_MS_BTN2, XXXXXXX, - - // right hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX, - XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2, - XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, KC_MS_ACCEL0 - ), - - [NUMPAD_US] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX, - _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX, - XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - KC_HOME, - KC_SPACE, KC_BSPACE, KC_END, - - // right hand - KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, - KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC, - KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS, - KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC, - KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS, - - // right thumb - XXXXXXX, XXXXXXX, - KC_PGUP, - KC_PGDOWN, KC_DELETE, KC_ENTER - ), - - [LAYERS_US] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, - - // right hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, TO(DVORAK_US), TO(PLOVER_US), TO(GAMING_US), XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX - ), - - [DVORAK_DV] = LAYOUT_ergodox( - // left hand - KC_ESC, DV_LABK, DV_LCBR, DV_LBRC, DV_LPRN, DV_EXLM, DV_AMPR, - KC_TAB, DV_QUOT, SCMD_T(DV_COMM), MEH_T(DV_DOT), ALL_T(DV_P), DV_Y, DV_AT, - DV_EQL, CTL_T(DV_A), SFT_T(DV_O), LT(NUMPAD_DV, DV_E), LT(ARROWS_DV, DV_U), DV_I, - DV_BSLS, ALGR_T(DV_SCLN), ALT_T(DV_Q), LT(MEDIA_FN, DV_J), GUI_T(DV_K), DV_X, DV_PERC, - MO(MEH_FN), TG(LAYERS_DV), DV_CIRC, DV_PLUS, DV_COLN, - - // left thumb - KC_LEFT, KC_RGHT, - KC_HOME, - KC_SPC, KC_BSPC, KC_END, - - // right hand - DV_PIPE, DV_QUES, DV_RPRN, DV_RBRC, DV_RCBR, DV_RABK, DV_ASTR, - DV_HASH, DV_F, ALL_T(DV_G), MEH_T(DV_C), SCMD_T(DV_R), DV_L, DV_SLSH, - DV_D, LT(MOUSE_DV, DV_H), LT(HYPER_FN, DV_T), SFT_T(DV_N), CTL_T(DV_S), DV_MINS, - DV_DLR, DV_B, GUI_T(DV_M), LT(MEDIA_FN, DV_W), ALT_T(DV_V), ALGR_T(DV_Z), DV_GRV, - DV_DQUO, DV_UNDS, DV_TILD, _______, MO(MEH_FN_PLUS), - - // right thumb - KC_UP, KC_DOWN, - KC_PGUP, - KC_PGDN, KC_DEL, KC_ENT - ), - - [PLOVER_DV] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO), - KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PD_NUM, - KC_TAB, PD_LS, PD_LT, PD_LP, PD_LH, PD_STAR, - KC_CLCK, PD_LS, PD_LK, PD_LW, PD_LR, PD_STAR, PD_STAR, - MO(MEH_FN), TG(LAYERS_DV), PD_NUM, PD_NUM, PD_NUM, - - // left thumb - KC_SPACE, KC_BSPACE, - KC_HOME, - PD_A, PD_O, KC_END, - - // right hand - KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP, - PD_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN, - PD_STAR, PD_RF, PD_RP, PD_RL, PD_RT, PD_RD, - PD_STAR, PD_STAR, PD_RR, PD_RB, PD_RG, PD_RS, PD_RZ, - PD_NUM, PD_NUM, PD_NUM, PD_NUM, MO(MEH_FN_PLUS), - - // right thumb - KC_DELETE, KC_ENTER, - KC_PGUP, - KC_PGDOWN, PD_E, PD_U - ), - - [GAMING_DV] = LAYOUT_ergodox( - // left hand - KC_ESCAPE, GUI_T(DV_MINS), DV_I, DV_O, DV_P, ALGR_T(DV_EQL), DV_T, - KC_TAB, KC_LALT, DV_Q, DV_W, DV_E, ALL_T(DV_R), DV_G, - LT(MOUSE_DV, DV_GRV), KC_LCTRL, DV_A, DV_S, DV_D, MEH_T(DV_F), - DV_BSLS, KC_LSHIFT, DV_Z, DV_X, DV_C, SCMD_T(DV_V), DV_M, - MO(MEH_FN), TG(LAYERS_DV), DV_COMM, DV_DOT, DV_LBRC, - - // left thumb - MO(MEDIA_FN), KC_NLCK, - DV_SCLN, - KC_SPACE, KC_ENTER, KC_BSPACE, - - // right hand - DV_QUOT, DV_Y, DV_K, DV_U, KC_KP_7, KC_KP_8, KC_KP_9, - KC_MS_WH_UP, DV_H, DV_J, DV_L, KC_KP_4, KC_KP_2, KC_KP_6, - DV_B, KC_MS_UP, DV_N, KC_KP_1, KC_KP_5, KC_KP_3, - KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, DV_SLSH, - DV_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS), - - // right thumb - KC_MS_BTN5, MO(HYPER_FN), - KC_MS_BTN4, - KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1 - ), - - [ARROWS_DV] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX, - XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - KC_HOME, - KC_SPACE, KC_BSPACE, KC_END, - - // right hand - LGUI(DV_X), XXXXXXX, LCTL(DV_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX, - LGUI(DV_C), XXXXXXX, LCTL(DV_C), KC_UP, SCTL(DV_C), LCTL(DV_Z), LGUI(DV_Z), - KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION, - LGUI(DV_V), XXXXXXX, LCTL(DV_V), KC_MS_WH_DOWN, SCTL(DV_V), LCTL(DV_Y), SGUI(DV_Z), - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, - - // right thumb - XXXXXXX, XXXXXXX, - KC_PGUP, - KC_PGDOWN, KC_DELETE, KC_ENTER - ), - - [MOUSE_DV] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(DV_X), XXXXXXX, LGUI(DV_X), - LGUI(DV_Z), LCTL(DV_Z), SCTL(DV_C), KC_MS_UP, LCTL(DV_C), KC_MS_BTN4, LGUI(DV_C), - KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT, - LGUI(DV_Z), LCTL(DV_Y), SCTL(DV_V), KC_MS_WH_DOWN, LCTL(DV_V), KC_MS_BTN5, LGUI(DV_V), - KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - KC_MS_BTN1, KC_MS_BTN2, XXXXXXX, - - // right hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX, - XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2, - XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, KC_MS_ACCEL0 - ), - - [NUMPAD_DV] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX, - _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX, - XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - KC_HOME, - KC_SPACE, KC_BSPACE, KC_END, - - // right hand - DV_X, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, - DV_O, DV_I, DV_1, DV_2, DV_3, DV_SLSH, DV_PERC, - DV_M, DV_4, DV_5, DV_6, DV_PLUS, DV_MINS, - DV_L, DV_J, DV_7, DV_8, DV_9, DV_ASTR, DV_CIRC, - DV_DOT, DV_0, DV_COMM, DV_UNDS, DV_BSLS, - - // right thumb - XXXXXXX, XXXXXXX, - KC_PGUP, - KC_PGDOWN, KC_DELETE, KC_ENTER - ), - - [LAYERS_DV] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, - - // right hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, TO(DVORAK_DV), TO(PLOVER_DV), TO(GAMING_DV), XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX - ), - - [MEDIA_FN] = LAYOUT_ergodox( - // left hand - KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH, - KC_MEDIA_PREV_TRACK, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME, - KC_PAUSE, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11, - RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK, - RGB_VAD, KC_CLCK, KC_PSCREEN, XXXXXXX, MO(FIRMWARE), - - // left thumb - _______, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, KC_MEDIA_EJECT, - - // right hand - KC_WWW_FAVORITES, KC_MY_COMPUTER, KC_CALCULATOR, XXXXXXX, RGB_MOD, RGB_M_P, KC_AUDIO_VOL_UP, - KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MEDIA_NEXT_TRACK, - KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MEDIA_PLAY_PAUSE, - KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI, - KC_SYSTEM_POWER, XXXXXXX, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, RGB_VAI, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - RGB_GREEN, XXXXXXX, XXXXXXX - ), - - [HYPER_FN] = LAYOUT_ergodox( - // left hand - XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX, - XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX, - XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15), - XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX, - XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24), - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, - - // right hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, _______, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX - ), - - [MEH_FN] = LAYOUT_ergodox( - // left hand - LCA(KC_F11), LCA(KC_F9), LCA(KC_F7), LCA(KC_F5), LCA(KC_F3), LCA(KC_F1), XXXXXXX, - LCAG(KC_F11), LCAG(KC_F9), LCAG(KC_F7), LCAG(KC_F5), LCAG(KC_F3), LCAG(KC_F1), XXXXXXX, - MEH(KC_F11), MEH(KC_F9), MEH(KC_F7), MEH(KC_F5), MEH(KC_F3), MEH(KC_F1), - SGUI(KC_F11), SGUI(KC_F9), SGUI(KC_F7), SGUI(KC_F5), SGUI(KC_F3), SGUI(KC_F1), XXXXXXX, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, - - // right hand - XXXXXXX, LCA(KC_F2), LCA(KC_F4), LCA(KC_F6), LCA(KC_F8), LCA(KC_F10), LCA(KC_F12), - XXXXXXX, LCAG(KC_F2), LCAG(KC_F4), LCAG(KC_F6), LCAG(KC_F8), LCAG(KC_F10), LCAG(KC_F12), - MEH(KC_F2), MEH(KC_F4), MEH(KC_F6), MEH(KC_F8), MEH(KC_F10), MEH(KC_F12), - XXXXXXX, SGUI(KC_F2), SGUI(KC_F4), SGUI(KC_F6), SGUI(KC_F8), SGUI(KC_F10), SGUI(KC_F12), - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX - ), - - [MEH_FN_PLUS] = LAYOUT_ergodox( - // left hand - LCA(KC_F23), LCA(KC_F21), LCA(KC_F19), LCA(KC_F17), LCA(KC_F15), LCA(KC_F13), XXXXXXX, - LCAG(KC_F23), LCAG(KC_F21), LCAG(KC_F19), LCAG(KC_F17), LCAG(KC_F15), LCAG(KC_F13), XXXXXXX, - MEH(KC_F23), MEH(KC_F21), MEH(KC_F19), MEH(KC_F17), MEH(KC_F15), MEH(KC_F13), - SGUI(KC_F23), SGUI(KC_F21), SGUI(KC_F19), SGUI(KC_F17), SGUI(KC_F15), SGUI(KC_F13), XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, - - // right hand - XXXXXXX, LCA(KC_F14), LCA(KC_F16), LCA(KC_F18), LCA(KC_F20), LCA(KC_F22), LCA(KC_F24), - XXXXXXX, LCAG(KC_F14), LCAG(KC_F16), LCAG(KC_F18), LCAG(KC_F20), LCAG(KC_F22), LCAG(KC_F24), - MEH(KC_F14), MEH(KC_F16), MEH(KC_F18), MEH(KC_F20), MEH(KC_F22), MEH(KC_F24), - XXXXXXX, SGUI(KC_F14), SGUI(KC_F16), SGUI(KC_F18), SGUI(KC_F20), SGUI(KC_F22), SGUI(KC_F24), - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX - ), - - [FIRMWARE] = LAYOUT_ergodox( - // left hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, - - // left thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - RESET, XXXXXXX, XXXXXXX, - - // right hand - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - // right thumb - XXXXXXX, XXXXXXX, - XXXXXXX, - XXXXXXX, XXXXXXX, EEP_RST - ) -}; - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_GREEN: - if (record->event.pressed) { - #ifdef RGBLIGHT_ENABLE - rgblight_enable(); - rgblight_mode(1); - rgblight_sethsv_red(); - #endif - } - - return false; - - case KC_CLCK: - if (record->event.pressed) { - if (!(CAPS_LOCK)) { - ergodox_right_led_1_on(); - CAPS_LOCK = 1; - } else { - ergodox_right_led_1_off(); - CAPS_LOCK = 0; - } - } - - return true; - - case KC_NLCK: - if (record->event.pressed) { - if (!(NUM_LOCK)) { - ergodox_right_led_2_on(); - NUM_LOCK = 1; - } else { - ergodox_right_led_2_off(); - NUM_LOCK = 0; - } - } - - return true; - - case KC_SLCK: - if (record->event.pressed) { - if (!(SCROLL_LOCK)) { - ergodox_right_led_3_on(); - SCROLL_LOCK = 1; - } else { - ergodox_right_led_3_off(); - SCROLL_LOCK = 0; - } - } - - case KC_MS_WH_LEFT: - if (record->event.pressed) { - if (SCROLL_LOCK) { - return false; - } else { - return true; - } - } - - case KC_MS_WH_UP: - if (record->event.pressed) { - if (SCROLL_LOCK) { - return false; - } else { - return true; - } - } - - case KC_MS_WH_DOWN: - if (record->event.pressed) { - if (SCROLL_LOCK) { - return false; - } else { - return true; - } - } - - case KC_MS_WH_RIGHT: - if (record->event.pressed) { - if (SCROLL_LOCK) { - return false; - } else { - return true; - } - } - - default: - return true; - } -} - -uint32_t layer_state_set_user(uint32_t state) { - uint8_t layer = biton32(state); - - switch (layer) { - case DVORAK_US: - rgblight_sethsv_noeeprom_red(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - - break; - - case PLOVER_US: - rgblight_sethsv_noeeprom_red(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - - break; - - case GAMING_US: - rgblight_sethsv_noeeprom_red(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - - break; - - case ARROWS_US: - rgblight_sethsv_noeeprom_blue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case MOUSE_US: - rgblight_sethsv_noeeprom_blue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case NUMPAD_US: - rgblight_sethsv_noeeprom_blue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case LAYERS_US: - rgblight_sethsv_noeeprom_cyan(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case DVORAK_DV: - rgblight_sethsv_noeeprom_green(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - - case PLOVER_DV: - rgblight_sethsv_noeeprom_green(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - - break; - - case GAMING_DV: - rgblight_sethsv_noeeprom_green(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - - break; - - case ARROWS_DV: - rgblight_sethsv_noeeprom_blue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case MOUSE_DV: - rgblight_sethsv_noeeprom_blue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case NUMPAD_DV: - rgblight_sethsv_noeeprom_blue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case LAYERS_DV: - rgblight_sethsv_noeeprom_cyan(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case MEDIA_FN: - rgblight_sethsv_noeeprom_yellow(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case HYPER_FN: - rgblight_sethsv_noeeprom_magenta(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - case MEH_FN: - rgblight_sethsv_noeeprom_magenta(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 4); - - break; - - case MEH_FN_PLUS: - rgblight_sethsv_noeeprom_magenta(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5); - - break; - - case FIRMWARE: - rgblight_sethsv_noeeprom_pink(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); - - break; - - default: - break; - } - - return state; -}; +#include QMK_KEYBOARD_H // Includes the QMK-verse. +#include "keymap_plover.h" // Includes the Plover keymap for easier readability. + + +// TODO: No eeprom changes unless needed, custom rgb settings for animations. +#include "keycodes/aliases_definitions.c" +#include "layers/layers_definitions.c" +#include "tap_dance/tap_dance_setup.c" +#include "tap_dance/tap_dances.c" +#include "user/matrix_scan_user.c" +#include "tap_dance/mod_tap_layer_dances/none_lead.c" +#include "tap_dance/tap_dance_actions.c" +#include "keycodes/custom_keycodes.c" +#include "dynamic_macro.h" // Includes dynamic macro definitions, needed *after* the custom keycodes. +#include "hacker_dvorak.c" +#include "user/eeconfig_init_user.c" +#include "user/process_record_user.c" +#include "plover/plover_mode.c" +#include "user/layer_set_state_user.c" diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/layers/layers_definitions.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/layers/layers_definitions.c new file mode 100644 index 000000000..f190e4f6f --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/layers/layers_definitions.c @@ -0,0 +1,12 @@ +enum layers { // Hacker Dvorak keyboard layers: + DVORAK = 0, // * Dvorak base layer. + PLOVER = 1, // * Steno layer for use with Plover. + GAMING = 2, // * Gaming layer intended for general purpose playing. + ARROWS = 3, // * Arrows movement keys and edition shortcuts. + MOUSE = 4, // * Mouse movement keys and edition shortcuts. + NUMPAD = 5, // * ATM style numpad with symbols and letters that should suffice to input any numeric literal. + LAYERS = 6, // * Layer switcher used to change between DVORAK, PLOVER and GAMING layers. + MEDIA_FN = 7, // * Media, RGB and function keys from F1 to F24 in symmetric fashion. + HYPER = 8, // * Hot keys layer (uses hyper + F1 .. F24) suitable for global shortcut tasks. + FIRMWARE = 9 // * Layer with firmware related functionality, like the reset and EEPROM keys. +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_dictionary.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_dictionary.c new file mode 100644 index 000000000..8d5fa00a7 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_dictionary.c @@ -0,0 +1,14 @@ +LEADER_DICTIONARY() { + leading = false; + leader_end(); + + SEQ_ONE_KEY(TD(APMR_PIPE)) { + register_code(KC_LCTL); + register_code(KC_LSFT); + register_code(KC_U); + + unregister_code(KC_U); + unregister_code(KC_LSFT); + unregister_code(KC_LCTL); + } +} diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_setup.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_setup.c new file mode 100644 index 000000000..1e89c4bfc --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/leader/leader_setup.c @@ -0,0 +1,14 @@ +LEADER_EXTERNS(); + +void qk_leader_start(void) { + if (!leading) { + leading = true; + leader_time = timer_read(); + leader_sequence_size = 0; + leader_sequence[0] = 0; + leader_sequence[1] = 0; + leader_sequence[2] = 0; + leader_sequence[3] = 0; + leader_sequence[4] = 0; + } +} diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/plover/plover_mode.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/plover/plover_mode.c new file mode 100644 index 000000000..b38826490 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/plover/plover_mode.c @@ -0,0 +1,20 @@ +// TODO: improve feedback +void plover_toggle(void) { + // Press "PHROLG" + register_code(PV_LP); + register_code(PV_LH); + register_code(PV_LR); + register_code(PV_O); + register_code(PV_RL); + register_code(PV_RG); + + // Release "PHROLG" + unregister_code(PV_LP); + unregister_code(PV_LH); + unregister_code(PV_LR); + unregister_code(PV_O); + unregister_code(PV_RL); + unregister_code(PV_RG); +} + +bool PLOVER_MODE = false; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md b/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md index c7df0d748..8089a6d55 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/readme.md @@ -17,8 +17,8 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som * All symbols (including shifted symbols). * All modifier are dual keys positioned near the home row. 2. Querty - * Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use - Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on + * Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use + Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on the Ergodox EZ Shine at the same time, without changing back and forth tho OS layout. 3. Gaming * Still in development. @@ -35,7 +35,7 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som 6. Numpad * ATM style numpad. * All modifier keys. - * Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming + * Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming languages, ie. `0b11001`). * `X` for hexadecimal numeric literals in most programming languages, ie. `0xbeef`. * `O` for octal numeric literals in most programming languages, ie `0o123`. @@ -52,11 +52,11 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som * Useful for custom application shortcuts. 10. Meh Fn + * Useful for custom standard shortcuts. - + ## To Do Add images. *** -Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience! \ No newline at end of file +Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience! diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk index 4aa2f262b..51a9ff0d4 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk @@ -1,35 +1,40 @@ # Set any rules.mk overrides for your specific keymap here. # See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -TAP_DANCE_ENABLE = yes -MOUSEKEY_ENABLE = yes # Mouse keys(+4700b). -EXTRAKEY_ENABLE = yes # Audio control and System control(+450b). -SLEEP_LED_ENABLE = yes # Turn off leds when computer is sleeping. -KEY_LOCK_ENABLE = yes # (+1730b) -RGBLIGHT_ENABLE = yes -LEADER_ENABLE = yes +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +TAP_DANCE_ENABLE = yes +MOUSEKEY_ENABLE = yes # Mouse keys(+4700b). +EXTRAKEY_ENABLE = yes # Audio control and System control(+450b). +RGBLIGHT_ENABLE = yes +LEADER_ENABLE = yes -UNICODE_ENABLE = no # For Unicode. +UNICODE_ENABLE = no COMMAND_ENABLE = no # Commands for debug and configuration SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard. # This are by default off: -# CONSOLE_ENABLE = no # Console for debug(+400) -# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +# COMBO_ENABLE = no +# UCIS_ENABLE = no # For Unicode. +# UNICODEMAP_ENABLE = no +# SLEEP_LED_ENABLE = no # Turn off leds when computer is sleeping. +# KEY_LOCK_ENABLE = no # (+1730b) +# CONSOLE_ENABLE = no # Console for debug(+400b) +# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000b) # API_SYSEX_ENABLE = no # MIDI_ENABLE = no -# UNICODEMAP_ENABLE = no # BLUETOOTH_ENABLE = no # AUDIO_ENABLE = no # FAUXCLICKY_ENABLE = no # VARIABLE_TRACE = no # BACKLIGHT_ENABLE = no # RGB_MATRIX_ENABLE = no -# COMBO_ENABLE = no +# POINTING_DEVICE_ENABLE = no + +# AUTO_SHIFT_ENABLE = no +# AUTO_SHIFT_MODIFIERS = no -# This don't need argument: +# This don't need argument? # CUSTOM_MATRIX # Custom matrix file for the ErgoDox EZ # SPLIT_KEYBOARD diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/mod_tap_layer_dances/none_lead.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/mod_tap_layer_dances/none_lead.c new file mode 100644 index 000000000..6debc1ce4 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/mod_tap_layer_dances/none_lead.c @@ -0,0 +1,40 @@ +//instanalize an instance of 'tap' for the None - Lead tap dance. +static tap none_lead_state = { + .is_press_action = true, + .state = 0 +}; + +void none_lead_finished(qk_tap_dance_state_t *state, void *user_data) { + none_lead_state.state = current_dance(state); + switch (none_lead_state.state) { + case SINGLE_TAP: + register_code(KC_NO); + break; + + case SINGLE_HOLD: + register_code(KC_LALT); + register_code(KC_LSFT); + break; + + case DOUBLE_TAP: + qk_leader_start(); + break; + } +} + +void none_lead_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (none_lead_state.state) { + case SINGLE_TAP: + unregister_code(KC_NO); + break; + + case SINGLE_HOLD: + unregister_code(KC_LALT); + unregister_code(KC_LSFT); + break; + + case DOUBLE_TAP: + break; + } + none_lead_state.state = 0; +} diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c new file mode 100644 index 000000000..550e1f7c8 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c @@ -0,0 +1,20 @@ +// Register the double tap dances: +qk_tap_dance_action_t tap_dance_actions[] = { + [EQL_PLUS] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), + [MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS), + [SLSH_BSLS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS), + [GRV_TILD] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD), + [QUOT_DQUO] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQUO), + [SCLN_COLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN), + [ASTR_CIRC] = ACTION_TAP_DANCE_DOUBLE(KC_ASTR, KC_CIRC), + [APMR_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_AMPR, KC_PIPE), + [EXLM_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_EXLM, KC_QUES), + [HASH_PERC] = ACTION_TAP_DANCE_DOUBLE(KC_HASH, KC_PERC), + [AT_DLR] = ACTION_TAP_DANCE_DOUBLE(KC_AT, KC_DLR), + [LPRN_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC), + [RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC), + [LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK), + [RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK), + [DOT_COMM] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMM), + [NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_TERM) +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_setup.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_setup.c new file mode 100644 index 000000000..340ccca13 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_setup.c @@ -0,0 +1,75 @@ +typedef struct { + bool is_press_action; + int state; +} tap; + +enum { + SINGLE_TAP = 1, + SINGLE_HOLD = 2, + DOUBLE_TAP = 3, + DOUBLE_HOLD = 4, + DOUBLE_SINGLE_TAP = 5, // Send two single taps. + TRIPLE_TAP = 6, + TRIPLE_HOLD = 7, + TRIPLE_SINGLE_TAP = 8 // Send three single taps. +}; + +/* Return an integer that corresponds to what kind of tap dance should be executed. + * + * How to figure out tap dance state: interrupted and pressed. + * + * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit + * under the tapping term. This is typically indicitive that you are trying to "tap" the key. + * + * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term + * has ended, but the key is still being pressed down. This generally means the key is being "held". + * + * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold" + * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters. + * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters. + * + * Good places to put an advanced tap dance: + * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon + * + * Criteria for "good placement" of a tap dance key: + * Not a key that is hit frequently in a sentence + * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or + * in a web form. So 'tab' would be a poor choice for a tap dance. + * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the + * letter 'p', the word 'pepper' would be quite frustating to type. + * + * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested + * + */ +int current_dance(qk_tap_dance_state_t *state) { + int current_state = 0; + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + current_state = SINGLE_TAP; + } else { + current_state = SINGLE_HOLD; //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'. + } + } else if (state->count == 2) { + /* + * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap + * action when hitting 'pp'. Suggested use case for this return value is when you want to send two + * keystrokes of the key, and not the 'double tap' action/macro. + */ + if (state->interrupted) { + current_state = DOUBLE_SINGLE_TAP; + } else if (state->pressed) { + current_state = DOUBLE_HOLD; + } else { + current_state = DOUBLE_TAP; + } + } else if (state->count == 3) { + if (state->interrupted) { + current_state = TRIPLE_SINGLE_TAP; + } else if (state->pressed) { + current_state = TRIPLE_HOLD; + } else { + current_state = TRIPLE_TAP; + } + } + return current_state; +} diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dances.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dances.c new file mode 100644 index 000000000..3d4469872 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dances.c @@ -0,0 +1,74 @@ + //--------------------------------------------------------------------------------------------// + // | | | | | // + // Single tap | Single hold | Double tap | Double hold | Triple tap | Triple hold // +// Mod tap dances: // | | | | | // +enum tap_dances { //--------------------------------------------------------------------------------------------// + // | | | | | // + EQL_PLUS = 0, // = | + | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + MINS_UNDS = 1, // - | _ | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + SLSH_BSLS = 2, // / | \ | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + GRV_TILD = 3, // ` | ~ | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + QUOT_DQUO = 4, // ' | " | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + SCLN_COLN = 5, // ; | : | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + ASTR_CIRC = 6, // * | ^ | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + APMR_PIPE = 7, // & | | | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + EXLM_QUES = 8, // ! | ? | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + HASH_PERC = 9, // # | % | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + AT_DLR = 10, // @ | $ | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + LPRN_LBRC = 11, // ( | [ | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + RPRN_RBRC = 12, // ) | ] | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + LCBR_LABK = 13, // { | < | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + RCBR_RABK = 14, // } | > | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + DOT_COMM = 15, // . | , | | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// + // | | | | | // + NONE_LEAD = 16, // NONE | ALT+SHIFT | LEAD | | | // + // | | | | | // + //--------------------------------------------------------------------------------------------// +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/eeconfig_init_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/eeconfig_init_user.c new file mode 100644 index 000000000..41b7b6694 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/eeconfig_init_user.c @@ -0,0 +1,3 @@ +// void eeconfig_init_user(void) { +// +// }; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c new file mode 100644 index 000000000..e2eeed6fa --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c @@ -0,0 +1,121 @@ + +uint32_t layer_state_set_user(uint32_t state) { + uint8_t layer = biton32(state); + + switch (layer) { + case DVORAK: + rgblight_sethsv_noeeprom_green(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case PLOVER: + rgblight_sethsv_noeeprom_red(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); + + if (!(PLOVER_MODE)) { + plover_toggle(); + PLOVER_MODE = true; + } + + break; + + case GAMING: + rgblight_sethsv_noeeprom_red(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case ARROWS: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case MOUSE: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case NUMPAD: + rgblight_sethsv_noeeprom_blue(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case LAYERS: + rgblight_sethsv_noeeprom_cyan(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case MEDIA_FN: + rgblight_sethsv_noeeprom_yellow(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case HYPER: + rgblight_sethsv_noeeprom_magenta(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + case FIRMWARE: + rgblight_sethsv_noeeprom_magenta(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); + + if (PLOVER_MODE) { + plover_toggle(); + PLOVER_MODE = false; + } + + break; + + default: + break; + } + + return state; +} diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/matrix_scan_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/matrix_scan_user.c new file mode 100644 index 000000000..3b78079cc --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/matrix_scan_user.c @@ -0,0 +1,12 @@ +#include "../leader/leader_setup.c" + +bool MATRIX_SCANNED = false; + +void matrix_scan_user(void) { + if (!(MATRIX_SCANNED)) { + rgblight_sethsv_noeeprom_green(); + MATRIX_SCANNED = true; + } + + #include "../leader/leader_dictionary.c" +}; diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/process_record_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/process_record_user.c new file mode 100644 index 000000000..764463582 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/process_record_user.c @@ -0,0 +1,75 @@ +// TODO: Improve this currently there is no feedback if activated by other means. +bool CAPS_LOCK = false; +bool NUM_LOCK = false; +bool SCROLL_LOCK = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_dynamic_macro(keycode, record)) { + return false; + } + + switch (keycode) { + case KC_CLCK: + if (record->event.pressed) { + if (!(CAPS_LOCK)) { + ergodox_right_led_1_on(); + CAPS_LOCK = true; + } else { + ergodox_right_led_1_off(); + CAPS_LOCK = false; + } + } + + return true; + + case KC_NLCK: + if (record->event.pressed) { + if (!(NUM_LOCK)) { + ergodox_right_led_2_on(); + NUM_LOCK = true; + } else { + ergodox_right_led_2_off(); + NUM_LOCK = false; + } + } + + return true; + + case KC_SLCK: + if (record->event.pressed) { + if (!(SCROLL_LOCK)) { + ergodox_right_led_3_on(); + SCROLL_LOCK = true; + } else { + ergodox_right_led_3_off(); + SCROLL_LOCK = false; + } + } + + return true; + + case KC_MS_WH_UP ... KC_MS_WH_RIGHT: + if (record->event.pressed) { + if (SCROLL_LOCK) { + return false; + } else { + return true; + } + } + + case MY_CUSTOM_MACRO: + if (record->event.pressed) { + SEND_STRING("QMK is the best thing ever!"); // this is our macro! + return false; + } + + case MY_OTHER_MACRO: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL("ac")); // selects all and copies + return false; + } + + default: + return true; + } +} -- cgit v1.2.3-24-g4f1b From e76bf17d36c3e23d4c780ab7dd0a10b5883889a2 Mon Sep 17 00:00:00 2001 From: Konstantin Đorđević Date: Thu, 3 Jan 2019 17:13:55 +0100 Subject: Remove redundant, language-specific aliases for KC_ALGR (#4720) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use standard KC_ALGR, remove language-specific redefinitions * Use ALGR instead of ALTGR in BÉPO and Canadian multilingual keymaps * Remove BE_LALT, BE_LGUI aliases --- keyboards/ergodox_ez/keymaps/skug/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards/ergodox_ez/keymaps') diff --git a/keyboards/ergodox_ez/keymaps/skug/keymap.c b/keyboards/ergodox_ez/keymaps/skug/keymap.c index d17990481..b3696f3a9 100644 --- a/keyboards/ergodox_ez/keymaps/skug/keymap.c +++ b/keyboards/ergodox_ez/keymaps/skug/keymap.c @@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA, KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), LT(SYMB, NO_AE), KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC, - KC_SPC, KC_BSPC, NO_ALGR, NO_ASTR, CTL_T(NO_TILD), + KC_SPC, KC_BSPC, KC_ALGR, NO_ASTR, CTL_T(NO_TILD), KC_HOME, NO_CIRC, KC_PGUP, KC_UP, KC_DOWN, KC_LGUI, ALT_T(KC_ESC), CTL_T(KC_ENT) -- cgit v1.2.3-24-g4f1b