Browse Source

Adding standard keymap for wave keyboard to fix #22695 (#22741)

Etienne Collin 2 years ago
parent
commit
c038292c1e

+ 15 - 7
keyboards/etiennecollin/wave/keymaps/default/config.h

@@ -19,16 +19,24 @@
 // Activate caps word by pressing Left Shift + Right Shift
 #define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
 
-// Enable rapid switch from tap to hold, disables double tap hold auto-repeat
-#define QUICK_TAP_TERM 0
-
 // Maximum time between taps of tap dances
 #define TAPPING_TERM 175
 
+// Max time between taps to prevent hold function and hold auto-repeat
+#define QUICK_TAP_TERM 100
+
 // Perform hold action if pressing a dual-role key, tapping another key and
-// releasing the dual-role key withing tapping term
+// releasing the dual-role key within tapping term
 #define PERMISSIVE_HOLD
 
-// Perform hold action if pressing a dual-role key, pressing another key,
-// releasing the dual-role key and releasing the other key withing tapping term
-#define HOLD_ON_OTHER_KEY_PRESS
+// Mouse key speed and acceleration.
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_INTERVAL 16
+#define MOUSEKEY_WHEEL_DELAY 0
+#define MOUSEKEY_MAX_SPEED 6
+#define MOUSEKEY_TIME_TO_MAX 64
+
+// Thumb Combos
+#define COMBO_COUNT 2
+#define COMBO_TERM 200
+#define EXTRA_SHORT_COMBOS

+ 191 - 0
keyboards/etiennecollin/wave/keymaps/default/keymap.c

@@ -0,0 +1,191 @@
+/* Copyright 2023 Etienne Collin (@etiennecollin)
+ *
+ * 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 3 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 <https://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+    COL,
+    QWE,
+    GAM,
+    MED,
+    NAV,
+    MOS,
+    SYM,
+    NUM,
+    FUN,
+    SYS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [COL] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |   q   |   w   |   f   |   p   |   b   |                    |   j   |   l   |   u   |   y   |   '   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |   a   |   r   |   s   |   t   |   g   |                    |   m   |   n   |   e   |   i   |   o   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |   z   |   x   |   c   |   d   |   v   |                    |   k   |   h   |   ,   |   .   |   /   |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |  esc  |  spc  |  tab  |                    |  ent  |  bsp  |  del  |
+  //                 --------+-------+--------                    --------+-------+--------
+    KC_Q,               KC_W,               KC_F,               KC_P,               KC_B,               KC_J,               KC_L,               KC_U,               KC_Y,               KC_QUOT,
+    LGUI_T(KC_A),       LALT_T(KC_R),       LCTL_T(KC_S),       LSFT_T(KC_T),       KC_G,               KC_M,               LSFT_T(KC_N),       LCTL_T(KC_E),       LALT_T(KC_I),       LGUI_T(KC_O),
+    KC_Z,               KC_X,               KC_C,               KC_D,               KC_V,               KC_K,               KC_H,               KC_COMM,            KC_DOT,             KC_SLSH,
+                                            LT(MED, KC_ESC),    LT(NAV, KC_SPC),    LT(MOS, KC_TAB),    LT(SYM, KC_ENT),    LT(NUM, KC_BSPC),    LT(FUN, KC_DEL)
+  ),
+  [QWE] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |   q   |   w   |   e   |   r   |   t   |                    |   y   |   u   |   i   |   o   |   p   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |   a   |   s   |   d   |   f   |   g   |                    |   h   |   j   |   k   |   l   |   '   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |   z   |   x   |   c   |   v   |   b   |                    |   n   |   m   |   ,   |   .   |   /   |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |  esc  |  spc  |  tab  |                    |  ent  |  bsp  |  del  |
+  //                 --------+-------+--------                    --------+-------+--------
+    KC_Q,               KC_W,               KC_E,               KC_R,               KC_T,               KC_Y,               KC_U,               KC_I,               KC_O,               KC_P,
+    LGUI_T(KC_A),       LALT_T(KC_S),       LCTL_T(KC_D),       LSFT_T(KC_F),       KC_G,               KC_H,               LSFT_T(KC_J),       LCTL_T(KC_K),       LALT_T(KC_L),       LGUI_T(KC_QUOT),
+    KC_Z,               KC_X,               KC_C,               KC_V,               KC_B,               KC_N,               KC_M,               KC_COMM,            KC_DOT,             KC_SLSH,
+                                            LT(MED, KC_ESC),    LT(NAV, KC_SPC),    LT(MOS, KC_TAB),    LT(SYM, KC_ENT),    LT(NUM, KC_BSPC),    LT(FUN, KC_DEL)
+  ),
+  [GAM] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |  tab  |   q   |   w   |   e   |   r   |                    |   t   |   y   |   u   |   i   |   o   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  sht  |   a   |   s   |   d   |   f   |                    |   g   |   h   |   j   |   k   |   l   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  ctl  |   z   |   x   |   c   |   v   |                    |   b   |   n   |   m   |   ,   |   .   |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |  alt  |  cps  |  spc  |                    |  ent  |  bsp  |  esc  |
+  //                 --------+-------+--------                    --------+-------+--------
+    KC_TAB,             KC_Q,               KC_W,               KC_E,               KC_R,               KC_T,               KC_Y,               KC_U,               KC_I,               KC_O,
+    KC_LSFT,            KC_A,               KC_S,               KC_D,               KC_F,               KC_G,               KC_H,               KC_J,               KC_K,               KC_L,
+    KC_LCTL,            KC_Z,               KC_X,               KC_C,               KC_V,               KC_B,               KC_N,               KC_M,               KC_COMM,            KC_DOT,
+                                            KC_LALT,            KC_CAPS,            KC_SPC,             LT(SYM, KC_ENT),    LT(NUM, KC_BSPC),   LT(FUN, KC_ESC)
+  ),
+  [MED] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |       |       |       |       |       |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  gui  |  alt  |  ctl  |  sht  |       |                    |       |  prev | vol - | vol + |  next |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |       |       |       |       |       |                    |       |       |       |       |       |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |  ___  |       |       |                    |  stop | pause |  mute |
+  //                 --------+-------+--------                    --------+-------+--------
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+    KC_LGUI,            KC_LALT,            KC_LCTL,            KC_LSFT,            XXXXXXX,            XXXXXXX,            KC_MPRV,            KC_VOLD,            KC_VOLU,            KC_MNXT,
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            KC_MRWD,            XXXXXXX,            XXXXXXX,            KC_MFFD,
+                                            _______,            XXXXXXX,            XXXXXXX,            KC_MSTP,            KC_MPLY,            KC_MUTE
+  ),
+  [NAV] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |       |       |       |       |       |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  gui  |  alt  |  ctl  |  sht  |       |                    |  cps  |   ←   |   ↓   |   ↑   |   →   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |       |       |       |       |       |                    | insrt | home  | pageu | paged |  end  |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |       |  ___  |       |                    |  ent  |  bsp  |  del  |
+  //                 --------+-------+--------                    --------+-------+--------
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+    KC_LGUI,            KC_LALT,            KC_LCTL,            KC_LSFT,            XXXXXXX,            KC_CAPS,            KC_LEFT,            KC_DOWN,            KC_UP,              KC_RGHT,
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            KC_INS,             KC_HOME,            KC_PGDN,            KC_PGUP,            KC_END,
+                                            XXXXXXX,            _______,            XXXXXXX,            KC_ENT,             KC_BSPC,            KC_DEL
+  ),
+  [MOS] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |       |       |       |       |       |                    |       | acc0  | acc1  |  acc2 |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  gui  |  alt  |  ctl  |  sht  |       |                    |       |   ←   |   ↓   |   ↑   |   →   |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |       |       |       |       |       |                    |       |  w←   |  w↓   |  w↑   |  w→   |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |       |       |  ___  |                    | left  | right |  mid  |
+  //                 --------+-------+--------                    --------+-------+--------
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            KC_ACL0,            KC_ACL1,            KC_ACL2,            XXXXXXX,
+    KC_LGUI,            KC_LALT,            KC_LCTL,            KC_LSFT,            XXXXXXX,            XXXXXXX,            KC_MS_L,            KC_MS_D,            KC_MS_U,            KC_MS_R,
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            KC_WH_L,            KC_WH_D,            KC_WH_U,            KC_WH_R,
+                                            XXXXXXX,            XXXXXXX,            _______,            KC_BTN1,            KC_BTN2,            KC_BTN3
+  ),
+  [SYM] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |   {   |   &   |   *   |   (   |   }   |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |   :   |   $   |   %   |   ^   |   +   |                    |       |  sht  |  ctl  |  alt  |  gui  |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |   ~   |   !   |   @   |   #   |   |   |                    |       |       |       |       |       |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |   (   |   )   |   _   |                    |  ___  |       |       |
+  //                 --------+-------+--------                    --------+-------+--------
+    KC_LCBR,            KC_AMPR,            KC_ASTR,            KC_LPRN,            KC_RCBR,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+    KC_COLN,            KC_DLR,             KC_PERC,            KC_CIRC,            KC_PLUS,            XXXXXXX,            KC_LSFT,            KC_LCTL,            KC_LALT,            KC_LGUI,
+    KC_TILD,            KC_EXLM,            KC_AT,              KC_HASH,            KC_PIPE,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+                                            KC_LPRN,            KC_RPRN,            KC_UNDS,            _______,            XXXXXXX,            XXXXXXX
+  ),
+  [NUM] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |  [ {  |  7 &  |  8 *  |  9 (  |  ] }  |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  ; :  |  4 $  |  5 %  |  6 ^  |  = +  |                    |       |  sht  |  ctl  |  alt  |  gui  |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  ` ~  |  1 !  |  2 @  |  3 #  |  \ |  |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |  . >  |  0 )  |  - _  |                    |       |  ___  |       |
+  //                 --------+-------+--------                    --------+-------+--------
+    KC_LBRC,            KC_7,               KC_8,               KC_9,               KC_RBRC,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+    KC_SCLN,            KC_4,               KC_5,               KC_6,               KC_EQL,             XXXXXXX,            KC_LSFT,            KC_LCTL,            KC_LALT,            KC_LGUI,
+    KC_GRV,             KC_1,               KC_2,               KC_3,               KC_BSLS,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+                                            KC_DOT,             KC_0,               KC_MINS,            XXXXXXX,            _______,            XXXXXXX
+  ),
+  [FUN] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // |  F12  |  F 7  |  F 8  |  F 9  | PrScr |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  F11  |  F 4  |  F 5  |  F 6  | pause |                    |       |  sht  |  ctl  |  alt  |  gui  |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |  F10  |  F 1  |  F 2  |  F 3  | scrlk |                    |       |       |       |       |       |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |  app  |  spc  |  tab  |                    |       |       |  ___  |
+  //                 --------+-------+--------                    --------+-------+--------
+    KC_F12,             KC_F7,              KC_F8,              KC_F9,              KC_PSCR,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+    KC_F11,             KC_F4,              KC_F5,              KC_F6,              KC_PAUS,            XXXXXXX,            KC_LSFT,            KC_LCTL,            KC_LALT,            KC_LGUI,
+    KC_F10,             KC_F1,              KC_F2,              KC_F3,              KC_SCRL,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+                                            KC_APP,             KC_SPC,             KC_TAB,             XXXXXXX,            XXXXXXX,            _______
+  ),
+  [SYS] = LAYOUT_split_3x5_3(
+  // -----------------------------------------                    -----------------------------------------
+  // | BOOT  |       | GAME  | QWERT | COLMK |                    | COLMK | QWERT | GAME  |       | BOOT  |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |       |       |       |       |       |                    |       |       |       |       |       |
+  // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  // |       |       |       |       |       |                    |       |       |       |       |       |
+  // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
+  //                 |       |       |       |                    |       |       |       |
+  //                 --------+-------+--------                    --------+-------+--------
+    QK_BOOT,            XXXXXXX,            DF(GAM),            DF(QWE),            DF(COL),            DF(COL),            DF(QWE),            DF(GAM),            XXXXXXX,            QK_BOOT,
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+    XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
+                                            _______,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            _______
+  )
+};
+
+const uint16_t PROGMEM combo_sys[] = {LT(MED, KC_ESC), LT(FUN, KC_DEL), COMBO_END};
+const uint16_t PROGMEM combo_sys_gam[] = {KC_LALT, LT(FUN, KC_ESC), COMBO_END};
+
+combo_t key_combos[] = {
+  COMBO(combo_sys, MO(SYS)),
+  COMBO(combo_sys_gam, MO(SYS))
+};

+ 0 - 27
keyboards/etiennecollin/wave/keymaps/default/keymap.json

@@ -1,27 +0,0 @@
-{
-    "version": 1,
-    "author": "etiennecollin",
-    "keyboard": "etiennecollin/wave",
-    "notes": "This is a keymap file for etiennecollin/wave",
-    "keymap": "default",
-    "layout": "LAYOUT_split_3x5_3",
-    "config": {
-        "features": {
-            "caps_word": true
-        }
-    },
-    "layers": [
-        [
-            "KC_Q",         "KC_W",         "KC_E",         "KC_R",         "KC_T",     "KC_Y",    "KC_U",          "KC_I",         "KC_O",         "KC_P",
-            "LGUI_T(KC_A)", "LALT_T(KC_S)", "LCTL_T(KC_D)", "LSFT_T(KC_F)", "KC_G",     "KC_H",    "LSFT_T(KC_J)",  "LCTL_T(KC_K)", "LALT_T(KC_L)", "LGUI_T(KC_SCLN)",
-            "KC_Z",         "KC_X",         "KC_C",         "KC_V",         "KC_B",     "KC_N",    "KC_M",          "KC_COMM",      "KC_DOT",       "KC_SLSH",
-                            "KC_ESC",       "KC_SPC",       "KC_TAB",       "KC_ENT",   "KC_BSPC", "MO(1)"
-        ],
-        [
-            "KC_1",         "KC_2",         "KC_3",         "KC_4",         "KC_5",     "KC_6",    "KC_7",          "KC_8",         "KC_9",         "KC_0",
-            "KC_EXLM",      "KC_AT",        "KC_HASH",      "KC_DLR",       "KC_PERC",  "KC_CIRC", "KC_AMPR",       "KC_ASTR",      "KC_LPRN",      "KC_RPRN",
-            "XXXXXXX",      "XXXXXXX",      "XXXXXXX",      "XXXXXXX",      "XXXXXXX",  "XXXXXXX", "XXXXXXX",       "XXXXXXX",      "XXXXXXX",      "XXXXXXX",
-                            "XXXXXXX",      "XXXXXXX",      "XXXXXXX",      "XXXXXXX",  "XXXXXXX", "_______"
-        ]
-    ]
-}

+ 9 - 4
keyboards/etiennecollin/wave/keymaps/default/readme.md

@@ -1,6 +1,11 @@
-# Default keymap
+# Default Keymap
 
-This is a really simple QWERTY keymap with a single number/symbol layer.
-It uses home row modifiers and the caps word feature because of the limited number of keys.
+This keymap is heavily inspired by the [miryoku](https://github.com/manna-harbour/miryoku) layout.
 
-For a more complete layout, see the `feature` layout.
+It defaults to a [COLEMAK mod dh](https://colemakmods.github.io/mod-dh/) layer, but a QWERTY and a gaming layer are available from the `sys` layer.
+
+It uses the following features:
+
+-   Home row modifiers
+-   Usual special layers (`media`, `navigation`, `mouse`, `symbols`, `numbers`, `functions`, `system`)
+-   Combos (to access the `sys` layer by pressing both external thumb keys)

+ 2 - 0
keyboards/etiennecollin/wave/keymaps/default/rules.mk

@@ -0,0 +1,2 @@
+CAPS_WORD_ENABLE = yes
+COMBO_ENABLE = yes

+ 2 - 12
keyboards/etiennecollin/wave/readme.md

@@ -1,8 +1,8 @@
 # Wave
 
-![Wave pcb](https://i.imgur.com/oWF1Fnr.png)
+![Wave Keyboard](https://i.imgur.com/Lz45D3z.png)
 
-_The Wave is a small, reversible keyboard inspired by the [Ferris](https://github.com/pierrechevalier83/ferris), the [Ferris Sweep](https://github.com/davidphilipbarr/Sweep), the [Swoop](https://github.com/jimmerricks/swoop) and the [Sweep36](https://github.com/sadekbaroudi/sweep36). It aims to solve a few issues I found with the keyboards._
+_The Wave is a small, reversible keyboard inspired by the [Ferris](https://github.com/pierrechevalier83/ferris), the [Ferris Sweep](https://github.com/davidphilipbarr/Sweep), the [Swoop](https://github.com/jimmerricks/swoop) and the [Sweep36](https://github.com/sadekbaroudi/sweep36). It aims to put together everything I like about these other models and to solve a few issues I found with them._
 
 -   Keyboard Maintainer: [Etienne Collin](https://github.com/etiennecollin)
 -   Hardware Supported: [Wave](https://github.com/etiennecollin/wave)
@@ -18,16 +18,6 @@ Flashing example for this keyboard:
 
 See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
 
-## Recommended Keymap
-
-For an everyday keyboard, it is recommended to use the `feature` keymap, as the default keymap is extremely barebone. Here is a make example:
-
-    make etiennecollin/wave:feature
-
-Flashing example:
-
-    make etiennecollin/wave:feature:flash
-
 ## Bootloader
 
 Enter the bootloader in 3 ways: