From a1af8542c74525d7b5c5ff85052e6afa2589a418 Mon Sep 17 00:00:00 2001 From: squizzler <56064906+squizzler@users.noreply.github.com> Date: Wed, 27 May 2020 13:23:57 +0100 Subject: [PATCH] RSTHD keymap for Minidox (#9178) * Re-add liles after hard reset * repopulate with keymap * Update keyboards/minidox/keymaps/rsthd_combos/keymap.c Updated how the layers are defined to reduce firmware bloat Co-authored-by: Joel Challis * Update keyboards/minidox/keymaps/rsthd_combos/keymap.c Removed unnecessary key codes Co-authored-by: Joel Challis * Update keyboards/minidox/keymaps/rsthd_combos/keymap.c Removed backslash from each line of the layers in accordance with current convention. Co-authored-by: Ryan * Edit of readme Co-authored-by: Joel Challis Co-authored-by: Ryan --- .../minidox/keymaps/rsthd_combos/config.h | 9 ++ .../minidox/keymaps/rsthd_combos/keymap.c | 109 ++++++++++++++++++ .../minidox/keymaps/rsthd_combos/readme.md | 22 ++++ .../minidox/keymaps/rsthd_combos/rules.mk | 1 + 4 files changed, 141 insertions(+) create mode 100644 keyboards/minidox/keymaps/rsthd_combos/config.h create mode 100644 keyboards/minidox/keymaps/rsthd_combos/keymap.c create mode 100644 keyboards/minidox/keymaps/rsthd_combos/readme.md create mode 100644 keyboards/minidox/keymaps/rsthd_combos/rules.mk diff --git a/keyboards/minidox/keymaps/rsthd_combos/config.h b/keyboards/minidox/keymaps/rsthd_combos/config.h new file mode 100644 index 0000000000..1106412b59 --- /dev/null +++ b/keyboards/minidox/keymaps/rsthd_combos/config.h @@ -0,0 +1,9 @@ +#pragma once + +#define USE_SERIAL +#define EE_HANDS + + +#define COMBO_COUNT 10 +#define COMBO_TERM 100 +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/minidox/keymaps/rsthd_combos/keymap.c b/keyboards/minidox/keymaps/rsthd_combos/keymap.c new file mode 100644 index 0000000000..a3ba423c69 --- /dev/null +++ b/keyboards/minidox/keymaps/rsthd_combos/keymap.c @@ -0,0 +1,109 @@ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _RSTHD, + _LOWER, + _RAISE, + _ADJUST +}; + +enum combo_events { + TOP_L, + TOP_R, + MID_L, + MID_R, + BOT_L, + BOT_R, + HN_QUOT, + TOP_CTR, + MID_CTR, + BOT_CTR, +}; + +const uint16_t PROGMEM fk_combo[] = {KC_F, KC_K, COMBO_END}; +const uint16_t PROGMEM zl_combo[] = {KC_Z, KC_L, COMBO_END}; +const uint16_t PROGMEM hd_combo[] = {KC_H, KC_D, COMBO_END}; +const uint16_t PROGMEM mn_combo[] = {KC_M, KC_N, COMBO_END}; +const uint16_t PROGMEM pb_combo[] = {KC_P, KC_B, COMBO_END}; +const uint16_t PROGMEM xw_combo[] = {KC_X, KC_W, COMBO_END}; +const uint16_t PROGMEM hn_combo[] = {KC_H, KC_N, COMBO_END}; +const uint16_t PROGMEM kz_combo[] = {KC_K, KC_Z, COMBO_END}; +const uint16_t PROGMEM dm_combo[] = {KC_D, KC_M, COMBO_END}; +const uint16_t PROGMEM bx_combo[] = {KC_B, KC_X, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [TOP_L] = COMBO(fk_combo, KC_ESC), + [TOP_R] = COMBO(zl_combo, KC_AT), + [MID_L] = COMBO(hd_combo, KC_TAB), + [MID_R] = COMBO_ACTION(mn_combo), + [BOT_L] = COMBO(pb_combo, KC_HASH), + [BOT_R] = COMBO(xw_combo, KC_AMPR), + [HN_QUOT] = COMBO(hn_combo, KC_QUOT), + [TOP_CTR] = COMBO_ACTION(kz_combo), + [MID_CTR] = COMBO_ACTION(dm_combo), + [BOT_CTR] = COMBO_ACTION(bx_combo), +}; + + void process_combo_event(uint8_t combo_index, bool pressed) { + switch(combo_index) { + case MID_R: + if (pressed) { + tap_code16(LALT(KC_3)); + } + break; + case TOP_CTR: + if (pressed) { + set_oneshot_mods(MOD_LGUI); + } + break; + case MID_CTR: + if (pressed) { + set_oneshot_mods(MOD_LALT); + } + break; + case BOT_CTR: + if (pressed) { + set_oneshot_mods(MOD_LCTL); + } + break; + } + } + +// Defines for task manager and such +// For insertion in keymap +#define KILL LGUI(LALT(KC_ESC)) //Force quit controls +#define SCRCAP LCTL(LSFT(LGUI(KC_5))) //Screen capture controls +#define DSK_LFT LGUI(LCTL(KC_LEFT)) +#define DSK_RT LGUI(LCTL(KC_RIGHT)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[_RSTHD] = LAYOUT( + KC_J, KC_C, KC_Y, KC_F, KC_K, KC_Z, KC_L, KC_COMM, KC_U, KC_Q, + KC_R, KC_S, KC_T, KC_H, KC_D, KC_M, KC_N, KC_A, KC_I , KC_O, + LCTL_T(KC_SLSH), LALT_T(KC_V), LGUI_T(KC_G), KC_P, KC_B, KC_X, KC_W, RGUI_T(KC_DOT), RALT_T(KC_SCLN),RCTL_T(KC_MINS), + OSM(MOD_LSFT), LT(_LOWER, KC_BSPC), KC_E, KC_SPC, LT(_RAISE, KC_ENT), OSM(MOD_LSFT) +), +[_RAISE] = LAYOUT( + KC_PAST, KC_7, KC_8, KC_9, KC_PLUS, KC_NUBS, LALT(KC_2), _______, LALT(KC_4), KC_DLR, + KC_CIRC, KC_4, KC_5, KC_6, KC_EQL, LSFT(KC_NUBS), KC_GRV, KC_TILD, KC_PIPE, KC_BSLS, + _______, RALT_T(KC_1), KC_2, KC_3,KC_PERC, _______, _______, _______, _______, _______, + _______, MO(_ADJUST), KC_0, _______, _______, _______ +), +[_LOWER] = LAYOUT( + _______, KC_LBRC, KC_QUES, KC_RBRC, KC_BRMU, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, + KC_ESC, KC_LPRN, KC_EXLM, KC_RPRN, KC_BRMD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_VOLD, + _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__MUTE, + _______, _______, _______, KC_DEL, MO(_ADJUST), _______ +), +[_ADJUST] = LAYOUT( + _______, KC_F7, KC_F8, KC_F9, SCRCAP, _______, KC_F10, KC_F11, KC_F12, _______, + _______, KC_F1, KC_F2, KC_F3, _______, _______, KC_F4, KC_F5, KC_F6, _______, + OSM(MOD_LCTL),_______, _______, _______, RESET, KILL, _______, _______, _______, OSM(MOD_RCTL), + _______, _______, _______, _______, _______, _______ +) + +}; diff --git a/keyboards/minidox/keymaps/rsthd_combos/readme.md b/keyboards/minidox/keymaps/rsthd_combos/readme.md new file mode 100644 index 0000000000..877d7059e7 --- /dev/null +++ b/keyboards/minidox/keymaps/rsthd_combos/readme.md @@ -0,0 +1,22 @@ +# The RSTHD Layout for minidox - Empowered with Combos +An attempt at porting Xuming Zeng’s [RSTHD](https://xsznix.wordpress.com/2016/05/16/introducing-the-rsthd-layout/) from the Ergodox to the Minidox. +[KLE Link](http://www.keyboard-layout-editor.com/#/gists/3161700bf3573325804716b2bdafa50f) +![RSTHD empowered with chords](https://live.staticflickr.com/65535/49926249372_77ab8eba95_z.jpg) + +**Symbols and media/system keys work as shown with keyboard identified by MacOS as "International/ISO" hardware (not ANSI) and "Input Source" within Preferences set to "British" (Apple).** + +The key feature on this keymap, aside from the layout, is to telescope seven columns into five using combos. The top row and the bottom row form the basis of the number and nav layers respectively. Combos are shown in the above drawing using paired blue legends. +## Writing specific +As a hobby writer I have intended to make a layout that favours prose rather than code, with symbols used in everyday writing such as various (Western) currencies in easy reach. Hardcore coders will no doubt move their favourite symbols to where they feel most comfortable! +The thumb mounted 'E' made it difficult to adapt other keymaps to this letter layout and eventually drove this fundamental redesign. I have strove to minimise the risk of ‘negligent discharge’ of functions whilst typing - whose interruption which can be fatal to creative flow - and which my previous layouts adapted from various ones in the repository seemed prone. To this end hold-tap keys are not placed on the home row nor thumb operated 'space' and 'E' keys, shift gets its own keys, and I use combos to create a useful number of virtual keys. +## Combos! +I employ combos to simulate the missing inner and outer columns that the minidox lacks relative to the Ergodox. All combos operate on keys within the inner pair of columns of each side because during normal typing the index finger has to cover both these columns, making press events of adjacent keys unlikely to overlap. They are assigned names within the keymap that relate to their position on the keyboard (not to my assigned functions) so their functions can be changed at will to suit user preference without confusing the keymap. +- The six chords spanning the neighbouring two columns of each half correspond to keys in the outer columns of the Ergodox. +- A further four chords span the central divide, using pairs of letters that infrequently occur consecutively. + - The three combos spanning adjacent keys over the central divide simulate the mirrored inboard columns of the RSTHD map for Ergodox, and are set to chamber one shot of their respective modifiers. + - The quotation mark is a combo of both resting keys of the index fingers. This is inspired by ‘air quotes’ used in conversation. +I am confident these combos will rarely be accidentally triggered. If this occurs, try reducing the tapping term. +## Other features +- Number pad on left. This confers many benefits for the RSTHD layout, such as leaving key symbols on the primary layer uncovered that are useful for numbers (,.:-). On this layer ‘E’ becomes ‘0’. +- The nav cluster is now on the right hand and, upon activation ’space’ becomes ‘del’, which allows rapid navigation and editing of text. +- Pair of one shot shift keys, since mod-tap shift assigned to letters is a bad idea IMO. Some users might choose to move the shift onto the bottom left and right combos which corresponds to where shift lives in the outer columns of the ergodox layout. diff --git a/keyboards/minidox/keymaps/rsthd_combos/rules.mk b/keyboards/minidox/keymaps/rsthd_combos/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/minidox/keymaps/rsthd_combos/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes