[Keyboard] Move/Rename to Hillside48, simplify default keymap (#17210)

Co-authored-by: mmccoyd <mmccoyd@cs.berkley.edu>
This commit is contained in:
mmccoyd 2022-07-02 04:56:23 -07:00 committed by GitHub
parent a7179b188d
commit 2af2c5e109
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 302 additions and 348 deletions

View File

@ -1,4 +0,0 @@
// Copyright 2021 Michael McCoyd (@mmccoyd)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "0_1.h"

View File

@ -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"
}

View File

@ -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).

View File

@ -0,0 +1,4 @@
// Copyright 2022 Michael McCoyd (@mmccoyd)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "48.h"

View File

@ -1,4 +1,4 @@
// Copyright 2021 Michael McCoyd (@mmccoyd)
// Copyright 2022 Michael McCoyd (@mmccoyd)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once

View File

@ -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}
]
}
}

View File

@ -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

View File

@ -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"
}

View File

@ -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).

View File

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

View File

@ -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),
]
# 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
###
### Below here should not need to changed for different keyboards
###
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()

View File

@ -1,6 +1,6 @@
{ "version": 1,
"notes": "",
"keyboard": "handwired/hillside/0_1",
"keyboard": "handwired/hillside/48",
"keymap": "via",
"layout": "LAYOUT",
"layers": [

View File

@ -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