From 05be1de1aa35f15b71ebfdf2f142fca50609ef31 Mon Sep 17 00:00:00 2001 From: xton Date: Sat, 12 May 2018 08:52:11 -0700 Subject: Xton's first keymap! (#2941) * FORK! * WIP - just how i like it * empty * more movement * mouse keys * more vimminess * append/insert shift * WIP - vim macros * blocked out layer below in cmd mode. also, about to restart my cmd approach. * WIP - new vim layer ripoff of the ergodox one, but rewritten as a state machine. * debugged some, got key repeat working * moooar coverage * moooar coverage * regular vis mode * basically done with basics. * some refactoring - common movement sequences into helper function - added some rgb controls * modkey passthru feature * stdized on cmd-left/right instead of ctrl-a/e sadly. as there's no reliable shift-ctrl-e * indicator lights * moved vim layer into userspace * cleaned up some yanking edge cases * docs and some tweaks to layerescapes * updated/added license strings * updated comments * moved config changes to keymap * spurious changes removed --- users/xtonhasvim/readme.md | 10 + users/xtonhasvim/rules.mk | 1 + users/xtonhasvim/xtonhasvim.c | 599 ++++++++++++++++++++++++++++++++++++++++++ users/xtonhasvim/xtonhasvim.h | 66 +++++ 4 files changed, 676 insertions(+) create mode 100644 users/xtonhasvim/readme.md create mode 100644 users/xtonhasvim/rules.mk create mode 100644 users/xtonhasvim/xtonhasvim.c create mode 100644 users/xtonhasvim/xtonhasvim.h (limited to 'users') diff --git a/users/xtonhasvim/readme.md b/users/xtonhasvim/readme.md new file mode 100644 index 000000000..e08e972f4 --- /dev/null +++ b/users/xtonhasvim/readme.md @@ -0,0 +1,10 @@ + +# Xton has Vim! + +Contains common code for Xton's vim emulation (vimulation?) layer. + +Inspired/stolen from the `ergodox_ez/vim` keymap. Rewritten to be a more straightforward state machine and support more macros. Vim layers `_CMD` and `_EDIT` are designed to lay on top of an otherwise fully-functional layout. `_CMD` runs the entire vim state machine while `_EDIT` should lay across your base layer and mask off just the escape key. + +Works via OSX text editing shortcuts, mainly MOD+arrow combinations. This has some limitations and only works on OSX. + +The `_CMD` layer will temporarily disable itself while *CMD* or *ALT* are held down so that typical OSX shortcuts can be used without switching out of vim mode. diff --git a/users/xtonhasvim/rules.mk b/users/xtonhasvim/rules.mk new file mode 100644 index 000000000..3777917f8 --- /dev/null +++ b/users/xtonhasvim/rules.mk @@ -0,0 +1 @@ +SRC += xtonhasvim.c diff --git a/users/xtonhasvim/xtonhasvim.c b/users/xtonhasvim/xtonhasvim.c new file mode 100644 index 000000000..85048401d --- /dev/null +++ b/users/xtonhasvim/xtonhasvim.c @@ -0,0 +1,599 @@ + /* Copyright 2015-2017 Christon DeWan + * + * 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 "xtonhasvim.h" + +/************************************ + * helper foo + ************************************/ + +#define PRESS(kc) register_code(kc) +#define RELEASE(kc) unregister_code(kc) + +static void TAP(uint16_t keycode) { + PRESS(keycode); + RELEASE(keycode); +} + +static void CMD(uint16_t keycode) { + PRESS(KC_LGUI); + TAP(keycode); + RELEASE(KC_LGUI); +} + +static void CTRL(uint16_t keycode) { + PRESS(KC_LCTRL); + TAP(keycode); + RELEASE(KC_LCTRL); +} + +static void SHIFT(uint16_t keycode) { + PRESS(KC_LSHIFT); + TAP(keycode); + RELEASE(KC_LSHIFT); +} + +static void ALT(uint16_t keycode) { + PRESS(KC_LALT); + TAP(keycode); + RELEASE(KC_LALT); +} + + +uint16_t vstate = VIM_START; +bool yank_was_lines = false; +bool SHIFTED = false; +uint32_t mod_override_layer_state = 0; +uint16_t mod_override_triggering_key = 0; +bool do_check_kb_clear = false; + +void vim_reset(void) { + vstate = VIM_START; + SHIFTED = false; + yank_was_lines = false; +} + +void edit(void) { vstate = VIM_START; layer_on(_EDIT); layer_off(_CMD); } +#define EDIT edit() + + +void simple_movement(uint16_t keycode) { + switch(keycode) { + case VIM_B: + PRESS(KC_LALT); + SHIFT(KC_LEFT); // select to start of this word + RELEASE(KC_LALT); + break; + case VIM_E: + PRESS(KC_LALT); + SHIFT(KC_RIGHT); // select to end of this word + RELEASE(KC_LALT); + break; + case VIM_H: + SHIFT(KC_LEFT); + break; + case VIM_J: + CMD(KC_LEFT); + SHIFT(KC_DOWN); + SHIFT(KC_DOWN); + break; + case VIM_K: + CMD(KC_LEFT); + TAP(KC_DOWN); + SHIFT(KC_UP); + SHIFT(KC_UP); + break; + case VIM_L: + SHIFT(KC_RIGHT); + break; + case VIM_W: + PRESS(KC_LALT); + SHIFT(KC_RIGHT); // select to end of this word + SHIFT(KC_RIGHT); // select to end of next word + SHIFT(KC_LEFT); // select to start of next word + RELEASE(KC_LALT); + break; + } +} + +bool process_record_xtonhasvim(uint16_t keycode, keyrecord_t *record) { + if(record->event.pressed && layer_state_is(_CMD) && IS_MOD(keycode)) { + mod_override_layer_state = layer_state; + mod_override_triggering_key = keycode; + layer_clear(); + return true; // let the event fall through... + } + if(mod_override_layer_state && !record->event.pressed && keycode == mod_override_triggering_key) { + layer_state_set(mod_override_layer_state); + mod_override_layer_state = 0; + mod_override_triggering_key = 0; + return true; + } + + if (VIM_START <= keycode && keycode <= VIM_ESC) { + if(keycode == VIM_SHIFT) { + SHIFTED = record->event.pressed; + return false; + } + + if (record->event.pressed) { + if(keycode == VIM_START) { + // entry from anywhere + layer_on(_CMD); + vstate = VIM_START; + return false; + } + switch(vstate) { + case VIM_START: + switch(keycode){ + /***************************** + * ground state + *****************************/ + case VIM_A: + if(SHIFTED) { + // CMD(KC_RIGHT); + CTRL(KC_E); + } else { + TAP(KC_RIGHT); + } + EDIT; + break; + case VIM_B: + PRESS(KC_LALT); + PRESS(KC_LEFT); + break; + case VIM_C: + if(SHIFTED) { + PRESS(KC_LSHIFT); + CMD(KC_RIGHT); + RELEASE(KC_LSHIFT); + CMD(KC_X); + yank_was_lines = false; + EDIT; + } else { + vstate = VIM_C; + } + break; + case VIM_D: + if(SHIFTED) { + TAP(KC_K); + } else { + vstate = VIM_D; + } + break; + case VIM_E: + PRESS(KC_LALT); + PRESS(KC_RIGHT); + break; + case VIM_G: + if(SHIFTED) { + TAP(KC_END); + } else { + vstate = VIM_G; + } + break; + case VIM_H: + PRESS(KC_LEFT); + break; + case VIM_I: + if(SHIFTED){ + CTRL(KC_A); + } + EDIT; + break; + case VIM_J: + if(SHIFTED) { + CMD(KC_RIGHT); + TAP(KC_DEL); + } else { + PRESS(KC_DOWN); + } + break; + case VIM_K: + PRESS(KC_UP); + break; + case VIM_L: + PRESS(KC_RIGHT); + break; + case VIM_O: + if(SHIFTED) { + CMD(KC_LEFT); + TAP(KC_ENTER); + TAP(KC_UP); + EDIT; + } else { + CMD(KC_RIGHT); + TAP(KC_ENTER); + EDIT; + } + break; + case VIM_P: + if(SHIFTED) { + CMD(KC_LEFT); + CMD(KC_V); + } else { + if(yank_was_lines) { + CMD(KC_RIGHT); + TAP(KC_RIGHT); + CMD(KC_V); + } else { + CMD(KC_V); + } + } + break; + case VIM_S: + // s for substitute? + if(SHIFTED) { + CMD(KC_LEFT); + PRESS(KC_LSHIFT); + CMD(KC_RIGHT); + RELEASE(KC_LSHIFT); + CMD(KC_X); + yank_was_lines = false; + EDIT; + } else { + SHIFT(KC_RIGHT); + CMD(KC_X); + yank_was_lines = false; + EDIT; + } + break; + case VIM_U: + if(SHIFTED) { + PRESS(KC_LSFT); + CMD(KC_Z); + RELEASE(KC_LSHIFT); + } else { + CMD(KC_Z); + } + break; + case VIM_V: + if(SHIFTED) { + CMD(KC_LEFT); + SHIFT(KC_DOWN); + vstate = VIM_VS; + } else { + vstate = VIM_V; + } + break; + case VIM_W: + PRESS(KC_LALT); + TAP(KC_RIGHT); + TAP(KC_RIGHT); + TAP(KC_LEFT); + RELEASE(KC_LALT); + break; + case VIM_X: + // SHIFT(KC_RIGHT); + // CMD(KC_X); + PRESS(KC_DEL); + break; + case VIM_Y: + if(SHIFTED) { + CMD(KC_LEFT); + SHIFT(KC_DOWN); + CMD(KC_C); + TAP(KC_RIGHT); + yank_was_lines = true; + } else { + vstate = VIM_Y; + } + break; + case VIM_COMMA: + if(SHIFTED) { + // indent + CMD(KC_LBRACKET); + } else { + // toggle comment + CMD(KC_SLASH); + } + break; + case VIM_PERIOD: + if(SHIFTED) { + // outdent + CMD(KC_RBRACKET); + } + break; + } + break; + case VIM_C: + /***************************** + * c- ...for change. I never use this... + *****************************/ + switch(keycode) { + case VIM_B: + case VIM_E: + case VIM_H: + case VIM_J: + case VIM_K: + case VIM_L: + case VIM_W: + simple_movement(keycode); + CMD(KC_X); + yank_was_lines = false; + EDIT; + break; + + case VIM_C: + CMD(KC_LEFT); + PRESS(KC_LSHIFT); + CMD(KC_RIGHT); + RELEASE(KC_LSHIFT); + CMD(KC_X); + yank_was_lines = false; + EDIT; + break; + case VIM_I: + vstate = VIM_CI; + break; + default: + vstate = VIM_START; + break; + } + break; + case VIM_CI: + /***************************** + * ci- ...change inner word + *****************************/ + switch(keycode) { + case VIM_W: + ALT(KC_LEFT); + PRESS(KC_LSHIFT); + ALT(KC_RIGHT); + RELEASE(KC_LSHIFT); + CMD(KC_X); + yank_was_lines = false; + EDIT; + default: + vstate = VIM_START; + break; + } + break; + case VIM_D: + /***************************** + * d- ...delete stuff + *****************************/ + switch(keycode) { + case VIM_B: + case VIM_E: + case VIM_H: + case VIM_J: + case VIM_K: + case VIM_L: + case VIM_W: + simple_movement(keycode); + CMD(KC_X); + yank_was_lines = false; + break; + case VIM_D: + CMD(KC_LEFT); + SHIFT(KC_DOWN); + CMD(KC_X); + yank_was_lines = true; + vstate = VIM_START; + break; + case VIM_I: + vstate = VIM_DI; + break; + default: + vstate = VIM_START; + break; + } + break; + case VIM_DI: + /***************************** + * ci- ...delete a word... FROM THE INSIDE! + *****************************/ + switch(keycode) { + case VIM_W: + ALT(KC_LEFT); + PRESS(KC_LSHIFT); + ALT(KC_RIGHT); + RELEASE(KC_LSHIFT); + CMD(KC_X); + yank_was_lines = false; + vstate = VIM_START; + default: + vstate = VIM_START; + break; + } + break; + case VIM_V: + /***************************** + * visual! + *****************************/ + switch(keycode) { + case VIM_D: + case VIM_X: + CMD(KC_X); + yank_was_lines = false; + vstate = VIM_START; + break; + case VIM_B: + PRESS(KC_LALT); + PRESS(KC_LSHIFT); + PRESS(KC_LEFT); + // leave open for key repeat + break; + case VIM_E: + PRESS(KC_LALT); + PRESS(KC_LSHIFT); + PRESS(KC_RIGHT); + // leave open for key repeat + break; + case VIM_H: + PRESS(KC_LSHIFT); + PRESS(KC_LEFT); + break; + case VIM_I: + vstate = VIM_VI; + break; + case VIM_J: + PRESS(KC_LSHIFT); + PRESS(KC_DOWN); + break; + case VIM_K: + PRESS(KC_LSHIFT); + PRESS(KC_UP); + break; + case VIM_L: + PRESS(KC_LSHIFT); + PRESS(KC_RIGHT); + break; + case VIM_W: + PRESS(KC_LALT); + SHIFT(KC_RIGHT); // select to end of this word + SHIFT(KC_RIGHT); // select to end of next word + SHIFT(KC_LEFT); // select to start of next word + RELEASE(KC_LALT); + break; + case VIM_Y: + CMD(KC_C); + TAP(KC_RIGHT); + yank_was_lines = false; + vstate = VIM_START; + break; + case VIM_V: + case VIM_ESC: + TAP(KC_RIGHT); + vstate = VIM_START; + break; + default: + // do nothing + break; + } + break; + case VIM_VI: + /***************************** + * vi- ...select a word... FROM THE INSIDE! + *****************************/ + switch(keycode) { + case VIM_W: + ALT(KC_LEFT); + PRESS(KC_LSHIFT); + ALT(KC_RIGHT); + RELEASE(KC_LSHIFT); + vstate = VIM_V; + default: + // ignore + vstate = VIM_V; + break; + } + break; + case VIM_VS: + /***************************** + * visual line + *****************************/ + switch(keycode) { + case VIM_D: + case VIM_X: + CMD(KC_X); + yank_was_lines = true; + vstate = VIM_START; + break; + case VIM_J: + PRESS(KC_LSHIFT); + PRESS(KC_DOWN); + break; + case VIM_K: + PRESS(KC_LSHIFT); + PRESS(KC_UP); + break; + case VIM_Y: + CMD(KC_C); + yank_was_lines = true; + TAP(KC_RIGHT); + vstate = VIM_START; + break; + case VIM_V: + case VIM_ESC: + TAP(KC_RIGHT); + vstate = VIM_START; + break; + default: + // do nothing + break; + } + break; + case VIM_G: + /***************************** + * gg, and a grab-bag of other macros i find useful + *****************************/ + switch(keycode) { + case VIM_G: + TAP(KC_HOME); + break; + // codes b + case VIM_H: + CTRL(KC_A); + break; + case VIM_J: + PRESS(KC_PGDN); + break; + case VIM_K: + PRESS(KC_PGUP); + break; + case VIM_L: + CTRL(KC_E); + break; + default: + // do nothing + break; + } + vstate = VIM_START; + break; + case VIM_Y: + /***************************** + * yoink! + *****************************/ + switch(keycode) { + case VIM_B: + case VIM_E: + case VIM_H: + case VIM_J: + case VIM_K: + case VIM_L: + case VIM_W: + simple_movement(keycode); + CMD(KC_C); + TAP(KC_RIGHT); + yank_was_lines = false; + break; + case VIM_Y: + CMD(KC_LEFT); + SHIFT(KC_DOWN); + CMD(KC_C); + TAP(KC_RIGHT); + yank_was_lines = true; + break; + default: + // NOTHING + break; + } + vstate = VIM_START; + break; + } + } else { + /************************ + * key release events + ************************/ + clear_keyboard(); + } + return false; + } else { + return true; + } +} diff --git a/users/xtonhasvim/xtonhasvim.h b/users/xtonhasvim/xtonhasvim.h new file mode 100644 index 000000000..21b794c03 --- /dev/null +++ b/users/xtonhasvim/xtonhasvim.h @@ -0,0 +1,66 @@ + /* Copyright 2015-2017 Christon DeWan + * + * 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 . + */ + +#ifndef USERSPACE +#define USERSPACE + +#include QMK_KEYBOARD_H +#include "action_layer.h" + +#define X_____X KC_NO + +bool process_record_xtonhasvim(uint16_t keycode, keyrecord_t *record); + +enum xtonhasvim_keycodes { + DUMMY = SAFE_RANGE, + VIM_START, // bookend for vim states + VIM_A, + VIM_B, + VIM_C, + VIM_CI, + VIM_D, + VIM_DI, + VIM_E, + VIM_H, + VIM_G, + VIM_I, + VIM_J, + VIM_K, + VIM_L, + VIM_O, + VIM_P, + VIM_S, + VIM_U, + VIM_V, + VIM_VS, // visual-line + VIM_VI, + VIM_W, + VIM_X, + VIM_Y, + VIM_PERIOD, // to support indent/outdent + VIM_COMMA, // and toggle comments + VIM_SHIFT, // avoid side-effect of supporting real shift. + VIM_ESC, // bookend + VIM_SAFE_RANGE // start other keycodes here. +}; + +enum xtonhasvim_layers { + _EDIT = 12, + _CMD +}; + + +#endif -- cgit v1.2.3-70-g09d2 From 6dda0d6e34ac47c6dfdee1429937b445bf941425 Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Sat, 12 May 2018 09:54:35 -0700 Subject: More work on Talljoe layout including adding layout support for HHKB and TKL. (#2946) * Add tap-dancing semicolon. * Infinity60 was running out of USB space. * Rename common layout variable so it doesn't collide with some keyboards. * Godspeed!!! * Patch the number of LEDs for 1up60rgb * Don't light up if rgblight is off. * Add HHKB layout. * Add HHKB to Talljoe's layout. * Bring back bananasplit keymap. * info.json * Userspace config.h doesn't seem to be setting PREVENT_STUCK_MODIFIERS * Remove 1uprgb workaround * Add TKL to talljoe keymap. Also introduces the tkl layout. --- keyboards/1up60rgb/1up60rgb.h | 15 ++++ keyboards/1up60rgb/info.json | 3 + keyboards/1up60rgb/rules.mk | 2 +- keyboards/bananasplit/keymaps/talljoe/config.h | 23 ++++++ keyboards/bananasplit/keymaps/talljoe/keymap.c | 1 + keyboards/frosty_flake/frosty_flake.h | 2 + keyboards/frosty_flake/rules.mk | 4 +- layouts/community/60_ansi/talljoe-ansi/config.h | 3 +- .../60_ansi_split_bs_rshift/talljoe/config.h | 3 +- layouts/community/60_hhkb/talljoe-hhkb/config.h | 23 ++++++ layouts/community/60_hhkb/talljoe-hhkb/keymap.c | 1 + layouts/community/60_hhkb/talljoe-hhkb/rules.mk | 1 + layouts/community/ortho_4x12/talljoe/config.h | 2 +- layouts/community/tkl_ansi/talljoe-tkl/config.h | 25 ++++++ layouts/community/tkl_ansi/talljoe-tkl/keymap.c | 89 ++++++++++++++++++++++ layouts/community/tkl_ansi/talljoe-tkl/rules.mk | 1 + layouts/default/60_hhkb/default_60_hhkb/keymap.c | 65 ++++++++++++++++ layouts/default/60_hhkb/layout.json | 5 ++ layouts/default/60_hhkb/readme.md | 3 + layouts/default/tkl_ansi/default_tkl_ansi/keymap.c | 11 +++ layouts/default/tkl_ansi/layout.json | 6 ++ layouts/default/tkl_ansi/readme.md | 3 + users/talljoe/rules.mk | 6 +- users/talljoe/talljoe.c | 66 ++++++++++------ users/talljoe/talljoe.h | 38 +++++++++ users/talljoe/tapdance.c | 34 +++++++++ 26 files changed, 407 insertions(+), 28 deletions(-) create mode 100644 keyboards/bananasplit/keymaps/talljoe/config.h create mode 100644 keyboards/bananasplit/keymaps/talljoe/keymap.c create mode 100644 layouts/community/60_hhkb/talljoe-hhkb/config.h create mode 100644 layouts/community/60_hhkb/talljoe-hhkb/keymap.c create mode 100644 layouts/community/60_hhkb/talljoe-hhkb/rules.mk create mode 100644 layouts/community/tkl_ansi/talljoe-tkl/config.h create mode 100644 layouts/community/tkl_ansi/talljoe-tkl/keymap.c create mode 100644 layouts/community/tkl_ansi/talljoe-tkl/rules.mk create mode 100644 layouts/default/60_hhkb/default_60_hhkb/keymap.c create mode 100644 layouts/default/60_hhkb/layout.json create mode 100644 layouts/default/60_hhkb/readme.md create mode 100644 layouts/default/tkl_ansi/default_tkl_ansi/keymap.c create mode 100644 layouts/default/tkl_ansi/layout.json create mode 100644 layouts/default/tkl_ansi/readme.md create mode 100644 users/talljoe/tapdance.c (limited to 'users') diff --git a/keyboards/1up60rgb/1up60rgb.h b/keyboards/1up60rgb/1up60rgb.h index 969fd5b4a..6905fd220 100644 --- a/keyboards/1up60rgb/1up60rgb.h +++ b/keyboards/1up60rgb/1up60rgb.h @@ -63,4 +63,19 @@ K400, K401, K403, K406, K410, K411, K413, K414 \ ) +/* HHKB Variant */ +#define LAYOUT_60_hhkb( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K401, K403, K406, K411, K413 \ +) LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K214, \ + K300, KC_NO,K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + KC_NO,K401, K403, K406, KC_NO,K411, K413, KC_NO \ +) + #endif diff --git a/keyboards/1up60rgb/info.json b/keyboards/1up60rgb/info.json index d662dc60d..67f94b7fe 100644 --- a/keyboards/1up60rgb/info.json +++ b/keyboards/1up60rgb/info.json @@ -19,6 +19,9 @@ "LAYOUT_60_ansi_split_bs_rshift": { "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":6}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Win", "x":11.5, "y":4}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT_60_hhkb": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] } } } diff --git a/keyboards/1up60rgb/rules.mk b/keyboards/1up60rgb/rules.mk index 7363b3c3d..540e4ea96 100644 --- a/keyboards/1up60rgb/rules.mk +++ b/keyboards/1up60rgb/rules.mk @@ -55,4 +55,4 @@ BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality AUDIO_ENABLE ?= no RGBLIGHT_ENABLE ?= yes -LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift +LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift 60_hhkb diff --git a/keyboards/bananasplit/keymaps/talljoe/config.h b/keyboards/bananasplit/keymaps/talljoe/config.h new file mode 100644 index 000000000..bb2aadfa6 --- /dev/null +++ b/keyboards/bananasplit/keymaps/talljoe/config.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include QMK_KEYBOARD_CONFIG_H + +#define PREVENT_STUCK_MODIFIERS +#define SPACE_COUNT 3 + +#define TEMPLATE( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, KC_NO, K4B, K4C, KC_NO }\ +} + +#endif diff --git a/keyboards/bananasplit/keymaps/talljoe/keymap.c b/keyboards/bananasplit/keymaps/talljoe/keymap.c new file mode 100644 index 000000000..7812add81 --- /dev/null +++ b/keyboards/bananasplit/keymaps/talljoe/keymap.c @@ -0,0 +1 @@ +// This space intentionally left blank diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h index 32307ece5..ac293df0f 100644 --- a/keyboards/frosty_flake/frosty_flake.h +++ b/keyboards/frosty_flake/frosty_flake.h @@ -87,4 +87,6 @@ /* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \ } +#define LAYOUT_tkl_ansi KEYMAP_TKL + #endif diff --git a/keyboards/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk index f9c43d3ed..94619e03d 100644 --- a/keyboards/frosty_flake/rules.mk +++ b/keyboards/frosty_flake/rules.mk @@ -68,4 +68,6 @@ AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches CUSTOM_MATRIX = yes -SRC += matrix.c \ No newline at end of file +SRC += matrix.c + +LAYOUTS = tkl_ansi diff --git a/layouts/community/60_ansi/talljoe-ansi/config.h b/layouts/community/60_ansi/talljoe-ansi/config.h index 9e27b1b0a..1990b0ee3 100644 --- a/layouts/community/60_ansi/talljoe-ansi/config.h +++ b/layouts/community/60_ansi/talljoe-ansi/config.h @@ -3,9 +3,10 @@ #include QMK_KEYBOARD_CONFIG_H +#define PREVENT_STUCK_MODIFIERS #define ENABLE_GAME_LAYER -#define LAYOUT( \ +#define TEMPLATE( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ diff --git a/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h b/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h index 0eacbde33..81ab5cf89 100644 --- a/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h +++ b/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h @@ -3,9 +3,10 @@ #include QMK_KEYBOARD_CONFIG_H +#define PREVENT_STUCK_MODIFIERS #define ENABLE_GAME_LAYER -#define LAYOUT( \ +#define TEMPLATE( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ diff --git a/layouts/community/60_hhkb/talljoe-hhkb/config.h b/layouts/community/60_hhkb/talljoe-hhkb/config.h new file mode 100644 index 000000000..938ea6cd6 --- /dev/null +++ b/layouts/community/60_hhkb/talljoe-hhkb/config.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include QMK_KEYBOARD_CONFIG_H + +#define PREVENT_STUCK_MODIFIERS +#define ENABLE_GAME_LAYER + +#define TEMPLATE( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \ +) LAYOUT_60_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K41, K42, K45, K48, K4C \ +) + +#endif //CONFIG_USER_H diff --git a/layouts/community/60_hhkb/talljoe-hhkb/keymap.c b/layouts/community/60_hhkb/talljoe-hhkb/keymap.c new file mode 100644 index 000000000..7812add81 --- /dev/null +++ b/layouts/community/60_hhkb/talljoe-hhkb/keymap.c @@ -0,0 +1 @@ +// This space intentionally left blank diff --git a/layouts/community/60_hhkb/talljoe-hhkb/rules.mk b/layouts/community/60_hhkb/talljoe-hhkb/rules.mk new file mode 100644 index 000000000..92007fe8a --- /dev/null +++ b/layouts/community/60_hhkb/talljoe-hhkb/rules.mk @@ -0,0 +1 @@ +USER_NAME := talljoe diff --git a/layouts/community/ortho_4x12/talljoe/config.h b/layouts/community/ortho_4x12/talljoe/config.h index c2a9567bb..61229e7f6 100644 --- a/layouts/community/ortho_4x12/talljoe/config.h +++ b/layouts/community/ortho_4x12/talljoe/config.h @@ -4,7 +4,7 @@ #include QMK_KEYBOARD_CONFIG_H #define SPACE_COUNT 3 -#define LAYOUT( \ +#define TEMPLATE( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ diff --git a/layouts/community/tkl_ansi/talljoe-tkl/config.h b/layouts/community/tkl_ansi/talljoe-tkl/config.h new file mode 100644 index 000000000..90db04e7b --- /dev/null +++ b/layouts/community/tkl_ansi/talljoe-tkl/config.h @@ -0,0 +1,25 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include QMK_KEYBOARD_CONFIG_H + +#define PREVENT_STUCK_MODIFIERS +#define ENABLE_GAME_LAYER + +#define TEMPLATE_TKL(\ + KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ + KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ + KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ +) LAYOUT_tkl_ansi( \ + KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ + KN2,KC_NO,KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ + KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ +) + +#endif //CONFIG_USER_H diff --git a/layouts/community/tkl_ansi/talljoe-tkl/keymap.c b/layouts/community/tkl_ansi/talljoe-tkl/keymap.c new file mode 100644 index 000000000..b5dc54492 --- /dev/null +++ b/layouts/community/tkl_ansi/talljoe-tkl/keymap.c @@ -0,0 +1,89 @@ +#ifdef KEYBOARD_zeal60 +#include "config.h" +#include "zeal60.h" +#include "zeal_backlight.h" +#include "action_layer.h" +#include "solarized.h" +#include "talljoe.h" + +// from zeal_backlight.c +// we want to be able to set indicators for the spacebar stabs +// but they are not represented by a row/index. +extern zeal_backlight_config g_config; +void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led ); + +void set_backlight_defaults(void) { + uint8_t space; + uint8_t caps_lock; + map_row_column_to_led(3, 12, &caps_lock); + map_row_column_to_led(4, 7, &space); + zeal_backlight_config default_values = { + .use_split_backspace = USE_SPLIT_BACKSPACE, + .use_split_left_shift = USE_SPLIT_LEFT_SHIFT, + .use_split_right_shift = USE_SPLIT_RIGHT_SHIFT, + .use_7u_spacebar = USE_7U_SPACEBAR, + .use_iso_enter = USE_ISO_ENTER, + .disable_when_usb_suspended = 1, + .disable_after_timeout = 0, + .brightness = 255, + .effect = 10, + .color_1 = solarized.base2, + .color_2 = solarized.base02, + .caps_lock_indicator = { .index = caps_lock, .color = solarized.red }, + .layer_1_indicator = { .index = space, .color = solarized.blue }, + .layer_2_indicator = { .index = space, .color = solarized.yellow }, + .layer_3_indicator = { .index = 254, .color = solarized.red }, + .alphas_mods = { + BACKLIGHT_ALPHAS_MODS_ROW_0, + BACKLIGHT_ALPHAS_MODS_ROW_1, + BACKLIGHT_ALPHAS_MODS_ROW_2, + BACKLIGHT_ALPHAS_MODS_ROW_3, + BACKLIGHT_ALPHAS_MODS_ROW_4 } + }; + memcpy(&g_config, &default_values, sizeof(zeal_backlight_config)); + backlight_config_save(); + + solarized_t* S = &solarized; + HSV alphas = S->base2; + HSV custom_color_map[MATRIX_ROWS][MATRIX_COLS] = CM( + S->red, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->red, + S->orange, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->orange, + S->green, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->green, + S->blue, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->blue, S->blue, + S->violet, S->magenta, S->yellow, alphas, S->yellow, S->magenta, S->violet, S->green + ); + for (uint8_t row = 0; row < MATRIX_ROWS; ++row) { + for (uint8_t col = 0; col < MATRIX_COLS; ++col) { + backlight_set_key_color(row, col, custom_color_map[row][col]); + } + } +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + static uint8_t last_effect; + switch (keycode) { + case DFAULTS: + if (IS_PRESSED(record->event)) set_backlight_defaults(); + return false; + case BL_TOGG: + if (IS_PRESSED(record->event)) { + if (g_config.effect) { + last_effect = g_config.effect; + g_config.effect = 0; + } else { + g_config.effect = last_effect; + } + } + return false; + case EFFECT...EFFECT_END: + if (IS_PRESSED(record->event)) { + uint8_t effect = keycode - EFFECT; + g_config.effect = effect; + backlight_config_save(); + } + return false; + } + + return true; +} +#endif diff --git a/layouts/community/tkl_ansi/talljoe-tkl/rules.mk b/layouts/community/tkl_ansi/talljoe-tkl/rules.mk new file mode 100644 index 000000000..92007fe8a --- /dev/null +++ b/layouts/community/tkl_ansi/talljoe-tkl/rules.mk @@ -0,0 +1 @@ +USER_NAME := talljoe diff --git a/layouts/default/60_hhkb/default_60_hhkb/keymap.c b/layouts/default/60_hhkb/default_60_hhkb/keymap.c new file mode 100644 index 000000000..60d628f12 --- /dev/null +++ b/layouts/default/60_hhkb/default_60_hhkb/keymap.c @@ -0,0 +1,65 @@ +#include QMK_KEYBOARD_H + +#define BASE 0 +#define HHKB 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE Level: Default Layer + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + + |------+------+-----------------------+------+------| + | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | + |------+------+-----------------------+------+------| + */ + + [BASE] = LAYOUT_60_hhkb( // default layer + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer HHKB: HHKB mode (HHKB Fn) + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | | | | | | + | - | End | PgD | Dow | | | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + + |------+------+----------------------+------+------+ + | **** | **** | ******************** | **** | **** | + |------+------+----------------------+------+------+ + + */ + + [HHKB] = LAYOUT_60_hhkb( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; + +// 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) { + +}; diff --git a/layouts/default/60_hhkb/layout.json b/layouts/default/60_hhkb/layout.json new file mode 100644 index 000000000..9dce76a2e --- /dev/null +++ b/layouts/default/60_hhkb/layout.json @@ -0,0 +1,5 @@ +["Esc","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=","|\n\\","~\n`"], +[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"Delete"], +[{w:1.75},"Control","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"], +[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:1.75},"Shift","Fn"], +[{x:1.5},"Os",{w:1.5},"Alt",{a:7,w:7},"",{a:4,w:1.5},"Alt","Os"] diff --git a/layouts/default/60_hhkb/readme.md b/layouts/default/60_hhkb/readme.md new file mode 100644 index 000000000..f02d13e4d --- /dev/null +++ b/layouts/default/60_hhkb/readme.md @@ -0,0 +1,3 @@ +# 60_hhkb + + LAYOUT_60_hhkb \ No newline at end of file diff --git a/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c b/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c new file mode 100644 index 000000000..e57f776bb --- /dev/null +++ b/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c @@ -0,0 +1,11 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_tkl_ansi(\ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \ +}; diff --git a/layouts/default/tkl_ansi/layout.json b/layouts/default/tkl_ansi/layout.json new file mode 100644 index 000000000..54492b98f --- /dev/null +++ b/layouts/default/tkl_ansi/layout.json @@ -0,0 +1,6 @@ +["Esc",{x:1},"F1","F2","F3","F4",{x:0.5},"F5","F6","F7","F8",{x:0.5},"F9","F10","F11","F12",{x:0.25},"PrtSc","Scroll Lock","Pause\nBreak"], +[{y:0.5},"~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{x:0.25},"Insert","Home","PgUp"], +[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{x:0.25},"Delete","End","PgDn"], +[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"], +[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift",{x:1.25},"↑"], +[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"Alt",{w:1.25},"Win",{w:1.25},"Menu",{w:1.25},"Ctrl",{x:0.25},"←","↓","→"] diff --git a/layouts/default/tkl_ansi/readme.md b/layouts/default/tkl_ansi/readme.md new file mode 100644 index 000000000..94d5df122 --- /dev/null +++ b/layouts/default/tkl_ansi/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi + + LAYOUT_tkl_ansi \ No newline at end of file diff --git a/users/talljoe/rules.mk b/users/talljoe/rules.mk index fa2314960..0f1f6f26a 100644 --- a/users/talljoe/rules.mk +++ b/users/talljoe/rules.mk @@ -1,3 +1,7 @@ -SRC += talljoe.c +SRC += talljoe.c tapdance.c EXTRAFLAGS+=-flto + +TAP_DANCE_ENABLE=yes +CONSOLE_ENABLE=no +COMMAND_ENABLE=no diff --git a/users/talljoe/talljoe.c b/users/talljoe/talljoe.c index e49a3060d..e9c69b016 100644 --- a/users/talljoe/talljoe.c +++ b/users/talljoe/talljoe.c @@ -3,66 +3,67 @@ #include "talljoe.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_ESC, - KC_TAB , KC_Q, KC_W, KC_E, KC_R, KC_T , KC_Y, KC_U, KC_I, KC_O, KC_P , KC_LBRC, KC_RBRC, KC_BSPC, - US_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G , KC_H, KC_J, KC_K, KC_L, KC_SCLN, US_QUOT, US_ENT , - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO_ADJ , - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC2, KC_SPC1, KC_SPC3, KC_RALT, KC_APP , KC_RCTL, KC_PTT ), - [_WORKMAN] = LAYOUT( + [_BASE] = TEMPLATE_TKL( + KC_ESC, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, MO_ADJ , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_INS , KC_HOME, KC_PGUP, + KC_TAB , KC_Q, KC_W, KC_E, KC_R, KC_T , KC_Y, KC_U, KC_I, KC_O, KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL , KC_END , KC_PGDN, + US_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G , KC_H, KC_J, KC_K, KC_L, US_SCLN, US_QUOT, US_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC2, KC_SPC1, KC_SPC3, KC_RALT, KC_RGUI, KC_RCTL, KC_PTT , KC_LEFT, KC_DOWN, KC_RGHT), + [_WORKMAN] = TEMPLATE( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN, _______, _______, _______, + _______, KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , US_SCLN, _______, _______, _______, _______, KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , _______, _______, _______, KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [_NORMAN] = LAYOUT( + [_NORMAN] = TEMPLATE( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_Q , KC_W , KC_D , KC_F , KC_K , KC_J , KC_U , KC_R , KC_L , KC_SCLN, _______, _______, _______, + _______, KC_Q , KC_W , KC_D , KC_F , KC_K , KC_J , KC_U , KC_R , KC_L , US_SCLN, _______, _______, _______, _______, KC_A , KC_S , KC_E , KC_T , KC_G , KC_Y , KC_N , KC_I , KC_O , KC_H , _______, _______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [_DVORAK] = LAYOUT( + [_DVORAK] = TEMPLATE( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y , KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL , _______, _______, KC_A, KC_O, KC_E, KC_U, KC_I , KC_D, KC_H, KC_T, KC_N, KC_S, US_MINS, _______, - _______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X , KC_B, KC_M, KC_W, KC_V, KC_Z, _______, _______, + _______, US_SCLN, KC_Q, KC_J, KC_K, KC_X , KC_B, KC_M, KC_W, KC_V, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [_COLMAK] = LAYOUT( + [_COLMAK] = TEMPLATE( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_Q, KC_W, KC_F, KC_P, KC_G , KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______, _______, _______, + _______, KC_Q, KC_W, KC_F, KC_P, KC_G , KC_J, KC_L, KC_U, KC_Y, US_SCLN, _______, _______, _______, _______, KC_A, KC_R, KC_S, KC_T, KC_D , KC_H, KC_N, KC_E, KC_I, KC_O , _______, _______, _______, KC_Z, KC_X, KC_C, KC_V, KC_B , KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), #ifdef ENABLE_GAME_LAYER - [_GAME] = LAYOUT( + [_GAME] = TEMPLATE( KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, MO_NAV , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO_ADJ , KC_LCTL, KC_PTT , KC_PGDN, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_APP , KC_RCTL, KC_PTT ), #endif - [_NAV] = LAYOUT( + [_NAV] = TEMPLATE( KC_GRV , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TAB , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_VOLU, KC_INS , KC_PGUP, KC_UP , KC_PGDN, KC_BTN1, KC_BTN2, KC_BTN3, KC_DEL , US_CAPS, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_MUTE, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END , KC_RCTL, TG_ADJ , - KC_LSFT, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_END , KC_PGDN, KC_WBAK, KC_WFWD, KC_WREF, KC_RSFT, XXXXXXX, + KC_LSFT, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_END , KC_PGDN, KC_WBAK, KC_WFWD, KC_WREF, KC_RSFT, KC_APP , KC_LCTL, KC_LGUI, KC_LALT, NV_SPC2, NV_SPC1, NV_SPC3, KC_RALT, KC_RGUI, KC_RCTL, KC_PTT ), - [_NUM] = LAYOUT( + [_NUM] = TEMPLATE( XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, XXXXXXX, KC_DEL , US_CAPS, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_PPLS, KC_PENT, XXXXXXX, - KC_LSFT, KC_EQL, KC_PLUS, KC_BSLS, KC_PIPE, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_PAST, KC_PSLS, XXXXXXX, + KC_LSFT, KC_EQL, KC_PLUS, KC_BSLS, KC_PIPE, KC_SCLN, XXXXXXX, KC_1, KC_2, KC_3, KC_PAST, KC_PSLS, XXXXXXX, KC_LCTL, KC_LGUI, KC_LALT, NM_SPC2, NM_SPC1, NM_SPC3, KC_PDOT, KC_PCMM, KC_RCTL, KC_PTT ), // Adjust layer is on the split-shift key; or NAV+Enter (for non-split keyboards) - [_ADJUST] = LAYOUT( + [_ADJUST] = TEMPLATE( MO_RST , FX(1) , FX(2) , FX(3) , FX(4) , FX(5) , FX(6) , FX(7) , FX(8) , FX(9) , FX(10) , BR_DEC , BR_INC , XXXXXXX, MO_RST , XXXXXXX, H1_INC , S1_INC , H2_INC , S2_INC , EF_INC , RGB_HUI, RGB_SAI, RGB_MOD, RGB_M_P, DFAULTS, RGB_VAD, RGB_VAI, KC_DEL , XXXXXXX, H1_DEC , S1_DEC , H2_DEC , S2_DEC , EF_DEC , RGB_HUD, RGB_SAD, RGB_RMOD,RGB_M_K, RGB_M_B, RGB_M_G, TG_ADJ , TG_NKRO, LY_QWER, LY_WORK, LY_NRMN, LY_DVRK, LY_CLMK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MAKE, KC_CAPS, XXXXXXX, - MO_RST , AG_NORM, AG_SWAP, XXXXXXX, BL_TOGG, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, TG_GAME), + MO_RST , AG_NORM, AG_SWAP, XXXXXXX, BL_STEP, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, TG_GAME), // To Reset hit FN + ` + Esc - [_RESET] = LAYOUT( + [_RESET] = TEMPLATE( RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , 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, @@ -98,6 +99,27 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } bool process_record_user(uint16_t keycode, keyrecord_t *record) { + +#ifdef RGBLIGHT_ENABLE + static uint32_t savedRgbMode; + static uint16_t savedHue; + static uint8_t savedSat; + static uint8_t savedVal; + + if (keycode == KC_ESC) { + if (record->event.pressed) { + savedRgbMode = rgblight_get_mode(); + savedHue = rgblight_get_hue(); + savedSat = rgblight_get_sat(); + savedVal = rgblight_get_val(); + rgblight_mode(1); + rgblight_setrgb(255, 0, 0); + } else { + rgblight_mode(savedRgbMode); + rgblight_sethsv(savedHue, savedSat, savedVal); + } + } +#endif // If console is enabled, it will print the matrix position and status of each key pressed #ifdef CONSOLE_ENABLE xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); diff --git a/users/talljoe/talljoe.h b/users/talljoe/talljoe.h index 17e54af69..7c34cd41f 100644 --- a/users/talljoe/talljoe.h +++ b/users/talljoe/talljoe.h @@ -28,6 +28,10 @@ enum layers { _RESET = RESET_LAYER, }; +enum tap_dancers { + TD_SEMICOLON +}; + #define _______ KC_TRNS #define XXXXXXX KC_NO @@ -53,6 +57,7 @@ enum layers { #define US_CAPS CTL_T(KC_ESC) #define US_QUOT RCTL_T(KC_QUOT) #define US_MINS RCTL_T(KC_QUOT) +#define US_SCLN TD(TD_SEMICOLON) #define US_ENT LT(_NUM, KC_ENT) #ifndef SPACE_COUNT @@ -105,4 +110,37 @@ enum layers { #define FN_MO2 KC_NO #endif +#ifdef TEMPLATE_TKL + #define _X_ KC_NO + #define TEMPLATE( \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ + KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KA5, \ + KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1 \ + ) TEMPLATE_TKL ( \ + KJ6, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, _X_, _X_, _X_, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, _X_, _X_, _X_, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ + KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, _X_, \ + KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, _X_, _X_, _X_ \ + ) +#else + #define TEMPLATE_TKL( \ + KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ + KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ + KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ + ) TEMPLATE( \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ + KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KA5, \ + KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1 \ + ) +#endif + #endif diff --git a/users/talljoe/tapdance.c b/users/talljoe/tapdance.c new file mode 100644 index 000000000..3198fc67f --- /dev/null +++ b/users/talljoe/tapdance.c @@ -0,0 +1,34 @@ +//Tap Dance +#include "talljoe.h" + +// Send semin-colon + enter on two taps +void tap_dance_semicolon(qk_tap_dance_state_t *state, void *user_data) { + switch(state->count) { + case 1: + register_code(KC_SCLN); + unregister_code(KC_SCLN); + break; + case 2: + register_code(KC_SCLN); + unregister_code(KC_SCLN); + + uint8_t mods = get_mods(); + if (mods) { + clear_mods(); + } + + register_code(KC_ENT); + unregister_code(KC_ENT); + + if (mods) { + set_mods(mods); + } + + reset_tap_dance(state); + break; + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_SEMICOLON] = ACTION_TAP_DANCE_FN(tap_dance_semicolon), +}; -- cgit v1.2.3-70-g09d2 From 975c48efe6fcc0a1523ea1b9a98e0804b7ff33f6 Mon Sep 17 00:00:00 2001 From: xton Date: Sat, 12 May 2018 15:37:20 -0700 Subject: xtonhasvim cleanup (#2947) * FORK! * WIP - just how i like it * empty * more movement * mouse keys * more vimminess * append/insert shift * WIP - vim macros * blocked out layer below in cmd mode. also, about to restart my cmd approach. * WIP - new vim layer ripoff of the ergodox one, but rewritten as a state machine. * debugged some, got key repeat working * moooar coverage * moooar coverage * regular vis mode * basically done with basics. * some refactoring - common movement sequences into helper function - added some rgb controls * modkey passthru feature * stdized on cmd-left/right instead of ctrl-a/e sadly. as there's no reliable shift-ctrl-e * indicator lights * moved vim layer into userspace * cleaned up some yanking edge cases * docs and some tweaks to layerescapes * updated/added license strings * updated comments * moved config changes to keymap * spurious changes removed * cleanup pass, HT drashna for suggestions - used _keymap() pattern to better modularize event processing in userspace - made some static things static - removed unused function - improved reset. --- keyboards/niu_mini/keymaps/xtonhasvim/keymap.c | 10 ------ users/xtonhasvim/xtonhasvim.c | 43 +++++++++++++++----------- 2 files changed, 25 insertions(+), 28 deletions(-) (limited to 'users') diff --git a/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c b/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c index f591786b8..6c17df52a 100644 --- a/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c +++ b/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c @@ -152,16 +152,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if(process_record_xtonhasvim(keycode, record)) { - // do nothing so far - return true; - } else { - // already handled by vim - return false; - } -} - /** Set just 4 LEDs closest to the user. Slightly less annoying to bystanders.*/ void rgbflag(uint8_t r, uint8_t g, uint8_t b) { for(int i = 0; i < RGBLED_NUM; i++){ diff --git a/users/xtonhasvim/xtonhasvim.c b/users/xtonhasvim/xtonhasvim.c index 85048401d..0ec331b68 100644 --- a/users/xtonhasvim/xtonhasvim.c +++ b/users/xtonhasvim/xtonhasvim.c @@ -53,24 +53,17 @@ static void ALT(uint16_t keycode) { } -uint16_t vstate = VIM_START; -bool yank_was_lines = false; -bool SHIFTED = false; -uint32_t mod_override_layer_state = 0; -uint16_t mod_override_triggering_key = 0; -bool do_check_kb_clear = false; +static uint16_t vstate = VIM_START; +static bool yank_was_lines = false; +static bool SHIFTED = false; +static uint32_t mod_override_layer_state = 0; +static uint16_t mod_override_triggering_key = 0; -void vim_reset(void) { - vstate = VIM_START; - SHIFTED = false; - yank_was_lines = false; -} - -void edit(void) { vstate = VIM_START; layer_on(_EDIT); layer_off(_CMD); } +static void edit(void) { vstate = VIM_START; layer_on(_EDIT); layer_off(_CMD); } #define EDIT edit() -void simple_movement(uint16_t keycode) { +static void simple_movement(uint16_t keycode) { switch(keycode) { case VIM_B: PRESS(KC_LALT); @@ -109,18 +102,25 @@ void simple_movement(uint16_t keycode) { } } -bool process_record_xtonhasvim(uint16_t keycode, keyrecord_t *record) { +__attribute__ ((weak)) +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + return true; +} + +#define PASS_THRU process_record_keymap(keycode, record) + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { if(record->event.pressed && layer_state_is(_CMD) && IS_MOD(keycode)) { mod_override_layer_state = layer_state; mod_override_triggering_key = keycode; layer_clear(); - return true; // let the event fall through... + return PASS_THRU; // let the event fall through... } if(mod_override_layer_state && !record->event.pressed && keycode == mod_override_triggering_key) { layer_state_set(mod_override_layer_state); mod_override_layer_state = 0; mod_override_triggering_key = 0; - return true; + return PASS_THRU; } if (VIM_START <= keycode && keycode <= VIM_ESC) { @@ -134,6 +134,13 @@ bool process_record_xtonhasvim(uint16_t keycode, keyrecord_t *record) { // entry from anywhere layer_on(_CMD); vstate = VIM_START; + + // reset state + yank_was_lines = false; + SHIFTED = false; + mod_override_layer_state = 0; + mod_override_triggering_key = 0; + return false; } switch(vstate) { @@ -594,6 +601,6 @@ bool process_record_xtonhasvim(uint16_t keycode, keyrecord_t *record) { } return false; } else { - return true; + return PASS_THRU; } } -- cgit v1.2.3-70-g09d2 From 47f03bd5a4195c44fe7d6fbca0ba8b66cd3da0fa Mon Sep 17 00:00:00 2001 From: xton Date: Sun, 13 May 2018 21:02:06 -0700 Subject: Xton has a dz60 (#2952) * FORK! * WIP - just how i like it * empty * more movement * mouse keys * more vimminess * append/insert shift * WIP - vim macros * blocked out layer below in cmd mode. also, about to restart my cmd approach. * WIP - new vim layer ripoff of the ergodox one, but rewritten as a state machine. * debugged some, got key repeat working * moooar coverage * moooar coverage * regular vis mode * basically done with basics. * some refactoring - common movement sequences into helper function - added some rgb controls * modkey passthru feature * stdized on cmd-left/right instead of ctrl-a/e sadly. as there's no reliable shift-ctrl-e * indicator lights * moved vim layer into userspace * cleaned up some yanking edge cases * docs and some tweaks to layerescapes * updated/added license strings * updated comments * moved config changes to keymap * spurious changes removed * cleanup pass, HT drashna for suggestions - used _keymap() pattern to better modularize event processing in userspace - made some static things static - removed unused function - improved reset. * dz60 started. keymaps done. * bugfixes: missing state change in d-, lspace should toggle vim mode. * Caps lock indicator -> vim indicator. And adjusted mousekey settings. * don't actually need the second move trigger and it makes typing less responsive. * some oppurtunistic bugfixing from my other keyboard (sorry) * added readme for my dz60 keymap. * bugfixing and comments updated (niu_mini) * cleanup as suggested from review --- keyboards/dz60/keymaps/xtonhasvim/config.h | 17 +++++ keyboards/dz60/keymaps/xtonhasvim/keymap.c | 92 ++++++++++++++++++++++++++ keyboards/dz60/keymaps/xtonhasvim/readme.md | 10 +++ keyboards/niu_mini/keymaps/xtonhasvim/keymap.c | 24 +++---- users/xtonhasvim/xtonhasvim.c | 9 +++ 5 files changed, 140 insertions(+), 12 deletions(-) create mode 100644 keyboards/dz60/keymaps/xtonhasvim/config.h create mode 100644 keyboards/dz60/keymaps/xtonhasvim/keymap.c create mode 100644 keyboards/dz60/keymaps/xtonhasvim/readme.md (limited to 'users') diff --git a/keyboards/dz60/keymaps/xtonhasvim/config.h b/keyboards/dz60/keymaps/xtonhasvim/config.h new file mode 100644 index 000000000..b1f549e0b --- /dev/null +++ b/keyboards/dz60/keymaps/xtonhasvim/config.h @@ -0,0 +1,17 @@ +#ifndef CONFIG_KEYMAP_H +#define CONFIG_KEYMAP_H + +#include "../../config.h" + +// help for fast typist+dual function keys? +#define PERMISSIVE_HOLD + +/* speed up mousekeys a bit */ +#define MOUSEKEY_DELAY 50 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 8 +#define MOUSEKEY_TIME_TO_MAX 30 +#define MOUSEKEY_WHEEL_MAX_SPEED 8 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 40 + +#endif diff --git a/keyboards/dz60/keymaps/xtonhasvim/keymap.c b/keyboards/dz60/keymaps/xtonhasvim/keymap.c new file mode 100644 index 000000000..8a7419214 --- /dev/null +++ b/keyboards/dz60/keymaps/xtonhasvim/keymap.c @@ -0,0 +1,92 @@ +#include QMK_KEYBOARD_H +#include "xtonhasvim.h" + +enum layers { + _QWERTY, + _FUN, + _MOVE, + _MOUSE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(_MOVE,KC_SCLN), KC_QUOT, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, + KC_LCTL, KC_LALT, KC_LGUI, VIM_START, TG(_MOUSE), KC_SPC, KC_RGUI, KC_RALT, X_____X, KC_RCTL, MO(_FUN)), + + [_FUN] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + TO(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_MOVE] = LAYOUT( + X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, + X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, KC_HOME, KC_PGDN, KC_PGUP, KC_END, X_____X, X_____X, X_____X, X_____X, + X_____X, X_____X, LGUI(KC_LBRC), LGUI(LSFT(KC_LBRC)), LGUI(LSFT(KC_RBRC)), LGUI(KC_RBRC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, X_____X, X_____X, X_____X, + _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______, + TO(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + + [_MOUSE] = LAYOUT( + X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, + X_____X, X_____X, X_____X, KC_MS_UP, X_____X, X_____X, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, X_____X, X_____X, X_____X, X_____X, + X_____X, X_____X,KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, X_____X, X_____X, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, X_____X, X_____X, X_____X, + _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______, + TO(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_EDIT] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + TO(_QWERTY), _______, _______, VIM_START, _______, _______, _______, _______, _______, _______, _______), + + [_CMD] = LAYOUT( + X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, + X_____X, X_____X, VIM_W, VIM_E, X_____X, X_____X, VIM_Y, VIM_U, VIM_I, VIM_O, VIM_P, X_____X, X_____X, X_____X, + VIM_ESC, VIM_A, VIM_S, VIM_D, X_____X, VIM_G, VIM_H, VIM_J, VIM_K, VIM_L, X_____X, X_____X, X_____X, + VIM_SHIFT, X_____X, X_____X, VIM_X, VIM_C, VIM_V, VIM_B, X_____X, X_____X, VIM_COMMA, VIM_PERIOD, X_____X, VIM_SHIFT,X_____X, + TO(_QWERTY), _______, _______, TO(_QWERTY), X_____X, X_____X, _______, _______, _______, _______, _______), + +}; + +#define LED_BIT 1 << 2 +#define LED_MASK ~(1 << 2) + +void user_led_on(void) { + DDRB |= LED_BIT; + PORTB &= LED_MASK; +} + +void user_led_off(void) { + DDRB &= ~LED_BIT; + PORTB &= LED_MASK; +} + +void matrix_init_user(void) { + user_led_off(); +} + +uint32_t layer_state_set_user(uint32_t state) { + static uint32_t last_state = 0; + + if(last_state != state) { + switch (biton32(state)) { + case _CMD: + user_led_on(); + break; + default: + user_led_off(); + break; + } + last_state = state; + } + return state; +} + + diff --git a/keyboards/dz60/keymaps/xtonhasvim/readme.md b/keyboards/dz60/keymaps/xtonhasvim/readme.md new file mode 100644 index 000000000..5d0e38a3e --- /dev/null +++ b/keyboards/dz60/keymaps/xtonhasvim/readme.md @@ -0,0 +1,10 @@ +# Xton has a DZ60 and it's Vimtastic! + +Mine has a split spacebar, no arrowkeys and an opaque case. Changes from the default layout: + +* Vim mode toggled by hitting left spacebar (see `users/xtonhasvim`). Reusing the capslock LED to indicate VIM is on. +* Momentary directional control by holding down `;`. +* Mousekeys toggled with middle space button. +* Escape is dual-function with control (which replaces capslock AS IT SHOULD BE). +* Bottom left key is the "halp my kb doesn't work" key that always dumps you back to QWERTY. + diff --git a/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c b/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c index 6c17df52a..6a23c0a2c 100644 --- a/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c +++ b/keyboards/niu_mini/keymaps/xtonhasvim/keymap.c @@ -65,16 +65,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | Home | End | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | Next | Vol- | Vol+ | Play | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | + * | | Bail | | | | | | | | Bail | | * `-----------------------------------------------------------------------------------' */ [_LOWER] = { {KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSPC}, {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______}, - {_______, TO(_QWERTY), _______, _______, _______, _______, _______, OSL(_ADJUST), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, X_____X, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}, + {X_____X, TO(_QWERTY), _______, _______, _______, KC_BSPC, KC_BSPC, OSL(_ADJUST), _______, _______, TO(_QWERTY), X_____X} }, /* Raise @@ -83,16 +83,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | Next | Vol- | Vol+ | Play | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | + * | | Bail | | | | | | | | Bail | | * `-----------------------------------------------------------------------------------' */ [_RAISE] = { {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSPC}, {KC_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGUP, KC_PGDN, _______}, - {_______, TO(_QWERTY), _______, _______, OSL(_ADJUST), _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}, + {X_____X, TO(_QWERTY), _______, _______, OSL(_ADJUST), X_____X, X_____X, _______, _______, _______, TO(_QWERTY), X_____X} }, @@ -104,14 +104,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------|------+------+------+------+------+------| * |RGBMode+|Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | |Lite- | * |--------+------+------+------+------+------+------+------+------+------+------+------| - * | RGB | | | | | | | | | | | + * | RGB | Bail | | | | | | | | Bail | | * `-------------------------------------------------------------------------------------' */ [_ADJUST] = { {RGB_MODE_PLAIN, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL }, {RGB_MODE_REVERSE, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, RGB_VAI}, {RGB_MODE_FORWARD, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, RGB_VAD}, - {RGB_TOG, TO(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + {RGB_TOG, TO(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY), X_____X} }, @@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {TO(_QWERTY), X_____X, X_____X, X_____X, X_____X, X_____X, KC_HOME, KC_PGDN, KC_PGUP, KC_END, X_____X, X_____X}, {_______, X_____X, LGUI(KC_LBRC), LGUI(LSFT(KC_LBRC)), LGUI(LSFT(KC_RBRC)), LGUI(KC_RBRC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, X_____X, X_____X}, {_______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______}, - {X_____X, TO(_QWERTY), _______, _______, _______, X_____X, X_____X, _______, _______, _______, TO(_QWERTY), _______} + {X_____X, TO(_QWERTY), _______, _______, _______, X_____X, X_____X, _______, _______, _______, TO(_QWERTY), X_____X} }, /* mouse layer @@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {TO(_QWERTY), X_____X, X_____X, KC_MS_UP, X_____X, X_____X, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, X_____X, X_____X }, {_______, X_____X, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, X_____X, X_____X, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, X_____X, X_____X}, {_______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______}, - {_______, TO(_QWERTY), _______, _______, _______, X_____X, X_____X, _______, _______, _______, TO(_QWERTY), _______} + {_______, TO(_QWERTY), _______, _______, _______, X_____X, X_____X, _______, _______, _______, TO(_QWERTY), X_____X} }, /* vim edit mode. just has an escape -> _CMD key */ diff --git a/users/xtonhasvim/xtonhasvim.c b/users/xtonhasvim/xtonhasvim.c index 0ec331b68..a2ff2fa31 100644 --- a/users/xtonhasvim/xtonhasvim.c +++ b/users/xtonhasvim/xtonhasvim.c @@ -384,6 +384,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { simple_movement(keycode); CMD(KC_X); yank_was_lines = false; + vstate = VIM_START; break; case VIM_D: CMD(KC_LEFT); @@ -467,6 +468,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SHIFT(KC_LEFT); // select to start of next word RELEASE(KC_LALT); break; + case VIM_P: + CMD(KC_V); + vstate = VIM_START; + break; case VIM_Y: CMD(KC_C); TAP(KC_RIGHT); @@ -525,6 +530,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { TAP(KC_RIGHT); vstate = VIM_START; break; + case VIM_P: + CMD(KC_V); + vstate = VIM_START; + break; case VIM_V: case VIM_ESC: TAP(KC_RIGHT); -- cgit v1.2.3-70-g09d2