[Keyboard] Move Hillside out of handwired (#18751)
Co-authored-by: mmccoyd <mmccoyd@cs.berkley.edu>master
parent
66e4add972
commit
543a863766
|
@ -1,146 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
# 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, based on ROW_SIZES."""
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import json
|
|
||||||
import sys
|
|
||||||
from typing import NamedTuple
|
|
||||||
|
|
||||||
"""Print keymap json in row and side format, though as still re-readable json.
|
|
||||||
|
|
||||||
For example, for one layer:
|
|
||||||
|
|
||||||
["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_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G",
|
|
||||||
"KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN", "KC_QUOT",
|
|
||||||
|
|
||||||
"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_ENT" , "KC_LGUI", "KC_LALT", "MO(5)" , "MO(3)",
|
|
||||||
"MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_APP"
|
|
||||||
],
|
|
||||||
"""
|
|
||||||
|
|
||||||
# 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
|
|
||||||
###
|
|
||||||
|
|
||||||
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')
|
|
||||||
parser.add_argument("--input", type=argparse.FileType('r'),
|
|
||||||
default=sys.stdin, help="Input keymap "
|
|
||||||
"(json file produced by qmk configurator)")
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
class Column(NamedTuple):
|
|
||||||
"""Column number within keymap side, if it ends side, and ends row.
|
|
||||||
|
|
||||||
Position within a keyboard row runs from 0 to n and again 0 to n"""
|
|
||||||
num: int
|
|
||||||
ends_side: bool
|
|
||||||
ends_row: bool
|
|
||||||
|
|
||||||
def get_col(key_index):
|
|
||||||
"""Return Column for key_index."""
|
|
||||||
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_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"
|
|
||||||
|
|
||||||
# Find max key length per column
|
|
||||||
max_key_length = {}
|
|
||||||
for layer in layers:
|
|
||||||
for (index, keycode) in enumerate(layer):
|
|
||||||
col = get_col(index)
|
|
||||||
max_length = max_key_length.get(col.num)
|
|
||||||
if (not max_length) or len(keycode) > max_length:
|
|
||||||
max_key_length.update({col.num: len(keycode)})
|
|
||||||
# Format each layer
|
|
||||||
for (layer_index, layer) in enumerate(layers):
|
|
||||||
# Opening [
|
|
||||||
formatted += 2 * indent_level * " "
|
|
||||||
formatted += "["
|
|
||||||
|
|
||||||
# Split keys into pairs of left and right rows by key row length
|
|
||||||
for (index, keycode) in enumerate(layer):
|
|
||||||
col = get_col(index)
|
|
||||||
|
|
||||||
# Indent for rows past first
|
|
||||||
if col.num == 0 and index != 0:
|
|
||||||
formatted += (1 + 2 * indent_level) * " "
|
|
||||||
|
|
||||||
# Print key
|
|
||||||
formatted += json.dumps(keycode)
|
|
||||||
|
|
||||||
# End layer, or end side, or space to next key
|
|
||||||
if index == LAST_KEY:
|
|
||||||
formatted += "\n"
|
|
||||||
elif col.ends_side:
|
|
||||||
formatted += ",\n"
|
|
||||||
else:
|
|
||||||
n_spaces = max_key_length[get_col(index).num] - len(keycode)
|
|
||||||
formatted += n_spaces * " "
|
|
||||||
formatted += ", "
|
|
||||||
|
|
||||||
# Split groups of row sides
|
|
||||||
if col.ends_row:
|
|
||||||
formatted += "\n"
|
|
||||||
|
|
||||||
# Closing ] with , or without
|
|
||||||
formatted += 2 * indent_level * " "
|
|
||||||
if layer_index < len(layers) - 1:
|
|
||||||
formatted += "],\n"
|
|
||||||
else:
|
|
||||||
formatted += "]\n"
|
|
||||||
|
|
||||||
formatted += indent_level * " "
|
|
||||||
formatted += "]"
|
|
||||||
|
|
||||||
return formatted
|
|
||||||
|
|
||||||
def format_keymap(keymap_json):
|
|
||||||
formatted = "{"
|
|
||||||
for (index, k) in enumerate(keymap_json):
|
|
||||||
if k == "layers":
|
|
||||||
formatted += format_layers(keymap_json[k])
|
|
||||||
else:
|
|
||||||
formatted += f"{indent_level * ' '}{json.dumps(k)}: {json.dumps(keymap_json[k])}"
|
|
||||||
if index < len(keymap_json) - 1:
|
|
||||||
formatted += ","
|
|
||||||
formatted += "\n"
|
|
||||||
formatted += "}"
|
|
||||||
return formatted
|
|
||||||
|
|
||||||
def main():
|
|
||||||
args=parse_cli()
|
|
||||||
keymap_json = json.loads(args.input.read())
|
|
||||||
print(format_keymap(keymap_json))
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
|
@ -1,14 +0,0 @@
|
||||||
# Hillside
|
|
||||||
|
|
||||||
![hillside](https://imgur.com/4POduewh.png)
|
|
||||||
|
|
||||||
[Hillside](https://github.com/mmccoyd/hillside)
|
|
||||||
is a small family of split ergonomic keyboards.
|
|
||||||
Inside this directory is support for the two smaller models,
|
|
||||||
the 52 and 48.
|
|
||||||
|
|
||||||
* Keyboard Maintainer: [Michael McCoyd](https://github.com/mmccoyd)
|
|
||||||
* Hardware Supported:
|
|
||||||
* [Hillside 52](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/52): ProMicro/Elite-C and compatible
|
|
||||||
* [Hillside 48](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/48): ProMicro/Elite-C and compatible
|
|
||||||
* Hardware Availability: [https://github.com/mmccoyd/hillside](https://github.com/mmccoyd/hillside)
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Copyright 2022 Michael McCoyd (@mmccoyd)
|
// Copyright 2022 Michael McCoyd (@mmccoyd)
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "46.h"
|
#include "0_1.h"
|
||||||
|
|
||||||
// Keymatrix spots to ignore, as one signals handedness and others have no key
|
// Keymatrix spots to ignore, as one signals handedness and others have no key
|
||||||
const matrix_row_t matrix_mask[] = {
|
const matrix_row_t matrix_mask[] = {
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"processor": "atmega32u4",
|
||||||
|
"bootloader": "atmel-dfu",
|
||||||
|
|
||||||
|
"matrix_pins": {
|
||||||
|
"rows": ["C6", "D7", "E6", "B5"],
|
||||||
|
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
|
||||||
|
},
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
|
||||||
|
"usb": {
|
||||||
|
"vid": "0x4D4D",
|
||||||
|
"pid": "0x4846",
|
||||||
|
"device_version": "0.0.1"
|
||||||
|
},
|
||||||
|
|
||||||
|
"features": {
|
||||||
|
"encoder": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"rgblight": true
|
||||||
|
},
|
||||||
|
"split": {
|
||||||
|
"soft_serial_pin": "D2"
|
||||||
|
},
|
||||||
|
|
||||||
|
"rgblight": {
|
||||||
|
"led_count": 4,
|
||||||
|
"pin": "D3",
|
||||||
|
"split": true,
|
||||||
|
"hue_steps": 8,
|
||||||
|
"saturation_steps": 8,
|
||||||
|
"brightness_steps": 8
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,39 +7,6 @@
|
||||||
|
|
||||||
"tags": ["split", "column stagger", "choc v1", "choc spaced" ],
|
"tags": ["split", "column stagger", "choc v1", "choc spaced" ],
|
||||||
|
|
||||||
"processor": "atmega32u4",
|
|
||||||
"bootloader": "atmel-dfu",
|
|
||||||
|
|
||||||
"matrix_pins": {
|
|
||||||
"rows": ["C6", "D7", "E6", "B5"],
|
|
||||||
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
|
|
||||||
},
|
|
||||||
"diode_direction": "COL2ROW",
|
|
||||||
|
|
||||||
"usb": {
|
|
||||||
"vid": "0x4D4D",
|
|
||||||
"pid": "0x4846",
|
|
||||||
"device_version": "0.0.1"
|
|
||||||
},
|
|
||||||
|
|
||||||
"features": {
|
|
||||||
"encoder": true,
|
|
||||||
"extrakey": true,
|
|
||||||
"rgblight": true
|
|
||||||
},
|
|
||||||
"split": {
|
|
||||||
"soft_serial_pin": "D2"
|
|
||||||
},
|
|
||||||
|
|
||||||
"rgblight": {
|
|
||||||
"led_count": 4,
|
|
||||||
"pin": "D3",
|
|
||||||
"split": true,
|
|
||||||
"hue_steps": 8,
|
|
||||||
"saturation_steps": 8,
|
|
||||||
"brightness_steps": 8
|
|
||||||
},
|
|
||||||
|
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
|
@ -1,7 +1,7 @@
|
||||||
{ "version": 1,
|
{ "version": 1,
|
||||||
"notes": "",
|
"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",
|
"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/46",
|
"keyboard": "hillside/46",
|
||||||
"keymap": "default",
|
"keymap": "default",
|
||||||
"layout": "LAYOUT",
|
"layout": "LAYOUT",
|
||||||
"layers": [
|
"layers": [
|
|
@ -1,6 +1,6 @@
|
||||||
# Hillside 46 Default Keymap
|
# Hillside 46 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/46/LAYOUT).
|
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/#/hillside/46/LAYOUT).
|
||||||
|
|
||||||
Some of its key features are:
|
Some of its key features are:
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ If you are coming from a traditional keyboard,
|
||||||
This default layout tries to simplify that adjustment by keeping things in the expected spots when possible.
|
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.
|
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.
|
The online [configurator](https://config.qmk.fm/#/hillside/46/LAYOUT) makes it easy to tweak this layout to your needs.
|
||||||
You can add additional layers or completely switch around what these do.
|
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
|
A good metaphor is to think of your keymap as a bonsai tree that you tweak slightly over time
|
||||||
|
@ -110,8 +110,8 @@ If you wish, you can edit the ```keymap.json``` directly in a text editor, comp
|
||||||
|
|
||||||
Or, you can use the graphical configurator to edit the keymap. To do that:
|
Or, you can use the graphical configurator to edit the keymap. To do that:
|
||||||
|
|
||||||
- Open the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/46/LAYOUT)
|
- Open the [QMK configurator](https://config.qmk.fm/#/hillside/46/LAYOUT)
|
||||||
- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/46/keymaps/default/keymap.json```
|
- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/hillside/46/keymaps/default/keymap.json```
|
||||||
- Make the changes you wish to the layout
|
- Make the changes you wish to the layout
|
||||||
- Save the keymap using the green down arrow button.
|
- Save the keymap using the green down arrow button.
|
||||||
- Move the downloaded keymap back into your QMK repository
|
- Move the downloaded keymap back into your QMK repository
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
This layout is for those who prefer defining their layout in a keymap.c,
|
This layout is for those who prefer defining their layout in a keymap.c,
|
||||||
instead of graphically with a keymap.json.
|
instead of graphically with a keymap.json.
|
||||||
It is the same as the [default keymap.json layout](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/46/keymaps/default),
|
It is the same as the [default keymap.json layout](https://github.com/qmk/qmk_firmware/blob/master/keyboards/hillside/46/keymaps/default),
|
||||||
except for having only a QWERTY base layer.
|
except for having only a QWERTY base layer.
|
||||||
|
|
||||||
The make and flash commands are
|
The make and flash commands are
|
||||||
|
|
||||||
```
|
```
|
||||||
make handwired/hillside/46:default_dot_c
|
make hillside/46:default_dot_c
|
||||||
make handwired/hillside/46:default_doc_c:flash
|
make hillside/46:default_doc_c:flash
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -13,11 +13,11 @@
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make handwired/hillside/46:default
|
make hillside/46/0_1:default
|
||||||
|
|
||||||
Flashing example for this keyboard:
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
make handwired/hillside/46:default:flash
|
make hillside/46/0_1:default:flash
|
||||||
|
|
||||||
## Bootloader
|
## Bootloader
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
DEFAULT_FOLDER = hillside/46/0_1
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2022 Michael McCoyd (@mmccoyd)
|
// Copyright 2022 Michael McCoyd (@mmccoyd)
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "48.h"
|
#include "0_1.h"
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"processor": "atmega32u4",
|
||||||
|
"bootloader": "atmel-dfu",
|
||||||
|
|
||||||
|
"matrix_pins": {
|
||||||
|
"rows": ["D7", "E6", "B4", "B5"],
|
||||||
|
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
|
||||||
|
},
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
|
||||||
|
"usb": {
|
||||||
|
"vid": "0xFEED",
|
||||||
|
"pid": "0x67C0",
|
||||||
|
"device_version": "0.0.1"
|
||||||
|
},
|
||||||
|
|
||||||
|
"features": {
|
||||||
|
"encoder": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"rgblight": true
|
||||||
|
},
|
||||||
|
"split": {
|
||||||
|
"soft_serial_pin": "D2",
|
||||||
|
"main": "left"
|
||||||
|
},
|
||||||
|
|
||||||
|
"rgblight": {
|
||||||
|
"led_count": 5,
|
||||||
|
"pin": "D3",
|
||||||
|
"split": true,
|
||||||
|
"hue_steps": 8,
|
||||||
|
"saturation_steps": 8,
|
||||||
|
"brightness_steps": 8
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,40 +7,6 @@
|
||||||
|
|
||||||
"tags": ["split", "column stagger", "choc v1", "choc spaced" ],
|
"tags": ["split", "column stagger", "choc v1", "choc spaced" ],
|
||||||
|
|
||||||
"processor": "atmega32u4",
|
|
||||||
"bootloader": "atmel-dfu",
|
|
||||||
|
|
||||||
"matrix_pins": {
|
|
||||||
"rows": ["D7", "E6", "B4", "B5"],
|
|
||||||
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
|
|
||||||
},
|
|
||||||
"diode_direction": "COL2ROW",
|
|
||||||
|
|
||||||
"usb": {
|
|
||||||
"vid": "0xFEED",
|
|
||||||
"pid": "0x67C0",
|
|
||||||
"device_version": "0.0.1"
|
|
||||||
},
|
|
||||||
|
|
||||||
"features": {
|
|
||||||
"encoder": true,
|
|
||||||
"extrakey": true,
|
|
||||||
"rgblight": true
|
|
||||||
},
|
|
||||||
"split": {
|
|
||||||
"soft_serial_pin": "D2",
|
|
||||||
"main": "left"
|
|
||||||
},
|
|
||||||
|
|
||||||
"rgblight": {
|
|
||||||
"led_count": 5,
|
|
||||||
"pin": "D3",
|
|
||||||
"split": true,
|
|
||||||
"hue_steps": 8,
|
|
||||||
"saturation_steps": 8,
|
|
||||||
"brightness_steps": 8
|
|
||||||
},
|
|
||||||
|
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
|
@ -1,7 +1,7 @@
|
||||||
{ "version": 1,
|
{ "version": 1,
|
||||||
"notes": "",
|
"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",
|
"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",
|
"keyboard": "hillside/48",
|
||||||
"keymap": "default",
|
"keymap": "default",
|
||||||
"layout": "LAYOUT",
|
"layout": "LAYOUT",
|
||||||
"layers": [
|
"layers": [
|
|
@ -1,8 +1,9 @@
|
||||||
# Default Keymap
|
# Hillside 48 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).
|
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/#/hillside/48/LAYOUT).
|
||||||
|
|
||||||
Some of its key features are:
|
Some of its key features are:
|
||||||
|
|
||||||
- Numbers and symbols along the top row of their layers for familiarity.
|
- 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
|
- 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.
|
using modifiers on the home row of the symbol and number/function layers.
|
||||||
|
@ -97,20 +98,21 @@ Simultaneously holding down the Sym and Nav/Edit keys enables keys to adjust key
|
||||||
## Make it Yours
|
## Make it Yours
|
||||||
|
|
||||||
If you are coming from a traditional keyboard,
|
If you are coming from a traditional keyboard,
|
||||||
with a row-staggered layout and a large set of physical keys,
|
with a large set of physical keys,
|
||||||
learning to use a column staggered (ergo) and layer-based keyboard,
|
learning to use a column staggered (ergo) and layer-based keyboard,
|
||||||
which uses layers instead of finger reaches to access numbers, symbols and functions,
|
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.
|
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.
|
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.
|
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.
|
The online [configurator](https://config.qmk.fm/#/hillside/48/LAYOUT) makes it easy to tweak this layout to your needs.
|
||||||
You can add additional layers or completely switch around what these do.
|
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
|
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.
|
in response to ideas of how it might serve you better.
|
||||||
|
|
||||||
Some changes you might consider making:
|
Some changes you might consider making:
|
||||||
|
|
||||||
- If you are on a mac, switch the editing keys from ctrl-x to cmd-x.
|
- 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,
|
- Change the shift keys to one-shot shift keys,
|
||||||
where pressing and releasing them shifts the next key pressed.
|
where pressing and releasing them shifts the next key pressed.
|
||||||
|
@ -122,6 +124,7 @@ Some changes you might consider making:
|
||||||
You would still be able to hold it down instead.
|
You would still be able to hold it down instead.
|
||||||
|
|
||||||
Here are some other keymaps for inspiration and ideas:
|
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 [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 [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.
|
- 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.
|
||||||
|
@ -130,30 +133,33 @@ Here are some other keymaps for inspiration and ideas:
|
||||||
|
|
||||||
## Why no keymap.c
|
## Why no keymap.c
|
||||||
|
|
||||||
The online configurator provides a straightforward visual way to work with a simple layout
|
The online configurator provides a straightforward visual way
|
||||||
and uses a .json keymap format.
|
to work with a simple layout and uses a .json keymap format.
|
||||||
So this default ```keymap.json``` was created with the online configurator
|
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.
|
If you wish, you can edit the ```keymap.json``` directly in a text editor, compile it and flash it.
|
||||||
|
|
||||||
Or, you can use the graphical configurator to edit the keymap. To do that:
|
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)
|
- Open the [QMK configurator](https://config.qmk.fm/#/hillside/48/LAYOUT)
|
||||||
- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/48/keymaps/default/keymap.json```
|
- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/hillside/48/keymaps/default/keymap.json```
|
||||||
- Make the changes you wish to the layout
|
- Make the changes you wish to the layout
|
||||||
- Save the keymap using the green down arrow button.
|
- 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:
|
- Move the downloaded keymap back into your QMK repository
|
||||||
```
|
at the same location as above.
|
||||||
./keyboards/handwired/hillside/48/keymaps/json2hill48.py \
|
- Rename it back to keymap.json
|
||||||
--input <Your download directory>/default.json \
|
- Compile and flash the firmware.
|
||||||
> ./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.
|
||||||
You can combine a .json based keymap with more advanced features specified in .c files
|
|
||||||
with a bit more complexity.
|
|
||||||
For example, see
|
For example, see
|
||||||
[pierrec83's Kyria map](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/pierrec83).
|
[pierrec83's Kyria map](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/pierrec83).
|
||||||
|
|
||||||
|
### Pretty Printing
|
||||||
|
|
||||||
|
The QMK configurator's .json download has only one key per line,
|
||||||
|
so it is hard to visualize the keymap if editing manually.
|
||||||
|
If you want, the Hillside git repo has a pretty-printing script for the keymap.json file.
|
||||||
|
|
||||||
|
As with anything downloaded from the internet, you should take some steps to assure yourself that the script will not harm your computer nor steal your data. The script is short, so reading it should at least convince you it is rearranging and printing the keymap provided, not reading your banking data.
|
||||||
|
See the [Hillside wiki](https://github.com/mmccoyd/hillside/wiki) for the script.
|
|
@ -1,6 +1,6 @@
|
||||||
{ "version": 1,
|
{ "version": 1,
|
||||||
"notes": "",
|
"notes": "",
|
||||||
"keyboard": "handwired/hillside/48",
|
"keyboard": "hillside/48",
|
||||||
"keymap": "via",
|
"keymap": "via",
|
||||||
"layout": "LAYOUT",
|
"layout": "LAYOUT",
|
||||||
"layers": [
|
"layers": [
|
|
@ -13,11 +13,11 @@
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make handwired/hillside/48:default
|
make hillside/48/0_1:default
|
||||||
|
|
||||||
Flashing example for this keyboard:
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
make handwired/hillside/48:default:flash
|
make hillside/48/0_1:default:flash
|
||||||
|
|
||||||
## Bootloader
|
## Bootloader
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
DEFAULT_FOLDER = hillside/48/0_1
|
|
@ -1,7 +1,7 @@
|
||||||
// Copyright 2022 Michael McCoyd (@mmccoyd)
|
// Copyright 2022 Michael McCoyd (@mmccoyd)
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "52.h"
|
#include "0_1.h"
|
||||||
|
|
||||||
// Keymatrix spots to ignore, as one signals handedness and others have no key
|
// Keymatrix spots to ignore, as one signals handedness and others have no key
|
||||||
const matrix_row_t matrix_mask[] = {
|
const matrix_row_t matrix_mask[] = {
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"processor": "atmega32u4",
|
||||||
|
"bootloader": "atmel-dfu",
|
||||||
|
|
||||||
|
"matrix_pins": {
|
||||||
|
"rows": ["C6", "D7", "E6", "B4", "B5"],
|
||||||
|
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
|
||||||
|
},
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
|
||||||
|
"usb": {
|
||||||
|
"vid": "0x4D4D",
|
||||||
|
"pid": "0x4852",
|
||||||
|
"device_version": "0.0.1"
|
||||||
|
},
|
||||||
|
|
||||||
|
"features": {
|
||||||
|
"encoder": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"rgblight": true
|
||||||
|
},
|
||||||
|
"split": {
|
||||||
|
"soft_serial_pin": "D2"
|
||||||
|
},
|
||||||
|
|
||||||
|
"rgblight": {
|
||||||
|
"led_count": 5,
|
||||||
|
"pin": "D3",
|
||||||
|
"split": true,
|
||||||
|
"hue_steps": 8,
|
||||||
|
"saturation_steps": 8,
|
||||||
|
"brightness_steps": 8
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,39 +7,6 @@
|
||||||
|
|
||||||
"tags": ["split", "column stagger", "choc v1", "choc spaced" ],
|
"tags": ["split", "column stagger", "choc v1", "choc spaced" ],
|
||||||
|
|
||||||
"processor": "atmega32u4",
|
|
||||||
"bootloader": "atmel-dfu",
|
|
||||||
|
|
||||||
"matrix_pins": {
|
|
||||||
"rows": ["C6", "D7", "E6", "B4", "B5"],
|
|
||||||
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
|
|
||||||
},
|
|
||||||
"diode_direction": "COL2ROW",
|
|
||||||
|
|
||||||
"usb": {
|
|
||||||
"vid": "0x4D4D",
|
|
||||||
"pid": "0x4852",
|
|
||||||
"device_version": "0.0.1"
|
|
||||||
},
|
|
||||||
|
|
||||||
"features": {
|
|
||||||
"encoder": true,
|
|
||||||
"extrakey": true,
|
|
||||||
"rgblight": true
|
|
||||||
},
|
|
||||||
"split": {
|
|
||||||
"soft_serial_pin": "D2"
|
|
||||||
},
|
|
||||||
|
|
||||||
"rgblight": {
|
|
||||||
"led_count": 5,
|
|
||||||
"pin": "D3",
|
|
||||||
"split": true,
|
|
||||||
"hue_steps": 8,
|
|
||||||
"saturation_steps": 8,
|
|
||||||
"brightness_steps": 8
|
|
||||||
},
|
|
||||||
|
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
|
@ -1,7 +1,7 @@
|
||||||
{ "version": 1,
|
{ "version": 1,
|
||||||
"notes": "",
|
"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",
|
"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/52",
|
"keyboard": "hillside/52",
|
||||||
"keymap": "default",
|
"keymap": "default",
|
||||||
"layout": "LAYOUT",
|
"layout": "LAYOUT",
|
||||||
"layers": [
|
"layers": [
|
|
@ -1,6 +1,6 @@
|
||||||
# Hillside 52 Default Keymap
|
# Hillside 52 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/52/LAYOUT).
|
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/#/hillside/52/LAYOUT).
|
||||||
|
|
||||||
Some of its key features are:
|
Some of its key features are:
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ If you are coming from a traditional keyboard,
|
||||||
This default layout tries to simplify that adjustment by keeping things in the expected spots when possible.
|
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.
|
Yet this layout is only a decent compromise and is not optimal for each user.
|
||||||
The online [configurator](https://config.qmk.fm/#/handwired/hillside/52/LAYOUT) makes it easy to tweak this layout to your needs.
|
The online [configurator](https://config.qmk.fm/#/hillside/52/LAYOUT) makes it easy to tweak this layout to your needs.
|
||||||
You can add additional layers or completely switch around what these do.
|
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
|
A good metaphor is to think of your keymap as a bonsai tree that you tweak slightly over time
|
||||||
|
@ -130,8 +130,8 @@ If you wish, you can edit the ```keymap.json``` directly in a text editor, comp
|
||||||
|
|
||||||
Or, you can use the graphical configurator to edit the keymap. To do that:
|
Or, you can use the graphical configurator to edit the keymap. To do that:
|
||||||
|
|
||||||
- Open the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/52/LAYOUT)
|
- Open the [QMK configurator](https://config.qmk.fm/#/hillside/52/LAYOUT)
|
||||||
- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/52/keymaps/default/keymap.json```
|
- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/hillside/52/keymaps/default/keymap.json```
|
||||||
- Make the changes you wish to the layout
|
- Make the changes you wish to the layout
|
||||||
- Save the keymap using the green down arrow button.
|
- Save the keymap using the green down arrow button.
|
||||||
- Move the downloaded keymap back into your QMK repository
|
- Move the downloaded keymap back into your QMK repository
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
This layout is for those who prefer defining their layout in a keymap.c,
|
This layout is for those who prefer defining their layout in a keymap.c,
|
||||||
instead of graphically with a keymap.json.
|
instead of graphically with a keymap.json.
|
||||||
It is the same as the [default keymap.json layout](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/52/keymaps/default),
|
It is the same as the [default keymap.json layout](https://github.com/qmk/qmk_firmware/blob/master/keyboards/hillside/52/keymaps/default),
|
||||||
except for having only a QWERTY base layer.
|
except for having only a QWERTY base layer.
|
||||||
|
|
||||||
The make and flash commands are
|
The make and flash commands are
|
||||||
|
|
||||||
```
|
```
|
||||||
make handwired/hillside/52:default_dot_c
|
make hillside/52:default_dot_c
|
||||||
make handwired/hillside/52:default_doc_c:flash
|
make hillside/52:default_doc_c:flash
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -13,11 +13,11 @@
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make handwired/hillside/52:default
|
make hillside/52/0_1:default
|
||||||
|
|
||||||
Flashing example for this keyboard:
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
make handwired/hillside/52:default:flash
|
make hillside/52/0_1:default:flash
|
||||||
|
|
||||||
## Bootloader
|
## Bootloader
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
DEFAULT_FOLDER = hillside/52/0_1
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Hillside
|
||||||
|
|
||||||
|
| Hillside 52 and 48|![hillside](https://imgur.com/bvzLZz4h.png)|
|
||||||
|
|:-----------|:----------------|
|
||||||
|
| **Hillside 46** | ![hillside](https://imgur.com/pIVrKSgh.png)|
|
||||||
|
|
||||||
|
[Hillside](https://github.com/mmccoyd/hillside)
|
||||||
|
is a small family of split ergonomic keyboards.
|
||||||
|
Inside this directory is support for the three smaller models:
|
||||||
|
the 52, 48 and 46.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Michael McCoyd](https://github.com/mmccoyd)
|
||||||
|
* Hardware Supported:
|
||||||
|
* [Hillside 52](https://github.com/qmk/qmk_firmware/blob/master/keyboards/hillside/52): ProMicro/Elite-C and compatible
|
||||||
|
* [Hillside 48](https://github.com/qmk/qmk_firmware/blob/master/keyboards/hillside/48): ProMicro/Elite-C and compatible
|
||||||
|
* [Hillside 46/40](https://github.com/qmk/qmk_firmware/blob/master/keyboards/hillside/46): ProMicro/Elite-C and compatible
|
||||||
|
* Hardware Availability: [https://github.com/mmccoyd/hillside](https://github.com/mmccoyd/hillside)
|
Loading…
Reference in New Issue