diff options
Diffstat (limited to 'keyboards/handwired')
58 files changed, 687 insertions, 404 deletions
diff --git a/keyboards/handwired/ergocheap/config.h b/keyboards/handwired/ergocheap/config.h index 136ba9d81c..9d99463961 100644 --- a/keyboards/handwired/ergocheap/config.h +++ b/keyboards/handwired/ergocheap/config.h @@ -40,6 +40,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 #define TAPPING_TERM 500 +#define PERMISSIVE_HOLD /* * Feature disable options diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c index 2d917b412e..11463a0162 100644 --- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c +++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c @@ -209,7 +209,7 @@ void press_underscore(void) { uint8_t old_layer=_BASE; void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + uint8_t layer = get_highest_layer(layer_state); frenchdev_led_1_off(); frenchdev_led_2_off(); diff --git a/keyboards/handwired/hillside/0_1/0_1.c b/keyboards/handwired/hillside/0_1/0_1.c deleted file mode 100644 index ee096f18a7..0000000000 --- a/keyboards/handwired/hillside/0_1/0_1.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2021 Michael McCoyd (@mmccoyd) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "0_1.h" diff --git a/keyboards/handwired/hillside/0_1/keymaps/default/keymap.json b/keyboards/handwired/hillside/0_1/keymaps/default/keymap.json deleted file mode 100644 index 5c672f8b8b..0000000000 --- a/keyboards/handwired/hillside/0_1/keymaps/default/keymap.json +++ /dev/null @@ -1,101 +0,0 @@ -{ "version": 1, - "notes": "", - "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", - "keyboard": "handwired/hillside/0_1", - "keymap": "default", - "layout": "LAYOUT", - "layers": [ - ["KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T", - "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC", - - "KC_CAPS", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G", - "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "KC_ENT", - - "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_GRV", - "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT", - - "KC_LCTL", "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)", - "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_QUOT" - - ], - ["KC_TAB" , "KC_QUOT" , "KC_COMM" , "KC_DOT" , "KC_P" , "KC_Y", - "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC", - - "KC_CAPS", "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I", - "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT", - - "KC_LSFT", "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_GRV", - "KC_ESC" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT", - - "KC_LCTL", "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)", - "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_SLSH" - - ], - ["KC_TAB" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B", - "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN" , "KC_BSPC", - - "KC_CAPS", "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G", - "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT", - - "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_GRV", - "KC_ESC" , "KC_K" , "KC_H" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT", - - "KC_LCTL", "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)", - "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_QUOT" - - ], - ["KC_NO" , "KC_INS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_VOLU", - "KC_PGUP", "KC_HOME" , "KC_NO" , "KC_END" , "KC_NO" , "KC_DEL", - - "KC_NO" , "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_VOLD", - "KC_PGDN", "KC_LEFT" , "KC_UP" , "KC_RGHT" , "KC_NO" , "KC_TRNS", - - "KC_LSFT", "LCTL(KC_Z)" , "LCTL(KC_X)" , "LCTL(KC_C)", "LCTL(KC_V)" , "LCTL(KC_Y)", "KC_MUTE", - "KC_ESC" , "OSM(MOD_RALT)", "LCTL(KC_LEFT)", "KC_DOWN" , "LCTL(KC_RGHT)", "KC_APP" , "KC_TRNS", - - "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", - "MO(6)" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_RCTL" - - ], - ["KC_F11" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_DLR" , "KC_PERC", - "KC_CIRC", "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RPRN" , "KC_TRNS", - - "KC_F12" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5", - "KC_PIPE", "KC_LSFT" , "KC_LCTL" , "KC_LALT" , "KC_LGUI" , "KC_TRNS", - - "KC_LSFT", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_PSCR", - "KC_ESC" , "KC_BSLS" , "KC_LBRC" , "KC_RBRC" , "KC_LCBR" , "KC_RCBR" , "KC_TRNS", - - "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "MO(6)", - "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_RCTL" - - ], - ["KC_TAB" , "KC_MINS" , "KC_PLUS" , "KC_EQL" , "KC_SLSH" , "KC_ASTR", - "KC_COMM", "KC_7" , "KC_8" , "KC_9" , "KC_NO" , "KC_TRNS", - - "KC_NO" , "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_NO", - "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_UNDS" , "KC_TRNS", - - "KC_TRNS", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO", - "KC_NO" , "KC_DOT" , "KC_4" , "KC_5" , "KC_6" , "KC_NO" , "KC_TRNS", - - "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO", - "KC_NO" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_RCTL" - - ], - ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP" , "AG_NORM", - "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO", - - "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "CL_SWAP" , "CL_NORM", - "RGB_MOD", "RGB_VAI" , "RGB_HUI" , "RGB_SAI" , "KC_NO" , "KC_NO", - - "QK_BOOT", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO", - "RGB_TOG", "RGB_RMOD" , "RGB_VAD" , "RGB_HUD" , "RGB_SAD" , "KC_NO" , "KC_NO", - - "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS", - "KC_TRNS", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" - - ] - ], - "author": "@mmccoyd" -} diff --git a/keyboards/handwired/hillside/0_1/keymaps/default/readme.md b/keyboards/handwired/hillside/0_1/keymaps/default/readme.md deleted file mode 100644 index 1890d5808c..0000000000 --- a/keyboards/handwired/hillside/0_1/keymaps/default/readme.md +++ /dev/null @@ -1,212 +0,0 @@ -# Default Keymap - -This default keymap follows many of the norms seen in non-programmable keyboards - to ease initial use of the Hillside keyboard. -It is a starting point for you to tweak over time to better suit _your_ preferences. -You can easily customize it with the - [QMK configurator](https://config.qmk.fm/#/hillside/0_1/LAYOUT) - or with the [via firmware](https://caniusevia.com). - -Some of its key features are: -- A mostly standard base layer with letters, some symbols, shift, modifier and delete keys - in the expected places for non-programmable keyboards. -- QWERTY, Colemak-DH and Dvorak options for the letter and symbol layout. -- Comfortable modifier and function or symbol combinations on the non-base layers - using modifiers on the home row of the navigation/edit, symbol/function and number-pad layers. -- Word navigation and cut/copy/paste keys on the navigation layer. -- A slightly optimized number pad with the more frequently used numbers on the home row. - -We've deliberately omitted some features: -- Combos: because the online configuration tools do not handle them - and because they would add to the initial learning curve, - as helpful to a keymap as a light sprinkling of combos can be. -- Multi-function mod-tap keys, auto shift capitalization and auto-exit modes such as CAPWORD or NUMWORD: - as they may be too large a step for someone new to programmable keyboards. - -## Base Layer - -``` -| TAB | Q | W | E | R | T |---------------------------| Y | U | I | O | P | BKSPC | -| CAPS | A | S | D | F | G |---------------------------| H | J | K | L | ; | ENTER | -| SHIFT | Z | X | C | V | B | ~ |---------------| ESC | N | M | , | . | / | SHIFT | ---------------|CTRL |-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| ' |-------------- -``` - -The base layer provides a very standard key layout: - -- Return, Tab, backspace and shift keys in the outer columns. -- Alt/option and win/command keys on both thumbs, with the location swappable for windows or mac. -- A space key on the right thumb. - -The differences from a standard layout are: - -- There are three additional "shift" keys - to access the navigation/editing, symbol/function, and number layers. -- Esc and `~ are above the thumbs. -- The Menu and AltGr keys are on a layer. - -The default layout is QWERTY with alternatives of Dvorak and Colemak-DH -and the alt/option and win/command key locations are swappable for windows or mac. - -<details> -<summary>Details of Dvorak and Colemak-DH</summary> -The Dvorak and Colemak-DH base layers - have identical non-alpha and non-symbol keys as the QWERTY base layer. -In the Dvorak layout, the symbol key in the bottom row is the "/?" symbols - so that the same 12 symbols are taken care of on the base layer. - -``` -Dvorak -| TAB | ' | , | . | P | Y |---------------------------| F | G | C | R | L | BKSPC | -| CAPS | A | O | E | U | I |---------------------------| D | H | T | N | S | ENTER | -| SHIFT | ; | Q | J | K | X | ~ |---------------| ESC | B | M | W | V | Z | SHIFT | ---------------|CTRL |-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| / |-------------- - -Colemak-DH -| TAB | Q | W | F | P | B |---------------------------| J | L | U | Y | ; | BKSPC | -| CAPS | A | R | S | T | G |---------------------------| M | N | E | I | O | ENTER | -| SHIFT | Z | X | C | D | V | ~ |---------------| ESC | K | H | , | . | / | SHIFT | ---------------|CTRL |-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| ' |-------------- -``` -</details> - -## Navigation, Editing and Media Layer - -``` -| | INS | | | |VOL+ |---------------------------|PG_UP|HOME | | END| | DEL | -| | GUI | ALT |CTRL |SHIFT|VOL- |---------------------------|PG_DN|LEFT | UP |RIGHT| | ENTER | -| SHIFT |UNDO | CUT |COPY |PASTE|REDO |MUTE |---------------| ESC |RALT |WORDL|DOWN |WORDR|MENU | SHIFT | ---------------|CTRL |-----| GUI | ALT | Num | *** |---| Adj |BSPC | ALT | GUI |-----|CTRL |-------------- -``` -Holding down the Nav key accesses a navigation and editing layer: - -- Navigation arrows are on and below the right home row in a cross pattern. - This feels more natural for a column stagger keyboard than an inverted T. - The keys below that move left or right by a word. - Home, end, and page up/down are beside them. -- Modifiers in the left home row make it easier to use the arrows - to select text with the shift key or move between desktops or tabs. -- Editing keys appear on the lower left. - The edit keys, modifiers and arrows make it easy to move text around without leaving the layer. -- Delete is in the upper right, and a backspace key is on the thumb. -- The base layer modifiers and escape are in the same spots as on the base layer, - and a right-hand control key is added. -- Media volume and play keys are on the left, accessible with one hand. -- Menu and AltGr keys fill out the layer. -- A few keys do nothing and are available for more user-specific needs. - -## Symbol and Function Layer - -``` -| F11 | ! | @ | # | $ | % |---------------------------| ^ | & | * | ( | ) | BSPC | -| F12 | F1 | F2 | F3 | F4 | F5 |---------------------------| | |SHIFT|CTRL | ALT | GUI | ENTER | -| SHIFT | F6 | F7 | F8 | F9 | F10 |PRTSC|---------------| ESC | \ | [ | ] | { | } | SHIFT | ---------------|CTRL |-----| GUI | ALT | Num | Adj |---| *** |SPACE| ALT | GUI |-----|CTRL |-------------- -``` -Holding down the Sym key accesses a layer of symbol and function keys: - -- The symbols usually found on the number keys are in the top row. - If desired, you can use these positions for other things, - as the symbols are also accessible from the number pad layer with the shift key. -- Several more symbols appear on the right. -- The function keys are on the left, beginning with two rows of five. -- A row of modifiers in the home row allows the comfortable creation of any modifier and function key combination. -- The base layer modifier and escape keys are still available, as is a right-hand control key. - -## Number Pad and Algebraic Layer -``` -| TAB | - | + | = | / | * |---------------------------| . | 7 | 8 | 9 | | BSPC | -| | GUI | ALT |CTRL |SHIFT| |---------------------------| 0 | 1 | 2 | 3 | _ | ENTER | -| SHIFT | | | | | | |---------------| ESC | , | 4 | 5 | 6 | | SHIFT | ---------------|CTRL |-----| GUI | ALT | *** | |---| |BSPC | ALT | GUI |-----|CTRL |-------------- -``` -Holding down the Num key accesses a number pad and arithmetic symbols: - -- The number pad has the lowest numbers swapped into the home row as these are the most commonly used. -- A row of modifiers in the home row allows the comfortable creation of any modifier and number combination. -- Symbols commonly used with numbers fill out the layer - and can be combined with the home row mods or the existing base layer modifiers on the right hand. -- Several keys remain unused and await more user-specific needs. - - -## Adjust Layer -``` -| |QWERT|DVORK|COLMK|AG_SWAP|AG_NORM|-----------------------| | | | | | | -| | | | |CTR_S|CTR_N|---------------------------|MOD+ |BRI+ |HUE+ |SAT+ | | | -| QK_BOOT | | | | | | |--------------|RGBTOG|MOD- |BRI- |HUE- |SAT- | | | ---------------| |-----| | | | *** |---| *** | | | |-----| |-------------- -``` -Simultaneously holding down the Nav and Sym keys enables keys to adjust various keyboard settings: - -- The base layer can be set to QWERTY, Colemak-DH or Dvorak, - but the keyboard reverts to QWERTY each time it is plugged in. -- Alt/option and GUI/command can be swapped for mac users or restored to the windows norm. - This setting persists over power loss. -- The backlight LEDs can be enabled, disabled, and controlled. - These settings also persist over power loss. - - -## Make it Yours - -If you are coming from a traditional keyboard, - with a row-staggered layout and a large set of physical keys, - learning to use a column staggered (ergo) and layer-based keyboard, - which uses layers instead of finger reaches to access numbers, symbols and functions, - will be an adjustment for your muscle memory and your mental keyboard map. -This default layout tries to simplify that adjustment by keeping things in the expected spots when possible. - -Yet this layout is only a decent compromise and is not optimal for each user. - -The online configurator makes it easy to tweak this layout to your needs. -You can add additional layers or completely switch around what these do. - -Some changes you might consider making: -- Put some of your most-used key combinations on the unused keys on the navigation layer. -- If you are on a mac, switch the editing and word navigation keys from ctrl-x to cmd-x. -- Change the shift keys to one-shot shift keys, - where pressing and releasing them shifts the next key pressed. - That is much easier on your hands than holding them down. - Yet, they can still be held as usual if desired. -- Instead of holding down the thumb key to keep the symbol layer active, - you could use a one-shot layer key. - One-shot modifiers are likely less stress on your hands and may even be faster. - You would still be able to hold it down instead. -- Instead of holding down the key for the number pad layer, - you could make it a layer toggle, like caps lock is a capitalization toggle key. - -Here are some other keymaps for inspiration and ideas: -- The [Ferris default](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/keymaps/default) uses more advanced features as it has far fewer keys to work with. -- The [Miryoku](https://github.com/manna-harbour/miryoku/tree/master/docs/reference) keymap ensures that all modifiers are comfortably available with each character key. -- The [Kyria default](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/default) has different keymap choices and a couple more keys. - -A good metaphor is to think of your keymap as a bonsai tree that you tweak slightly over time - in response to ideas of how it might serve you better. - - -## Why no keymap.c - -Via and the online configurator provide straightforward visual ways to work with a simple layout, - and both use a .json keymap format. -So this default ```keymap.json``` was created with the online configurator - and formatted for easier reading and editing. - -If you wish, you can edit the ```keymap.json``` directly in a text editor, optionally use the below ```json2hill.py``` to restore the spacing, and then compile and flash it. - -Or, you can use the graphical configurator to edit the keymap. To do that: - -- Open the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/LAYOUT) -- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/keymaps/default/keymap.json``` -- Make the changes you wish to the layout -- Save the keymap using the green down arrow button. -- Copy those changes back into your QMK repository and reformat for easy reading using the format script: -``` -./keyboards/handwired/hillside/0_1/keymaps/json2hill.py --input <Your download directory>/default.json > ./keyboards/handwired/hillside/0_1/keymaps/default/keymap.json -``` - You may need to make that script executable with ```chmod +x```. After your keymap is safely copied and formated, you may want to remove the keymap from your download directory so later downloads will automatically receive the same file name. - -After either method of editing, compile and flash the keymap as usual. - -You can combine a .json based keymap with more advanced features specified in .c files - with a bit more complexity. -For example, see -[pierrec83's Kyria map](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/pierrec83). diff --git a/keyboards/handwired/hillside/48/48.c b/keyboards/handwired/hillside/48/48.c new file mode 100644 index 0000000000..a1d2c2f6e4 --- /dev/null +++ b/keyboards/handwired/hillside/48/48.c @@ -0,0 +1,4 @@ +// Copyright 2022 Michael McCoyd (@mmccoyd) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "48.h" diff --git a/keyboards/handwired/hillside/0_1/0_1.h b/keyboards/handwired/hillside/48/48.h index 0aeefdf630..65e1aaee30 100644 --- a/keyboards/handwired/hillside/0_1/0_1.h +++ b/keyboards/handwired/hillside/48/48.h @@ -1,4 +1,4 @@ -// Copyright 2021 Michael McCoyd (@mmccoyd) +// Copyright 2022 Michael McCoyd (@mmccoyd) // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/handwired/hillside/0_1/config.h b/keyboards/handwired/hillside/48/config.h index c83b23d0e8..c83b23d0e8 100644 --- a/keyboards/handwired/hillside/0_1/config.h +++ b/keyboards/handwired/hillside/48/config.h diff --git a/keyboards/handwired/hillside/0_1/info.json b/keyboards/handwired/hillside/48/info.json index 7e128d5191..2325c2d8d3 100644 --- a/keyboards/handwired/hillside/0_1/info.json +++ b/keyboards/handwired/hillside/48/info.json @@ -2,7 +2,7 @@ "manufacturer": "mmccoyd", "maintainer": "mmccoyd", - "keyboard_name": "Hillside", + "keyboard_name": "Hillside48", "url": "http://github.com/mmccoyd/hillside/", "tags": ["split", "column stagger", "choc v1", "choc spaced" ], @@ -44,7 +44,7 @@ "LAYOUT": { "layout": [ - {"label": "Tab", "x": 0, "y": 0.93}, + {"label": "`", "x": 0, "y": 0.93}, {"label": "Q", "x": 1, "y": 0.93}, {"label": "W", "x": 2, "y": 0.31}, {"label": "E", "x": 3, "y": 0}, @@ -59,7 +59,7 @@ {"label": "Backspace", "x": 14.5, "y": 0.93}, - {"label": "Ctrl", "x": 0, "y": 1.93}, + {"label": "Tab", "x": 0, "y": 1.93}, {"label": "A", "x": 1, "y": 1.93}, {"label": "S", "x": 2, "y": 1.31}, {"label": "D", "x": 3, "y": 1}, @@ -71,7 +71,7 @@ {"label": "K", "x": 11.5, "y": 1}, {"label": "L", "x": 12.5, "y": 1.31}, {"label": ";", "x": 13.5, "y": 1.93}, - {"label": "'", "x": 14.5, "y": 1.93}, + {"label": "Enter", "x": 14.5, "y": 1.93}, {"label": "Shift", "x": 0, "y": 2.93}, @@ -80,9 +80,9 @@ {"label": "C", "x": 3, "y": 2}, {"label": "V", "x": 4, "y": 2.28}, {"label": "B", "x": 5, "y": 2.42}, - {"label": "`", "x": 6, "y": 2.78}, + {"label": "Esc", "x": 6, "y": 2.78}, - {"label": "Esc", "x": 8.5, "y": 2.78}, + {"label": "Caps", "x": 8.5, "y": 2.78}, {"label": "N", "x": 9.5, "y": 2.42}, {"label": "M", "x": 10.5, "y": 2.28}, {"label": ",", "x": 11.5, "y": 2}, @@ -91,18 +91,18 @@ {"label": "Shift", "x": 14.5, "y": 2.93}, - {"label": "Enter", "x": 2, "y": 3.31}, + {"label": "Ctrl", "x": 2, "y": 3.31}, {"label": "Gui", "x": 3.5, "y": 3.28}, {"label": "Alt", "x": 4.5, "y": 3.42}, - {"label": "Num", "x": 5.5, "y": 3.78}, - {"label": "Nav", "x": 6.5, "y": 4.14}, + {"label": "Sym", "x": 5.5, "y": 3.78}, + {"label": "Shift", "x": 6.5, "y": 4.14}, - {"label": "Sym", "x": 8, "y": 4.14}, + {"label": "Nav", "x": 8, "y": 4.14}, {"label": "Space", "x": 9, "y": 3.78}, {"label": "Alt", "x": 10, "y": 3.42}, {"label": "Gui", "x": 11, "y": 3.28}, - {"label": "App", "x": 12.5, "y": 3.31} + {"label": "'", "x": 12.5, "y": 3.31} ] } } diff --git a/keyboards/handwired/hillside/48/keymaps/default/config.h b/keyboards/handwired/hillside/48/keymaps/default/config.h new file mode 100644 index 0000000000..1f71d42e67 --- /dev/null +++ b/keyboards/handwired/hillside/48/keymaps/default/config.h @@ -0,0 +1,9 @@ +// Copyright 2022 Michael McCoyd (@mmccoyd) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Some boards have issues detecting handedness using the vbus voltage, +// such as Elite-C v3, but not v3.1 on, and apparently some ProMicro boards. +// For those boards, use usb detection instead. +// #define SPLIT_USB_DETECT diff --git a/keyboards/handwired/hillside/48/keymaps/default/keymap.json b/keyboards/handwired/hillside/48/keymaps/default/keymap.json new file mode 100644 index 0000000000..364ab726a0 --- /dev/null +++ b/keyboards/handwired/hillside/48/keymaps/default/keymap.json @@ -0,0 +1,88 @@ +{ "version": 1, + "notes": "", + "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", + "keyboard": "handwired/hillside/48", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + ["KC_GRV" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T", + "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G", + "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "KC_ENT", + + "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_ESC", + "CAPS_WORD" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_RSFT", + + "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)", + "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT" + + ], + ["KC_GRV" , "KC_QUOT" , "KC_COMM", "KC_DOT" , "KC_P" , "KC_Y", + "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I", + "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT", + + "KC_LSFT" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_ESC", + "CAPS_WORD" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT", + + "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)", + "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_SLSH" + + ], + ["KC_GRV" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B", + "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G", + "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT", + + "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_ESC", + "CAPS_WORD" , "KC_K" , "KC_H" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_RSFT", + + "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)", + "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT" + + ], + ["KC_HOME" , "KC_EXLM" , "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_CIRC" , "KC_AMPR" , "KC_ASTR", "KC_LPRN", "KC_RPRN" , "KC_DEL", + + "KC_END" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT" , "KC_INS", + "KC_LBRC" , "KC_RBRC" , "KC_MINS", "KC_EQL" , "KC_BSLS" , "KC_TRNS", + + "KC_LSFT" , "KC_NO" , "KC_VOLD", "KC_MUTE", "KC_VOLU" , "KC_MPLY" , "OSM(MOD_RALT)", + "KC_APP" , "KC_LCBR" , "KC_RCBR", "KC_UNDS", "KC_PLUS" , "KC_PIPE" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "OSM(MOD_LSFT)", + "MO(5)" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL" + + ], + ["LCTL(KC_X)", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5", + "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_BSPC", + + "LCTL(KC_C)", "KC_LEFT" , "KC_DOWN", "KC_UP" , "KC_RGHT" , "LCTL(KC_V)", + "KC_PGUP" , "KC_RSFT" , "KC_RCTL", "KC_LALT", "KC_RGUI" , "KC_PGDN", + + "KC_LSFT" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "LCTL(KC_Z)", + "LCTL(KC_Y)", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "MO(5)" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL" + + ], + ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP" , "CG_SWAP", + "KC_NO" , "KC_F11" , "KC_F12" , "KC_PSCR", "KC_NO" , "KC_NO", + + "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "AG_NORM" , "CG_NORM", + "RGB_MOD" , "RGB_VAI" , "RGB_HUI", "RGB_SAI", "KC_NO" , "KC_NO", + + "KC_NO" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT" , "KC_NO" , "KC_NO", + "RGB_TOG" , "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD" , "KC_NO" , "QK_BOOT", + + "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS", "KC_NO", + "KC_TRNS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" + + ] + ], + "author": "@mmccoyd" +} diff --git a/keyboards/handwired/hillside/48/keymaps/default/readme.md b/keyboards/handwired/hillside/48/keymaps/default/readme.md new file mode 100644 index 0000000000..9bf294eff0 --- /dev/null +++ b/keyboards/handwired/hillside/48/keymaps/default/readme.md @@ -0,0 +1,159 @@ +# Default Keymap + +For easier initial use, this keymap follows the layout of more standard keyboards where possible. It is a starting point for you to tweak over time to suit your preferences better. You can easily customize it with the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/48/LAYOUT). + +Some of its key features are: +- Numbers and symbols along the top row of their layers for familiarity. +- Comfortable combination of modifier and function or symbol on the non-base layers + using modifiers on the home row of the symbol and number/function layers. +- A layer with both navigation and editing keys allows document editing without leaving the layer. +- QWERTY, Colemak-DH and Dvorak base layer options. + +## Base Layer + +``` +| ` | Q | W | E | R | T |---------------------------| Y | U | I | O | P | BKSPC | +| TAB | A | S | D | F | G |---------------------------| H | J | K | L | ; | ENTER | +| SHIFT | Z | X | C | V | B | ESC |---------------|CAPS | N | M | , | . | / | SHIFT | +--------------|CTRL |-----| GUI | ALT | Sym |SHIFT|---| Nav |SPACE| ALT | GUI |-----| ' |-------------- +``` + +The base layer provides a very standard key layout with five differences: + +- Numbers, functions and most symbols are accessed with number and symbol shift keys. +- Escape is on the left thumb. +- The left thumb has a shift key that affects the next key pressed. So to get 'A', press and release the thumb shift key, press 'a'. You can also hold the key down, and it will work like a standard shift key. There are still standard shift keys at either end of the keyboard. +- The right upper thumb turns on a mode that capitalizes all letters until something other than a letter, digit, dash, underscore, delete or backspace is typed. The caps word mode also times out after five seconds of no key presses. +- The Menu and AltGr keys are on a layer. + +The default layout is QWERTY with alternatives of Dvorak and Colemak-DH, and the alt/option and the win/command key locations are swappable for windows or mac. + + +<details> +<summary>Details of Dvorak and Colemak-DH</summary> +The Dvorak and Colemak-DH base layers + have identical non-alpha and non-symbol keys as the QWERTY base layer. + +``` +Dvorak +| ` | ' | , | . | P | Y |---------------------------| F | G | C | R | L | BKSPC | +| TAB | A | O | E | U | I |---------------------------| D | H | T | N | S | ENTER | +| SHIFT | ; | Q | J | K | X | ESC |---------------|CAPS | B | M | W | V | Z | SHIFT | +--------------|CTRL |-----| GUI | ALT | Sym |SHIFT|---| Nav |SPACE| ALT | GUI |-----| / |-------------- + +Colemak-DH +| ` | Q | W | F | P | B |---------------------------| J | L | U | Y | ; | BKSPC | +| TAB | A | R | S | T | G |---------------------------| M | N | E | I | O | ENTER | +| SHIFT | Z | X | C | D | V | ESC |---------------|CAPS | K | H | , | . | / | SHIFT | +--------------|CTRL |-----| GUI | ALT | Sym |SHIFT|---| Nav |SPACE| ALT | GUI |-----| ' |-------------- +``` +</details> + +## Symbol and Media Layer + +``` +| HOME | ! | @ | # | $ | % |---------------------------| ^ | & | * | ( | ) | DEL | +| END | GUI | ALT |CTRL |SHIFT| INS |---------------------------| [ | ] | - | = | \ | ENTER | +| SHIFT | |VOL- |MUTE |VOL+ |PLAY |OSM ALT |------------|MENU | { | } | _ | + | | | SHIFT | +--------------|CTRL |-----| GUI | ALT | *** |SHIFT|---| Adj |SPACE| ALT | GUI |-----|CTRL |-------------- +``` +Holding down the SYM key accesses the symbol layer: + +- The symbols not present on the base layer are along the top row and right side, similar to a full-size keyboard. +- Duplicates of the modifier keys are along the left home keys. This allows a very comfortable combination of any set of modifiers plus a key on the right side of the board. +- Forward delete is on the upper right, taking backspace's place. +- The Windows OS application menu key is on the upper right thumb. +- The AltGr key affects the next key pressed so that it can combine with a key on any layer. It changes the meaning of the next key pressed after the AltGr key is pressed and released. For example, to do AltGr-h: press SYM, press and release AltGr, release SYM, press and release h. + +## Navigation, Editing, Number and Function Layer + +``` +| CUT | 1 | 2 | 3 | 4 | 5 |---------------------------| 6 | 7 | 8 | 9 | 0 | BSPC | +| COPY |LEFT |DOWN | UP |RIGHT|PASTE|---------------------------|PG_UP|SHIFT|CTRL | ALT | GUI | PG_DN | +| SHIFT | F1 | F2 | F3 | F4 | F5 |UNDO |---------------|REDO | F6 | F7 | F8 | F9 | F10 | SHIFT | +--------------|CTRL |-----| GUI | ALT | Adj |SHIFT|---| *** |SPACE| ALT | GUI |-----|CTRL |-------------- +``` +Holding down the Nav/Edit key accesses the navigation, editing, number and function layer: + +- Numbers are along the top row, and function keys are on the bottom row. +- The arrow keys on the left can be combined with the home row modifiers on the right to easily move around and select text, which can then be cut, copied and pasted. + + +## Adjust Layer +``` +| |QWERT|DVORK|COLMK|AG_SWAP|CTR_SWAP|----------------------| | F11 | F12 |PR_SCR| | | +| | | | |AG_NORM|CTR_NORM|----------------------|MOD+ |BRI+ |HUE+ |SAT+ | | | +| | GUI | ALT |CTRL |SHIFT| | |--------------|RGBTOG|MOD- |BRI- |HUE- |SAT- | | BOOT | +--------------| |-----| | | *** | |---| *** | | | |-----| |-------------- +``` +Simultaneously holding down the Sym and Nav/Edit keys enables keys to adjust keyboard settings: + +- The base layer can be set to QWERTY, Colemak-DH or Dvorak, although the keyboard reverts to QWERTY each time it is plugged in. +- Alt/option and GUI/command can be swapped for mac users or restored to the windows norm. +- The backlight LEDs can be enabled, disabled, and controlled. +- BOOT allows loading new firmware, such as for keymap changes. +- The remaining Fn keys are here with modifiers to use with them. + +## Make it Yours + +If you are coming from a traditional keyboard, + with a row-staggered layout and a large set of physical keys, + learning to use a column staggered (ergo) and layer-based keyboard, + which uses layers instead of finger reaches to access numbers, symbols and functions, + will be an adjustment for your muscle memory and your mental keyboard map. +This default layout tries to simplify that adjustment by keeping things in the expected spots when possible. + +Yet this layout is only a decent compromise and is not optimal for each user. +The online configurator makes it easy to tweak this layout to your needs. +You can add additional layers or completely switch around what these do. + +A good metaphor is to think of your keymap as a bonsai tree that you tweak slightly over time + in response to ideas of how it might serve you better. + +Some changes you might consider making: +- If you are on a mac, switch the editing keys from ctrl-x to cmd-x. +- Change the shift keys to one-shot shift keys, + where pressing and releasing them shifts the next key pressed. + That is much easier on your hands than holding them down. + Yet, they can still be held as usual if desired. +- Instead of holding down the thumb key to keep the symbol layer active, + you could use a one-shot layer key. + One-shot modifiers are likely less stress on your hands and may even be faster. + You would still be able to hold it down instead. + +Here are some other keymaps for inspiration and ideas: +- The [Ferris default](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/keymaps/default) uses more advanced features as it has far fewer keys. +- The [Miryoku](https://github.com/manna-harbour/miryoku/tree/master/docs/reference) keymap ensures that all modifiers are comfortably available with each character key. +- The [Kyria default](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/default) has different keymap choices and a couple more keys. + + + +## Why no keymap.c + +The online configurator provides a straightforward visual way to work with a simple layout + and uses a .json keymap format. +So this default ```keymap.json``` was created with the online configurator + and formatted for easier reading and editing. + +If you wish, you can edit the ```keymap.json``` directly in a text editor, optionally use the below ```json2hill48.py``` to restore the spacing, and then compile and flash it. + +Or, you can use the graphical configurator to edit the keymap. To do that: + +- Open the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/48/LAYOUT) +- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/48/keymaps/default/keymap.json``` +- Make the changes you wish to the layout +- Save the keymap using the green down arrow button. +- Copy those changes back into your QMK repository and reformat for easy reading using the format script: +``` +./keyboards/handwired/hillside/48/keymaps/json2hill48.py \ + --input <Your download directory>/default.json \ + > ./keyboards/handwired/hillside/48/keymaps/default/keymap.json +``` + You may need to make that script executable with ```chmod +x```. After your keymap is safely copied and formatted, you may want to remove the keymap from your download directory so later downloads will automatically receive the same file name. + +After either method of editing, compile and flash the keymap as usual. + +You can combine a .json based keymap with more advanced features specified in .c files + with a bit more complexity. +For example, see +[pierrec83's Kyria map](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/pierrec83).
\ No newline at end of file diff --git a/keyboards/handwired/hillside/48/keymaps/default/rules.mk b/keyboards/handwired/hillside/48/keymaps/default/rules.mk new file mode 100644 index 0000000000..4711d2ff74 --- /dev/null +++ b/keyboards/handwired/hillside/48/keymaps/default/rules.mk @@ -0,0 +1 @@ +CAPS_WORD_ENABLE = yes diff --git a/keyboards/handwired/hillside/0_1/keymaps/json2hill.py b/keyboards/handwired/hillside/48/keymaps/json2hill48.py index a9971c0d78..c4fb5b1037 100755 --- a/keyboards/handwired/hillside/0_1/keymaps/json2hill.py +++ b/keyboards/handwired/hillside/48/keymaps/json2hill48.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -# Copyright 2020-2021 Pierre Viseu Chevalier, Michael McCoyd (@pierrechevalier83, @mmccoyd) +# Copyright 2020-2022 Pierre Viseu Chevalier, Michael McCoyd (@pierrechevalier83, @mmccoyd) # SPDX-License-Identifier: GPL-2.0-or-later -"""Pretty print keymap json in more readable row/side organized format.""" +"""Pretty print keymap json in more readable row/side organized format, based on ROW_SIZES.""" import argparse import json @@ -28,14 +28,20 @@ For example, for one layer: ], """ -indent_level=4 # number of spaces of initial indent per output line +# The structure of the keymap. Tuples describing row sizes. +# (<Keys upto and including (one-indexed) keycount x> <are in half rows of y>) +ROW_SIZES = [(24, 6), + (38, 7), + (48, 5), + ] + +### +### Below here should not need to changed for different keyboards +### -# The structure of the keymap -# [[Endpoint of sides with identical widths, side width, mapping to column],...] -KEYS_TO_COL = [[24, 6, lambda n: n % 6], - [38, 7, lambda n: (n - 24) % 7], - [48, 5, lambda n: (n - 38) % 5]] -LAST_KEY = KEYS_TO_COL[-1][0] - 1 +LAST_KEY = ROW_SIZES[-1][0] - 1 + +indent_level=4 # number of spaces of initial indent per output line def parse_cli(): parser = argparse.ArgumentParser(description='Hillside keymap formatter') @@ -54,12 +60,15 @@ class Column(NamedTuple): def get_col(key_index): """Return Column for key_index.""" - for keys, num_cols, col_fn in KEYS_TO_COL: - if key_index < keys: - col_num = col_fn(key_index) - return Column(col_num, + index_prior = 0 # index of last key in rows of the prior size + for keys_upto, num_cols in ROW_SIZES: # For row sizes from top + if key_index < keys_upto: # Find range key_index is in + col_num = (key_index - index_prior) % num_cols + return Column(col_num, # Return column plus side and row ends flags ends_side=col_num == num_cols - 1, - ends_row=(keys - 1 - key_index) % (2 * num_cols) == 0) + ends_row=(keys_upto - 1 - key_index) % + (2 * num_cols) == 0) + index_prior = keys_upto # Big O: row ranges * keys, but range is small def format_layers(layers): formatted = indent_level * " " + "\"layers\": [\n" @@ -133,4 +142,5 @@ def main(): keymap_json = json.loads(args.input.read()) print(format_keymap(keymap_json)) -main() +if __name__ == "__main__": + main() diff --git a/keyboards/handwired/hillside/0_1/keymaps/via/keymap.json b/keyboards/handwired/hillside/48/keymaps/via/keymap.json index a015f0241c..b4848a72ee 100644 --- a/keyboards/handwired/hillside/0_1/keymaps/via/keymap.json +++ b/keyboards/handwired/hillside/48/keymaps/via/keymap.json @@ -1,6 +1,6 @@ { "version": 1, "notes": "", - "keyboard": "handwired/hillside/0_1", + "keyboard": "handwired/hillside/48", "keymap": "via", "layout": "LAYOUT", "layers": [ diff --git a/keyboards/handwired/hillside/0_1/readme.md b/keyboards/handwired/hillside/48/readme.md index f1ff0f8506..ec6dffc0f2 100644 --- a/keyboards/handwired/hillside/0_1/readme.md +++ b/keyboards/handwired/hillside/48/readme.md @@ -2,7 +2,7 @@ ![hillside](https://imgur.com/XW0rX13.png) -[Hillside](https://github.com/mmccoyd/hillside) +[Hillside 48](https://github.com/mmccoyd/hillside) is a split ergonomic keyboard with 3x6+4+2 choc-spaced keys with aggressive column stagger, a longer thumb arc and a breakoff outer-pinky column. @@ -13,11 +13,11 @@ Make example for this keyboard (after setting up your build environment): - make handwired/hillside/0_1:default + make handwired/hillside/48:default Flashing example for this keyboard: - make handwired/hillside/0_1:default:flash + make handwired/hillside/48:default:flash ## Bootloader diff --git a/keyboards/handwired/hillside/0_1/rules.mk b/keyboards/handwired/hillside/48/rules.mk index 2501147ea8..2501147ea8 100644 --- a/keyboards/handwired/hillside/0_1/rules.mk +++ b/keyboards/handwired/hillside/48/rules.mk diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c index 333f8a769f..0ffc3e9d97 100644 --- a/keyboards/handwired/kbod/keymaps/default/keymap.c +++ b/keyboards/handwired/kbod/keymaps/default/keymap.c @@ -89,7 +89,7 @@ void matrix_init_user(void) { } void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + uint8_t layer = get_highest_layer(layer_state); if (layer) { PORTC |= _BV(PC7); } else { diff --git a/keyboards/handwired/onekey/config.h b/keyboards/handwired/onekey/config.h index f491d4d393..88c15806ce 100644 --- a/keyboards/handwired/onekey/config.h +++ b/keyboards/handwired/onekey/config.h @@ -42,6 +42,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define LOCKING_RESYNC_ENABLE #define TAPPING_TERM 500 +#define PERMISSIVE_HOLD /* * Feature disable options diff --git a/keyboards/handwired/onekey/elite_c/config.h b/keyboards/handwired/onekey/elite_c/config.h index f495a1c38b..a3f63983fe 100644 --- a/keyboards/handwired/onekey/elite_c/config.h +++ b/keyboards/handwired/onekey/elite_c/config.h @@ -30,3 +30,6 @@ #define RGB_CI_PIN B1 #define ADC_PIN F6 + +#define QMK_WAITING_TEST_BUSY_PIN F6 +#define QMK_WAITING_TEST_YIELD_PIN F7 diff --git a/keyboards/handwired/onekey/kb2040/config.h b/keyboards/handwired/onekey/kb2040/config.h new file mode 100644 index 0000000000..24a7d3a3eb --- /dev/null +++ b/keyboards/handwired/onekey/kb2040/config.h @@ -0,0 +1,29 @@ +// Copyright 2022 Stefan Kerkmann +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +#define PRODUCT Onekey Raspberry Pi RP2040 +#define MATRIX_COL_PINS \ + { GP4 } +#define MATRIX_ROW_PINS \ + { GP5 } +#define DEBUG_MATRIX_SCAN_RATE + +#define QMK_WAITING_TEST_BUSY_PIN GP8 +#define QMK_WAITING_TEST_YIELD_PIN GP9 + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25 +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define RGB_DI_PIN A1 + +// settings for the oled keyboard demo with Adafruit 0.91" OLED display on the Stemma QT port +#define OLED_DISPLAY_128X32 +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP12 +#define I2C1_SCL_PIN GP13 + diff --git a/keyboards/handwired/onekey/kb2040/mcuconf.h b/keyboards/handwired/onekey/kb2040/mcuconf.h new file mode 100644 index 0000000000..57e58e14d7 --- /dev/null +++ b/keyboards/handwired/onekey/kb2040/mcuconf.h @@ -0,0 +1,24 @@ +/* Copyright 2020 QMK + * + * 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include_next <mcuconf.h> + +#undef RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 TRUE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/handwired/onekey/kb2040/readme.md b/keyboards/handwired/onekey/kb2040/readme.md new file mode 100644 index 0000000000..54ea25a6a5 --- /dev/null +++ b/keyboards/handwired/onekey/kb2040/readme.md @@ -0,0 +1,10 @@ +# Adafruit KB2040 onekey with OLED + +To trigger keypress, short together pins *GP4* and *GP5*. + +Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk. + +## Supported Hardware + +* [Adafruit KB2040 - RP2040 Kee Boar](https://www.adafruit.com/product/5302) +* Optional [128x32 OLED display on the Stemma QT port](https://www.adafruit.com/product/4440) diff --git a/keyboards/handwired/onekey/kb2040/rules.mk b/keyboards/handwired/onekey/kb2040/rules.mk new file mode 100644 index 0000000000..624b331bf8 --- /dev/null +++ b/keyboards/handwired/onekey/kb2040/rules.mk @@ -0,0 +1,9 @@ +# MCU name +MCU = RP2040 +BOOTLOADER = rp2040 + +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +OPT_DEFS += -DHAL_USE_I2C=TRUE + diff --git a/keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h new file mode 100644 index 0000000000..0c75fa3044 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h @@ -0,0 +1,12 @@ +// Copyright 2022 Stefan Kerkmann +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#if !defined(QMK_WAITING_TEST_BUSY_PIN) +# define QMK_WAITING_TEST_BUSY_PIN A8 +#endif + +#if !defined(QMK_WAITING_TEST_YIELD_PIN) +# define QMK_WAITING_TEST_YIELD_PIN A9 +#endif diff --git a/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c new file mode 100644 index 0000000000..ecf67d3b3c --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c @@ -0,0 +1,47 @@ +// Copyright 2022 Stefan Kerkmann +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {LAYOUT_ortho_1x1(KC_A)}; + +#if defined(__AVR__) +# pragma message "AVR uses polled waiting by default, running theses tests will not show any difference" +static inline void chThdSleepMicroseconds(uint32_t us) { + wait_us(us); +} +#endif + +void keyboard_post_init_user(void) { + setPinOutput(QMK_WAITING_TEST_BUSY_PIN); + setPinOutput(QMK_WAITING_TEST_YIELD_PIN); +} + +static inline void wait_us_polling_with_strobe(uint32_t us) { + writePinHigh(QMK_WAITING_TEST_BUSY_PIN); + wait_us(us); + writePinLow(QMK_WAITING_TEST_BUSY_PIN); +} + +static inline void wait_us_yield_with_strobe(uint32_t us) { + writePinHigh(QMK_WAITING_TEST_YIELD_PIN); + chThdSleepMicroseconds(us); + writePinLow(QMK_WAITING_TEST_YIELD_PIN); +} + +static const uint32_t waiting_values[] = {0, 1, 5, 10, 25, 50, 100, 150, 200, 500, 1000}; + +void housekeeping_task_user(void) { + static uint32_t last_bench = 0; + if (timer_elapsed32(last_bench) > 500) { + for (int i = 0; i < (sizeof(waiting_values) / sizeof(waiting_values[0])); i++) { + wait_us_polling_with_strobe(waiting_values[i]); + wait_us(10); + } + for (int i = 0; i < (sizeof(waiting_values) / sizeof(waiting_values[0])); i++) { + wait_us_yield_with_strobe(waiting_values[i]); + wait_us(10); + } + last_bench = timer_read32(); + } +} diff --git a/keyboards/handwired/onekey/onekey.c b/keyboards/handwired/onekey/onekey.c index cbd67012ce..a29f9ea6d0 100644 --- a/keyboards/handwired/onekey/onekey.c +++ b/keyboards/handwired/onekey/onekey.c @@ -1 +1,12 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include "onekey.h" + +void keyboard_post_init_kb(void) { + debug_enable = true; + debug_matrix = true; + debug_keyboard = true; + debug_mouse = true; + keyboard_post_init_user(); +} diff --git a/keyboards/handwired/onekey/promicro/config.h b/keyboards/handwired/onekey/promicro/config.h index 9c8961d5ca..b9ab046eae 100644 --- a/keyboards/handwired/onekey/promicro/config.h +++ b/keyboards/handwired/onekey/promicro/config.h @@ -30,3 +30,6 @@ #define RGB_CI_PIN B1 #define ADC_PIN F6 + +#define QMK_WAITING_TEST_BUSY_PIN F6 +#define QMK_WAITING_TEST_YIELD_PIN F7 diff --git a/keyboards/handwired/onekey/rp2040/config.h b/keyboards/handwired/onekey/rp2040/config.h new file mode 100644 index 0000000000..f4e45a8981 --- /dev/null +++ b/keyboards/handwired/onekey/rp2040/config.h @@ -0,0 +1,22 @@ +// Copyright 2022 Stefan Kerkmann +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +#define PRODUCT Onekey Raspberry Pi RP2040 +#define MATRIX_COL_PINS \ + { GP4 } +#define MATRIX_ROW_PINS \ + { GP5 } +#define DEBUG_MATRIX_SCAN_RATE + +#define QMK_WAITING_TEST_BUSY_PIN GP8 +#define QMK_WAITING_TEST_YIELD_PIN GP9 + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25 +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define RGB_DI_PIN A1 diff --git a/keyboards/handwired/onekey/rp2040/readme.md b/keyboards/handwired/onekey/rp2040/readme.md new file mode 100644 index 0000000000..9014479f8d --- /dev/null +++ b/keyboards/handwired/onekey/rp2040/readme.md @@ -0,0 +1,12 @@ +# Raspberry Pi 2040 onekey + +To trigger keypress, short together pins *GP4* and *GP5*. + +Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk. + +## Supported Hardware + +* Raspberry Pi Pico +* SparkFun Pro Micro - RP2040 +* Adafruit KB2040 - RP2040 Kee Boar +* ...and many more RP2040 based development boards diff --git a/keyboards/handwired/onekey/rp2040/rules.mk b/keyboards/handwired/onekey/rp2040/rules.mk new file mode 100644 index 0000000000..646402d0bb --- /dev/null +++ b/keyboards/handwired/onekey/rp2040/rules.mk @@ -0,0 +1,3 @@ +# MCU name +MCU = RP2040 +BOOTLOADER = rp2040 diff --git a/keyboards/handwired/onekey/teensy_2/config.h b/keyboards/handwired/onekey/teensy_2/config.h index b83262ef05..437c597f29 100644 --- a/keyboards/handwired/onekey/teensy_2/config.h +++ b/keyboards/handwired/onekey/teensy_2/config.h @@ -29,3 +29,6 @@ #define RGB_DI_PIN F6 #define ADC_PIN F6 + +#define QMK_WAITING_TEST_BUSY_PIN F6 +#define QMK_WAITING_TEST_YIELD_PIN F7 diff --git a/keyboards/handwired/onekey/teensy_2pp/config.h b/keyboards/handwired/onekey/teensy_2pp/config.h index 886ad70cbf..691dddfd1a 100644 --- a/keyboards/handwired/onekey/teensy_2pp/config.h +++ b/keyboards/handwired/onekey/teensy_2pp/config.h @@ -29,3 +29,6 @@ #define RGB_DI_PIN F6 #define ADC_PIN F6 + +#define QMK_WAITING_TEST_BUSY_PIN F6 +#define QMK_WAITING_TEST_YIELD_PIN F7 diff --git a/keyboards/handwired/onekey/teensy_35/chconf.h b/keyboards/handwired/onekey/teensy_35/chconf.h new file mode 100644 index 0000000000..ee8312c526 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/chconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * 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 <http://www.gnu.org/licenses/>. + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/handwired/onekey/teensy_35/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_TIME_QUANTUM 20 + +#include_next <chconf.h> diff --git a/keyboards/handwired/onekey/teensy_35/config.h b/keyboards/handwired/onekey/teensy_35/config.h new file mode 100644 index 0000000000..a5f2c945c4 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/config.h @@ -0,0 +1,32 @@ +/* Copyright 2019 + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#pragma once + +// TODO: including this causes "error: expected identifier before '(' token" errors +//#include "config_common.h" + +#define PRODUCT Onekey Teensy 3.5 + +#define MATRIX_COL_PINS { D5 } // 20/A6 +#define MATRIX_ROW_PINS { B2 } // 19/A5 +#define UNUSED_PINS + +// i2c_master defines +#define I2C1_SCL_PIN B0 // 16/A2 on pinout +#define I2C1_SDA_PIN B1 // 17/A3 on pinout +#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 +#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 diff --git a/keyboards/handwired/onekey/teensy_35/halconf.h b/keyboards/handwired/onekey/teensy_35/halconf.h new file mode 100644 index 0000000000..6ac756d0f2 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/halconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * 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 <http://www.gnu.org/licenses/>. + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/handwired/onekey/teensy_35/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#include_next <halconf.h> diff --git a/keyboards/handwired/onekey/teensy_35/mcuconf.h b/keyboards/handwired/onekey/teensy_35/mcuconf.h new file mode 100644 index 0000000000..dc508eee7d --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/mcuconf.h @@ -0,0 +1,50 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +#define K60x_MCUCONF + +/* + * HAL driver system settings. + */ + +/* Select the MCU clocking mode below by enabling the appropriate block. */ + +/* PEE mode - 120MHz system clock driven by external crystal. */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE +#define KINETIS_PLLCLK_FREQUENCY 120000000UL // 120 MHz (RUN) +#define KINETIS_SYSCLK_FREQUENCY KINETIS_PLLCLK_FREQUENCY +#define KINETIS_BUSCLK_FREQUENCY 60000000UL +#define KINETIS_FLASHCLK_FREQUENCY 24000000UL // 24 MHz (RUN) + +#define KINETIS_CLKDIV1_OUTDIV1 1 // -> 0 +#define KINETIS_CLKDIV1_OUTDIV2 2 // -> 1 +#define KINETIS_CLKDIV1_OUTDIV4 5 // -> 4 + +/* + * SERIAL driver system settings. + */ +#define KINETIS_SERIAL_USE_UART0 TRUE + +/* + * USB driver settings + */ +#define KINETIS_USB_USE_USB0 TRUE +#define KINETIS_USB_USB0_IRQ_PRIORITY 5 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/handwired/onekey/teensy_35/rules.mk b/keyboards/handwired/onekey/teensy_35/rules.mk new file mode 100644 index 0000000000..8ebefd03f5 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/rules.mk @@ -0,0 +1,8 @@ +# MCU name +MCU = MK64FX512 + +# Bootloader selection +BOOTLOADER = halfkay + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c b/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c index 70a96fac9d..d785825332 100644 --- a/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c +++ b/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c @@ -343,9 +343,9 @@ qk_tap_dance_action_t tap_dance_actions[] = { [TD_PGUP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_HOME), [TD_PGDN_END] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_END), - [TD_Q_LrALT] = ACTION_TAP_DANCE_DUAL_ROLE(KC_Q, _ALT), - [TD_R_LrKey] = ACTION_TAP_DANCE_DUAL_ROLE(KC_R, _RAISE), - [TD_T_LrMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_T, _MOUSE), + [TD_Q_LrALT] = ACTION_TAP_DANCE_LAYER_MOVE(KC_Q, _ALT), + [TD_R_LrKey] = ACTION_TAP_DANCE_LAYER_MOVE(KC_R, _RAISE), + [TD_T_LrMS] = ACTION_TAP_DANCE_LAYER_MOVE(KC_T, _MOUSE), [TD_SHIFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,lshift_finished, lshift_reset), [TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_ENT), diff --git a/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c b/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c index b152503aaf..3734510f8c 100644 --- a/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c +++ b/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c @@ -279,9 +279,9 @@ qk_tap_dance_action_t tap_dance_actions[] = { [TD_PGUP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_HOME), [TD_PGDN_END] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_END), - [TD_Q_LrALT] = ACTION_TAP_DANCE_DUAL_ROLE(KC_Q, _ALT), - [TD_R_LrKey] = ACTION_TAP_DANCE_DUAL_ROLE(KC_R, _RAISE), - [TD_T_LrMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_T, _MOUSE), + [TD_Q_LrALT] = ACTION_TAP_DANCE_LAYER_MOVE(KC_Q, _ALT), + [TD_R_LrKey] = ACTION_TAP_DANCE_LAYER_MOVE(KC_R, _RAISE), + [TD_T_LrMS] = ACTION_TAP_DANCE_LAYER_MOVE(KC_T, _MOUSE), [TD_SHIFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,lshift_finished, lshift_reset), [TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_ENT), diff --git a/keyboards/handwired/ortho_brass/keymaps/default/keymap.c b/keyboards/handwired/ortho_brass/keymaps/default/keymap.c index 948a7bd1bc..f32529b6a7 100644 --- a/keyboards/handwired/ortho_brass/keymaps/default/keymap.c +++ b/keyboards/handwired/ortho_brass/keymaps/default/keymap.c @@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT_ortho_4x12_1x2uC( _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, - _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/handwired/prime_exl/keymaps/via/keymap.c b/keyboards/handwired/prime_exl/keymaps/via/keymap.c index 0e6802996d..b5b616d55b 100644 --- a/keyboards/handwired/prime_exl/keymaps/via/keymap.c +++ b/keyboards/handwired/prime_exl/keymaps/via/keymap.c @@ -87,7 +87,7 @@ void led_set_user(uint8_t usb_led) { //function for layer indicator LED layer_state_t layer_state_set_user(layer_state_t state) { - if (biton32(state) == 1) { + if (get_highest_layer(state) == 1) { writePinHigh(C6); } else { writePinLow(C6); diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c index 1903b2f9ba..77f83361e6 100644 --- a/keyboards/handwired/promethium/keymaps/default/keymap.c +++ b/keyboards/handwired/promethium/keymaps/default/keymap.c @@ -529,7 +529,7 @@ void led_reset(void) { } void led_set_default_layer_indicator(void) { - uint8_t default_layer = biton32(default_layer_state); + uint8_t default_layer = get_highest_layer(default_layer_state); if (default_layer == _QWERTY) { rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY); rgbsps_set(LED_IND_ALT, COLOR_BLANK); @@ -553,7 +553,7 @@ void led_set_layer_indicator(void) { rgbsps_set(LED_IND_GREEK, COLOR_BLANK); rgbsps_set(LED_IND_EMOJI, COLOR_BLANK); - uint8_t layer = biton32(layer_state); + uint8_t layer = get_highest_layer(layer_state); if (oldlayer == layer) { return; } @@ -1014,7 +1014,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { lshift = keyboard_report->mods & MOD_BIT(KC_LSFT); rshift = keyboard_report->mods & MOD_BIT(KC_RSFT); - layer = biton32(layer_state); + layer = get_highest_layer(layer_state); #ifdef DOUBLESPACE_LAYER_ENABLE // double-space: send space immediately if any other key depressed before space is released diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h index 0630fd43e3..1e5e8906ed 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/config.h +++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h @@ -2,12 +2,6 @@ #define PRIYADI_PROMETHIUM -/* bootmagic salt key */ -#define BOOTMAGIC_KEY_SALT KC_ESC - -/* skip bootmagic and eeconfig */ -#define BOOTMAGIC_KEY_SKIP KC_SPACE - #define RGBSPS_ENABLE #define RGBSPS_DEMO_ENABLE diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index 94b505aa2c..faa096ce08 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -532,7 +532,7 @@ void led_reset(void) { } void led_set_default_layer_indicator(void) { - uint8_t default_layer = biton32(default_layer_state); + uint8_t default_layer = get_highest_layer(default_layer_state); if (default_layer == _QWERTY) { rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY); rgbsps_set(LED_IND_ALT, COLOR_BLANK); @@ -556,7 +556,7 @@ void led_set_layer_indicator(void) { rgbsps_set(LED_IND_GREEK, COLOR_BLANK); rgbsps_set(LED_IND_EMOJI, COLOR_BLANK); - uint8_t layer = biton32(layer_state); + uint8_t layer = get_highest_layer(layer_state); if (oldlayer == layer) { return; } @@ -989,7 +989,7 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool * } #endif -uint32_t layer_state_set_kb(uint32_t state) +layer_state_t layer_state_set_kb(layer_state_t state) { // turn on punc layer if both fun & num are on if ((state & ((1UL<<_NUM) | (1UL<<_FUN))) == ((1UL<<_NUM) | (1UL<<_FUN))) { @@ -1017,7 +1017,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { lshift = keyboard_report->mods & MOD_BIT(KC_LSFT); rshift = keyboard_report->mods & MOD_BIT(KC_RSFT); - layer = biton32(layer_state); + layer = get_highest_layer(layer_state); #ifdef DOUBLESPACE_LAYER_ENABLE // double-space: send space immediately if any other key depressed before space is released diff --git a/keyboards/handwired/riblee_f401/keymaps/default/keymap.c b/keyboards/handwired/riblee_f401/keymaps/default/keymap.c index 6892c0fb49..bee4de5ede 100644 --- a/keyboards/handwired/riblee_f401/keymaps/default/keymap.c +++ b/keyboards/handwired/riblee_f401/keymaps/default/keymap.c @@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT_ortho_5x12( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, + _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL, _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, LCG_SWP, LCG_NRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/handwired/riblee_f411/keymaps/default/keymap.c b/keyboards/handwired/riblee_f411/keymaps/default/keymap.c index 2e9485d6b9..ff7e1117b8 100644 --- a/keyboards/handwired/riblee_f411/keymaps/default/keymap.c +++ b/keyboards/handwired/riblee_f411/keymaps/default/keymap.c @@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT_ortho_5x12( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, + _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL, _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, LCG_SWP, LCG_NRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c index 6b311a7ebb..6d5dc4a32a 100644 --- a/keyboards/handwired/rs60/keymaps/default/keymap.c +++ b/keyboards/handwired/rs60/keymaps/default/keymap.c @@ -155,7 +155,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT_ortho_5x12( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, + _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL, _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c index 8062aa711f..8d0631072f 100644 --- a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c +++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c @@ -193,7 +193,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, QK_BOOT, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL, + _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/config.h index ab46bc5276..5bfb17ee31 100644 --- a/keyboards/handwired/tractyl_manuform/4x6_right/config.h +++ b/keyboards/handwired/tractyl_manuform/4x6_right/config.h @@ -85,7 +85,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -/* PMW3360 Settings */ -#define PMW3360_CS_PIN B0 +/* PMW33XX Settings */ +#define PMW33XX_CS_PIN B0 #define POINTING_DEVICE_RIGHT diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h index d8d36e824c..ab72957b5c 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h @@ -47,5 +47,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define ENCODERS_PAD_B \ { C7 } -/* PMW3360 Settings */ -#define PMW3360_CS_PIN B6 +/* PMW33XX Settings */ +#define PMW33XX_CS_PIN B6 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h index f9a44587b0..809acdcd94 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h @@ -99,6 +99,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. // #define DEBUG_EEPROM_OUTPUT /* pmw3360 config */ -#define PMW3360_CS_PIN B9 -#define PMW3360_SPI_MODE 3 -#define PMW3360_SPI_DIVISOR 8 +#define PMW33XX_CS_PIN B9 +#define PMW33XX_SPI_DIVISOR 8 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h index 5f0350810c..0eb5b2a217 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h @@ -102,7 +102,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64 /* pmw3360 config */ -#define PMW3360_CS_PIN B0 -#define PMW3360_SPI_MODE 3 -#define PMW3360_SPI_DIVISOR 64 -#define PMW3360_FIRMWARE_UPLOAD_FAST +#define PMW33XX_CS_PIN B0 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h index 442d474920..6eb3186332 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h @@ -51,5 +51,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define ENCODERS_PAD_B \ { D4 } -/* PMW3360 Settings */ -#define PMW3360_CS_PIN B0 +/* PMW33XX Settings */ +#define PMW33XX_CS_PIN B0 diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c index 0ae49b6397..d3e2e02975 100644 --- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c @@ -159,10 +159,8 @@ void charybdis_set_pointer_dragscroll_enabled(bool enable) { maybe_update_pointing_device_cpi(&g_charybdis_config); } -void pointing_device_init_kb(void) { maybe_update_pointing_device_cpi(&g_charybdis_config); } - # ifndef CONSTRAIN_HID -# define CONSTRAIN_HID(value) ((value) < -127 ? -127 : ((value) > 127 ? 127 : (value))) +# define CONSTRAIN_HID(value) ((value) < XY_REPORT_MIN ? XY_REPORT_MIN : ((value) > XY_REPORT_MAX ? XY_REPORT_MAX : (value))) # endif // !CONSTRAIN_HID /** @@ -249,17 +247,17 @@ static bool has_shift_mod(void) { */ __attribute__((unused)) static void debug_charybdis_config_to_console(charybdis_config_t* config) { # ifdef CONSOLE_ENABLE - dprintf("(charybdis) process_record_kb: config = {\n" - "\traw = 0x%04X,\n" - "\t{\n" - "\t\tis_dragscroll_enabled=%b\n" - "\t\tis_sniping_enabled=%b\n" - "\t\tdefault_dpi=0x%02X (%ld)\n" - "\t\tsniping_dpi=0x%01X (%ld)\n" - "\t}\n" - "}\n", - config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config)); -# endif // CONSOLE_ENABLE + IGNORE_FORMAT_WARNING(dprintf("(charybdis) process_record_kb: config = {\n" + "\traw = 0x%04X,\n" + "\t{\n" + "\t\tis_dragscroll_enabled=%b\n" + "\t\tis_sniping_enabled=%b\n" + "\t\tdefault_dpi=0x%02X (%ld)\n" + "\t\tsniping_dpi=0x%01X (%ld)\n" + "\t}\n" + "}\n", + config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config))); +# endif // CONSOLE_ENABLE } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { @@ -339,6 +337,7 @@ void charybdis_config_sync_handler(uint8_t initiator2target_buffer_size, const v } void keyboard_post_init_kb(void) { + maybe_update_pointing_device_cpi(&g_charybdis_config); transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, charybdis_config_sync_handler); keyboard_post_init_user(); diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c index 288acbe108..2cd57db35f 100644 --- a/keyboards/handwired/traveller/keymaps/default/keymap.c +++ b/keyboards/handwired/traveller/keymaps/default/keymap.c @@ -219,7 +219,7 @@ void LayerLEDSet(uint8_t layr) { uint8_t old_layer = _QW; void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + uint8_t layer = get_highest_layer(layer_state); if (old_layer != layer) { LayerLEDSet(layer); diff --git a/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c b/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c index b618675295..50bbf232b5 100644 --- a/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c +++ b/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c @@ -9,7 +9,7 @@ void keyboard_pre_init_user(void) layer_state_t layer_state_set_user(layer_state_t state) { // Switch layer LED accordingly - switch (biton32(state)) { + switch (get_highest_layer(state)) { case 0: writePinHigh(B0); break; diff --git a/keyboards/handwired/uthol/rev3/config.h b/keyboards/handwired/uthol/rev3/config.h index 90880998b7..84ca3f0cc6 100644 --- a/keyboards/handwired/uthol/rev3/config.h +++ b/keyboards/handwired/uthol/rev3/config.h @@ -57,6 +57,7 @@ #define LOCKING_RESYNC_ENABLE #define TAPPING_TERM 500 +#define PERMISSIVE_HOLD // RGB Stuff #define RGB_DI_PIN B0 |