Compare commits
39 Commits
a1eb2131ab
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f9a63b6ec | ||
|
|
85ef39b09d | ||
|
|
ed89b195de | ||
|
|
39aae9ff1a | ||
|
|
6e4553fd6c | ||
|
|
9da08e457a | ||
|
|
fa0b4511dd | ||
|
|
28d5cd1696 | ||
|
|
037e47800d | ||
|
|
c83ff03a40 | ||
|
|
83c81826e3 | ||
|
|
7f9653c1c8 | ||
|
|
bafb547bda | ||
|
|
09336608b0 | ||
|
|
a0571297b9 | ||
|
|
7a7e5e6427 | ||
|
|
cc45563d13 | ||
|
|
08673ba71b | ||
|
|
e3d38d6b78 | ||
|
|
5761971659 | ||
|
|
6f63ed3707 | ||
|
|
252ccc25e9 | ||
|
|
4daeeaca06 | ||
|
|
32c0a30b3c | ||
|
|
8effc8315a | ||
|
|
486a6175e6 | ||
|
|
582440b96e | ||
|
|
3b0a2c0bc2 | ||
|
|
d97ef58e3c | ||
|
|
f155959cc8 | ||
|
|
4356804f56 | ||
|
|
fbb58a78b8 | ||
|
|
24796ee545 | ||
|
|
6b4d8d1bf2 | ||
|
|
4474f8f191 | ||
|
|
55d6de83c4 | ||
|
|
66778ae6ae | ||
|
|
614f8cc9ca | ||
|
|
9b35205b01 |
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
qmk --verbose generate-docs
|
||||
|
||||
- name: Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.2
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.3
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BASE_BRANCH: master
|
||||
|
||||
99
keyboards/drewkeys/mercury65/info.json
Normal file
99
keyboards/drewkeys/mercury65/info.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"keyboard_name": "mercury65",
|
||||
"maintainer": "Drewkeys",
|
||||
"manufacturer": "RocketKeyboards",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "atmel-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"url": "https://www.rocketkeyboards.com/collections/mercury65/products/gb-mercury65-keyboard",
|
||||
"usb": {
|
||||
"vid": "0xDE43",
|
||||
"pid": "0x1034",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B0", "B1", "B2", "B3", "B7", "D1", "D2", "D3", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5"],
|
||||
"rows": ["D5", "D4", "D6", "D0", "E6"]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "label":"`", "x":0, "y":0},
|
||||
{"matrix": [0, 1], "label":"!", "x":1, "y":0},
|
||||
{"matrix": [0, 2], "label":"@", "x":2, "y":0},
|
||||
{"matrix": [0, 3], "label":"#", "x":3, "y":0},
|
||||
{"matrix": [0, 4], "label":"$", "x":4, "y":0},
|
||||
{"matrix": [0, 5], "label":"%", "x":5, "y":0},
|
||||
{"matrix": [0, 6], "label":"^", "x":6, "y":0},
|
||||
{"matrix": [0, 7], "label":"&", "x":7, "y":0},
|
||||
{"matrix": [0, 8], "label":"*", "x":8, "y":0},
|
||||
{"matrix": [0, 9], "label":"(", "x":9, "y":0},
|
||||
{"matrix": [0, 10], "label":")", "x":10, "y":0},
|
||||
{"matrix": [0, 11], "label":"_", "x":11, "y":0},
|
||||
{"matrix": [0, 12], "label":"+", "x":12, "y":0},
|
||||
{"matrix": [0, 13], "label":"Del", "x":13, "y":0},
|
||||
{"matrix": [0, 14], "label":"Bsp", "x":14, "y":0},
|
||||
{"matrix": [1, 0], "label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"matrix": [1, 2], "label":"Q", "x":1.5, "y":1},
|
||||
{"matrix": [1, 3], "label":"W", "x":2.5, "y":1},
|
||||
{"matrix": [1, 4], "label":"E", "x":3.5, "y":1},
|
||||
{"matrix": [1, 5], "label":"R", "x":4.5, "y":1},
|
||||
{"matrix": [1, 6], "label":"T", "x":5.5, "y":1},
|
||||
{"matrix": [1, 7], "label":"Y", "x":6.5, "y":1},
|
||||
{"matrix": [1, 8], "label":"U", "x":7.5, "y":1},
|
||||
{"matrix": [1, 9], "label":"I", "x":8.5, "y":1},
|
||||
{"matrix": [1, 10], "label":"O", "x":9.5, "y":1},
|
||||
{"matrix": [1, 11], "label":"P", "x":10.5, "y":1},
|
||||
{"matrix": [1, 12], "label":"{", "x":11.5, "y":1},
|
||||
{"matrix": [1, 13], "label":"}", "x":12.5, "y":1},
|
||||
{"matrix": [1, 14], "label":"|", "x":13.5, "y":1, "w":1.5},
|
||||
{"matrix": [1, 16], "label":"PgUp", "x":15.5, "y":1},
|
||||
{"matrix": [2, 0], "label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"matrix": [2, 2], "label":"A", "x":1.75, "y":2},
|
||||
{"matrix": [2, 3], "label":"S", "x":2.75, "y":2},
|
||||
{"matrix": [2, 4], "label":"D", "x":3.75, "y":2},
|
||||
{"matrix": [2, 5], "label":"F", "x":4.75, "y":2},
|
||||
{"matrix": [2, 6], "label":"G", "x":5.75, "y":2},
|
||||
{"matrix": [2, 7], "label":"H", "x":6.75, "y":2},
|
||||
{"matrix": [2, 8], "label":"J", "x":7.75, "y":2},
|
||||
{"matrix": [2, 9], "label":"K", "x":8.75, "y":2},
|
||||
{"matrix": [2, 10], "label":"L", "x":9.75, "y":2},
|
||||
{"matrix": [2, 11], "label":":", "x":10.75, "y":2},
|
||||
{"matrix": [2, 12], "label":"@", "x":11.75, "y":2},
|
||||
{"matrix": [2, 13], "label":"ISO", "x":12.75, "y":2},
|
||||
{"matrix": [2, 14], "label":"Enter", "x":13.75, "y":2, "w":1.25},
|
||||
{"matrix": [2, 16], "label":"Home", "x":15.5, "y":2},
|
||||
{"matrix": [3, 0], "label":"Shift", "x":0, "y":3, "w":1.25},
|
||||
{"matrix": [3, 1], "label":"\\", "x":1.25, "y":3},
|
||||
{"matrix": [3, 2], "label":"Z", "x":2.25, "y":3},
|
||||
{"matrix": [3, 3], "label":"X", "x":3.25, "y":3},
|
||||
{"matrix": [3, 4], "label":"C", "x":4.25, "y":3},
|
||||
{"matrix": [3, 5], "label":"V", "x":5.25, "y":3},
|
||||
{"matrix": [3, 6], "label":"B", "x":6.25, "y":3},
|
||||
{"matrix": [3, 7], "label":"N", "x":7.25, "y":3},
|
||||
{"matrix": [3, 8], "label":"M", "x":8.25, "y":3},
|
||||
{"matrix": [3, 9], "label":"<", "x":9.25, "y":3},
|
||||
{"matrix": [3, 10], "label":">", "x":10.25, "y":3},
|
||||
{"matrix": [3, 11], "label":"?", "x":11.25, "y":3},
|
||||
{"matrix": [3, 13], "label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"matrix": [3, 14], "label":"End", "x":15.5, "y":3},
|
||||
{"matrix": [3, 16], "label":"\u2191", "x":14.25, "y":3.25},
|
||||
{"matrix": [4, 0], "label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"matrix": [4, 1], "label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"matrix": [4, 2], "label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
{"matrix": [4, 6], "x":3.75, "y":4, "w":6.25},
|
||||
{"matrix": [4, 10], "label":"AltGr", "x":10, "y":4, "w":1.25},
|
||||
{"matrix": [4, 11], "label":"Win", "x":11.25, "y":4, "w":1.25},
|
||||
{"matrix": [4, 13], "label":"\u2190", "x":13.25, "y":4.25},
|
||||
{"matrix": [4, 14], "label":"\u2193", "x":14.25, "y":4.25},
|
||||
{"matrix": [4, 15], "label":"\u2192", "x":15.25, "y":4.25}]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
45
keyboards/drewkeys/mercury65/keymaps/default/keymap.c
Normal file
45
keyboards/drewkeys/mercury65/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,45 @@
|
||||
/* Copyright 2023 Drewkeys
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Base https://i.imgur.com/viQdtbB.png */
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, KC_BSPC,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
44
keyboards/drewkeys/mercury65/keymaps/via/keymap.c
Normal file
44
keyboards/drewkeys/mercury65/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,44 @@
|
||||
/* Copyright 2023 Drewkeys
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Base https://i.imgur.com/viQdtbB.png */
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, KC_BSPC,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
1
keyboards/drewkeys/mercury65/keymaps/via/rules.mk
Normal file
1
keyboards/drewkeys/mercury65/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
23
keyboards/drewkeys/mercury65/readme.md
Normal file
23
keyboards/drewkeys/mercury65/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Mercury65
|
||||
|
||||

|
||||
|
||||
*65% Form Factor with a Separated Arrow Cluster used for Mercury65*
|
||||
|
||||
|
||||
* Keyboard Maintainer: [Drewkeys](https://github.com/drewpyun)
|
||||
* Hardware Supported: Made specifically for Mercury65, 65% hotswap supported
|
||||
* Hardware Availability: https://www.rocketkeyboards.com/collections/mercury65/products/gb-mercury65-keyboard
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make drewkeys/mercury65:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make drewkeys/mercury65:default:flash
|
||||
## Bootloader
|
||||
|
||||
Resetting Board: Press the button on the PCB next to the spacebar to soft reset the board to reflash (bootloader mode).
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
1
keyboards/drewkeys/mercury65/rules.mk
Normal file
1
keyboards/drewkeys/mercury65/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "GP17",
|
||||
"on_state": 1
|
||||
"on_state": 0
|
||||
},
|
||||
"rgblight": {
|
||||
"led_count": 2,
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
"rows": ["GP11", "GP12", "GP13", "GP1", "GP16"]
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "GP3",
|
||||
"caps_lock": "GP14",
|
||||
"on_state": 0
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "GP14",
|
||||
"pin": "GP3",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgblight": {
|
||||
|
||||
78
keyboards/mothwing/info.json
Normal file
78
keyboards/mothwing/info.json
Normal file
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"keyboard_name": "mothwing",
|
||||
"manufacturer": "Luana co.ltd.",
|
||||
"url": "",
|
||||
"maintainer": "tan-t",
|
||||
"usb": {
|
||||
"vid": "0x4D77",
|
||||
"pid": "0x0001",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3"],
|
||||
"rows": ["D4", "C6", "D7", "E6"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "D2"
|
||||
},
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 1.18},
|
||||
{"matrix": [0, 1], "x": 1, "y": 1.03},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.35},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.05},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0.1},
|
||||
|
||||
{"matrix": [4, 5], "x": 11.5, "y": 0.1},
|
||||
{"matrix": [4, 4], "x": 12.5, "y": 0.05},
|
||||
{"matrix": [4, 3], "x": 13.5, "y": 0},
|
||||
{"matrix": [4, 2], "x": 14.5, "y": 0.35},
|
||||
{"matrix": [4, 1], "x": 15.5, "y": 1.08},
|
||||
{"matrix": [4, 0], "x": 16.5, "y": 1.18},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2.18},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2.03},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1.35},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1.05},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1.1},
|
||||
|
||||
{"matrix": [5, 5], "x": 11.5, "y": 1.1},
|
||||
{"matrix": [5, 4], "x": 12.5, "y": 1.05},
|
||||
{"matrix": [5, 3], "x": 13.5, "y": 1},
|
||||
{"matrix": [5, 2], "x": 14.5, "y": 1.35},
|
||||
{"matrix": [5, 1], "x": 15.5, "y": 2.03},
|
||||
{"matrix": [5, 0], "x": 16.5, "y": 2.18},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3.18},
|
||||
{"matrix": [2, 1], "x": 1, "y": 3.03},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2.35},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2.05},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2.1},
|
||||
|
||||
{"matrix": [6, 5], "x": 11.5, "y": 2.1},
|
||||
{"matrix": [6, 4], "x": 12.5, "y": 2.05},
|
||||
{"matrix": [6, 3], "x": 13.5, "y": 2},
|
||||
{"matrix": [6, 2], "x": 14.5, "y": 2.35},
|
||||
{"matrix": [6, 1], "x": 15.5, "y": 3.03},
|
||||
{"matrix": [6, 0], "x": 16.5, "y": 3.18},
|
||||
|
||||
{"matrix": [3, 2], "x": 4, "y": 3.05},
|
||||
{"matrix": [3, 3], "x": 5, "y": 3.1},
|
||||
{"matrix": [3, 4], "x": 6, "y": 3.2, "w": 1.25},
|
||||
{"matrix": [3, 5], "x": 7.25, "y": 3.5},
|
||||
|
||||
{"matrix": [7, 5], "x": 9.25, "y": 3.5},
|
||||
{"matrix": [7, 4], "x": 10.25, "y": 3.2, "w": 1.25},
|
||||
{"matrix": [7, 3], "x": 11.5, "y": 3.1},
|
||||
{"matrix": [7, 2], "x": 12.5, "y": 3.05}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
72
keyboards/mothwing/keymaps/default/keymap.c
Normal file
72
keyboards/mothwing/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
|
||||
enum layer_number {
|
||||
_QWERTY,
|
||||
_RAISE,
|
||||
_LOWER,
|
||||
};
|
||||
|
||||
#define KC_L_SPC LT(_LOWER, KC_SPC) // lower
|
||||
#define KC_R_ENT LT(_RAISE, KC_ENT) // raise
|
||||
#define KC_G_JA LGUI_T(KC_LNG1) // cmd or win
|
||||
#define KC_G_EN LGUI_T(KC_LNG2) // cmd or win
|
||||
#define KC_C_BS LCTL_T(KC_BSPC) // ctrl
|
||||
#define KC_A_DEL ALT_T(KC_DEL) // alt
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT(
|
||||
//,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------.
|
||||
KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
|
||||
//|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------|
|
||||
KC_TAB , 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_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
|
||||
//`--------+--------+---------+--------+---------+--------/ \--------+---------+--------+---------+--------+--------'
|
||||
KC_A_DEL, KC_G_EN, KC_L_SPC, KC_C_BS, KC_C_BS, KC_R_ENT, KC_G_JA, KC_A_DEL
|
||||
// `----------+--------+---------+--------' `--------+---------+--------+---------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
|
||||
_______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, _______, _______, _______, _______,
|
||||
//`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
|
||||
_______, _______, _______, _______, _______, _______, _______, QK_BOOT
|
||||
// `--------+--------+--------+--------' `--------+--------+--------+--------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
|
||||
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
|
||||
//`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
|
||||
QK_BOOT , _______, _______, _______, _______, _______, _______, _______
|
||||
// `--------+--------+--------+--------' `--------+--------+--------+--------'
|
||||
),
|
||||
};
|
||||
72
keyboards/mothwing/keymaps/via/keymap.c
Normal file
72
keyboards/mothwing/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
|
||||
enum layer_number {
|
||||
_QWERTY,
|
||||
_RAISE,
|
||||
_LOWER
|
||||
};
|
||||
|
||||
#define KC_L_SPC LT(_LOWER, KC_SPC) // lower
|
||||
#define KC_R_ENT LT(_RAISE, KC_ENT) // raise
|
||||
#define KC_G_JA LGUI_T(KC_LNG1) // cmd or win
|
||||
#define KC_G_EN LGUI_T(KC_LNG2) // cmd or win
|
||||
#define KC_C_BS LCTL_T(KC_BSPC) // ctrl
|
||||
#define KC_A_DEL ALT_T(KC_DEL) // alt
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT(
|
||||
//,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------.
|
||||
KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
|
||||
//|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------|
|
||||
KC_TAB , 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_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
|
||||
//`--------+--------+---------+--------+---------+--------/ \--------+---------+--------+---------+--------+--------'
|
||||
KC_A_DEL, KC_G_EN, KC_L_SPC, KC_C_BS, KC_C_BS, KC_R_ENT, KC_G_JA, KC_A_DEL
|
||||
// `----------+--------+---------+--------' `--------+---------+--------+---------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
|
||||
_______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, _______, _______, _______, _______,
|
||||
//`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
|
||||
_______, _______, _______, _______, _______, _______, _______, QK_BOOT
|
||||
// `--------+--------+--------+--------' `--------+--------+--------+--------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
|
||||
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
|
||||
//`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
|
||||
QK_BOOT , _______, _______, _______, _______, _______, _______, _______
|
||||
// `--------+--------+--------+--------' `--------+--------+--------+--------'
|
||||
)
|
||||
};
|
||||
1
keyboards/mothwing/keymaps/via/rules.mk
Normal file
1
keyboards/mothwing/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
23
keyboards/mothwing/readme.md
Normal file
23
keyboards/mothwing/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# MOTHWING
|
||||
|
||||
A split keyboard with 3x6 vertically staggered keys and 4 thumb keys.
|
||||
|
||||
* Keyboard Maintainer: [tan-t](https://github.com/tan-t)
|
||||
* Hardware Supported: MOTHWING PCB
|
||||
* Hardware Availability: currently unavailable. merch will be open around August 2023.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make mothwing:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make mothwing:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader by:
|
||||
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
0
keyboards/mothwing/rules.mk
Normal file
0
keyboards/mothwing/rules.mk
Normal file
100
keyboards/planck/keymaps/audax/audax.c
Normal file
100
keyboards/planck/keymaps/audax/audax.c
Normal file
@@ -0,0 +1,100 @@
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
// this is the style you want to emulate.
|
||||
|
||||
#include "planck.h"
|
||||
#include "backlight.h"
|
||||
#include "keymap_extras/keymap_neo2.h"
|
||||
#include "keymap_extras/keymap_german.h"
|
||||
#include "keymap_common.h"
|
||||
#include "timer.h"
|
||||
#include "action.h"
|
||||
#include "action_util.h"
|
||||
|
||||
// Max duration that counts as a tap (ms)
|
||||
#ifndef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
#endif
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _NE 0
|
||||
#define _RS 1
|
||||
#define _LW 2
|
||||
|
||||
#define NEO_L1_Y 1
|
||||
#define M_AT 1
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_NE] = { /* Neo 2 Soft */
|
||||
{KC_TAB, NEO_X, NEO_V, NEO_L, NEO_C, NEO_W, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_Y},
|
||||
{NEO_L1_L, NEO_U, NEO_I, NEO_A, NEO_E, NEO_O, NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R},
|
||||
{KC_LSFT, NEO_UE, NEO_OE, NEO_AE, NEO_P, NEO_Z, NEO_B, NEO_M, KC_COMM, KC_DOT, NEO_J, SFT_T(KC_ESC)},
|
||||
{KC_LGUI, KC_LALT, KC_PGUP, KC_PGDN, MO(_LW), KC_SPC, KC_ENT, KC_LCTL, KC_LALT, KC_DEL, KC_BSPC, MO(_RS)}
|
||||
},
|
||||
[_RS] = { /* RAISE */
|
||||
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS},
|
||||
{KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
|
||||
{KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_NE), KC_MNXT, KC_MPRV, RESET, KC_TRNS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLD, KC_VOLU, KC_TRNS}
|
||||
},
|
||||
[_LW] = { /* LOWER */
|
||||
{KC_TRNS, KC_PGUP, KC_DEL, KC_UP, KC_BSPC, KC_PGDN, KC_0, KC_1, KC_2, KC_3, NEO_SS, M(M_AT)},
|
||||
{KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN,KC_RIGHT, KC_END, KC_GRV, KC_4, KC_5, KC_6, LALT(KC_TAB), KC_TRNS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_PGDN, KC_TRNS, KC_7, KC_8, KC_9, LGUI(S(NEO_Q)), KC_TRNS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_INS)}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_LAYER_TAP_TOGGLE(_RS),
|
||||
[1] = ACTION_FUNCTION_TAP(NEO_L1_Y)
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
backlight_step();
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
case M_AT: // @
|
||||
if (record->event.pressed) {
|
||||
register_code(NEO_L1_L);
|
||||
return MACRO(DOWN(NEO_Y), END);
|
||||
} else {
|
||||
unregister_code(NEO_L1_L);
|
||||
return MACRO(UP(NEO_Y), END);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
|
||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch (id) {
|
||||
case NEO_L1_Y:
|
||||
if (record->event.pressed) {
|
||||
register_code(NEO_L1_R);
|
||||
} else {
|
||||
unregister_code(NEO_L1_R);
|
||||
if (record->tap.count != 0) {
|
||||
add_key(NEO_Y);
|
||||
send_keyboard_report();
|
||||
del_key(NEO_Y);
|
||||
unregister_code(NEO_Y);
|
||||
send_keyboard_report();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
1
keyboards/planck/keymaps/audax/rules.mk
Normal file
1
keyboards/planck/keymaps/audax/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
5
keyboards/planck/keymaps/audax_osx/config.h
Normal file
5
keyboards/planck/keymaps/audax_osx/config.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
// Tap/hold window for RSFT_T(KC_ESC) and the right Mod3 tap-for-y key.
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
130
keyboards/planck/keymaps/audax_osx/keymap.c
Normal file
130
keyboards/planck/keymaps/audax_osx/keymap.c
Normal file
@@ -0,0 +1,130 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_extras/keymap_neo2.h"
|
||||
|
||||
/*
|
||||
* audax_osx (Planck) - neo2 for macOS via the *software* neo2 keyboard layout.
|
||||
*
|
||||
* Planck counterpart of the ergodox `audax_osx` layout, and a modernised
|
||||
* rewrite of the old `planck/keymaps/audax` (which used the long-removed
|
||||
* fn_actions / action_get_macro API and no longer builds).
|
||||
*
|
||||
* The base layer and Mod3 send positional NE_* scancodes; the OS neo2 layout
|
||||
* (neo2-layout-osx .keylayout) produces the characters. Numbers, function keys
|
||||
* and the cursor block live on firmware layers (_RS / _LW) with real keycodes,
|
||||
* so they auto-repeat. See layouts/community/ergodox/audax_osx/readme.md for
|
||||
* the macOS / Karabiner setup.
|
||||
*
|
||||
* Mod3 (layer 3, symbols) is held on the '#' key (NE_L3R / KC_NUHS) on both
|
||||
* Mod3 positions - macOS intercepts CapsLock, so the canonical neo2 Mod3-left
|
||||
* (NE_L3L) is not used. The right Mod3 key taps to ss (neo2 sharp-s); '@' is
|
||||
* Mod3 + y.
|
||||
*/
|
||||
|
||||
enum planck_layers {
|
||||
_NE, // neo2 base (positional scancodes)
|
||||
_RS, // raise: numbers, function and media keys
|
||||
_LW // lower: cursor block, numbers, ss and shortcuts
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
NEO_L3R_SS = SAFE_RANGE, // right Mod3: hold = Mod3 ('#'), tap = ss (sharp-s)
|
||||
NEO_AT // @ (neo2 Mod3 + y)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* _NE: neo2 base
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | X | V | L | C | W | K | H | G | F | Q | Y |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | Mod3 | U | I | A | E | O | S | N | R | T | D |Mod3/ß |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | Shift| Ü | Ö | Ä | P | Z | B | M | , | . | J |Sft/Esc|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | GUI | Alt | PgUp | PgDn |Lower | Space| Enter| Ctrl | Alt | Del | Bksp |Raise |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NE] = LAYOUT_planck_grid(
|
||||
KC_TAB, NE_X, NE_V, NE_L, NE_C, NE_W, NE_K, NE_H, NE_G, NE_F, NE_Q, NE_Y,
|
||||
NE_L3R, NE_U, NE_I, NE_A, NE_E, NE_O, NE_S, NE_N, NE_R, NE_T, NE_D, NEO_L3R_SS,
|
||||
KC_LSFT, NE_UDIA, NE_ODIA, NE_ADIA, NE_P, NE_Z, NE_B, NE_M, NE_COMM, NE_DOT, NE_J, RSFT_T(KC_ESC),
|
||||
KC_LGUI, KC_LALT, KC_PGUP, KC_PGDN, MO(_LW), KC_SPC, KC_ENT, KC_LCTL, KC_LALT, KC_DEL, KC_BSPC, MO(_RS)
|
||||
),
|
||||
|
||||
/* _RS: raise - numbers, function keys, media
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | ->NE | Next | Prev | Boot | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | | | | | | | Play | Vol- | Vol+ | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RS] = LAYOUT_planck_grid(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_NE), KC_MNXT, KC_MPRV, QK_BOOT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, _______
|
||||
),
|
||||
|
||||
/* _LW: lower - cursor block (left), numbers (right), ss, shortcuts
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | PgUp | Del | Up | Bksp | PgDn | 0 | 1 | 2 | 3 | ß | @ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | Home | Left | Down | Right| End | ^ | 4 | 5 | 6 |A(Tab)| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | | | | | PgDn | | 7 | 8 | 9 |G(S(Q))| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | | | | | | | | | |S(Ins) |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LW] = LAYOUT_planck_grid(
|
||||
_______, KC_PGUP, KC_DEL, KC_UP, KC_BSPC, KC_PGDN, KC_0, KC_1, KC_2, KC_3, NE_SS, NEO_AT,
|
||||
_______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_GRV, KC_4, KC_5, KC_6, LALT(KC_TAB), _______,
|
||||
_______, _______, _______, _______, _______, KC_PGDN, _______, KC_7, KC_8, KC_9, LGUI(S(NE_Q)), _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, S(KC_INS)
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
// Tap/hold state for the right Mod3 key (tap = ss, hold = Mod3 / '#').
|
||||
static bool l3r_held = false;
|
||||
static bool l3r_used = false;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case NEO_L3R_SS:
|
||||
if (record->event.pressed) {
|
||||
register_code(NE_L3R); // '#' -> neo2 Mod3 while held
|
||||
l3r_held = true;
|
||||
l3r_used = false;
|
||||
} else {
|
||||
unregister_code(NE_L3R);
|
||||
l3r_held = false;
|
||||
if (!l3r_used) {
|
||||
tap_code(NE_SS); // pure tap -> ss (neo2 sharp-s)
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case NEO_AT:
|
||||
// @ = neo2 Mod3 ('#') + y, held together so it repeats while pressed.
|
||||
if (record->event.pressed) {
|
||||
register_code(NE_L3R);
|
||||
register_code(NE_Y);
|
||||
} else {
|
||||
unregister_code(NE_Y);
|
||||
unregister_code(NE_L3R);
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
// A separate key pressed while Mod3 is held means it is being used as a
|
||||
// modifier, so the release must not emit the tap ('y').
|
||||
if (record->event.pressed && l3r_held) {
|
||||
l3r_used = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
46
keyboards/planck/keymaps/audax_osx/readme.md
Normal file
46
keyboards/planck/keymaps/audax_osx/readme.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# audax_osx (Planck) - neo2 for macOS via the software neo2 layout
|
||||
|
||||
Planck counterpart of the ergodox `audax_osx` layout, and a modern rewrite of
|
||||
the old `planck/keymaps/audax` (which used the long-removed `fn_actions` /
|
||||
`action_get_macro` API and no longer builds).
|
||||
|
||||
Like the ergodox layout, it expects the **software neo2 keyboard layout** to be
|
||||
installed on the Mac (see the full setup in
|
||||
`layouts/community/ergodox/audax_osx/readme.md`):
|
||||
|
||||
- Install [neo2-layout-osx](https://github.com/jgosmann/neo2-layout-osx) and
|
||||
select it as the active input source.
|
||||
- The base layer and Mod3 send positional `NE_*` scancodes; the OS neo2 layout
|
||||
produces the characters.
|
||||
|
||||
## Layers
|
||||
|
||||
- **`_NE`** - neo2 base. Left/right Mod3 keys both hold `#` (`NE_L3R` /
|
||||
`KC_NUHS`); macOS intercepts CapsLock, so the canonical Mod3-left (`NE_L3L`)
|
||||
is not used. The right Mod3 key **taps to `ß`**; `@` (on `_LW`) is Mod3 + y.
|
||||
- **`_RS`** (hold bottom-right) - number row, F-keys, media, `QK_BOOT`, and
|
||||
`DF(_NE)` to reset the default layer.
|
||||
- **`_LW`** (hold bottom-left) - cursor block on the left, numbers on the right,
|
||||
`ß`, `@`, and a few macOS shortcuts. These are firmware keycodes, so the
|
||||
cursor keys and numbers auto-repeat when held.
|
||||
|
||||
## Building and flashing
|
||||
|
||||
Built for a Massdrop/OLKB Planck **rev4** (atmega32u4, mini-USB, USB device
|
||||
version 0.0.4, `atmel-dfu` bootloader):
|
||||
|
||||
```
|
||||
qmk flash -kb planck/rev4 -km audax_osx
|
||||
```
|
||||
|
||||
Put the board in the bootloader when prompted (physical RESET button on the
|
||||
PCB; after this layout is flashed, `QK_BOOT` also lives on the `_RS` layer). The
|
||||
keymap is revision-independent - substitute another target (`rev5`, `rev6`,
|
||||
`rev6_drop`, ...) if you use a different Planck.
|
||||
|
||||
## Notes
|
||||
|
||||
- The right Mod3 tap emits `ß` (matching the ergodox `audax_osx`). The original
|
||||
Planck `audax` tapped `y` here; `ß` was chosen instead since `y` already sits
|
||||
on the base layer's top-right.
|
||||
- The old `keyboards/planck/keymaps/audax` is left untouched.
|
||||
1
keyboards/planck/keymaps/audax_osx/rules.mk
Normal file
1
keyboards/planck/keymaps/audax_osx/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOOTMAGIC_ENABLE = no
|
||||
105
keyboards/takashicompany/minidivide/info.json
Normal file
105
keyboards/takashicompany/minidivide/info.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"manufacturer": "takashicompany",
|
||||
"keyboard_name": "miniDivide",
|
||||
"maintainer": "takashicompany",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"oled": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D4", "C6", "D7", "E6", "B4"],
|
||||
"rows": ["F4", "F5", "F6", "F7"]
|
||||
},
|
||||
"pin_compatible": "promicro",
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"rgb_test": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"led_count": 10,
|
||||
"sleep": true,
|
||||
"split_count": [5, 5]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["B4", "E6", "D7", "C6", "D4"],
|
||||
"rows": ["F4", "F5", "F6", "F7"]
|
||||
}
|
||||
},
|
||||
"soft_serial_pin": "D2"
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0037",
|
||||
"vid": "0x7463"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.42},
|
||||
{"matrix": [0, 1], "x": 0.84, "y": 0.21},
|
||||
{"matrix": [0, 2], "x": 1.68, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.52, "y": 0.21},
|
||||
{"matrix": [0, 4], "x": 3.36, "y": 0.42},
|
||||
{"matrix": [4, 0], "x": 6.3, "y": 0.42},
|
||||
{"matrix": [4, 1], "x": 7.14, "y": 0.21},
|
||||
{"matrix": [4, 2], "x": 7.98, "y": 0},
|
||||
{"matrix": [4, 3], "x": 8.82, "y": 0.21},
|
||||
{"matrix": [4, 4], "x": 9.66, "y": 0.42},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.26},
|
||||
{"matrix": [1, 1], "x": 0.84, "y": 1.05},
|
||||
{"matrix": [1, 2], "x": 1.68, "y": 0.84},
|
||||
{"matrix": [1, 3], "x": 2.52, "y": 1.05},
|
||||
{"matrix": [1, 4], "x": 3.36, "y": 1.26},
|
||||
{"matrix": [5, 0], "x": 6.3, "y": 1.26},
|
||||
{"matrix": [5, 1], "x": 7.14, "y": 1.05},
|
||||
{"matrix": [5, 2], "x": 7.98, "y": 0.84},
|
||||
{"matrix": [5, 3], "x": 8.82, "y": 1.05},
|
||||
{"matrix": [5, 4], "x": 9.66, "y": 1.26},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.1},
|
||||
{"matrix": [2, 1], "x": 0.84, "y": 1.89},
|
||||
{"matrix": [2, 2], "x": 1.68, "y": 1.68},
|
||||
{"matrix": [2, 3], "x": 2.52, "y": 1.89},
|
||||
{"matrix": [2, 4], "x": 3.36, "y": 2.1},
|
||||
{"matrix": [6, 0], "x": 6.3, "y": 2.1},
|
||||
{"matrix": [6, 1], "x": 7.14, "y": 1.89},
|
||||
{"matrix": [6, 2], "x": 7.98, "y": 1.68},
|
||||
{"matrix": [6, 3], "x": 8.82, "y": 1.89},
|
||||
{"matrix": [6, 4], "x": 9.66, "y": 2.1},
|
||||
{"matrix": [3, 1], "x": 1.68, "y": 3.15},
|
||||
{"matrix": [3, 2], "x": 2.52, "y": 3.15},
|
||||
{"matrix": [3, 3], "x": 3.36, "y": 3.15},
|
||||
{"matrix": [3, 4], "x": 4.2, "y": 3.15},
|
||||
{"matrix": [7, 0], "x": 5.46, "y": 3.15},
|
||||
{"matrix": [7, 1], "x": 6.3, "y": 3.15},
|
||||
{"matrix": [7, 2], "x": 7.14, "y": 3.15},
|
||||
{"matrix": [7, 3], "x": 7.98, "y": 3.15}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
70
keyboards/takashicompany/minidivide/keymaps/default/keymap.c
Normal file
70
keyboards/takashicompany/minidivide/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,70 @@
|
||||
// Copyright 2023 takashicompany (@takashicompany)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
|
||||
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
|
||||
LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
|
||||
KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
|
||||
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
|
||||
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[4] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
|
||||
LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[5] = LAYOUT(
|
||||
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
|
||||
KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[6] = LAYOUT(
|
||||
KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
|
||||
KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
|
||||
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[7] = LAYOUT(
|
||||
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[8] = LAYOUT(
|
||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
|
||||
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
5
keyboards/takashicompany/minidivide/keymaps/via/config.h
Normal file
5
keyboards/takashicompany/minidivide/keymaps/via/config.h
Normal file
@@ -0,0 +1,5 @@
|
||||
// Copyright 2022 takashicompany (@takashicompany)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 10
|
||||
70
keyboards/takashicompany/minidivide/keymaps/via/keymap.c
Normal file
70
keyboards/takashicompany/minidivide/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,70 @@
|
||||
// Copyright 2023 takashicompany (@takashicompany)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
|
||||
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
|
||||
LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
|
||||
KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
|
||||
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
|
||||
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[4] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
|
||||
LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[5] = LAYOUT(
|
||||
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
|
||||
KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[6] = LAYOUT(
|
||||
KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
|
||||
KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
|
||||
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[7] = LAYOUT(
|
||||
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[8] = LAYOUT(
|
||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
|
||||
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
1
keyboards/takashicompany/minidivide/keymaps/via/rules.mk
Normal file
1
keyboards/takashicompany/minidivide/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
48
keyboards/takashicompany/minidivide/minidivide.c
Normal file
48
keyboards/takashicompany/minidivide/minidivide.c
Normal file
@@ -0,0 +1,48 @@
|
||||
// Copyright 2023 takashicompany (@takashicompany)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_270;
|
||||
}
|
||||
|
||||
//Variable that stores the number of times the key was pressed
|
||||
static uint16_t press_count = 0;
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_user(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
// Increment the counter when a key is pressed
|
||||
if (record->event.pressed) {
|
||||
press_count++;
|
||||
}
|
||||
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
|
||||
if (!oled_task_user()) { return false; }
|
||||
|
||||
oled_write_ln_P(PSTR("mini"), false);
|
||||
oled_write_ln_P(PSTR("Divide"), false);
|
||||
|
||||
oled_set_cursor(0, 5);
|
||||
|
||||
oled_write_ln_P(PSTR("Layer"), false);
|
||||
oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false);
|
||||
|
||||
oled_write_ln_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR(" "), false);
|
||||
|
||||
oled_write_ln_P(PSTR("Count"), false);
|
||||
oled_write_ln(get_u16_str(press_count, ' '), false);
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
#endif
|
||||
43
keyboards/takashicompany/minidivide/readme.md
Normal file
43
keyboards/takashicompany/minidivide/readme.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# miniDivide
|
||||
|
||||

|
||||
|
||||
miniDivide is a split keyboard with 0.8u (16mm) key pitch.
|
||||
The size of a single key is 80% of that of a conventional keyboard key.
|
||||
Although the key size is more compact than usual, it has the advantage of requiring minimal finger movement.
|
||||
The number of keys is 19 keys for one hand and 38 keys for two hands.
|
||||
|
||||
It is small and thin, making it easy to carry around.
|
||||
The option to mount a coin cell battery on the PCB is available so that the BLE Micro Pro can be installed.
|
||||
OLED can also be mounted.
|
||||
|
||||
miniDivideは0.8u(16mm)キーピッチの分割型のキーボードです。
|
||||
一つのキーの大きさが従来のキーボードのキーと比較すると80%のサイズとなっています。
|
||||
通常よりコンパクトなキーサイズですが、指の動きが最小限で済むという強みがあります。
|
||||
キー数は片手で19キー、両手で38キーとなります。
|
||||
|
||||
小さく、薄いので持ち運びにも便利です。
|
||||
またBLE Micro Proを搭載できるよう、コイン電池をPCBに搭載するオプションが可能です。
|
||||
OLEDも搭載できます。
|
||||
|
||||
* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
|
||||
* Hardware Supported: PCB, Pro Micro
|
||||
* Hardware Availability: https://github.com/takashicompany/minidivide
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make takashicompany/minidivide:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make takashicompany/minidivide:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
1
keyboards/takashicompany/minidivide/rules.mk
Normal file
1
keyboards/takashicompany/minidivide/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
24
keyboards/wuque/nemui65/config.h
Normal file
24
keyboards/wuque/nemui65/config.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* Copyright 2023 wuque
|
||||
*
|
||||
* 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
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
128
keyboards/wuque/nemui65/info.json
Normal file
128
keyboards/wuque/nemui65/info.json
Normal file
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"keyboard_name": "nemui65",
|
||||
"manufacturer": "wuque",
|
||||
"maintainer": "spbgzh",
|
||||
"usb": {
|
||||
"vid": "0x807C",
|
||||
"pid": "0x0005",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C7", "D5", "B5", "B4", "D7", "D6", "D4", "D3", "D2", "D1", "D0", "B7", "B2", "B3", "F7"],
|
||||
"rows": ["F1", "F0", "C6", "B6", "F5"]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
"rbglight": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"indicators": {
|
||||
"caps_lock": "F6",
|
||||
"on_state": 0
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "F4"
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"rgb_test": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"max_brightness": 200,
|
||||
"led_count": 1,
|
||||
"saturation_steps": 8,
|
||||
"brightness_steps": 8,
|
||||
"sleep": true
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "atmel-dfu",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 14], "x": 15, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [2, 14], "x": 15, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"matrix": [3, 14], "x": 15, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 13, "y": 4},
|
||||
{"matrix": [4, 13], "x": 14, "y": 4},
|
||||
{"matrix": [4, 14], "x": 15, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
34
keyboards/wuque/nemui65/keymaps/default/keymap.c
Normal file
34
keyboards/wuque/nemui65/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,34 @@
|
||||
/* Copyright 2023 wuque
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
KC_GRV, 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,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
34
keyboards/wuque/nemui65/keymaps/via/keymap.c
Normal file
34
keyboards/wuque/nemui65/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,34 @@
|
||||
/* Copyright 2023 wuque
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
KC_GRV, 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,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
2
keyboards/wuque/nemui65/keymaps/via/rules.mk
Normal file
2
keyboards/wuque/nemui65/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
27
keyboards/wuque/nemui65/readme.md
Normal file
27
keyboards/wuque/nemui65/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Nmui65
|
||||
|
||||
More Info at [Nemui65](https://mechsandco.com/products/nemui65)
|
||||
|
||||
|
||||
* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
|
||||
* Hardware Supported: Nemui65
|
||||
* Hardware Availability: [Nemui65](https://mechsandco.com/products/nemui65)
|
||||
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make wuque/nemui65:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make wuque/nemui65:default:flash
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader using one of the following methods:
|
||||
|
||||
* Tap the Reset switch mounted on the PCB
|
||||
* In the case of the default keymap, use the key combination Fn + Delete
|
||||
* Hold the Esc key while connecting the USB cable (also erases persistent settings)
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
1
keyboards/wuque/nemui65/rules.mk
Normal file
1
keyboards/wuque/nemui65/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
162
layouts/community/ergodox/audax/keymap.c
Normal file
162
layouts/community/ergodox/audax/keymap.c
Normal file
@@ -0,0 +1,162 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "debug.h"
|
||||
#include "led.h"
|
||||
#include "debug.h"
|
||||
#include "timer.h"
|
||||
#include "keymap_extras/keymap_neo2.h"
|
||||
#include "keymap_extras/keymap_german.h"
|
||||
|
||||
// Layer names
|
||||
#define BASE 0 // default layer
|
||||
#define _GA 1
|
||||
#define _UP 2
|
||||
#define MDIA 3 // media keys
|
||||
|
||||
// Max duration that counts as a tap (ms)
|
||||
#ifndef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
#endif
|
||||
|
||||
enum custom_keycodes {
|
||||
NEO_L2_ENT = SAFE_RANGE,
|
||||
NEO_L1_SS,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
||||
// left hand
|
||||
KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MPLY,
|
||||
KC_TAB, NEO_X, NEO_V, NEO_L, NEO_C, NEO_W, MO(MDIA),
|
||||
KC_CAPS, NEO_U, NEO_I, NEO_A, NEO_E, NEO_O,
|
||||
KC_LSFT, CTL_T(NEO_UE), ALT_T(NEO_OE), GUI_T(NEO_AE), NEO_P, NEO_Z, MO(_UP),
|
||||
MT(_GA, KC_HOME), KC_PGDN, KC_PGUP, KC_END, KC_LGUI,
|
||||
LALT(KC_TAB),KC_LALT,
|
||||
LSFT(KC_INS),
|
||||
KC_SPC,KC_BSPC,KC_INS,
|
||||
// right hand
|
||||
KC_MNXT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
TG(_GA), NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_Y,
|
||||
NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_SS,
|
||||
MEH_T(KC_NO),NEO_B, NEO_M, KC_COMM, KC_DOT, MT(MOD_LGUI|MOD_LCTL, NEO_J), SFT_T(KC_ESC),
|
||||
CTL_T(KC_LEFT), KC_DOWN, KC_UP, KC_RGHT, KC_LALT,
|
||||
LALT(KC_LEFT),LALT(KC_RGHT),
|
||||
LCTL(KC_TAB),
|
||||
LCTL(LALT(KC_TAB)),KC_TAB, NEO_L2_ENT
|
||||
),
|
||||
[_GA] = LAYOUT_ergodox(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
|
||||
KC_TRNS, NEO_U, NEO_I, KC_TRNS, KC_TRNS,KC_TRNS,
|
||||
KC_TRNS, NEO_UE, NEO_OE, NEO_AE, KC_TRNS, KC_TRNS, KC_F5,
|
||||
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F1, KC_F2,
|
||||
KC_F3,
|
||||
KC_TRNS, KC_TRNS, KC_F4,
|
||||
// right hand
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[_UP] = LAYOUT_ergodox(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_DEL, KC_PGDN, KC_UP, KC_PGUP, KC_BSPC, KC_TRNS,
|
||||
KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_END,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_DEL, KC_TRNS,
|
||||
// right hand
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_TRNS,
|
||||
KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_TRNS, NEO_SS,
|
||||
KC_COMM, KC_4, KC_5, KC_6, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_DOT, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
// MEDIA AND MOUSE
|
||||
[MDIA] = LAYOUT_ergodox(
|
||||
KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
|
||||
KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
|
||||
KC_TRNS, RESET,
|
||||
KC_TRNS,
|
||||
KC_BTN1, KC_BTN2, KC_TRNS,
|
||||
// right hand
|
||||
KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11,
|
||||
KC_TRNS, KC_TRNS, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS, KC_F12,
|
||||
KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
|
||||
KC_TRNS, KC_WSCH, KC_WBAK, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_WBAK, KC_WFWD
|
||||
),
|
||||
};
|
||||
|
||||
bool is_ent_pressed = false;
|
||||
bool tapped_while_ent = false;
|
||||
|
||||
bool is_ss_pressed = false;
|
||||
bool tapped_while_ss = false;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case NEO_L2_ENT:
|
||||
if (record->event.pressed) {
|
||||
register_code(NEO_L2_R);
|
||||
is_ent_pressed = true;
|
||||
layer_on(_UP);
|
||||
} else {
|
||||
unregister_code(NEO_L2_R);
|
||||
layer_off(_UP);
|
||||
is_ent_pressed = false;
|
||||
if (!tapped_while_ent) {
|
||||
tap_code(KC_ENT);
|
||||
}
|
||||
tapped_while_ent = false;
|
||||
}
|
||||
return true;
|
||||
case NEO_L1_SS:
|
||||
if (record->event.pressed) {
|
||||
register_code(NEO_L1_R);
|
||||
is_ss_pressed = true;
|
||||
} else {
|
||||
unregister_code(NEO_L1_R);
|
||||
is_ss_pressed = false;
|
||||
if (!tapped_while_ss) {
|
||||
tap_code(NEO_SS);
|
||||
}
|
||||
tapped_while_ss = false;
|
||||
}
|
||||
return true;
|
||||
case KC_BSPC:
|
||||
if (record->event.pressed) {
|
||||
if (is_ent_pressed) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (is_ent_pressed) {
|
||||
tap_code(KC_DEL);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (record->event.pressed && is_ent_pressed) {
|
||||
tapped_while_ent = true;
|
||||
}
|
||||
if (record->event.pressed && is_ss_pressed) {
|
||||
tapped_while_ss = true;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
1
layouts/community/ergodox/audax/rules.mk
Normal file
1
layouts/community/ergodox/audax/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
6
layouts/community/ergodox/audax_osx/config.h
Normal file
6
layouts/community/ergodox/audax_osx/config.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
// Tap/hold window for the home-row mods (LCTL_T/LALT_T/LGUI_T) and the
|
||||
// RALT_T(KC_ENT) Mod4 key.
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
259
layouts/community/ergodox/audax_osx/keymap.c
Normal file
259
layouts/community/ergodox/audax_osx/keymap.c
Normal file
@@ -0,0 +1,259 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "layers.h"
|
||||
#include "keymap_extras/keymap_neo2.h"
|
||||
|
||||
/*
|
||||
* audax_osx - neo2 for macOS via the *software* neo2 keyboard layout.
|
||||
*
|
||||
* Unlike the sibling `audax_osx_neo2` layout (which emulates neo2 in firmware
|
||||
* on top of a US/ABC-Extended macOS layout), this layout expects the neo2
|
||||
* layout to be installed on the Mac itself:
|
||||
*
|
||||
* - neo2-layout-osx (.keylayout / .bundle) provides base, shift and Mod3.
|
||||
*
|
||||
* The base/Mod3 keys send *positional* scancodes (the NE_* aliases from
|
||||
* keymap_extras/keymap_neo2.h); the OS neo2 layout produces those characters.
|
||||
* See readme.md for the macOS/Karabiner setup.
|
||||
*
|
||||
* ---------------------------------------------------------------------------
|
||||
* neo2 layer switching:
|
||||
*
|
||||
* Mod3 (layer 3, symbols): held on both Mod3 keys, which send '#' (NE_L3R /
|
||||
* KC_NUHS); the OS neo2 .keylayout turns '#' into Mod3. The canonical
|
||||
* neo2 Mod3-left is CapsLock, but macOS intercepts CapsLock, so it does
|
||||
* NOT act as Mod3 unless Karabiner remaps caps_lock -> '#'. Sending '#'
|
||||
* from both keys works out of the box.
|
||||
*
|
||||
* Mod4 (layer 4, cursor + numpad): provided as a FIRMWARE layer (NEO_4),
|
||||
* held via the right-thumb Enter key (NEO_ENT_M4). Kept in firmware -
|
||||
* not the OS neo2 Mod4 - so the cursor keys auto-repeat when held, like
|
||||
* the Linux `audax` layout. Mod4 special characters (ordinals, GBP, ...)
|
||||
* are omitted; add them to NEO_4 if you need them.
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
// Custom keycodes.
|
||||
enum custom_keycodes {
|
||||
// Right Mod3 key: hold = Mod3 (sends NE_L3R / '#'), tap = ss (neo2 native).
|
||||
NEO_L3R_SS = SAFE_RANGE,
|
||||
// Right-thumb Enter: tap = Enter, hold = the firmware Mod4 layer (NEO_4).
|
||||
NEO_ENT_M4
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* NEO_1: neo2 base layer (positional scancodes)
|
||||
*
|
||||
* The character legend below is what the *OS neo2 layout* produces for each
|
||||
* key; the firmware only sends the matching physical scancode.
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ESC | 1/° | 2/§ | 3/ | 4/» | 5/« | MPLY | | MNXT | 6/$ | 7/€ | 8/„ | 9/“ | 0/” | -/— |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | TAB | X | V | L | C | W | FKEYS| | RCTL | K | H | G | F | Q | Y |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | Mod3-L | CTL/U| ALT/I| GUI/A| E | O |------| |------| S | N | R | T | D | #/ß M3R|
|
||||
* |--------+------+------+------+------+------| LALT | | MOD4 |------+------+------+------+------+--------|
|
||||
* | LSHIFT | Ü | Ö | Ä | P | Z | | | | B | M | , | . | J | SFT/ESC|
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | Home | PGUP | PGDN | End | S(G(a)) | Left | Down | Up | Right| RGUI |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* |G(TAB)|G(S(T))| |A(G(Lft))|A(G(Rgt))|
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Ins | |A(G(Home))| MO | |
|
||||
* | Space|Bksp |------| |------|FKEYS | Enter|
|
||||
* | | | LCTL | | | |/Mod4 |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_1] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_ESC, NE_1, NE_2, NE_3, NE_4, NE_5, KC_MPLY,
|
||||
KC_TAB, NE_X, NE_V, NE_L, NE_C, NE_W, MO(FKEYS),
|
||||
NE_L3R, LCTL_T(NE_U), LALT_T(NE_I), LGUI_T(NE_A), NE_E, NE_O, /* --- */ // Mod3-left: send '#' like Mod3-right (macOS intercepts CapsLock, so NE_L3L is unreliable)
|
||||
KC_LSFT, NE_UDIA, NE_ODIA, NE_ADIA, NE_P, NE_Z, KC_LALT,
|
||||
KC_HOME, KC_PGUP, KC_PGDN, KC_END, LSFT(LGUI(NE_A)), /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ LGUI(KC_TAB), LGUI(LSFT(KC_TAB)),
|
||||
/* KC_SPACE */ /* KC_BSPC */ KC_INS,
|
||||
KC_SPACE, KC_BSPC, KC_LCTL,
|
||||
|
||||
// right hand side - main
|
||||
KC_MNXT, NE_6, NE_7, NE_8, NE_9, NE_0, NE_MINS,
|
||||
KC_RCTL, NE_K, NE_H, NE_G, NE_F, NE_Q, NE_Y,
|
||||
/* --- */ NE_S, NE_N, NE_R, NE_T, NE_D, NEO_L3R_SS,
|
||||
MO(NEO_4), NE_B, NE_M, NE_COMM, NE_DOT, NE_J, RSFT_T(KC_ESC),
|
||||
/* --- */ /* --- */ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_RGUI,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
LALT(LGUI(KC_LEFT)), LALT(LGUI(KC_RIGHT)), /* --- */
|
||||
LALT(LGUI(KC_HOME)), /* --- */ /* --- */
|
||||
MO(FKEYS), KC_SPACE, NEO_ENT_M4
|
||||
),
|
||||
|
||||
/* NEO_4: Mod4 - cursor block (left) + numpad (right)
|
||||
*
|
||||
* Firmware layer with real keycodes so the cursor keys auto-repeat when held.
|
||||
* Held via the right-thumb Enter key. neo2 Mod4 special characters (ordinals,
|
||||
* GBP, inverted !/?, ...) are omitted as KC_NO.
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | Tab | / | * | - | ---- |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | PgUp | Bsp | Up | Del | PgDn | | | | ---- | 7 | 8 | 9 | + | ---- |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | Home | Left | Down | Right| End |------| |------| ---- | 4 | 5 | 6 | , | . |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | Esc | Tab | Ins |Return| ---- | | | | ---- | 1 | 2 | 3 | ---- | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | 0 | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | Del |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_4] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______,
|
||||
_______, KC_PGUP, KC_BSPC, KC_UP, KC_DELETE, KC_PGDN, _______,
|
||||
_______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, /* --- */
|
||||
_______, KC_ESCAPE, KC_TAB, KC_INSERT, KC_ENTER, KC_NO, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, KC_DEL, _______,
|
||||
|
||||
// right hand side - main
|
||||
_______, KC_NO, KC_TAB, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO,
|
||||
_______, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_NO,
|
||||
/* --- */ KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_COMMA, KC_KP_DOT,
|
||||
_______, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_NO, _______,
|
||||
/* --- */ /* --- */ _______, KC_KP_0, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
|
||||
/* FKEYS: Function and media keys
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | Prev | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | Play | | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | Next | | | | | |------| |------| | | | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | | |VolDn | Mute | VolUp |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[FKEYS] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_MEDIA_REWIND, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
|
||||
KC_MEDIA_PLAY_PAUSE, _______, _______, _______, _______, _______, _______,
|
||||
KC_MEDIA_FAST_FORWARD, _______, _______, _______, _______, _______, /* --- */
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, _______, _______,
|
||||
|
||||
// right hand side - main
|
||||
KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
/* --- */ _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP,
|
||||
/* --- */ /* --- */ _______, _______, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
// Tracks the tap/hold state of the right Mod3 key so it can send ss on a tap
|
||||
// while acting as the neo2 Mod3 modifier on a hold.
|
||||
static bool l3r_held = false;
|
||||
static bool l3r_used_as_mod3 = false;
|
||||
|
||||
// Tracks the tap/hold state of the right-thumb Enter/Mod4 key: a pure tap emits
|
||||
// Enter, a hold turns on the NEO_4 (Mod4) layer.
|
||||
static bool ent_held = false;
|
||||
static bool ent_used = false;
|
||||
|
||||
// Runs for each key down or up event.
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case NEO_L3R_SS:
|
||||
if (record->event.pressed) {
|
||||
// Engage neo2 Mod3 (the '#' / non-US-# scancode) for as long as held.
|
||||
register_code(NE_L3R);
|
||||
l3r_held = true;
|
||||
l3r_used_as_mod3 = false;
|
||||
} else {
|
||||
unregister_code(NE_L3R);
|
||||
l3r_held = false;
|
||||
// Nothing else was pressed while held -> it was a tap: send ss.
|
||||
if (!l3r_used_as_mod3) {
|
||||
tap_code(NE_SS);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case NEO_ENT_M4:
|
||||
if (record->event.pressed) {
|
||||
// Hold = neo2 Mod4 as a firmware layer, so its cursor keys auto-repeat.
|
||||
// (Enter+Backspace = Delete too: NEO_4 maps that thumb key to KC_DEL.)
|
||||
layer_on(NEO_4);
|
||||
ent_held = true;
|
||||
ent_used = false;
|
||||
} else {
|
||||
layer_off(NEO_4);
|
||||
ent_held = false;
|
||||
// Nothing else was pressed while held -> it was a tap: send Enter.
|
||||
if (!ent_used) {
|
||||
tap_code(KC_ENT);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// A separate keypress while a hold-key is held means that key is acting as a
|
||||
// modifier/layer, so its own release must not emit its tap code.
|
||||
if (record->event.pressed) {
|
||||
if (l3r_held) {
|
||||
l3r_used_as_mod3 = true;
|
||||
}
|
||||
if (ent_held) {
|
||||
ent_used = true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Runs constantly in the background, in a loop. Lights an LED on the FKEYS layer.
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
|
||||
if (layer == FKEYS) {
|
||||
ergodox_right_led_1_on();
|
||||
}
|
||||
}
|
||||
10
layouts/community/ergodox/audax_osx/layers.h
Normal file
10
layouts/community/ergodox/audax_osx/layers.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
// Software-neo2 layout: the OS-side neo2 keyboard layout owns the base layer,
|
||||
// shift and Mod3 (layer 3). Mod4 (layer 4) is kept as a firmware layer so its
|
||||
// cursor keys auto-repeat when held.
|
||||
enum layers {
|
||||
NEO_1, // layer 0: neo2 base (positional scancodes)
|
||||
NEO_4, // layer 1: neo2 Mod4 - cursor + numpad (firmware, real keycodes)
|
||||
FKEYS // layer 2: media and function keys (not part of neo2)
|
||||
};
|
||||
86
layouts/community/ergodox/audax_osx/readme.md
Normal file
86
layouts/community/ergodox/audax_osx/readme.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# audax_osx - neo2 for macOS via the software neo2 layout + Karabiner-Elements
|
||||
|
||||
This is a neo2 ErgoDox layout for macOS that relies on the **software** neo2
|
||||
keyboard layout installed on the Mac, rather than emulating neo2 in firmware.
|
||||
|
||||
It is the software-neo2 counterpart of the sibling `audax_osx_neo2` layout. The
|
||||
key arrangement, thumb clusters, home-row mods and macOS shortcuts are the same;
|
||||
the difference is who produces the neo2 characters:
|
||||
|
||||
| | `audax_osx_neo2` (old) | `audax_osx` (this) |
|
||||
| --- | --- | --- |
|
||||
| macOS input source | US / ABC Extended | **neo2** (installed on the Mac) |
|
||||
| neo2 letters | faked in firmware | produced by the OS |
|
||||
| umlauts, ß, €, „ … | Option dead-key macros in firmware | produced by the OS |
|
||||
| layer 3 (symbols) | firmware layer | produced by the OS |
|
||||
| layer 4 (cursor/numpad) | firmware layer | firmware layer (so its keys auto-repeat) |
|
||||
| firmware sends | US scancodes + macros | **positional neo2 scancodes** (`NE_*`) |
|
||||
|
||||
Base layer, shift and Mod3 live in the OS neo2 layout, so the firmware stays
|
||||
small: a neo2 base layer, a Mod4 cursor/numpad layer, a media/function layer,
|
||||
and two small custom keys.
|
||||
|
||||
## Required macOS setup
|
||||
|
||||
1. Install the neo2 macOS keyboard layout (`.keylayout` / `.bundle`):
|
||||
<https://github.com/jgosmann/neo2-layout-osx>
|
||||
and select it as the active input source. It provides the base layer, shift
|
||||
and **Mod3**.
|
||||
2. Optional: install [Karabiner-Elements](https://karabiner-elements.pqrs.org/)
|
||||
and import <https://github.com/jgosmann/Karabiner-Elements-Neo> only if you
|
||||
want the OS-side neo2 **layer 6** (math symbols). Mod4 (cursor/numpad) is
|
||||
handled by the firmware in this layout, so Karabiner is not required for it.
|
||||
|
||||
References: [Neo auf dem Apple Macintosh einrichten](https://old-wiki.neo-layout.org/neowiki/wiki/Neo%20auf%20dem%20Apple%20Macintosh%20einrichten).
|
||||
|
||||
## Layer switching
|
||||
|
||||
**Mod3 (layer 3, symbols)** is handled by the OS neo2 `.keylayout`. Both Mod3
|
||||
keys send `#` (`KC_NUHS`), which the `.keylayout` treats as Mod3.
|
||||
|
||||
| Role | Keycode | Sends | Notes |
|
||||
| --- | --- | --- | --- |
|
||||
| Mod3-left | `NE_L3R` | `#` (`KC_NUHS`) | held = Mod3 |
|
||||
| Mod3-right | `NEO_L3R_SS` | `#` (`KC_NUHS`) | held = Mod3, **tap = ß** |
|
||||
|
||||
**Why both Mod3 keys send `#`:** the canonical neo2 Mod3-left is CapsLock, but
|
||||
macOS intercepts CapsLock and it does not register as a live Mod3 modifier
|
||||
unless Karabiner explicitly remaps `caps_lock` to the `#` key. Sending `#` from
|
||||
both keys makes the left Mod3 work out of the box. If you prefer true CapsLock
|
||||
semantics, add that Karabiner remap and use `NE_L3L` for the left Mod3 key.
|
||||
|
||||
**Mod4 (layer 4, cursor + numpad)** is a firmware layer (`NEO_4`), held via the
|
||||
right-thumb Enter key. It is kept in firmware - not the OS neo2 Mod4 - so the
|
||||
cursor keys auto-repeat when held, matching the Linux `audax` layout. The neo2
|
||||
Mod4 special characters are omitted; add them to `NEO_4` in `keymap.c` if wanted.
|
||||
|
||||
**Layer 6** (Mod3+Mod4 math symbols) is not available, because Mod4 is not an OS
|
||||
modifier in this layout. Enable it through Karabiner if you need it.
|
||||
|
||||
## Behaviour worth knowing
|
||||
|
||||
- **Right Mod3 key (tap = ß):** in neo2 the right-hand Mod3 key is a pure
|
||||
modifier. To keep the muscle memory from `audax_osx_neo2`, tapping it alone
|
||||
sends `ß` (neo2's native `NE_SS` position); holding it acts as Mod3
|
||||
(`NEO_L3R_SS` in `keymap.c`).
|
||||
- **Enter thumb key (tap = Enter, hold = Mod4, +Backspace = Delete):** the
|
||||
right-thumb Enter is the custom `NEO_ENT_M4` key. A tap types Enter; a hold
|
||||
turns on the `NEO_4` firmware layer (cursor + numpad, all auto-repeating). On
|
||||
that layer the Backspace thumb key is `KC_DEL`, so holding Enter and pressing
|
||||
Backspace produces Delete - the Enter+Backspace convenience from the Linux
|
||||
`audax` layout.
|
||||
- **Dedicated Mod4 key:** the right inner bottom key (row 4, the big 1.5u key by
|
||||
the thumb cluster) is `MO(NEO_4)` - a real momentary Mod4. Hold it with the
|
||||
right hand and work the cursor block on the left. The Enter thumb is a second
|
||||
Mod4 (on hold). Left Option remains on the left outer Alt key.
|
||||
- **Home-row mods:** left home row is `LCTL_T`/`LALT_T`/`LGUI_T` on `U`/`I`/`A`.
|
||||
- **`FKEYS` layer** (media + F-keys) is firmware-only; it is not part of neo2 and
|
||||
lights the first right-hand LED while active.
|
||||
|
||||
## Building
|
||||
|
||||
```
|
||||
qmk compile -kb ergodox_ez -km audax_osx
|
||||
```
|
||||
|
||||
(Use the appropriate ErgoDox keyboard target for your board.)
|
||||
7
layouts/community/ergodox/audax_osx_neo2/config.h
Normal file
7
layouts/community/ergodox/audax_osx_neo2/config.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
#undef TAPPING_TOGGLE
|
||||
#define TAPPING_TOGGLE 2
|
||||
732
layouts/community/ergodox/audax_osx_neo2/keymap.c
Normal file
732
layouts/community/ergodox/audax_osx_neo2/keymap.c
Normal file
@@ -0,0 +1,732 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "layers.h"
|
||||
#include "version.h"
|
||||
|
||||
// Timer to detect tap/hold on NEO_RMOD3 key
|
||||
static uint16_t neo3_timer;
|
||||
// State bitmap to track which key(s) enabled NEO_3 layer
|
||||
// Bit 1 = LMOD state
|
||||
// Bit 2 = RMOD state
|
||||
// Bit 3 = Seen other keypress
|
||||
static uint8_t neo3_state = 0;
|
||||
// State bitmap to track key combo for CAPSLOCK
|
||||
static uint8_t capslock_state = 0;
|
||||
|
||||
// bitmasks for modifier keys
|
||||
#define MOD_MASK_NONE 0
|
||||
|
||||
// Used to trigger macros / sequences of keypresses
|
||||
enum custom_keycodes {
|
||||
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||
US_OSX_SMALL_UE,
|
||||
US_OSX_SMALL_AE,
|
||||
US_OSX_SMALL_OE,
|
||||
US_OSX_CAPITAL_UE,
|
||||
US_OSX_CAPITAL_AE,
|
||||
US_OSX_CAPITAL_OE,
|
||||
NEO2_LMOD3,
|
||||
NEO2_RMOD3,
|
||||
NEO2_1,
|
||||
NEO2_2,
|
||||
NEO2_3,
|
||||
NEO2_4,
|
||||
NEO2_5,
|
||||
NEO2_6,
|
||||
NEO2_7,
|
||||
NEO2_8,
|
||||
NEO2_9,
|
||||
NEO2_0,
|
||||
NEO2_MINUS,
|
||||
NEO2_UE,
|
||||
NEO2_AE,
|
||||
NEO2_OE,
|
||||
NEO2_COMMA,
|
||||
NEO2_DOT,
|
||||
NEO2_SHARP_S
|
||||
};
|
||||
|
||||
#define NEO2_LMOD4 TT(NEO_4)
|
||||
#define NEO2_RMOD4 NEO2_LMOD4
|
||||
|
||||
// NEO_3 special characters
|
||||
#define US_OSX_SUPERSCRIPT_1 KC_NO // ¹
|
||||
#define US_OSX_SUPERSCRIPT_2 KC_NO // ²
|
||||
#define US_OSX_SUPERSCRIPT_3 KC_NO // ³
|
||||
#define US_OSX_RSAQUO LALT(LSFT(KC_4)) // ›
|
||||
#define US_OSX_LSAQUO LALT(LSFT(KC_3)) // ‹
|
||||
#define US_OSX_CENT LALT(KC_4) // ¢
|
||||
#define US_OSX_YEN LALT(KC_Y) // ¥
|
||||
#define US_OSX_SBQUO LALT(LSFT(KC_0)) // ‚
|
||||
#define US_OSX_LEFT_SINGLE_QUOTE LALT(KC_RBRC) // ‘
|
||||
#define US_OSX_RIGHT_SINGLE_QUOTE LALT(LSFT(KC_RBRC)) // ’
|
||||
#define US_OSX_ELLIPSIS LALT(KC_SCLN) // …
|
||||
#define US_OSX_UNDERSCORE LSFT(KC_MINUS) // _
|
||||
#define US_OSX_LBRACKET KC_LBRC // [
|
||||
#define US_OSX_RBRACKET KC_RBRC // ]
|
||||
#define US_OSX_CIRCUMFLEX LSFT(KC_6) // ^
|
||||
#define US_OSX_EXCLAMATION LSFT(KC_1) // !
|
||||
#define US_OSX_LESSTHAN LSFT(KC_COMMA) // <
|
||||
#define US_OSX_GREATERTHAN LSFT(KC_DOT) // >
|
||||
#define US_OSX_EQUAL KC_EQUAL // =
|
||||
#define US_OSX_AMPERSAND LSFT(KC_7) // &
|
||||
#define US_OSX_SMALL_LONG_S KC_NO // ſ
|
||||
#define US_OSX_BSLASH KC_BACKSLASH
|
||||
#define US_OSX_SLASH KC_SLASH // /
|
||||
#define US_OSX_CLBRACKET LSFT(KC_LBRC) // {
|
||||
#define US_OSX_CRBRACKET LSFT(KC_RBRC) // }
|
||||
#define US_OSX_ASTERISK LSFT(KC_8) // *
|
||||
#define US_OSX_QUESTIONMARK LSFT(KC_SLASH) // ?
|
||||
#define US_OSX_LPARENTHESES LSFT(KC_9) // (
|
||||
#define US_OSX_RPARENTHESES LSFT(KC_0) // )
|
||||
#define US_OSX_HYPHEN_MINUS KC_MINUS // -
|
||||
#define US_OSX_COLON LSFT(KC_SCLN) // :
|
||||
#define US_OSX_AT LSFT(KC_2) // @
|
||||
#define US_OSX_HASH LSFT(KC_3) // #
|
||||
#define US_OSX_PIPE LSFT(KC_BACKSLASH) // |
|
||||
#define US_OSX_TILDE LSFT(KC_GRAVE) // ~
|
||||
#define US_OSX_BACKTICK KC_GRAVE // `
|
||||
#define US_OSX_PLUS LSFT(KC_EQUAL) // +
|
||||
#define US_OSX_PERCENT LSFT(KC_5) // %
|
||||
#define US_OSX_DOUBLE_QUOTE LSFT(KC_QUOTE) // "
|
||||
#define US_OSX_SINGLE_QUOTE KC_QUOTE // '
|
||||
#define US_OSX_SEMICOLON KC_SCLN // ;
|
||||
|
||||
// NEO_4 special characters
|
||||
#define US_OSX_FEMININE_ORDINAL LALT(KC_9) // ª
|
||||
#define US_OSX_MASCULINE_ORDINAL LALT(KC_0) // º
|
||||
#define US_OSX_NUMERO_SIGN KC_NO // №
|
||||
#define US_OSX_MIDDLE_DOT LALT(LSFT(KC_9)) // ·
|
||||
#define US_OSX_BRITISH_POUND LALT(KC_3) // £
|
||||
#define US_OSX_CURRENCY_SIGN KC_NO // ¤
|
||||
#define US_OSX_INV_EXCLAMATION LALT(KC_1) // ¡
|
||||
#define US_OSX_INV_QUESTIONMARK LALT(LSFT(KC_SLASH)) // ¿
|
||||
#define US_OSX_DOLLAR KC_DOLLAR // $
|
||||
#define US_OSX_EM_DASH LALT(LSFT(KC_MINUS)) // —
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* NEO_1: Basic layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ESC | 1/° | 2/§ | 3/ | 4/» | 5/« | MPLAY| | MNEXT| 6/$ | 7/€ | 8/„ | 9/“ | 0/” | -/— |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | TAB | X | V | L | C | W | FKEYS| | RCTL | K | H | G | F | Q | Y |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | NEO_3 | CTL/U| ALT/I| LGU/A| E | O |------| |------| S | N | R | T | D | ß |
|
||||
* |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
|
||||
* | LSHIFT | Ü | Ö | Ä | P | Z | | | | B | M | ,/– | ./• | J | SFT/ESC|
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | Home | PGUP | PGDN | END | SFT(GUI(A)) | Left | Down | Up | Right| RGUI |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* |G(TAB)|G(S(T))| |A(G(Lft))|A(G(Rgt))|
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Ins | |A(G(Home))|NEO_4/| |
|
||||
* | Space|Delete|------| |------| Enter|Space |
|
||||
* | | | LCTL | | FKEYS| | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_1] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_ESC, NEO2_1, NEO2_2, NEO2_3, NEO2_4, NEO2_5, KC_MPLY,
|
||||
KC_TAB, KC_X, KC_V, KC_L, KC_C, KC_W, MO(FKEYS),
|
||||
NEO2_LMOD3, LCTL_T(KC_U), LALT_T(KC_I), LGUI_T(KC_A), KC_E, KC_O, /* --- */
|
||||
KC_LSFT, NEO2_UE, NEO2_OE, NEO2_AE, KC_P, KC_Z, KC_LALT,
|
||||
KC_HOME, KC_PGUP, KC_PGDN, KC_END, LSFT(LGUI(KC_A)), /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ LGUI(KC_TAB), LGUI(LSFT(KC_TAB)),
|
||||
/* KC_SPACE */ /* KC_BSPC */ KC_INS,
|
||||
KC_SPACE, KC_BSPC, KC_LCTL,
|
||||
|
||||
// right hand side - main
|
||||
KC_MNXT, NEO2_6, NEO2_7, NEO2_8, NEO2_9, NEO2_0, NEO2_MINUS,
|
||||
KC_RCTL, KC_K, KC_H, KC_G, KC_F, KC_Q, KC_Y,
|
||||
/* --- */ KC_S, KC_N, KC_R, KC_T, KC_D, NEO2_RMOD3,
|
||||
KC_RALT, KC_B, KC_M, NEO2_COMMA, NEO2_DOT, KC_J, RSFT_T(KC_ESCAPE),
|
||||
/* --- */ /* --- */ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_RGUI,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
LALT(LGUI(KC_LEFT)), LALT(LGUI(KC_RIGHT)), /* --- */
|
||||
LALT(LGUI(KC_HOME)), /* --- */ /* --- */
|
||||
MO(FKEYS), KC_SPACE, LT(NEO_4, KC_ENTER)
|
||||
),
|
||||
|
||||
/* NEO_3: Symbol layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ---- | ---- | ---- | ---- | › | ‹ | | | | ¢ | ¥ | ‚ | ‘ | ’ | ---- |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | ---- | … | _ | [ | ] | ^ | | | | ! | < | > | = | & | ---- |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | \ | / | { | } | * |------| |------| ? | ( | ) | - | : | @ |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | # | $ | | | ~ | ` | | | | + | % | " | ' | ; | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_3] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, US_OSX_RSAQUO, US_OSX_LSAQUO, _______,
|
||||
KC_NO /* NOOP */, US_OSX_ELLIPSIS, US_OSX_UNDERSCORE, US_OSX_LBRACKET, US_OSX_RBRACKET, US_OSX_CIRCUMFLEX, _______,
|
||||
_______, US_OSX_BSLASH, US_OSX_SLASH, US_OSX_CLBRACKET, US_OSX_CRBRACKET, US_OSX_ASTERISK, /* --- */
|
||||
_______, US_OSX_HASH, US_OSX_DOLLAR, US_OSX_PIPE, US_OSX_TILDE, US_OSX_BACKTICK, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, _______, _______,
|
||||
|
||||
// right hand side - main
|
||||
_______, US_OSX_CENT, US_OSX_YEN, US_OSX_SBQUO, US_OSX_LEFT_SINGLE_QUOTE, US_OSX_RIGHT_SINGLE_QUOTE, KC_NO,
|
||||
_______, US_OSX_EXCLAMATION, US_OSX_LESSTHAN, US_OSX_GREATERTHAN, US_OSX_EQUAL, US_OSX_AMPERSAND, US_OSX_SMALL_LONG_S,
|
||||
/* --- */ US_OSX_QUESTIONMARK, US_OSX_LPARENTHESES, US_OSX_RPARENTHESES, US_OSX_HYPHEN_MINUS, US_OSX_COLON, NEO2_RMOD3,
|
||||
_______, US_OSX_PLUS, US_OSX_PERCENT, US_OSX_DOUBLE_QUOTE, US_OSX_SINGLE_QUOTE, US_OSX_SEMICOLON, _______,
|
||||
/* --- */ /* --- */ _______, _______, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
|
||||
/* NEO_4: Cursor & Numpad
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ---- | ª | º | ---- | · | £ | | | | ---- | Tab | / | * | - | ---- |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | ---- | PgUp | ⌫ | Up | ⌦ | PgDn | | | | ¡ | 7 | 8 | 9 | + | – |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | Home | Left | Down | Right| End |------| |------| ¿ | 4 | 5 | 6 | , | . |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | Esc | Tab | Ins |Return| ---- | | | | : | 1 | 2 | 3 | ; | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | 0 | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | DEL |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_4] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_NO /* NOOP */, US_OSX_FEMININE_ORDINAL, US_OSX_MASCULINE_ORDINAL, KC_NO /* NOOP */, US_OSX_MIDDLE_DOT, US_OSX_BRITISH_POUND, _______,
|
||||
_______, KC_PGUP, KC_BSPC, KC_UP, KC_DELETE, KC_PGDN, _______,
|
||||
_______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, /* --- */
|
||||
_______, KC_ESCAPE, KC_TAB, KC_INSERT, KC_ENTER, KC_NO /* NOOP */, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, KC_DEL, _______,
|
||||
|
||||
// right hand side - main
|
||||
_______, US_OSX_CURRENCY_SIGN, KC_TAB, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO /* NOOP */,
|
||||
_______, US_OSX_INV_EXCLAMATION, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, US_OSX_EM_DASH,
|
||||
/* --- */ US_OSX_INV_QUESTIONMARK, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_COMMA, KC_KP_DOT,
|
||||
_______, US_OSX_COLON, KC_KP_1, KC_KP_2, KC_KP_3, US_OSX_SEMICOLON, _______,
|
||||
/* --- */ /* --- */ _______, KC_KP_0, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
|
||||
/* NEO_5: Greek
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | ---- | ----| ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | ---- | ----| ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_5] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, /* --- */
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, _______, _______,
|
||||
|
||||
// right hand side - main
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */,
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */,
|
||||
/* --- */ KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */,
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
/* --- */ /* --- */ _______, _______, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
|
||||
/* NEO_6: Math symbols
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | ---- | ----| ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | ---- | ----| ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NEO_6] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, /* --- */
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, _______, _______,
|
||||
|
||||
// right hand side - main
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */,
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */,
|
||||
/* --- */ KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */,
|
||||
_______, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, KC_NO /* NOOP */, _______,
|
||||
/* --- */ /* --- */ _______, _______, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
|
||||
/* US_1: US QWERTY
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | = | 1 | 2 | 3 | 4 | 5 | ESC | | NEO_1| 6 | 7 | 8 | 9 | 0 | - |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | \ | Q | W | E | R | T | ---- | | [ | Y | U | I | O | P | ] |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | TAB | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||
* |--------+------+------+------+------+------| ---- | | ---- |------+------+------+------+------+--------|
|
||||
* | LSHIFT | Z | X | C | V | B | | | | N | M | , | . | / | RSHIFT |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | LGUI | ` | ---- | ---- | FKEYS| | Left | Down | Up | Right| RGUI |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | LCTRL| LALT | | RALT | RCTRL|
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | HOME | | PGUP | | |
|
||||
* | BKSP | DEL |------| |------| ENTR | SPCE |
|
||||
* | | | END | | PGDN | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[US_1] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESCAPE,
|
||||
KC_BSLS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO /* NOOP */,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, /* --- */
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO /* NOOP */,
|
||||
KC_LGUI, KC_GRAVE, KC_NO, KC_NO, MO(FKEYS), /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ KC_LCTL, KC_LALT,
|
||||
/* --- */ /* --- */ KC_HOME,
|
||||
KC_BSPC, KC_DELETE, KC_END,
|
||||
|
||||
// right hand side - main
|
||||
TO(NEO_1), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
|
||||
KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
|
||||
/* --- */ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE,
|
||||
KC_NO /* NOOP */, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSFT,
|
||||
/* --- */ /* --- */ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_RGUI,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
KC_RALT, KC_RCTL, /* --- */
|
||||
KC_PGUP, /* --- */ /* --- */
|
||||
KC_PGDN, KC_ENTER, KC_SPACE
|
||||
),
|
||||
|
||||
/* FKEYS: Function keys
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | Prev | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | Play | | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | Next | | | | | |------| |------| | | | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | | |VolDn | Mute | VolUp |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[FKEYS] = LAYOUT_ergodox(
|
||||
// left hand side - main
|
||||
KC_MEDIA_REWIND, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
|
||||
KC_MEDIA_PLAY_PAUSE, _______, _______, _______, _______, _______, _______,
|
||||
KC_MEDIA_FAST_FORWARD, _______, _______, _______, _______, _______, /* --- */
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, /* --- */ /* --- */
|
||||
|
||||
// left hand side - thumb cluster
|
||||
/* --- */ _______, _______,
|
||||
/* --- */ /* --- */ _______,
|
||||
_______, _______, _______,
|
||||
|
||||
// right hand side - main
|
||||
KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
/* --- */ _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP,
|
||||
/* --- */ /* --- */ _______, _______, _______, _______, _______,
|
||||
|
||||
// right hand side - thumb cluster
|
||||
_______, _______, /* --- */
|
||||
_______, /* --- */ /* --- */
|
||||
_______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
// Send a key tap with a optional set of modifiers.
|
||||
void tap_with_modifiers(uint16_t keycode, uint8_t force_modifiers) {
|
||||
uint8_t active_modifiers = get_mods();
|
||||
|
||||
if ((force_modifiers & MOD_MASK_SHIFT) && !(active_modifiers & MOD_MASK_SHIFT)) register_code(KC_LSFT);
|
||||
if ((force_modifiers & MOD_MASK_CTRL) && !(active_modifiers & MOD_MASK_CTRL)) register_code(KC_LCTL);
|
||||
if ((force_modifiers & MOD_MASK_ALT) && !(active_modifiers & MOD_MASK_ALT)) register_code(KC_LALT);
|
||||
if ((force_modifiers & MOD_MASK_GUI) && !(active_modifiers & MOD_MASK_GUI)) register_code(KC_LGUI);
|
||||
|
||||
register_code(keycode);
|
||||
unregister_code(keycode);
|
||||
|
||||
if ((force_modifiers & MOD_MASK_SHIFT) && !(active_modifiers & MOD_MASK_SHIFT)) unregister_code(KC_LSFT);
|
||||
if ((force_modifiers & MOD_MASK_CTRL) && !(active_modifiers & MOD_MASK_CTRL)) unregister_code(KC_LCTL);
|
||||
if ((force_modifiers & MOD_MASK_ALT) && !(active_modifiers & MOD_MASK_ALT)) unregister_code(KC_LALT);
|
||||
if ((force_modifiers & MOD_MASK_GUI) && !(active_modifiers & MOD_MASK_GUI)) unregister_code(KC_LGUI);
|
||||
}
|
||||
|
||||
// Special remapping for keys with different keycodes/macros when used with shift modifiers.
|
||||
bool process_record_user_shifted(uint16_t keycode, keyrecord_t *record) {
|
||||
uint8_t active_modifiers = get_mods();
|
||||
uint8_t shifted = active_modifiers & MOD_MASK_SHIFT;
|
||||
uint8_t command = active_modifiers & MOD_MASK_GUI;
|
||||
|
||||
// Early return on key release
|
||||
if (!record->event.pressed) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (shifted) {
|
||||
clear_mods();
|
||||
|
||||
switch (keycode) {
|
||||
case NEO2_1:
|
||||
// degree symbol
|
||||
tap_code16(S(A(KC_8)));
|
||||
break;
|
||||
case NEO2_2:
|
||||
// section symbol
|
||||
tap_code16(A(KC_6));
|
||||
break;
|
||||
case NEO2_3:
|
||||
if (command) {
|
||||
tap_code16(S(G(KC_3)));
|
||||
} else {
|
||||
// There is no OSX key combination for the script small l character
|
||||
}
|
||||
break;
|
||||
case NEO2_4:
|
||||
if (command) {
|
||||
tap_code16(S(G(KC_4)));
|
||||
} else {
|
||||
tap_code16(S(A(KC_BACKSLASH)));
|
||||
}
|
||||
break;
|
||||
case NEO2_5:
|
||||
if (command) {
|
||||
tap_code16(S(G(KC_5)));
|
||||
} else {
|
||||
// left angled quote
|
||||
tap_code16(A(KC_BACKSLASH));
|
||||
}
|
||||
break;
|
||||
case NEO2_6:
|
||||
// dollar sign
|
||||
tap_code16(S(KC_4));
|
||||
break;
|
||||
case NEO2_7:
|
||||
// euro sign
|
||||
tap_code16(S(A(KC_2)));
|
||||
break;
|
||||
case NEO2_8:
|
||||
// low9 double quote
|
||||
tap_code16(S(A(KC_W)));
|
||||
break;
|
||||
case NEO2_9:
|
||||
// left double quote
|
||||
tap_code16(A(KC_LEFT_BRACKET));
|
||||
break;
|
||||
case NEO2_0:
|
||||
// right double quote
|
||||
tap_code16(S(A(KC_LEFT_BRACKET)));
|
||||
break;
|
||||
case NEO2_MINUS:
|
||||
// em dash
|
||||
tap_code16(S(A(KC_MINUS)));
|
||||
break;
|
||||
case NEO2_COMMA:
|
||||
// en dash
|
||||
tap_code16(A(KC_MINUS));
|
||||
break;
|
||||
case NEO2_DOT:
|
||||
// bullet
|
||||
tap_code16(A(KC_8));
|
||||
break;
|
||||
case NEO2_SHARP_S:
|
||||
// german sharp s
|
||||
tap_code16(S(KC_S));
|
||||
break;
|
||||
case NEO2_UE:
|
||||
tap_code16(A(KC_U));
|
||||
tap_code16(S(KC_U));
|
||||
break;
|
||||
case NEO2_OE:
|
||||
tap_code16(A(KC_U));
|
||||
tap_code16(S(KC_O));
|
||||
break;
|
||||
case NEO2_AE:
|
||||
tap_code16(A(KC_U));
|
||||
tap_code16(S(KC_A));
|
||||
break;
|
||||
default:
|
||||
set_mods(active_modifiers);
|
||||
return true;
|
||||
}
|
||||
|
||||
set_mods(active_modifiers);
|
||||
return false;
|
||||
} else {
|
||||
switch (keycode) {
|
||||
case NEO2_1:
|
||||
tap_code(KC_1);
|
||||
break;
|
||||
case NEO2_2:
|
||||
tap_code(KC_2);
|
||||
break;
|
||||
case NEO2_3:
|
||||
tap_code(KC_3);
|
||||
break;
|
||||
case NEO2_4:
|
||||
tap_code(KC_4);
|
||||
break;
|
||||
case NEO2_5:
|
||||
tap_code(KC_5);
|
||||
break;
|
||||
case NEO2_6:
|
||||
tap_code(KC_6);
|
||||
break;
|
||||
case NEO2_7:
|
||||
tap_code(KC_7);
|
||||
break;
|
||||
case NEO2_8:
|
||||
tap_code(KC_8);
|
||||
break;
|
||||
case NEO2_9:
|
||||
tap_code(KC_9);
|
||||
break;
|
||||
case NEO2_0:
|
||||
tap_code(KC_0);
|
||||
break;
|
||||
case NEO2_MINUS:
|
||||
tap_code(KC_MINUS);
|
||||
break;
|
||||
case NEO2_COMMA:
|
||||
tap_code(KC_COMMA);
|
||||
break;
|
||||
case NEO2_DOT:
|
||||
tap_code(KC_DOT);
|
||||
break;
|
||||
case NEO2_SHARP_S:
|
||||
// german sharp s
|
||||
tap_code16(A(KC_S));
|
||||
break;
|
||||
case NEO2_UE:
|
||||
tap_code16(A(KC_U));
|
||||
tap_code(KC_U);
|
||||
break;
|
||||
case NEO2_OE:
|
||||
tap_code16(A(KC_U));
|
||||
tap_code(KC_O);
|
||||
break;
|
||||
case NEO2_AE:
|
||||
tap_code16(A(KC_U));
|
||||
tap_code(KC_A);
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Runs for each key down or up event.
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
uint8_t active_modifiers = get_mods();
|
||||
uint8_t shifted = active_modifiers & MOD_MASK_SHIFT;
|
||||
switch (keycode) {
|
||||
case KC_LSFT:
|
||||
if (record->event.pressed) {
|
||||
capslock_state |= (MOD_BIT(KC_LSFT));
|
||||
} else {
|
||||
capslock_state &= ~(MOD_BIT(KC_LSFT));
|
||||
}
|
||||
break;
|
||||
case KC_RIGHT_SHIFT:
|
||||
if (record->event.pressed) {
|
||||
capslock_state |= MOD_BIT(KC_RSFT);
|
||||
} else {
|
||||
capslock_state &= ~(MOD_BIT(KC_RSFT));
|
||||
}
|
||||
break;
|
||||
case NEO2_LMOD3:
|
||||
if (record->event.pressed) {
|
||||
layer_on(NEO_3);
|
||||
neo3_state |= (1 << 1);
|
||||
} else {
|
||||
// Turn off NEO_3 layer unless it's enabled through NEO2_RMOD3 as well.
|
||||
if ((neo3_state & (1 << 2)) == 0) {
|
||||
layer_off(NEO_3);
|
||||
}
|
||||
neo3_state &= ~(1 << 1);
|
||||
}
|
||||
break;
|
||||
case NEO2_RMOD3:
|
||||
if (record->event.pressed) {
|
||||
neo3_timer = timer_read();
|
||||
neo3_state |= (1 << 2);
|
||||
// Reset tap detection state
|
||||
neo3_state &= ~(1 << 3);
|
||||
layer_on(NEO_3);
|
||||
} else {
|
||||
// Turn off NEO_3 layer unless it's enabled through NEO2_LMOD3 as well.
|
||||
if ((neo3_state & (1 << 1)) == 0) {
|
||||
layer_off(NEO_3);
|
||||
}
|
||||
neo3_state &= ~(1 << 2);
|
||||
|
||||
// Was the NEO2_RMOD3 key TAPPED?
|
||||
if (timer_elapsed(neo3_timer) <= TAPPING_TERM) {
|
||||
if ((neo3_state & ~(1 << 3)) > 0) {
|
||||
// We are still in NEO_3 layer, send keycode and modifiers for @
|
||||
tap_with_modifiers(KC_2, MOD_MASK_SHIFT);
|
||||
return false;
|
||||
} else {
|
||||
// Do the normal key processing, send ß
|
||||
if ((neo3_state & (1 << 3)) == 0) {
|
||||
// german sharp s
|
||||
if (shifted) {
|
||||
tap_code16(S(KC_S));
|
||||
} else {
|
||||
tap_code16(A(KC_S));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (record->event.pressed && neo3_state > 0) {
|
||||
// Track that we've seen a separate keypress event
|
||||
neo3_state |= (1 << 3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ((capslock_state & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
|
||||
// CAPSLOCK is currently active, disable it
|
||||
if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
|
||||
unregister_code(KC_LOCKING_CAPS_LOCK);
|
||||
} else {
|
||||
register_code(KC_LOCKING_CAPS_LOCK);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return process_record_user_shifted(keycode, record);
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void){
|
||||
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
switch (layer) {
|
||||
// TODO: Make this relevant to the ErgoDox EZ.
|
||||
case 1:
|
||||
ergodox_right_led_1_on();
|
||||
break;
|
||||
case 2:
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
default:
|
||||
// none
|
||||
break;
|
||||
}
|
||||
};
|
||||
9
layouts/community/ergodox/audax_osx_neo2/layers.h
Normal file
9
layouts/community/ergodox/audax_osx_neo2/layers.h
Normal file
@@ -0,0 +1,9 @@
|
||||
enum layers {
|
||||
NEO_1, // layer_0
|
||||
NEO_3, // layer_1
|
||||
NEO_4, // layer_2
|
||||
NEO_5, // layer_3
|
||||
NEO_6, // layer_4
|
||||
US_1, // layer_5
|
||||
FKEYS // layer_6
|
||||
};
|
||||
219
layouts/community/ergodox/audax_osx_neo2/readme.md
Normal file
219
layouts/community/ergodox/audax_osx_neo2/readme.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# Neo 2 for ErgoDox on QWERTY
|
||||
|
||||
# Description
|
||||
|
||||
The Neo layout is an optimized German keyboard layout developed by the
|
||||
Neo Users Group, supporting many Latin-based alphabets. The positions
|
||||
of the letters are not only optimized for German letter frequency,
|
||||
but also for typical groups of two or three letters. English is
|
||||
considered a primary target as well.
|
||||
|
||||
The design tries to enforce the alternating usage of both hands to
|
||||
increase typing speed and incorporates ideas from de-ergo and other
|
||||
ergonomic layouts. High frequency keys are placed in the home row.
|
||||
The current layout Neo 2.0 has unique features making it suited for
|
||||
many target groups such as programmers, mathematicians, scientists or
|
||||
LaTeX authors.
|
||||
|
||||
Neo is grouped into six layers, each dedicated to a special purpose.
|
||||
|
||||
# Layers
|
||||
|
||||
At the core this is a Neo 2.0 layout adjusted for the Ergodox Infinity.
|
||||
The keymap is laid out expecting a macOs using the US QWERTY or ABC
|
||||
Extended layout.
|
||||
|
||||
[Layer 1](#layer-1) Lowercase, upppercase and typographical characters
|
||||
|
||||
[Layer 2](#layer-2) Special characters for programming
|
||||
|
||||
[Layer 3](#layer-3) WASD-like movement keys and number block
|
||||
|
||||
[Layer 4](#layer-4) Greek characters
|
||||
|
||||
[Layer 5](#layer-5) Mathematical symbols and Greek uppercase characters
|
||||
|
||||
[Layer 6](#layer-6) Ergodox Infinity US QWERTY layout
|
||||
|
||||
[Layer 7](#layer-7) Function keys
|
||||
|
||||
## Legend
|
||||
|
||||
* Keys marked with `----` are dead keys.
|
||||
* Blank keys are transparent and fall through to lower levels.
|
||||
|
||||
## Layer 1
|
||||
|
||||
This layer implements NEO layers 1 and 2.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | 1/° | 2/§ | 3/ | 4/» | 5/« | MPLY | | MNEXT| 6/$ | 7/€ | 8/„ | 9/“ | 0/” | -/— |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| TAB | X | V | L | C | W | LCTL | | RCTL | K | H | G | F | Q | ß |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| NEO_3 | U | I | A | E | O |------| |------| S | N | R | T | D | Y |
|
||||
|--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
|
||||
| LSHIFT | Ü | Ö | Ä | P | Z | | | | B | M | ,/– | ./• | J | RSHIFT |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| ---- | ---- | LCTL | LALT | LGUI | | RGUI | Left | Down | Up | Right|
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| FKEYS| Home | | PgUp | FKEYS|
|
||||
,------|------|------| |------+------+------.
|
||||
| Back-| | End | | PgDn | | |
|
||||
| space|Delete|------| |------| Enter|Space |
|
||||
| | | NEO_4| | NEO_4| | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 2
|
||||
|
||||
This layer implements NEO layer 3.
|
||||
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ---- | ---- | ---- | › | ‹ | | | | ¢ | ¥ | ‚ | ‘ | ’ | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | … | _ | [ | ] | ^ | | | | ! | < | > | = | & | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | \ | / | { | } | * |------| |------| ? | ( | ) | - | : | @ |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | # | $ | | | ~ | ` | | | | + | % | " | ' | ; | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 3
|
||||
|
||||
This layer implements NEO layer 4.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ª | º | ---- | · | £ | | | | ---- | Tab | / | * | - | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | PgUp | ⌫ | Up | ⌦ | PgDn | | | | ¡ | 7 | 8 | 9 | + | – |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | Home | Left | Down | Right| End |------| |------| ¿ | 4 | 5 | 6 | , | . |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | Esc | Tab | Ins |Return| ---- | | | | : | 1 | 2 | 3 | ; | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | 0 | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 4
|
||||
|
||||
This layer is currently empty/reserved for NEO layer 5.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 5
|
||||
|
||||
This layer is currently empty/reserved for NEO layer 6.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 6
|
||||
|
||||
A bare bones implementation of the default Ergodox Infinity layout.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| = | 1 | 2 | 3 | 4 | 5 | ESC | | NEO_1| 6 | 7 | 8 | 9 | 0 | - |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| \ | Q | W | E | R | T | ---- | | [ | Y | U | I | O | P | ] |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| TAB | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||
|--------+------+------+------+------+------| ---- | | ---- |------+------+------+------+------+--------|
|
||||
| LSHIFT | Z | X | V | B | M | | | | N | M | , | . | / | RSHIFT |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| LGUI | ` | ---- | ---- | FKEYS| | Left | Down | Up | Right| RGUI |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| LCTRL| LALT | | RALT | RCTRL|
|
||||
,------|------|------| |------+------+------.
|
||||
| | | HOME | | PGUP | | |
|
||||
| BKSP | DEL |------| |------| ENTR | SPCE |
|
||||
| | | END | | PGDN | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 7
|
||||
|
||||
This layer implements function and multimedia keys.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| Prev | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | VolUp |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| Play | | | | | | | | | | | | | | VolDn |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| Next | | | | | |------| |------| | | | | | Mute |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | | | | | | | | | | | | | | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
Reference in New Issue
Block a user