Remove layouts
This commit is contained in:
@@ -1,5 +0,0 @@
|
|||||||
[{a:7},"","","","","","","","","","","","","",{w:2},""],
|
|
||||||
[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""],
|
|
||||||
[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
|
|
||||||
[{w:2.25},"","","","","","","","","","","",{w:2.75},""],
|
|
||||||
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "mechmerlin.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_BL] = LAYOUT_60_ansi(
|
|
||||||
KC_GESC, 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_BSLASH, \
|
|
||||||
KC_CTCP, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_FNX, KC_RALT, KC_RGUI, KC_RCTL),
|
|
||||||
|
|
||||||
[_FL] = LAYOUT_60_ansi(
|
|
||||||
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, KC_DEL, \
|
|
||||||
BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
|
|
||||||
[_AL] = LAYOUT_60_ansi(
|
|
||||||
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, 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, RSFT_T(KC_UP), \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT)
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
MechMerlin's Standard ANSI 60% Layout
|
|
||||||
======================
|
|
||||||
|
|
||||||
This is the 60% layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin)
|
|
||||||
YouTube channel.
|
|
||||||
|
|
||||||
It is used on his
|
|
||||||
[Duck Eagle V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/eagle_viper/v2)
|
|
||||||
[NPKC KC60](https://github.com/qmk/qmk_firmware/tree/master/keyboards/kc60)
|
|
||||||
[1up60HSE](https://github.com/qmk/qmk_firmware/tree/master/keyboards/1upkeyboards/1up60hse)
|
|
||||||
[HS60 V1](https://github.com/qmk/qmk_firmware/tree/master/keyboards/hs60/v1)
|
|
||||||
|
|
||||||
## Keymap Notes
|
|
||||||
- Arrow toggle switch is tapping the `FN` key once.
|
|
||||||
- `Caps Lock` can be held to act as a `Left Control`
|
|
||||||
|
|
||||||
### Build
|
|
||||||
To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin-ansi`.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := mechmerlin
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
# 60_ansi
|
|
||||||
|
|
||||||
This is the standard 60% ANSI keyboard layout.
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
### 1. Layout defined
|
|
||||||
|
|
||||||
A keyboard's `.h` file needs to have `LAYOUT_60_ansi` defined
|
|
||||||
|
|
||||||
```c
|
|
||||||
#define LAYOUT_60_ansi( \
|
|
||||||
K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
|
|
||||||
K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
|
|
||||||
K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
|
|
||||||
K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
|
|
||||||
K30, K40, K50, K60, K70, K00, K10, K20 \
|
|
||||||
) { \
|
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
|
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \
|
|
||||||
{ K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
|
|
||||||
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
|
|
||||||
{ K40, KC_NO, K42, K43, K44, K45, K46, K47 }, \
|
|
||||||
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \
|
|
||||||
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
|
|
||||||
{ K70, K71, K72, K73, K74, K75, K76, K77 } \
|
|
||||||
}
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
This layout needs to match the layout defined in
|
|
||||||
|
|
||||||
qmk_firmware/layouts/community/layout.json
|
|
||||||
|
|
||||||
### 2. Configuring rules.mk
|
|
||||||
|
|
||||||
`rules.mk` needs to have the following line:
|
|
||||||
|
|
||||||
LAYOUTS = 60_ansi
|
|
||||||
|
|
||||||
### 3. Defining a keymap
|
|
||||||
|
|
||||||
A keymap must be defined at
|
|
||||||
|
|
||||||
qmk_firmware/layouts/community/60_ansi/yourfoldername/keymap.c
|
|
||||||
|
|
||||||
This keymap must have a `LAYOUT_60_ansi` layout defined.
|
|
||||||
|
|
||||||
```c
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[BASE] = LAYOUT_60_ansi(
|
|
||||||
KC_GESC, 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_BSLASH, \
|
|
||||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
|
||||||
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_LCTL, KC_LALT, KC_LGUI, KC_SPACE, MO(1), KC_RALT, KC_RGUI, KC_RCTL),
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To make generate a hex file, type
|
|
||||||
|
|
||||||
make yourkeyboard:yourfoldername
|
|
||||||
|
|
||||||
This hex file will contain a keymap with layout `LAYOUT_60_ansi` derived from
|
|
||||||
|
|
||||||
qmk_firmware/layouts/community/60_ansi/yourfoldername/keymap.c
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
/* Copyright 2018 Stanrc85
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
#include "stanrc85.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT_60_ansi(
|
|
||||||
TD_TESC, 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_CTLE, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, KC_RALT, TD_TWIN, MO(3), TD_TCTL),
|
|
||||||
|
|
||||||
[1] = LAYOUT_60_ansi(
|
|
||||||
KC_GESC, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(2), MO(3), KC_RCTL),
|
|
||||||
|
|
||||||
[2] = LAYOUT_60_ansi(
|
|
||||||
KC_TILD, 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_DEL,
|
|
||||||
_______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, KC_INS,
|
|
||||||
KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
|
|
||||||
_______, KC_RDP, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
|
||||||
|
|
||||||
[3] = LAYOUT_60_ansi(
|
|
||||||
_______, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
|
|
||||||
TG(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
<!-- Copyright 2019 Stanrc85
|
|
||||||
|
|
||||||
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/>.-->
|
|
||||||
|
|
||||||
# Stanrc85's Standard ANSI 60% Layout
|
|
||||||
|
|
||||||
## Keymap Notes
|
|
||||||
- Layer 0 is default QWERTY layout with additional custom features:
|
|
||||||
- SpaceFN to function layer 2 on `Space`
|
|
||||||
- `CTRL` when held and `ESC` when tapped on `CAPS LOCK`
|
|
||||||
- Tap Dance on `Fn1` for `CTRL+ALT+DEL` and `WIN+L`
|
|
||||||
- Tap Dance on `ESC` for `ESC` and ` ` `
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- Layer 1 is default QWERTY with no custom features used mostly for gaming
|
|
||||||
- Enabled by `Fn2+CAPS` from base layer
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- Layer 2 is Function layer:
|
|
||||||
- F keys
|
|
||||||
- Arrows
|
|
||||||
- Volume and Media controls
|
|
||||||
- AutoHotkey shortcuts based on [Speaker Control](https://github.com/stanrc85/Speaker-Control) script
|
|
||||||
- AHK Mic is used to mute/unmute microphone
|
|
||||||
- AHK Speaker switches audio output between headphones and speakers
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- Layer 3 is RGB control and RESET
|
|
||||||
- `Fn2+CAPS` used to toggle Default QWERTY layer on and off
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Build
|
|
||||||
To build the firmware file associated with this keymap, simply run `make your_keyboard:stanrc85-ansi`.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := stanrc85
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#define ENABLE_GAME_LAYER
|
|
||||||
|
|
||||||
#define TEMPLATE( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
|
||||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
|
||||||
) LAYOUT_60_ansi( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
|
|
||||||
K40, K41, K42, K45, K48, K49, K4B, K4C \
|
|
||||||
)
|
|
||||||
|
|
||||||
#endif //CONFIG_USER_H
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
// This space intentionally left blank
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := talljoe
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[{a:7},"","","","","","","","","","","","","","",""],
|
|
||||||
[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""],
|
|
||||||
[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
|
|
||||||
[{w:2.25},"","","","","","","","","","","",{w:1.75},"",{w:1},""],
|
|
||||||
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "mechmerlin.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_BL] = LAYOUT_60_ansi_split_bs_rshift(
|
|
||||||
KC_GESC, 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_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_BSLASH, \
|
|
||||||
KC_CTCP, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TG(2), \
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_RALT, KC_RGUI, KC_RCTL),
|
|
||||||
|
|
||||||
[_FL] = LAYOUT_60_ansi_split_bs_rshift(
|
|
||||||
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, KC_DEL, KC_DEL, \
|
|
||||||
BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
|
|
||||||
[_AL] = LAYOUT_60_ansi_split_bs_rshift(
|
|
||||||
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, 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, RSFT_T(KC_UP), KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT)
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
MechMerlin's Split ANSI 60% Layout
|
|
||||||
======================
|
|
||||||
|
|
||||||
This is the 60% layout with split backspace and right shift used by u/merlin36,
|
|
||||||
host of the [MechMerlin](www.youtube.com/mechmerlin) YouTube channel.
|
|
||||||
|
|
||||||
It is used on his
|
|
||||||
[Sentraq S60-X RGB](https://github.com/qmk/qmk_firmware/tree/master/keyboards/s60_x)
|
|
||||||
[Zeal60 Rev4](https://github.com/qmk/qmk_firmware/tree/master/keyboards/zeal60)
|
|
||||||
[DO60](https://github.com/qmk/qmk_firmware/tree/master/keyboards/do60)
|
|
||||||
|
|
||||||
## Keymap Notes
|
|
||||||
- Highly influenced by the KBP V60 and WKL B.Face standard layouts
|
|
||||||
- Arrow toggle switch is the 1u key by right shift
|
|
||||||
|
|
||||||
### Build
|
|
||||||
To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin-split`.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := mechmerlin
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# 60_ansi_split_bs_rshift
|
|
||||||
|
|
||||||
LAYOUT_60_ansi_split_bs_rshift
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#define ENABLE_GAME_LAYER
|
|
||||||
|
|
||||||
#define TEMPLATE( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
|
||||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
|
||||||
) LAYOUT_60_ansi_split_bs_rshift( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
|
||||||
K40, K41, K42, K45, K48, K49, K4B, K4C \
|
|
||||||
)
|
|
||||||
|
|
||||||
/* Color Map */
|
|
||||||
#define CM( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
|
||||||
K40, K41, K42, K47, K4A, K4B, K4C, K4D \
|
|
||||||
) { \
|
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
|
||||||
{ K30, {}, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
|
||||||
{ K40, K41, K42, {}, {}, {}, {}, K47, {}, {}, K4A, K4B, K4C, K4D } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_M60_A)
|
|
||||||
|
|
||||||
#define ZEAL_RGB
|
|
||||||
|
|
||||||
/* enable/disable LEDs based on layout */
|
|
||||||
#undef USE_SPLIT_BACKSPACE
|
|
||||||
#define USE_SPLIT_BACKSPACE 1
|
|
||||||
|
|
||||||
#undef USE_SPLIT_LEFT_SHIFT
|
|
||||||
#define USE_SPLIT_LEFT_SHIFT 0
|
|
||||||
|
|
||||||
#undef USE_SPLIT_RIGHT_SHIFT
|
|
||||||
#define USE_SPLIT_RIGHT_SHIFT 1
|
|
||||||
|
|
||||||
#undef USE_7U_SPACEBAR
|
|
||||||
#define USE_7U_SPACEBAR 0
|
|
||||||
|
|
||||||
#undef USE_ISO_ENTER
|
|
||||||
#define USE_ISO_ENTER 0
|
|
||||||
|
|
||||||
#undef TAPPING_TOGGLE
|
|
||||||
#define TAPPING_TOGGLE 2
|
|
||||||
|
|
||||||
#undef BACKLIGHT_MOD_LAYER_3
|
|
||||||
#define BACKLIGHT_MOD_LAYER_3 RESET_LAYER
|
|
||||||
|
|
||||||
#undef BACKLIGHT_ALPHAS_MODS_ROW_0
|
|
||||||
#undef BACKLIGHT_ALPHAS_MODS_ROW_1
|
|
||||||
#undef BACKLIGHT_ALPHAS_MODS_ROW_2
|
|
||||||
#define BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
|
|
||||||
#define BACKLIGHT_ALPHAS_MODS_ROW_1 0b0010000000000001
|
|
||||||
#define BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
|
|
||||||
|
|
||||||
#endif //KEYBOARD_zeal60
|
|
||||||
|
|
||||||
#endif //CONFIG_USER_H
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
// This space intentionally left blank
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
SRC += $(KEYMAP_PATH)/solarized.c
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#include "solarized.h"
|
|
||||||
|
|
||||||
#define MAKE_COLOR(_H, _S, _V) \
|
|
||||||
{ .h = (((uint32_t)_H) * 255) / 360, .s = (((uint16_t)_S) * 255) / 100, .v = (((uint16_t)_V) * 255) / 100 }
|
|
||||||
|
|
||||||
solarized_t solarized = {
|
|
||||||
.base03 = MAKE_COLOR(193, 100, 21),
|
|
||||||
.base02 = MAKE_COLOR(192, 90, 26),
|
|
||||||
.base01 = MAKE_COLOR(194, 25, 46),
|
|
||||||
.base00 = MAKE_COLOR(195, 23, 51),
|
|
||||||
.base0 = MAKE_COLOR(186, 13, 59),
|
|
||||||
.base1 = MAKE_COLOR(180, 9, 63),
|
|
||||||
.base2 = MAKE_COLOR( 44, 11, 93),
|
|
||||||
.base3 = MAKE_COLOR( 44, 10, 99),
|
|
||||||
.yellow = MAKE_COLOR( 45, 100, 71),
|
|
||||||
.orange = MAKE_COLOR( 18, 89, 80),
|
|
||||||
.red = MAKE_COLOR( 1, 79, 86),
|
|
||||||
.magenta = MAKE_COLOR(331, 74, 83),
|
|
||||||
.violet = MAKE_COLOR(237, 45, 77),
|
|
||||||
.blue = MAKE_COLOR(205, 82, 82),
|
|
||||||
.cyan = MAKE_COLOR(175, 74, 63),
|
|
||||||
.green = MAKE_COLOR( 68, 100, 60),
|
|
||||||
};
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#ifndef SOLARIZED_H
|
|
||||||
#define SOLARIZED_H
|
|
||||||
|
|
||||||
#include "quantum/color.h"
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
HSV base03;
|
|
||||||
HSV base02;
|
|
||||||
HSV base01;
|
|
||||||
HSV base00;
|
|
||||||
HSV base0;
|
|
||||||
HSV base1;
|
|
||||||
HSV base2;
|
|
||||||
HSV base3;
|
|
||||||
HSV yellow;
|
|
||||||
HSV orange;
|
|
||||||
HSV red;
|
|
||||||
HSV magenta;
|
|
||||||
HSV violet;
|
|
||||||
HSV blue;
|
|
||||||
HSV cyan;
|
|
||||||
HSV green;
|
|
||||||
} solarized_t;
|
|
||||||
|
|
||||||
extern solarized_t solarized;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#define ENABLE_GAME_LAYER
|
|
||||||
|
|
||||||
#define TEMPLATE( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
|
||||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
|
||||||
) LAYOUT_60_hhkb( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
|
||||||
K41, K42, K45, K48, K4C \
|
|
||||||
)
|
|
||||||
|
|
||||||
#ifdef RGB_BACKLIGHT_M60_A
|
|
||||||
#define ZEAL_RGB
|
|
||||||
#endif
|
|
||||||
#endif //CONFIG_USER_H
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
// This space intentionally left blank
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := talljoe
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[{a:7},"","","","","","","","","","","","","",{w:2},""],
|
|
||||||
[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""],
|
|
||||||
[{w:1.75},"","","","","","","","","","","","",""],
|
|
||||||
[{w:1.25},"","","","","","","","","","","","",{w:2.75},""],
|
|
||||||
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# 60_iso
|
|
||||||
|
|
||||||
LAYOUT_60_iso
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
Unxmaal's GH60 Layout
|
|
||||||
=====================
|
|
||||||
* Mostly stolen from /u/robotmaxtron
|
|
||||||
|
|
||||||
##Quantum MK Firmware
|
|
||||||
For the full Quantum feature list, see the parent readme.md.
|
|
||||||
|
|
||||||
* Standard Mac ANSI layout
|
|
||||||
* Spacebar acts as space when tapped, Fn when held
|
|
||||||
* Menu acts as menu when tapped, Fn2 when held
|
|
||||||
* Layer1:
|
|
||||||
* Top row = `~, F1-F12, Del
|
|
||||||
* JKIL = arrow cluster
|
|
||||||
* Layer2:
|
|
||||||
* Top row = media controls
|
|
||||||
* JKIL = PgDn/Up/Home/Insert
|
|
||||||
* Backspace = Reset
|
|
||||||
|
|
||||||
### Additional Credits
|
|
||||||
Keymap has been based on various keymaps available from the QMK Repo for the GH60-SATAN and KC60 keyboards.
|
|
||||||
|
|
||||||

|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
|
|
||||||
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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef KEYMAP_CONFIG_H
|
|
||||||
#define KEYMAP_CONFIG_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#ifndef RGB_DI_PIN
|
|
||||||
#define RGB_DI_PIN F4
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 8 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,232 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "action_layer.h"
|
|
||||||
|
|
||||||
#define _BL 0
|
|
||||||
#define _AL 1
|
|
||||||
#define _FL 2
|
|
||||||
#define _UL 3
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/*
|
|
||||||
* ISO Base, Mac style
|
|
||||||
* ,-----------------------------------------------------------------------------.
|
|
||||||
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | Backsp |
|
|
||||||
* |-----------------------------------------------------------------------------|
|
|
||||||
* |Tab | Q | W | E | R | T | Y | U | I| O| P| [| ]| |
|
|
||||||
* |----------------------------------------------------------------------- |
|
|
||||||
* |Caps/Fn | A| S| D| F| G| H| J| K| L| ;| '| #|Enter|
|
|
||||||
* |-----------------------------------------------------------------------------|
|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /| Shift |
|
|
||||||
* |-----------------------------------------------------------------------------|
|
|
||||||
* |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt |Menu(tapped, Fn2(held)|Ctrl|
|
|
||||||
* `-----------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_BL] = LAYOUT_60_iso(
|
|
||||||
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_LCTL,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_LSFT,KC_NUBS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, \
|
|
||||||
MO(1),KC_LALT,KC_LGUI, LT(1,KC_SPACE), KC_RGUI, KC_RALT, LT(2,KC_MENU), KC_RCTL),
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pok3r style arrow cluster
|
|
||||||
* ,-----------------------------------------------------------.
|
|
||||||
* |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | | | | | | | |Up| | | | | |
|
|
||||||
* |------------------------------------------------------- |
|
|
||||||
* | | | | | | | |Left|Down|Right| | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | | | | | | | | | | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_AL] = LAYOUT_60_iso(
|
|
||||||
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,KC_DELETE, \
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,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),
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Secondary function layer
|
|
||||||
* ,-------------------------------------------------------------.
|
|
||||||
* | | | | | | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset |
|
|
||||||
* |-------------------------------------------------------------|
|
|
||||||
* | | | | | | | | | |PgUp| | | | |
|
|
||||||
* |-------------------------------------------------------- |
|
|
||||||
* | | | | | | | |Home|PgDown|End| | | | |
|
|
||||||
* |-------------------------------------------------------------|
|
|
||||||
* | | | | | | | | | | | | |
|
|
||||||
* |-------------------------------------------------------------|
|
|
||||||
* | | | | | | | | |
|
|
||||||
* `-------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FL] = LAYOUT_60_iso(
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS, \
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_TRNS,KC_HOME,KC_PGDN,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_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Locking layer for controlling the underglow.
|
|
||||||
* NOTE: currently unused.
|
|
||||||
*
|
|
||||||
* ,-----------------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | | | | | | | | | | | | | |
|
|
||||||
* |------------------------------------------------------- |
|
|
||||||
* | |On|Mode| | | | | | | | | | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_UL] = LAYOUT_60_iso(
|
|
||||||
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,F(4),F(5),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,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
|
||||||
};
|
|
||||||
|
|
||||||
enum function_id {
|
|
||||||
RGBLED_TOGGLE,
|
|
||||||
RGBLED_STEP_MODE,
|
|
||||||
RGBLED_INCREASE_HUE,
|
|
||||||
RGBLED_DECREASE_HUE,
|
|
||||||
RGBLED_INCREASE_SAT,
|
|
||||||
RGBLED_DECREASE_SAT,
|
|
||||||
RGBLED_INCREASE_VAL,
|
|
||||||
RGBLED_DECREASE_VAL,
|
|
||||||
SHIFT_ESC,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
[0] = ACTION_LAYER_MOMENTARY(2), // Momentary Fn overlay
|
|
||||||
[1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay
|
|
||||||
[2] = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer
|
|
||||||
[3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay
|
|
||||||
[4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
|
|
||||||
[5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
|
|
||||||
[6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
|
|
||||||
[7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
|
|
||||||
[8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
|
|
||||||
[9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
|
|
||||||
[10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
|
|
||||||
[11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
|
|
||||||
[12] = ACTION_FUNCTION(SHIFT_ESC),
|
|
||||||
[13] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
// Layer LED indicators
|
|
||||||
// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
|
|
||||||
#ifdef KEYBOARD_gh60
|
|
||||||
uint32_t layer = layer_state;
|
|
||||||
if (layer & (1<<1)) {
|
|
||||||
gh60_wasd_leds_on();
|
|
||||||
} else {
|
|
||||||
gh60_wasd_leds_off();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (layer & (1<<2)) {
|
|
||||||
gh60_esc_led_on();
|
|
||||||
} else {
|
|
||||||
gh60_esc_led_off();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
switch (id) {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
case RGBLED_TOGGLE:
|
|
||||||
//led operations
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_toggle();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_INCREASE_HUE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_hue();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_DECREASE_HUE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_hue();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_INCREASE_SAT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_sat();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_DECREASE_SAT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_sat();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_INCREASE_VAL:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_val();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_DECREASE_VAL:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_val();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RGBLED_STEP_MODE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_step();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
static uint8_t shift_esc_shift_mask;
|
|
||||||
// Shift + ESC = ~
|
|
||||||
case SHIFT_ESC:
|
|
||||||
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (shift_esc_shift_mask) {
|
|
||||||
add_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
add_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (shift_esc_shift_mask) {
|
|
||||||
del_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
del_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Only enable RGB on avr boards
|
|
||||||
ifndef MCU_FAMILY
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
|
||||||
endif
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
["~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{x:0.5},"Page Up"],
|
|
||||||
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{x:0.5},"Page Down"],
|
|
||||||
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
|
|
||||||
[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.25},"Shift","Up"],
|
|
||||||
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"Alt","Fn",{w:1.25},"Ctrl","Left","Down","Right"]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "mechmerlin.h"
|
|
||||||
|
|
||||||
#define _CL 2
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_BL] = LAYOUT_66_ansi(
|
|
||||||
KC_GESC,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_PGUP, \
|
|
||||||
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_PGDN, \
|
|
||||||
KC_CTCP,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_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_LCTL,KC_LGUI,KC_LALT, KC_SPC, MO(_FL),KC_RGUI,KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT),
|
|
||||||
|
|
||||||
[_FL] = LAYOUT_66_ansi(
|
|
||||||
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, KC_DEL, KC_VOLU, \
|
|
||||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_VOLD, \
|
|
||||||
_______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
|
|
||||||
_______, _______,_______,_______,_______,_______,_______,KC_MUTE,KC_VOLD,KC_VOLU,_______, _______, KC_PGUP, \
|
|
||||||
_______,_______,_______, _______, _______,_______,_______,KC_HOME,KC_PGDN,KC_END),
|
|
||||||
|
|
||||||
[_CL] = LAYOUT_66_ansi(
|
|
||||||
BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, _______, RGB_VAI, \
|
|
||||||
BL_TOGG,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \
|
|
||||||
RGB_TOG,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
|
|
||||||
VLK_TOG, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
|
|
||||||
CK_TOGG,_______,_______, RGB_MOD, _______,_______,_______,RGB_HUD,RGB_SAD,RGB_HUI),
|
|
||||||
};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := mechmerlin
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# 66_ansi
|
|
||||||
|
|
||||||
LAYOUT_66_ansi
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#ifdef AUDIO_CLICKY
|
|
||||||
#define AUDIO_CLICKY_ON
|
|
||||||
#define AUDIO_CLICKY_FREQ_DEFAULT 261.63f
|
|
||||||
#define AUDIO_CLICKY_FREQ_MIN 65.41f
|
|
||||||
#define AUDIO_CLICKY_FREQ_MAX 1046.5f
|
|
||||||
//#define AUDIO_CLICKY_FREQ_FACTOR 1.18921f
|
|
||||||
//#define AUDIO_CLICKY_FREQ_FACTOR 2.71828f // e
|
|
||||||
#define AUDIO_CLICKY_FREQ_FACTOR 1.61803f // golden ratio
|
|
||||||
#define AUDIO_CLICKY_FREQ_RANDOMNESS 17.0f
|
|
||||||
#endif
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
// Layer names
|
|
||||||
#define _BL 0
|
|
||||||
#define _FL 1
|
|
||||||
#define _CL 2
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap _BL: Base Layer (Default Layer)
|
|
||||||
*/
|
|
||||||
[_BL] = LAYOUT_66_ansi(
|
|
||||||
KC_GESC,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_PGUP,
|
|
||||||
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_PGDN,
|
|
||||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_ENT,
|
|
||||||
MO(_FL), 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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT),
|
|
||||||
|
|
||||||
/* Keymap _FL: Function Layer
|
|
||||||
*/
|
|
||||||
[_FL] = LAYOUT_66_ansi(
|
|
||||||
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, KC_DEL, BL_STEP,
|
|
||||||
S(KC_TAB), S(KC_Q),S(KC_W),S(KC_E),S(KC_R),S(KC_T),S(KC_Y),S(KC_U),S(KC_I),S(KC_O),S(KC_P),S(KC_LBRC),S(KC_RBRC),S(KC_BSLS),S(KC_PGDN),
|
|
||||||
S(KC_LCTL), S(KC_A),MO(_CL),S(KC_D),S(KC_F),S(KC_G),S(KC_H),S(KC_J),S(KC_K),S(KC_L),S(KC_SCLN),S(KC_QUOT),S(KC_ENT),
|
|
||||||
MO(_FL), S(KC_Z),S(KC_X),S(KC_C),S(KC_V),S(KC_B),S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT),S(KC_SLSH),KC_RSFT, KC_PGUP,
|
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, S(KC_SPC), KC_RGUI, KC_RALT,KC_RCTL, KC_HOME,KC_PGDN,KC_END),
|
|
||||||
|
|
||||||
/* Keymap _CL: Control layer
|
|
||||||
*/
|
|
||||||
[_CL] = LAYOUT_66_ansi(
|
|
||||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI,
|
|
||||||
CK_TOGG, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
|
|
||||||
_______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
|
||||||
MO(_FL), _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI,
|
|
||||||
_______, _______, _______, RGB_MOD, _______, _______,_______, RGB_HUD,RGB_SAD,RGB_HUI),
|
|
||||||
};
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# skullY's Clueboard Layout
|
|
||||||
|
|
||||||
This layout is what I (@skullydazed) use on my personal Clueboards. I mostly use it for programming, CAD, and general typing.
|
|
||||||
|
|
||||||
On boards with audio I have faux-clicky enabled. I've tuned it to values I find pleasing, they kinda remind me of the "talking" in Mike Tyson's Punch Out.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[{a:7},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"",""],
|
|
||||||
[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"",""],
|
|
||||||
[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
|
|
||||||
[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:0.25},""],
|
|
||||||
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.5},"","",""]
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "mechmerlin.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_BL] = LAYOUT_68_ansi(\
|
|
||||||
KC_GESC, 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_INS, KC_PGUP,
|
|
||||||
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_PGDN,
|
|
||||||
KC_CTCP, 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
|
||||||
|
|
||||||
[_FL] = LAYOUT_68_ansi(\
|
|
||||||
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, KC_DEL, 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, KC_MUTE, KC_VOLD, KC_VOLU, 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),
|
|
||||||
};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := mechmerlin
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# 68_ansi
|
|
||||||
|
|
||||||
LAYOUT_68_ansi
|
|
||||||
|
|
||||||
This is the 68 key ANSI layout made popular by boards such as the Magicforce 68 and Varmilo VA68M.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[{a:7},"","","","","","","","","","","","","","","",""],
|
|
||||||
["","","","","","","","","","","","","",{w:2},"",""],
|
|
||||||
[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",""],
|
|
||||||
[{w:1.75},"","","","","","","","","","","","",{w:2.25},"",""],
|
|
||||||
[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",""],
|
|
||||||
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","","",""]
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "mechmerlin.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
[_BL] = LAYOUT_75_ansi(\
|
|
||||||
KC_ESC, 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_PSCR, KC_PAUS, KC_DEL,
|
|
||||||
KC_GRV, 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_HOME,
|
|
||||||
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_PGUP,
|
|
||||||
KC_CTCP, 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_PGDN,
|
|
||||||
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_END,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
|
||||||
|
|
||||||
[_FL] = LAYOUT_75_ansi(\
|
|
||||||
RESET, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, 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,
|
|
||||||
BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END)
|
|
||||||
};
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# MechMerlin's Standard ANSI 75% Layout
|
|
||||||
|
|
||||||
This is the 75% layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin)
|
|
||||||
YouTube channel.
|
|
||||||
|
|
||||||
It is used on his
|
|
||||||
[Duck Octagon V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/duck/octagon/v2)
|
|
||||||
[XD84](https://github.com/qmk/qmk_firmware/tree/master/keyboards/xd84)
|
|
||||||
|
|
||||||
### Build
|
|
||||||
To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin-ansi`.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
USER_NAME := mechmerlin
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
# 75_ansi
|
|
||||||
|
|
||||||
This is the standard 75% ANSI keyboard layout.
|
|
||||||
|
|
||||||
One may argue that having 3 1u keys to the right of spacebar
|
|
||||||
is not desired as two 1.5u keys. However, most 75% boards that
|
|
||||||
come out have that as the standard.
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
### 1. Layout defined
|
|
||||||
|
|
||||||
A keyboard's `.h` file needs to have `LAYOUT_75_ansi` defined
|
|
||||||
|
|
||||||
```c
|
|
||||||
#define LAYOUT_75_ansi( \
|
|
||||||
K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, K5Q, \
|
|
||||||
K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4O, K4P, \
|
|
||||||
K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3O, K3P, \
|
|
||||||
K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2O, K2P, \
|
|
||||||
K1A, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1M, K1N, K1O, K1P, \
|
|
||||||
K0A, K0B, K0C, K0J, K0K, K0L, K0M, K0N, K0O, K0P \
|
|
||||||
) { \
|
|
||||||
{ K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, KC_NO, K5Q }, \
|
|
||||||
{ K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, KC_NO, K4O, K4P, KC_NO }, \
|
|
||||||
{ K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, KC_NO, K3O, K3P, KC_NO }, \
|
|
||||||
{ K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, KC_NO, KC_NO, K2O, K2P, KC_NO }, \
|
|
||||||
{ K1A, KC_NO, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, KC_NO, K1M, K1N, K1O, K1P, KC_NO }, \
|
|
||||||
{ K0A, K0B, K0C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K0J, KC_NO, K0K, K0L, K0M, K0N, K0O, K0P, KC_NO } \
|
|
||||||
}
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
This layout needs to match the layout defined in
|
|
||||||
|
|
||||||
qmk_firmware/layouts/community/75_ansi/layout.json
|
|
||||||
|
|
||||||
### 2. Configuring rules.mk
|
|
||||||
|
|
||||||
`rules.mk` needs to have the following line:
|
|
||||||
|
|
||||||
LAYOUTS = 75_ansi
|
|
||||||
|
|
||||||
### 3. Defining a keymap
|
|
||||||
|
|
||||||
A keymap must be defined at
|
|
||||||
|
|
||||||
qmk_firmware/layouts/community/75_ansi/yourfoldername/keymap.c
|
|
||||||
|
|
||||||
This keymap must have a `LAYOUT_75_ansi` layout defined.
|
|
||||||
|
|
||||||
```c
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT_75_ansi(\
|
|
||||||
KC_ESC, 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_PSCR, KC_PAUS, KC_DEL,
|
|
||||||
KC_GRV, 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_HOME,
|
|
||||||
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_PGUP,
|
|
||||||
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_PGDN,
|
|
||||||
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_END,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT)
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To make generate a hex file, type
|
|
||||||
|
|
||||||
make yourkeyboard:yourfoldername
|
|
||||||
|
|
||||||
This hex file will contain a keymap with layout `LAYOUT_75_ansi` derived from
|
|
||||||
|
|
||||||
qmk_firmware/layouts/community/75_ansi/yourfoldername/keymap.c
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
## Layout
|
|
||||||
|
|
||||||
### Keymap 0: Basic layer
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| ` | 1 | 2 | 3 | 4 | 5 | = | | L1 | 6 | 7 | 8 | 9 | 0 | - |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| TAB | Q | W | E | R | T | L1 | | L2 | Y | U | I | O | P | \ |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
|
||||||
|--------+------+------+------+------+------| L2 | |TT(3) |------+------+------+------+------+--------|
|
|
||||||
| LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
|LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| Copy | Paste| | Copy | Paste |
|
|
||||||
,------|------|------| |------+--------+------.
|
|
||||||
| | | PgUp | | PgDn | | |
|
|
||||||
| Bcksp|OSL(2)|------| |------| Ent |Space |
|
|
||||||
| | VIM | Del | |OSL(2)| | |
|
|
||||||
`--------------------' `----------------------'
|
|
||||||
```
|
|
||||||
* For a single tap or single hold, OSL behaves like OSL(SYMB). For a tap + hold, it behaves like MO(VIM).
|
|
||||||
|
|
||||||
### Keymap 1: Code Layer
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| | | | | | | F10 | | F11 | | | | | | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | | | | | |------| |------| | | | | | |
|
|
||||||
|--------+------+------+------+------+------| L2 | | |------+------+------+------+------+--------|
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| | | | | | | F12 |GoToIm| FAR | | |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,---------------.
|
|
||||||
|Format|Build | | Copy | Paste |
|
|
||||||
,------|------|------| |------+--------+------.
|
|
||||||
| | |Refact| | Up | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | | | Down | | |
|
|
||||||
`--------------------' `----------------------'
|
|
||||||
```
|
|
||||||
* Build - Visualt Studio Build Solution. Sends `CTRL + SHFT + B`
|
|
||||||
* FAR - Visual Studio Find All References. Sends `CTRL + K, R`
|
|
||||||
* Format - Visual Studio Format. Sends `CTRL + K, CTRL + D`
|
|
||||||
* GoToIm - Visual Studio Go To Implementation. Sends `CTRL + F12`
|
|
||||||
* Refact - Visual Studio Refactor. Sends `CTRL + R, R`
|
|
||||||
* Sort U - Visual Studio Sort Usings. Sends `CTRL + R, CTRL + G`
|
|
||||||
|
|
||||||
|
|
||||||
### Keymap 2: Symbol Layer
|
|
||||||
```
|
|
||||||
,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
|Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
|---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
| | ! | @ | ( | ) | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
|
||||||
|---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | # | $ | { | } | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
|---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
`---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| EPRM | | | | | | 0 | 0 | . | = | |
|
|
||||||
`-----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | Caps | | | |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
| | |APscr | | | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | PScr | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
* APscr - Take a printscreen of the current app. Sends `Alt + Print Screen`
|
|
||||||
|
|
||||||
### Keymap 3: Media and Mouse Keys
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| | | | MsUp | | | | | | | | | | | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| | | | Lclk | Rclk | | | | | | |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| Back+| Back-| | Vol+ | |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
| | |BL_TOG| | Vol- | | |
|
|
||||||
| | |------| |------| PL/PS| Next |
|
|
||||||
| | | | | Back | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Keymap 4: Movement
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| |KOpen |KType | LSFT | | | | | | Copy | | | | Paste| |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| |DLeft |DRight| LCTL | LGUI | |------| |------| Left | Down | Up | Right| | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| |SFT_TB| Tab | | | | | | | | | | | | |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| | | | | | | | | | | |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | | | Home | End |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
| | | | | | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
* DLeft - Move to the left Desktop. Sends `Ctrl + Win + Left Arrow`
|
|
||||||
* DRight - Move to the right Desktop. Sends `Ctrl + Win + Right Arrow`
|
|
||||||
* KOpen - Opens KeePass. Sends `Ctrl + Alt + k`
|
|
||||||
* KType - Autotypes KeePass password. Sends `Ctrl + Alt + a`
|
|
||||||
* SFT_TB - Sends `CTRL + TAB`.
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
#include "333fred_config.h"
|
|
||||||
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#define TAPPING_TERM 200
|
|
||||||
@@ -1,331 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "version.h"
|
|
||||||
#include "333fred.h"
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
PLACEHOLDER = SAFE_RANGE, // can always be here
|
|
||||||
EPRM,
|
|
||||||
VRSN,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum custom_macros {
|
|
||||||
// Windows macros
|
|
||||||
DLEFT,
|
|
||||||
DRIGHT,
|
|
||||||
PSCREEN_APP,
|
|
||||||
LSFT_TAB,
|
|
||||||
|
|
||||||
// KeePass macros
|
|
||||||
KEEPASS_OPEN,
|
|
||||||
KEEPASS_TYPE,
|
|
||||||
|
|
||||||
// Terminal Copy/Paste
|
|
||||||
TERM_CP,
|
|
||||||
TERM_PT
|
|
||||||
};
|
|
||||||
|
|
||||||
// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | F5 | | F6 | 6 | 7 | 8 | 9 | 0 | - |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | TAB | Q | W | E | R | T | GAME | |GAMEA | Y | U | I | O | P | \ |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
|
||||||
* |--------+------+------+------+------+------| SYMB | |MEDIA |------+------+------+------+------+--------|
|
|
||||||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | = | Right| RGUI |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | Copy | Paste| | Copy | Paste |
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | PgUp | | Up | | |
|
|
||||||
* | Bcksp|OSL(2)|------| |------| Ent |Space |
|
|
||||||
* | | VIM | Del | | Down | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
[BASE] = LAYOUT_ergodox_pretty( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(GAME), TG(GAME_ARROW), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
|
||||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
||||||
OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(SYMB), MO(MDIA), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
|
|
||||||
OSM(MOD_LCTL), KC_F4, KC_F5, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_EQL, KC_RIGHT, KC_RGUI,
|
|
||||||
LCTL(KC_C), LCTL(KC_V), LCTL(KC_C), LCTL(KC_V),
|
|
||||||
KC_PGUP, KC_UP,
|
|
||||||
KC_BSPC, TD(TD_SYM_VIM), KC_DEL, KC_DOWN, KC_ENT, KC_SPC
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 2: Codeflow Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |------| |------| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | F7 | F8 | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,---------------.
|
|
||||||
* | |ACCESS| | | |
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[CODEFLOW] = LAYOUT_ergodox( // layer 1 : code
|
|
||||||
// left 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,
|
|
||||||
// right han
|
|
||||||
|
|
||||||
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_F7, KC_F8, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 3: Symbol Layer
|
|
||||||
*
|
|
||||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ! | @ | ( | ) | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | # | $ | { | } | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
* |---------+------+------+------+------+------|ACCESS| | |------+------+------+------+------+--------|
|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | 0 | 0 | . | = | |
|
|
||||||
* `-----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | |APScr | | | | |
|
|
||||||
* | |ACCESS|------| |------| | |
|
|
||||||
* | | | PScr | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[SYMB] = LAYOUT_ergodox_pretty(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
KC_TRNS, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_TRNS, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
|
||||||
KC_TRNS, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_0, KC_DOT, KC_EQL, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
M(PSCREEN_APP), KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 3: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | MsUp | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | |ACCESS|------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | Lclk | Rclk | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | Back+| Back-| | Vol+ | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | |BackTg| | Vol- | | |
|
|
||||||
* | | |------| |------| PL/PS| Next |
|
|
||||||
* | | | | | Back | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[MDIA] = LAYOUT_ergodox_pretty(
|
|
||||||
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_MS_U, 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_MS_L, KC_MS_D, KC_MS_R, 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_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
BL_INC, BL_DEC, KC_VOLU, KC_TRNS,
|
|
||||||
BL_TOGG, KC_VOLD,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT
|
|
||||||
),
|
|
||||||
/* Keymap 4: Movement
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | |KOpen |KType |TERMCP|TERMPT| | | | | Copy | | | | Paste| |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | |DLeft |DRight|LCTRL | LGUI | |------| |------| Left | Down | Up | Right| | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | |SFT_TB| TAB | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | Home | End |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | |ACCESS|------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// MEDIA AND MOUSE
|
|
||||||
[VIM] = LAYOUT_ergodox_pretty(
|
|
||||||
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, M(KEEPASS_OPEN), M(KEEPASS_TYPE), TERM_CP, TERM_PT, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_C), KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_V), KC_TRNS,
|
|
||||||
KC_TRNS, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, M(LSFT_TAB), KC_TAB, 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_HOME, KC_END,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 1: Game Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ESC | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |ACCESS| | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | CTRL | | | | | |------| |------| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | SHIFT | Z | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |ENTER | | | LOCK | BSPC | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,---------------.
|
|
||||||
* | F5 | F6 | | | |
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | ALT | SPC |------| |------| | |
|
|
||||||
* | | | SYMB | | | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[GAME] = LAYOUT_ergodox_pretty( // layer 1 : code
|
|
||||||
// left hand
|
|
||||||
KC_ESC, 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_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_LSFT, KC_Z, 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_ENT, KC_TRNS, KC_TRNS, KC_LOCK, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V),
|
|
||||||
KC_TRNS, KC_UP,
|
|
||||||
KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 1: Game Arrow Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ESC | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | Up | | | | | |ACCESS| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | CTRL | Left | Down |Right | | |------| |------| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | SHIFT | Z | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |ENTER | | | LOCK | BSPC | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,---------------.
|
|
||||||
* | F5 | F6 | | | |
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | ALT | SPC |------| |------| | |
|
|
||||||
* | | | SYMB | | | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[GAME_ARROW] = LAYOUT_ergodox_pretty( // layer 1 : code
|
|
||||||
// left hand
|
|
||||||
KC_ESC, 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_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_LSFT, KC_Z, 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_ENT, KC_TRNS, KC_TRNS, KC_LOCK, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V),
|
|
||||||
KC_TRNS, KC_UP,
|
|
||||||
KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, KC_TRNS, KC_TRNS
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|
||||||
{
|
|
||||||
// MACRODOWN only works in this function
|
|
||||||
switch(id) {
|
|
||||||
case DLEFT:
|
|
||||||
if (record->event.pressed) { // Windows move desktop left
|
|
||||||
return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DRIGHT:
|
|
||||||
if (record->event.pressed) { // Windows move desktop right
|
|
||||||
return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PSCREEN_APP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LALT), T(PSCR), U(LALT), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LSFT_TAB:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LSFT), T(TAB), U(LSFT), END);
|
|
||||||
}
|
|
||||||
case KEEPASS_OPEN:
|
|
||||||
if (record->event.pressed) { // Keepass open application
|
|
||||||
return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case KEEPASS_TYPE:
|
|
||||||
if (record->event.pressed) { // Keepass autotype
|
|
||||||
return MACRO(D(LCTL), D(LALT), T(A), U(LALT), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TERM_CP:
|
|
||||||
if (record->event.pressed) { // Terminal Copy
|
|
||||||
return MACRO(D(LCTL), T(INSERT), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TERM_PT:
|
|
||||||
if (record->event.pressed) { // Terminal Paste
|
|
||||||
return MACRO(D(LSFT), T(INSERT), U(LSFT), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
tap_dance_process_record(keycode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
|
||||||
void matrix_scan_user_keyboard(void) {
|
|
||||||
ergodox_board_led_on();
|
|
||||||
ergodox_led_all_on();
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
LCD_BACKLIGHT_ENABLE = yes
|
|
||||||
LCD_ENABLE = yes
|
|
||||||
BACKLIGHT_ENABLE = yes
|
|
||||||
NKRO_ENABLE = yes
|
|
||||||
KEY_LOCK_ENABLE = yes
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
CONSOLE_ENABLE = no
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "simple_visualizer.h"
|
|
||||||
|
|
||||||
// This function should be implemented by the keymap visualizer
|
|
||||||
// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
|
|
||||||
// that the simple_visualizer assumes that you are updating
|
|
||||||
// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
|
|
||||||
// stopped. This can be done by either double buffering it or by using constant strings
|
|
||||||
static void get_visualizer_layer_and_color(visualizer_state_t* state) {
|
|
||||||
uint8_t saturation = 60;
|
|
||||||
if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
|
|
||||||
saturation = 255;
|
|
||||||
}
|
|
||||||
if (state->status.layer & 0x80) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(0, 255, 60);
|
|
||||||
state->layer_text = "Game Arrow";
|
|
||||||
} else if (state->status.layer & 0x40) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(0, 255, 60);
|
|
||||||
state->layer_text = "Game";
|
|
||||||
} else if (state->status.layer & 0x20) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(140, 100, 60);
|
|
||||||
state->layer_text = "Movement";
|
|
||||||
} else if (state->status.layer & 0x10) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
|
|
||||||
state->layer_text = "Media";
|
|
||||||
} else if (state->status.layer & 0x8) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
|
|
||||||
state->layer_text = "Symbol";
|
|
||||||
} else if (state->status.layer & 0x2 || state->status.layer & 0x4) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(216, 90, 0xFF);
|
|
||||||
state->layer_text = "Code";
|
|
||||||
} else {
|
|
||||||
state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
|
|
||||||
state->layer_text = "Default";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,387 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"name": "Beginner's Keymap for Ergodox-EZ",
|
|
||||||
"author": "Anand Babu Periasamy"
|
|
||||||
},
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": 3.5
|
|
||||||
},
|
|
||||||
"#\n3\n\n\nF3",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
")\n0\n\n\nF10"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"@\n2\n\n\nF2",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"$\n4\n\n\nF4",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"(\n9\n\n\nF9",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"_\n-\n\n\nF11"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"%\n5\n\n\nF5",
|
|
||||||
"^\n6\n\n\nF6",
|
|
||||||
{
|
|
||||||
"x": 4.5
|
|
||||||
},
|
|
||||||
"&\n7\n\n\nF7",
|
|
||||||
"*\n8\n\n\nF8"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"~\n`\n\n\nEsc",
|
|
||||||
"!\n1\n\n\nF1",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
"+\n=\n\n\nF12",
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"Backspace\n\n\n\nBackspace"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5
|
|
||||||
},
|
|
||||||
"E\n\n\n\n<i class=\"fa fa-caret-up\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"I"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.8799999999999999,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"W"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.9950000000000001,
|
|
||||||
"x": 4.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"R",
|
|
||||||
{
|
|
||||||
"x": 8.5,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"U",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"O"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"T",
|
|
||||||
{
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-chevron-circle-left\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-chevron-circle-right\" aria-hidden=\"true\"></i>",
|
|
||||||
"Y"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"a": 6,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"Tab",
|
|
||||||
{
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"Q",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
"P",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"|\n\\"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"D\n\n\n\n<i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"K"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"S\n\n\n\n<i class=\"fa fa-caret-left\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"c": "#c4bcbc"
|
|
||||||
},
|
|
||||||
"F\n\n\n\n<i class=\"fa fa-caret-right\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"J",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"c": "#cccccc"
|
|
||||||
},
|
|
||||||
"L"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"G",
|
|
||||||
{
|
|
||||||
"x": 6.5
|
|
||||||
},
|
|
||||||
"H"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"\n\n\nCtrl\n\n\nCaps",
|
|
||||||
{
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"A",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
":\n;",
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"Enter"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.625,
|
|
||||||
"x": 6.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"PgDn",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"PgUp"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 3.5
|
|
||||||
},
|
|
||||||
"C\n\n\n\n<i class=\"fa fa-hand-o-up\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 10.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"<\n,"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"X\n\n\n\n<i class=\"fa fa-hand-o-left\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"V\n\n\n\n<i class=\"fa fa-hand-o-right\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"M",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
">\n."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"B",
|
|
||||||
{
|
|
||||||
"x": 6.5
|
|
||||||
},
|
|
||||||
"N"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"Shift",
|
|
||||||
"Z",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"?\n/",
|
|
||||||
{
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"\"\n'"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
"Alt\n\n\n\n<i class=\"fa fa-search-minus\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-long-arrow-down\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-down'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-linux'></i>\n\n\n\n<i class=\"fa fa-search\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"Alt\n\n\n\n<i class=\"fa fa-search-plus\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-long-arrow-left\" aria-hidden=\"true\"></i>\n\n\n\n<i class=\"fa fa-undo\" aria-hidden=\"true\"></i>",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-long-arrow-up\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-up'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 0.5
|
|
||||||
},
|
|
||||||
"Ctrl\n\n\n\n<i class='fa fa-download'></i>",
|
|
||||||
"Esc",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-long-arrow-right\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-off'></i>",
|
|
||||||
"Fn"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"r": 30,
|
|
||||||
"rx": 6.5,
|
|
||||||
"ry": 4.25,
|
|
||||||
"y": -1,
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-clone\" aria-hidden=\"true\"></i>",
|
|
||||||
"("
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"Space",
|
|
||||||
{
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"Del",
|
|
||||||
"["
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": 2
|
|
||||||
},
|
|
||||||
"{"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"r": -30,
|
|
||||||
"rx": 13,
|
|
||||||
"y": -1,
|
|
||||||
"x": -3
|
|
||||||
},
|
|
||||||
")",
|
|
||||||
"<i class=\"fa fa-paste\" aria-hidden=\"true\"></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": -3
|
|
||||||
},
|
|
||||||
"]",
|
|
||||||
{
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"Enter",
|
|
||||||
{
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": -3
|
|
||||||
},
|
|
||||||
"}"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define FN1 1 // media layer
|
|
||||||
|
|
||||||
#define CAPS_CTL CTL_T(KC_CAPS) // Caps on tap, Ctrl on hold.
|
|
||||||
#define COPY LCTL(KC_V) // C-c Copy
|
|
||||||
#define PASTE LCTL(KC_V) // C-v Paste
|
|
||||||
#define ZM_NRM LCTL(KC_0) // C-0 Zoom Normal
|
|
||||||
#define ZM_OUT LCTL(KC_MINS) // C-- Zoom Out
|
|
||||||
#define ZM_IN LCTL(KC_PLUS) // C-+ Zoom In
|
|
||||||
#define EM_UNDO LCTL(KC_UNDS) // C-_ Emacs Undo
|
|
||||||
|
|
||||||
#define _MOB 1 // Mobile#
|
|
||||||
#define _CUS1 2 // Custom macro 1
|
|
||||||
#define _CUS2 3 // Custom macro 2
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BSpace |
|
|
||||||
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Tab | Q | W | E | R | T | Fwd | | Back | Y | U | I | O | P | \ |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* |Caps/Ctl| A | S | D | F | G |------| |------| H | J | K | L | ; | Enter |
|
|
||||||
* |--------+------+------+------+------+------| PgDn | | PgUp |------+------+------+------+------+--------|
|
|
||||||
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | ' |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | Ctrl | Esc | LGui | Alt | Alt | | Left | Dn | Up | Right| Fn |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | Copy | ( | | ) | Paste|
|
|
||||||
* ,------|------+------| |------+------+------.
|
|
||||||
* | | | [ | | ] | | |
|
|
||||||
* |Space | Del |------| |------| Enter|BSpace|
|
|
||||||
* | | | { | | } | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// Left hand
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_WBAK,
|
|
||||||
CAPS_CTL, KC_A, KC_S, KC_D, KC_F, KC_G,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN,
|
|
||||||
KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, KC_LALT,
|
|
||||||
COPY, KC_LCBR,
|
|
||||||
KC_LPRN,
|
|
||||||
KC_SPC, KC_DEL, KC_LBRC,
|
|
||||||
// Right hand
|
|
||||||
KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
|
||||||
KC_WFWD, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
|
||||||
KC_PGUP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
|
|
||||||
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(FN1),
|
|
||||||
KC_RCBR, PASTE,
|
|
||||||
KC_RPRN,
|
|
||||||
KC_RBRC, KC_ENT, KC_BSPC),
|
|
||||||
/* Keymap 1: Fn Keys, media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | BSpace |
|
|
||||||
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | MsUp | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | LClk | MClk | RClk | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |Teensy| | ZmNrm| ZmOut| ZmIn | | Undo |VolDn |VolUp | Mute | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------+------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// FN1 Layer
|
|
||||||
[FN1] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, ZM_NRM, ZM_OUT, ZM_IN,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
RESET, KC_TRNS, KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
|
|
||||||
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_MPLY,
|
|
||||||
KC_TRNS, M(_MOB), KC_TRNS, M(_CUS1),M(_CUS2),KC_TRNS, KC_TRNS,
|
|
||||||
EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|
||||||
{
|
|
||||||
// MACRODOWN only works in this function
|
|
||||||
switch(id) {
|
|
||||||
case _MOB: // Your mobile# here.
|
|
||||||
return MACRODOWN(T(1), T(2), T(3), T(MINS),
|
|
||||||
T(1), T(2), T(3), T(MINS),
|
|
||||||
T(1), T(2), T(3), T(4),
|
|
||||||
END);
|
|
||||||
case _CUS1: // Your custom macro 1
|
|
||||||
return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(SPC), END);
|
|
||||||
case _CUS2: // Your custom macro 2
|
|
||||||
return MACRODOWN(T(L), T(S), T(SPC), T(MINS), T(L), T(ENT), END);
|
|
||||||
};
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 = biton32(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# Beginner's keymap for Ergodox-EZ
|
|
||||||
Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get comfortable with the Ergodox-EZ, you may fork this keymap and customize it for your own needs or find a suitable one from the community contributed keymaps.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Pros
|
|
||||||
* Easier to switch between regular keyboards and Ergodox-EZ.
|
|
||||||
* Easy on beginners. It has everything you need for your day to day usage.
|
|
||||||
|
|
||||||
#### Cons
|
|
||||||
* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/qmk/qmk_firmware/blob/master/layouts/default/ergodox/default_ergodox/keymap.c)
|
|
||||||
* While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys.
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
* Ideally number key [6] should have started from the right-hand side of the keyboard. Doing so breaks the familiar QWERTY layout.
|
|
||||||
* Quote key ['] should have been placed between [:] and [Enter]. Due to lack of key space, it is placed below [Enter].
|
|
||||||
* Double [Alt] keys are placed adjacent to each other for convenience.
|
|
||||||
* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users.
|
|
||||||
* Additional bracket keys are placed in the center of the keyboard for programmer's convenience.
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Having a file like this allows you to override Makefile definitions
|
|
||||||
# for your own particular keymap
|
|
||||||
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define MDIA 2 // media keys
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | BkSp | A/L2 | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
|
|
||||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
|
||||||
* | LS/PO |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RS/PC |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | App | LGui | | Alt |Ctrl/Esc|
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | Home | | PgUp | | |
|
|
||||||
* | Space|Backsp|------| |------| Tab |Enter |
|
|
||||||
* | |ace | End | | PgDn | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
|
|
||||||
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
|
||||||
KC_BSPC, LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G,
|
|
||||||
KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
|
||||||
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
|
||||||
ALT_T(KC_APP), KC_LGUI,
|
|
||||||
KC_HOME,
|
|
||||||
KC_SPC,KC_BSPC,KC_END,
|
|
||||||
// right hand
|
|
||||||
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
|
||||||
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
|
|
||||||
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSPC,
|
|
||||||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB),
|
|
||||||
KC_LALT, CTL_T(KC_ESC),
|
|
||||||
KC_PGUP,
|
|
||||||
KC_PGDN,KC_TAB, KC_ENT
|
|
||||||
),
|
|
||||||
/* Keymap 1: Symbol Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | . | 0 | = | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// SYMBOLS
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
|
||||||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
|
||||||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
|
||||||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
|
||||||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
|
||||||
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 2: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | MsUp | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| left | down | up | down | | Play |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | Prev | Next | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | |Brwser|
|
|
||||||
* | Lclk | Rclk |------| |------| |Back |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// MEDIA AND MOUSE
|
|
||||||
[MDIA] = LAYOUT_ergodox(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_BTN1, KC_BTN2, KC_TRNS,
|
|
||||||
// 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_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_TRNS, KC_MPLY,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_WBAK
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
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) {
|
|
||||||
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 = biton32(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# ErgoDox EZ Absenth Configuration
|
|
||||||
|
|
||||||
## Changelog
|
|
||||||
|
|
||||||
|
|
||||||
* Sept. 14, 2016 (V0.2):
|
|
||||||
* Added Space Cadet to Left and Right Shift. Pressing Left shift with no other key adds an "(" and pressing Right shift with no other key adds an ")"
|
|
||||||
* Sept. 8, 2016 (V0.1):
|
|
||||||
* Made A key double as MEDIA Layer change when you hold it. Added mouse buttons to the large thumb buttons on the left side on the Media Layer. Added vi/vim style arrow keys on HJKL on media layer.
|
|
||||||
|
|
||||||

|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#define TAPPING_TERM 300 //At 500 some bad logic takes hold
|
|
||||||
#define IGNORE_MOD_TAP_INTERRUPT
|
|
||||||
@@ -1,171 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define FLOCK 1 // symbols arrows and F keys on F held down
|
|
||||||
#define JLOCK 2 // same as Flock but with fall thru J and mapped to J held down
|
|
||||||
#define CAPLOCK 3 //caps on until space / enter / esc
|
|
||||||
#define SFLOCK 11 // symbols arrows and F keys on F held down
|
|
||||||
#define SJLOCK 12 // same as Flock but with fall thru J and mapped to J held down
|
|
||||||
|
|
||||||
// Sends macro when key is tapped, presses mod when key is held
|
|
||||||
#define tap_mod_macro(record, mod, macro) ( ((record)->event.pressed) ? \
|
|
||||||
( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
|
|
||||||
( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (macro) : MACRO(U(mod), END) ) )
|
|
||||||
|
|
||||||
#define tap_mod_shift(record, mod, macro) ( ((record)->event.pressed) ? \
|
|
||||||
( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
|
|
||||||
( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (MACRO( D(LSFT), T(LBRC), U(LSFT), END)) : MACRO(U(mod), END) ) )
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Layout
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | Q | W | E | R | T | | | | Y | U | I | O | P | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | A | S | D | F | G |------| |------| H | J | K | L |; | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | Z | X | C | V | B | | | | N | M | , | . | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
[BASE] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS,
|
|
||||||
_______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB,
|
|
||||||
_______, SFT_T(KC_A), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
|
|
||||||
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
|
|
||||||
_______, _______, _______, _______ ,_______,
|
|
||||||
_______, _______,
|
|
||||||
_______,
|
|
||||||
KC_SPC, _______, _______ ,
|
|
||||||
|
|
||||||
// right hand
|
|
||||||
KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
|
||||||
KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
|
|
||||||
GUI_T(KC_H), F(JLOCK), CTL_T(KC_K), ALT_T(KC_L), SFT_T(KC_SCLN), _______,
|
|
||||||
KC_DELETE, KC_N, KC_M, KC_COMM,KC_DOT, KC_QUOT, _______,
|
|
||||||
_______, _______,_______,_______, _______,
|
|
||||||
_______, _______,
|
|
||||||
_______,
|
|
||||||
_______,_______, KC_ENT
|
|
||||||
),
|
|
||||||
[FLOCK] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
|
|
||||||
XXXXXXX,KC_LBRC,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,_______,XXXXXXX,
|
|
||||||
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
|
|
||||||
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,
|
|
||||||
KC_ESC,XXXXXXX,XXXXXXX,
|
|
||||||
// right hand
|
|
||||||
KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, XXXXXXX, KC_RBRC, XXXXXXX,
|
|
||||||
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, S(KC_RBRC), XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, KC_END, KC_PGDOWN, KC_QUES, KC_SLSH, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX
|
|
||||||
),
|
|
||||||
[JLOCK] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
|
|
||||||
XXXXXXX,KC_LBRC,KC_GRV, KC_TILD,XXXXXXX,XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,KC_BSLS,KC_PIPE,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
|
|
||||||
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,XXXXXXX,
|
|
||||||
XXXXXXX,
|
|
||||||
KC_ESC,XXXXXXX,XXXXXXX,
|
|
||||||
// right hand
|
|
||||||
KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RBRC, XXXXXXX,
|
|
||||||
XXXXXXX, _______, XXXXXXX, XXXXXXX, S(KC_RBRC), XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX
|
|
||||||
),
|
|
||||||
[CAPLOCK] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
TO(BASE), _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), _______,
|
|
||||||
// _______, SFT_T(S(KC_A)), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
|
|
||||||
_______, S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G),
|
|
||||||
_______, S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), _______,
|
|
||||||
_______, _______, _______, _______ ,_______,
|
|
||||||
_______, _______,
|
|
||||||
_______,
|
|
||||||
TO(BASE), _______, _______ ,
|
|
||||||
|
|
||||||
// right hand
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P), _______,
|
|
||||||
S(KC_H), S(KC_J), S(KC_K), S(KC_L), S(KC_SCLN), _______,
|
|
||||||
_______, S(KC_N), S(KC_M), S(KC_COMM),S(KC_DOT), S(KC_QUOT), _______,
|
|
||||||
_______, _______,_______,_______, _______,
|
|
||||||
_______, _______,
|
|
||||||
_______,
|
|
||||||
_______,_______, TO(BASE)
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
[1] = ACTION_LAYER_TAP_KEY(FLOCK,KC_F),
|
|
||||||
[2] = ACTION_LAYER_TAP_KEY(JLOCK,KC_J),
|
|
||||||
[11] = ACTION_LAYER_TAP_KEY(FLOCK,LSFT(KC_F)),
|
|
||||||
[12] = ACTION_LAYER_TAP_KEY(JLOCK,LSFT(KC_J))
|
|
||||||
};
|
|
||||||
|
|
||||||
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) {
|
|
||||||
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 = biton32(layer_state);
|
|
||||||
|
|
||||||
switch (layer) {
|
|
||||||
// TODO: Make this relevant to the ErgoDox EZ.
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// none
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# Adam's ErgoDox
|
|
||||||
|
|
||||||
Currently only really uses keys available on Let's Split, for ease of switching
|
|
||||||
@@ -1,181 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "keymap_german.h"
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define MDIA 2 // media keys
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Del | K | . | O | , | Y | L1 | | L1 | V | G | C | L | ß | Z |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | BkSp | H | A | E | I | U |------| |------| D | T | R | N | S | F |
|
|
||||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
|
||||||
* | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M | J | RShift |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | App | LGui | | Alt |Ctrl/Esc|
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | Home | | PgUp | | |
|
|
||||||
* | Space|Enter |------| |------| Tab |RShift|
|
|
||||||
* | | | End | | PgDn | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
|
|
||||||
KC_DELT, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB),
|
|
||||||
KC_BSPC, DE_H, DE_A, DE_E, DE_I, DE_U,
|
|
||||||
KC_LSFT, CTL_T(DE_X), DE_Q, DE_AE, DE_UE, DE_OE, ALL_T(KC_NO),
|
|
||||||
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
|
||||||
ALT_T(KC_APP), KC_LGUI,
|
|
||||||
KC_HOME,
|
|
||||||
KC_SPC,KC_ENT ,KC_END,
|
|
||||||
// right hand
|
|
||||||
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
|
||||||
TG(SYMB), DE_V, DE_G, DE_C, DE_L, DE_SS, DE_Z,
|
|
||||||
DE_D, DE_T, DE_R, DE_N, LT(MDIA, DE_S), GUI_T(KC_F),
|
|
||||||
MEH_T(KC_NO),KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT,
|
|
||||||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB),
|
|
||||||
KC_LALT, CTL_T(KC_ESC),
|
|
||||||
KC_PGUP,
|
|
||||||
KC_PGDN,KC_TAB, KC_RSFT
|
|
||||||
),
|
|
||||||
/* Keymap 1: Symbol Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | . | 0 | = | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// SYMBOLS
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
|
||||||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
|
||||||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
|
||||||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
|
||||||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
|
||||||
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 2: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | MsUp | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | Prev | Next | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | |Brwser|
|
|
||||||
* | | |------| |------| |Back |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// MEDIA AND MOUSE
|
|
||||||
[MDIA] = LAYOUT_ergodox(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// 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_MPLY,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_WBAK
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 = biton32(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Basic implementation for k.o,y variant of the adnw layout
|
|
||||||
|
|
||||||
adnw is a layout optimised for usage with german and english language
|
|
||||||
k.o,y is a variant of this layout
|
|
||||||
http://www.adnw.de/index.php?n=Main.SeitlicheNachbaranschl%C3%A4ge
|
|
||||||
|
|
||||||
The os must use the de_DE layout
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
// This is the ideal value for me but find your own
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#define TAPPING_TERM 145
|
|
||||||
|
|
||||||
// more options here: https://docs.qmk.fm/config_options.html
|
|
||||||
#define FORCE_NKRO
|
|
||||||
#define PERMISSIVE_HOLD // tab/hold-Keys should work better with that
|
|
||||||
@@ -1,335 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "keymap_german.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define BASE 0 // default layer / VIM
|
|
||||||
#define ARW 1 // arrow layer / Terminal
|
|
||||||
#define DIAK 2 // diakritika layer
|
|
||||||
#define BRACK 3 // brackets layer
|
|
||||||
#define SYMBOLS 4 // symbols
|
|
||||||
#define MEDIA 5 // media keys / Mouse-Navigation
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer / VIM
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Media |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | P | U | Dia-L| , | Q | | | | V | C | L | M | B | |
|
|
||||||
* |--------+------+------+------+------+------| G | | gg |------+------+------+------+------+--------|
|
|
||||||
* | Symbols| H | I | E | A | O |------| |------| D | T | R | N | S | ARW |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | LShift | K | Y | . | ' | X |str-D | |str-U | J | G | Z | W | F | RShift |
|
|
||||||
* * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | Ctrl | Alt | | | | | H | J | K | L | Ctrl |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* LShift is Tab on Click
|
|
||||||
*
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | ^ | / | | ? | $ |
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | |str+a | |str+c | | |
|
|
||||||
* | Brack| Space|------| |------| Enter |BSpace|
|
|
||||||
* | -Lay |/shift| Tab/ | | | | |
|
|
||||||
* | | | GUI | | ESC | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
* GUI is one shot
|
|
||||||
* str + a is for tmux etc.
|
|
||||||
* str + c is for stopping programs
|
|
||||||
*/
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
|
|
||||||
TG(SYMBOLS), DE_P, DE_U, OSL(DIAK), DE_COMM, DE_Q, LSFT(DE_G),
|
|
||||||
OSL(SYMBOLS), DE_H, DE_I, DE_E, DE_A, DE_O,
|
|
||||||
SFT_T(KC_TAB), DE_K, DE_Y, DE_DOT, DE_QUOT, DE_X, LCTL(DE_D),
|
|
||||||
KC_LCTRL, KC_LALT, KC_NO, KC_NO, KC_NO,
|
|
||||||
|
|
||||||
|
|
||||||
// left hand thumb-cluster
|
|
||||||
DE_CIRC, DE_SLSH,
|
|
||||||
LCTL(DE_A),
|
|
||||||
OSL(BRACK), SFT_T(KC_SPACE), GUI_T(KC_TAB),
|
|
||||||
|
|
||||||
|
|
||||||
// right hand
|
|
||||||
KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, TG(MEDIA),
|
|
||||||
DE_G, DE_V, DE_C, DE_L, DE_M, DE_B, KC_NO,
|
|
||||||
DE_D, DE_T, DE_R, DE_N, DE_S, TG(ARW),
|
|
||||||
LCTL(DE_U), DE_J, DE_G, DE_Z, DE_W, DE_F, KC_RSFT,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_RCTRL,
|
|
||||||
|
|
||||||
// right thumb-cluster
|
|
||||||
DE_QST, DE_DLR,
|
|
||||||
LCTL(DE_C),
|
|
||||||
KC_ESCAPE, KC_ENTER, KC_BSPACE
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
/* Keymap 1: Arrow Layer / Terminal
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |------| |------| | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |P-Down| |P-Up | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | Left | Bot | Top | Right| |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | Home | | | | End |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// Arrows
|
|
||||||
[ARW] = LAYOUT_ergodox(
|
|
||||||
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_PGDOWN,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_HOME, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
|
|
||||||
// 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_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS,
|
|
||||||
KC_TRNS, KC_END,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
/* Keymap 2: Diakritika Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | Ü | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | Ä | Ö |------| |------| | | | | ß | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// Diakritika
|
|
||||||
[DIAK] = LAYOUT_ergodox(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, DE_UE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_AE, DE_OE,
|
|
||||||
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,
|
|
||||||
|
|
||||||
// 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, DE_SS, 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
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
/* Keymap 3: Brackets Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | ( | { | [ | |------| |------| | ] | } | ) | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// BRACK
|
|
||||||
[BRACK] = LAYOUT_ergodox(
|
|
||||||
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, DE_LPRN, DE_LCBR, DE_LBRC, 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,
|
|
||||||
|
|
||||||
// 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, DE_RBRC, DE_RCBR, DE_RPRN, 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
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
/* Keymap 4: Symbol Layer
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Original:
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ² | ° | ~ | @ | ! | | | | ? | & | § | " | ³ | |
|
|
||||||
* |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
|
|
||||||
* | | ´ | ' | : | ^ | < |------| |------| > | $ | ; | | | ` | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | € | + | = | * | / | { | | } | \ | % | # | - | _ | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
*/
|
|
||||||
// SYMBOLS
|
|
||||||
[SYMBOLS] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, //DE_LBRC,
|
|
||||||
KC_TRNS,DE_SQ2, DE_RING, DE_TILD, DE_AT, DE_EXLM, DE_LPRN,
|
|
||||||
KC_TRNS,DE_ACUT,DE_QUOT, DE_COLN, DE_CIRC, DE_LESS,
|
|
||||||
KC_TRNS,DE_EURO,DE_PLUS, DE_EQL, DE_ASTR, DE_SLSH, DE_LCBR,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
|
|
||||||
KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
|
|
||||||
// right hand
|
|
||||||
//DE_RBRC,
|
|
||||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
|
||||||
DE_RPRN, DE_QST, DE_AMPR, DE_PARA, DE_DQOT, DE_SQ3, KC_TRNS,
|
|
||||||
DE_MORE, DE_DLR, DE_SCLN, DE_PIPE, DE_GRV, KC_TRNS,
|
|
||||||
DE_RCBR, DE_BSLS, DE_PERC, DE_HASH, DE_MINS, DE_UNDS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 5: Numbers
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | Num | / | * | - |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | 7 | 8 | 9 | + |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |------| |------| | | 4 | 5 | 6 | + |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | 1 | 2 | 3 | Enter |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | 0 | , | | | Enter|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
// NUMBERS
|
|
||||||
[NUMBERS] = LAYOUT_ergodox(
|
|
||||||
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,
|
|
||||||
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_4, KC_5, KC_8, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS,
|
|
||||||
KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Keymap 6: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | Sleep| | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | Wake | | | | |------| |------| |MsLeft|MsDown| MsUp |MsRght| |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | Mute| VolDn| VolUp| | Play| Prev | Next | Stop | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | Lclk|------| |------|Rclk | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// MEDIA AND MOUSE
|
|
||||||
[MEDIA] = LAYOUT_ergodox(
|
|
||||||
KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_SLEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_WAKE, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_BTN1, KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
|
||||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
|
||||||
KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS,
|
|
||||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
|
||||||
KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_BTN2, KC_TRNS
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
|
||||||
void matrix_scan_user_keyboard(void) {
|
|
||||||
ergodox_board_led_on();
|
|
||||||
ergodox_led_all_on();
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
This is a fork of the adnw_k_o_y-Layout
|
|
||||||
|
|
||||||
Features:
|
|
||||||
- Diakritika-Layer for ADNW-PUQ-Layout
|
|
||||||
- all basic-symbols of the german-layout can be found in the Symbol- and Diakritika-Layer
|
|
||||||
- Symbol-Layer: Symbols are mirrored -- left = < and right = >
|
|
||||||
- Basic-Layer-Keys which always be present in any Layer and allow the movement between layers
|
|
||||||
- HJKL-Keys and Arrow-Keys can be switched, necessary for working with a terminal and vim
|
|
||||||
- Number-Layer for Numpad-Emulation
|
|
||||||
- Brackets-Layer for easier programming
|
|
||||||
- Media-Layer for Mouse-Navigation
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
- adnw is a layout optimised for usage with german and english language
|
|
||||||
- PUQ is a variant of adnw: http://www.adnw.de/index.php?n=Main.OptimierungF%C3%BCrDieGeradeTastaturMitDaumen-Shift
|
|
||||||
- This implementation is optimised for my workflow with vim/tmux/xmonad and ergodox
|
|
||||||
- The OS must use the de_DE layout
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "simple_visualizer.h"
|
|
||||||
|
|
||||||
// This function should be implemented by the keymap visualizer
|
|
||||||
// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
|
|
||||||
// that the simple_visualizer assumes that you are updating
|
|
||||||
// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
|
|
||||||
// stopped. This can be done by either double buffering it or by using constant strings
|
|
||||||
static void get_visualizer_layer_and_color(visualizer_state_t* state) {
|
|
||||||
|
|
||||||
if (state->status.layer & 0x20) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(127, 0xFF, 0xFF);
|
|
||||||
state->layer_text = "Mouse";
|
|
||||||
} else if (state->status.layer & 0x10) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(85, 0xFF, 0xFF);
|
|
||||||
state->layer_text = "Symbol";
|
|
||||||
} else if (state->status.layer & 0x8) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(64, 0xFF, 0xFF);
|
|
||||||
state->layer_text = "Brackets";
|
|
||||||
} else if (state->status.layer & 0x4) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(42, 0xFF, 0xFF);
|
|
||||||
state->layer_text = "Diak";
|
|
||||||
} else if (state->status.layer & 0x2) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(21, 0xFF, 0xFF);
|
|
||||||
state->layer_text = "Terminal";
|
|
||||||
} else {
|
|
||||||
state->target_lcd_color = LCD_COLOR(192, 0xFF, 0xFF);
|
|
||||||
state->layer_text = "Vim";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
/* using UK layout for space-cadet-shift */
|
|
||||||
#define LSPO_KEY KC_9
|
|
||||||
#define RSPC_KEY KC_0
|
|
||||||
|
|
||||||
#define LEADER_TIMEOUT 800 // leader key sequence timeout in millis
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,661 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
/* use UK keymap */
|
|
||||||
|
|
||||||
#define UK_HASH KC_NONUS_HASH
|
|
||||||
#define UK_BSLS KC_NONUS_BSLASH
|
|
||||||
#define UK_PIPE LSFT(UK_BSLS)
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define NUMB 2 // numbers and hex
|
|
||||||
#define CRSR 3 // cursor keys
|
|
||||||
#define MOUS 4 // mouse keys
|
|
||||||
#define KEYW 5 // keyword macros
|
|
||||||
#define EMAC 6 // emacs
|
|
||||||
|
|
||||||
// my macros
|
|
||||||
#define UM_ECET M(0) // { }
|
|
||||||
#define UM_0x M(1)
|
|
||||||
#define UM_PUB M(2)
|
|
||||||
#define UM_PRO M(3)
|
|
||||||
#define UM_PRV M(4)
|
|
||||||
#define UM_CLS M(5)
|
|
||||||
#define UM_STR M(6)
|
|
||||||
#define UM_RET M(7)
|
|
||||||
#define UM_INC M(8)
|
|
||||||
#define UM_OBJ M(9)
|
|
||||||
#define UM_GITLOG M(10)
|
|
||||||
#define UM_GOODM M(11)
|
|
||||||
#define UM_NAMESP M(12)
|
|
||||||
#define UM_EMTR M(14) // emacs toggle read-only
|
|
||||||
#define UM_EMWR M(15) // emacs write buffer (save)
|
|
||||||
#define UM_EMUN M(16) // emacs undo
|
|
||||||
#define UM_EMRE M(17) // emacs redo
|
|
||||||
#define UM_EMPB M(18) // emacs previous buffer
|
|
||||||
#define UM_EMNB M(19) // emacs next buffer
|
|
||||||
#define UM_GOODN M(20)
|
|
||||||
#define UM_ECETS M(22) // { };
|
|
||||||
#define UM_TMPL M(23)
|
|
||||||
#define UM_TYPN M(24)
|
|
||||||
#define UM_CONT M(25)
|
|
||||||
#define UM_BREAK M(26)
|
|
||||||
#define UM_CONST M(27)
|
|
||||||
#define UM_SMILY M(28)
|
|
||||||
#define UM_SADF M(29)
|
|
||||||
#define UM_SCARF M(30)
|
|
||||||
#define UM_DECAF M(31)
|
|
||||||
#define UM_OPER M(32)
|
|
||||||
#define UM_NULP M(33)
|
|
||||||
#define UM_EXTR M(34)
|
|
||||||
#define UM_VIRT M(35)
|
|
||||||
#define UM_EMFB M(36) // emacs font bigger
|
|
||||||
#define UM_EMFS M(37) // emacs font smaller
|
|
||||||
#define UM_VOLAT M(38)
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Base layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ESC | 1 | 2 | 3 | 4 | 5 | SfLt | | SfRt | 6 | 7 | 8 | 9 | 0 | BkSp |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Del |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | Caps/L2| A | S | D | F | G |------| |------| H | J | K | L | ; |Enter/L2|
|
|
||||||
* |--------+------+------+------+------+------| L6 | | L6 |------+------+------+------+------+--------|
|
|
||||||
* | LSft/( | Z | X | C | V/L3 | B/L4 | | | | N/L4 | M/L3 | , | . | / | RSft/) |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |Ctrl/[| Alt/]| # | Left |Right | | Up | Down | - | Alt/[|Ctrl/]|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | L2 | lead | | lead | Ins |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | Space| BkSp | Home | | PgUp | Enter|Space |
|
|
||||||
* | / | / |------| |------| / | / |
|
|
||||||
* | Ctrl | Alt |End/L5| |PDn/L5| Alt | Ctrl |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_LEFT),
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(SYMB),
|
|
||||||
LT(NUMB, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G,
|
|
||||||
KC_LSPO, KC_Z, KC_X, KC_C, LT(CRSR, KC_V), LT(MOUS, KC_B), MO(EMAC),
|
|
||||||
CTL_T(KC_LBRC), ALT_T(KC_RBRC), UK_HASH, KC_LEFT, KC_RGHT,
|
|
||||||
TG(NUMB), KC_LEAD,
|
|
||||||
KC_HOME,
|
|
||||||
CTL_T(KC_SPC), ALT_T(KC_BSPC), LT(KEYW, KC_END),
|
|
||||||
// right hand
|
|
||||||
LSFT(KC_RGHT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
|
||||||
MO(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DELT,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(NUMB, KC_ENT),
|
|
||||||
MO(EMAC), LT(MOUS, KC_N), LT(CRSR, KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
|
|
||||||
KC_UP, KC_DOWN, KC_MINS, ALT_T(KC_LBRC), CTL_T(KC_RBRC),
|
|
||||||
KC_LEAD, KC_INS,
|
|
||||||
KC_PGUP,
|
|
||||||
LT(KEYW, KC_PGDN), ALT_T(KC_ENT), CTL_T(KC_SPC)
|
|
||||||
),
|
|
||||||
/* Keymap 1: Symbol Layer with F keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ## | F1 | F2 | F3 | F4 | F5 | ## | | ## | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | ## | ! | " | £ | $ | % | ## | | ## | - | + | = | @ | ~ | F12 |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | ## | ^ | & | * | _ | # |------| |------| { | } | ; | ' | # | ## |
|
|
||||||
* |--------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
|
|
||||||
* | ## | \ | | | ` | - | / | | | | [ | ] | < | > | ? | ## |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | ## | ## | ## | ## | ## | | ## | ## | ## | ## | ## |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | ## | ## | | ## | ## |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | ## | | ## | | |
|
|
||||||
* | ## | ## |------| |------| ## | ## |
|
|
||||||
* | | | ## | | ## | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
|
||||||
KC_TRNS, KC_EXLM, LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), KC_TRNS,
|
|
||||||
KC_TRNS, LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_MINS), UK_HASH,
|
|
||||||
KC_TRNS, UK_BSLS, UK_PIPE, KC_GRV, KC_MINS, KC_SLSH, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
KC_TRNS, KC_MINS, KC_PLUS, KC_EQL, LSFT(KC_QUOT), LSFT(UK_HASH), KC_F12,
|
|
||||||
KC_LCBR, KC_RCBR, KC_SCLN, KC_QUOT, UK_HASH, KC_TRNS,
|
|
||||||
KC_TRNS, KC_LBRC, KC_RBRC, LSFT(KC_COMM), LSFT(KC_DOT), LSFT(KC_SLSH), KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 2: Numerics and hex
|
|
||||||
*
|
|
||||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ## | A | B | C | D | E | F | | A | B | C | D | E | F | ## |
|
|
||||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | ## | * | 7 | 8 | 9 | * | 0x | | 0x | * | 7 | 8 | 9 | * | ## |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | ## | / | 4 | 5 | 6 | / |------| |------| / | 4 | 5 | 6 | / | ## |
|
|
||||||
* |---------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
|
|
||||||
* | ## | - | 1 | 2 | 3 | - | | | | - | 1 | 2 | 3 | - | ## |
|
|
||||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | = | + | 0 | , | . | | 0 | , | . | + | = |
|
|
||||||
* `-----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | ## | ## | | ## | ## |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | ## | | ## | | |
|
|
||||||
* | ## | ## |------| |------| ## | ## |
|
|
||||||
* | | | ## | | ## | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[NUMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
|
|
||||||
KC_TRNS, KC_ASTR, KC_7, KC_8, KC_9, KC_ASTR, UM_0x,
|
|
||||||
KC_TRNS, KC_SLSH, KC_4, KC_5, KC_6, KC_SLSH,
|
|
||||||
KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS,
|
|
||||||
KC_EQL, KC_PLUS, KC_0, KC_COMM, KC_DOT,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_TRNS,
|
|
||||||
UM_0x, KC_ASTR, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
|
|
||||||
KC_SLSH, KC_4, KC_5, KC_6, KC_SLSH, KC_TRNS,
|
|
||||||
KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS,
|
|
||||||
KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_EQL,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 3: Cursor movement
|
|
||||||
*
|
|
||||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | Home | | Up | | PgUp | | | | PgUp | | Up | | Home | |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | End | Left | Down | Right| PgDn |------| |------| PgDn | Left | Down | Right| End | |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | ## | Up | | Down | ## | | | | | | ## | Down | | Up | ## |
|
|
||||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | Left | Down | Right| | | | | | Left | Down | Right|
|
|
||||||
* `-----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | ## | ## |------| |------| ## | ## |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[CRSR] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_HOME, KC_NO, KC_UP, KC_NO, KC_PGUP, KC_NO,
|
|
||||||
KC_NO, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN,
|
|
||||||
KC_TRNS, KC_UP, KC_NO, KC_DOWN, KC_TRNS, KC_NO, KC_NO,
|
|
||||||
KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS, KC_NO,
|
|
||||||
// right hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_PGUP, KC_NO, KC_UP, KC_NO, KC_HOME, KC_NO,
|
|
||||||
KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_TRNS, KC_DOWN, KC_NO, KC_UP, KC_TRNS,
|
|
||||||
KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 4: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | Lclk | MsUp | Rclk | | | | | | Lclk | MsUp | Rclk | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| |MsLeft|MsDown|MsRght| | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | Lclk | MsUp | Rclk |MsDown| | ## | | | | ## | |MsDown| Lclk | MsUp | Rclk |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |MsLeft|MsDown|MsRight | | | | |MsLeft|MsDown|MsRght|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[MOUS] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO,
|
|
||||||
KC_BTN1, KC_MS_U, KC_BTN2, KC_MS_D, KC_NO, KC_TRNS, KC_NO,
|
|
||||||
KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO,
|
|
||||||
// right hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_TRNS, KC_NO, KC_MS_D, KC_BTN1, KC_MS_U, KC_BTN2,
|
|
||||||
KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
/* Keymap 5: Keywords
|
|
||||||
*
|
|
||||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | scarf| sadf | smily| | | | decaf| | | | | |
|
|
||||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | const| volat| oper | ret | tmpl | | | | typen| cont | prv | pro | pub | |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | str | obj | | gitl |------| |------| | | | nulp | | |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | extr | cls | virt | break| | | |namesp| goodm| goodn| | | |
|
|
||||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | inc | | | | | | | | |
|
|
||||||
* `-----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | ecet | ecets|
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | ## | | ## | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[KEYW] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_NO, KC_NO, KC_NO, UM_SCARF, UM_SADF, UM_SMILY, KC_NO,
|
|
||||||
KC_NO, UM_CONST, UM_VOLAT, UM_OPER, UM_RET, UM_TMPL, KC_NO,
|
|
||||||
KC_NO, KC_NO, UM_STR, UM_OBJ, KC_NO, UM_GITLOG,
|
|
||||||
KC_NO, KC_NO, UM_EXTR, UM_CLS, UM_VIRT, UM_BREAK, KC_NO,
|
|
||||||
KC_NO, KC_NO, UM_INC, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_NO, UM_DECAF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, UM_TYPN, UM_CONT, UM_PRV, UM_PRO, UM_PUB, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, UM_NULP, KC_NO, KC_NO,
|
|
||||||
KC_NO, UM_NAMESP, UM_GOODM, UM_GOODN, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
UM_ECET, UM_ECETS,
|
|
||||||
KC_NO,
|
|
||||||
KC_TRNS, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
/* Keymap 6: emacs
|
|
||||||
*
|
|
||||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | empb | | emnb | emfs | emfb | | | | |
|
|
||||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | emtr | | | | | | | | emun | emre | w-up | | | |
|
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | emwr | | | |------| |------| |w-left|w-down|w-rght| | |
|
|
||||||
* |---------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | |w-down| | | |
|
|
||||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `-----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[EMAC] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, UM_EMPB,
|
|
||||||
KC_NO, UM_EMTR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, UM_EMWR, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO,
|
|
||||||
// right hand
|
|
||||||
UM_EMNB, UM_EMFS, UM_EMFB, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, UM_EMUN, UM_EMRE, LSFT(KC_UP), KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_RGHT), KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_NO, KC_NO, LSFT(KC_DOWN), KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
enum next_key_down_up {
|
|
||||||
NK_DOWN_UP,
|
|
||||||
NK_DOWN,
|
|
||||||
NK_UP // a bit of a hack, this works as long as NK_UP < KC_A
|
|
||||||
};
|
|
||||||
|
|
||||||
void send_keystrokes(uint8_t key, ...)
|
|
||||||
{
|
|
||||||
va_list vl;
|
|
||||||
va_start(vl, key);
|
|
||||||
enum next_key_down_up nkdu = NK_DOWN_UP;
|
|
||||||
while (key != KC_NO) {
|
|
||||||
if (key < KC_A) {
|
|
||||||
nkdu = key;
|
|
||||||
} else {
|
|
||||||
switch (nkdu) {
|
|
||||||
case NK_DOWN_UP:
|
|
||||||
register_code(key);
|
|
||||||
case NK_UP:
|
|
||||||
unregister_code(key);
|
|
||||||
break;
|
|
||||||
case NK_DOWN:
|
|
||||||
register_code(key);
|
|
||||||
}
|
|
||||||
nkdu = NK_DOWN_UP;
|
|
||||||
}
|
|
||||||
key = va_arg(vl, int);
|
|
||||||
}
|
|
||||||
va_end(vl);
|
|
||||||
}
|
|
||||||
|
|
||||||
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) {
|
|
||||||
return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
|
||||||
D(LSFT), T(RBRC), U(LSFT), T(UP),
|
|
||||||
T(TAB), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(T(0), T(X), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("public");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("protected");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("private");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5: // class
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(T(C), T(L), T(A), T(S), T(S), T(ENT),
|
|
||||||
D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
|
||||||
T(P), T(U), T(B), T(L), T(I), T(C),
|
|
||||||
D(LSFT), T(SCLN), U(LSFT), T(ENT), T(ENT),
|
|
||||||
T(P), T(R), T(I), T(V), T(A), T(T), T(E),
|
|
||||||
D(LSFT), T(SCLN), U(LSFT), T(ENT),
|
|
||||||
D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
|
|
||||||
T(UP), T(UP), T(UP), T(UP), T(UP), T(UP), T(UP),
|
|
||||||
T(END), T(SPC), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 6: // struct
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(T(S), T(T), T(R), T(U), T(C), T(T), T(ENT),
|
|
||||||
D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
|
||||||
D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
|
|
||||||
T(UP), T(UP), T(UP), T(UP),
|
|
||||||
T(END), T(SPC), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("return");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 8: // #include
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(T(NONUS_HASH), T(I), T(N), T(C), T(L), T(U), T(D), T(E), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("objdump -CT -x -d");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("git log --oneline --graph --decorate=short");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("good morning");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("namespace");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 14: // emacs toggle read-only
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), T(X), T(Q), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 15: // emacs write buffer
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), T(X), T(S), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 16: // emacs undo
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), D(LSFT), T(MINS), U(LSFT), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 17: // emacs redo
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LALT), D(LSFT), T(MINS), U(LSFT), U(LALT), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 18: // emacs previous buffer
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), T(X), U(LCTL), T(LEFT), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 19: // emacs next buffer
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), T(X), U(LCTL), T(RGHT), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("good night");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 22: // { };
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
|
||||||
D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(UP),
|
|
||||||
T(TAB), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 23:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("template");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("typename");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("continue");
|
|
||||||
return MACRO(T(SCLN), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 26:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("break");
|
|
||||||
return MACRO(T(SCLN), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("const");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 28:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING(":-)");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 29:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING(":-(");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 30: // dazed
|
|
||||||
if (record->event.pressed) {
|
|
||||||
send_keystrokes(NK_DOWN, KC_LSFT, KC_8, KC_MINS, KC_8, NK_UP, KC_LSFT, KC_NO);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 31: // decaf
|
|
||||||
if (record->event.pressed) {
|
|
||||||
send_keystrokes(NK_DOWN, KC_LSFT, KC_C, KC_9, KC_MINS, KC_0, NK_UP, KC_LSFT, KC_NO);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("operator");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 33:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("nullptr");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 34:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("extern");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 35:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("virtual");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 36: // emacs font smaller
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), T(X), T(EQL), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 37: // emacs font bigger
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(D(LCTL), T(X), T(MINS), U(LCTL), END);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 38:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("volatile");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
LEADER_EXTERNS();
|
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
LEADER_DICTIONARY() {
|
|
||||||
leading = false;
|
|
||||||
leader_end();
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_A) {
|
|
||||||
SEND_STRING("git add .");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_D) {
|
|
||||||
SEND_STRING("git diff");
|
|
||||||
}
|
|
||||||
SEQ_THREE_KEYS(KC_G, KC_D, KC_S) {
|
|
||||||
SEND_STRING("git diff --staged");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_L) {
|
|
||||||
SEND_STRING("git log");
|
|
||||||
}
|
|
||||||
SEQ_THREE_KEYS(KC_G, KC_L, KC_O) {
|
|
||||||
SEND_STRING("git log --oneline");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_F) {
|
|
||||||
SEND_STRING("git fetch");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_O) {
|
|
||||||
SEND_STRING("git checkout");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_P) {
|
|
||||||
SEND_STRING("git pull");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_S) {
|
|
||||||
SEND_STRING("git status");
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_C) {
|
|
||||||
SEND_STRING("git commit -m ''");
|
|
||||||
send_keystrokes(KC_LEFT, KC_NO);
|
|
||||||
}
|
|
||||||
SEQ_THREE_KEYS(KC_G, KC_C, KC_A) {
|
|
||||||
SEND_STRING("git commit --amend");
|
|
||||||
}
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_C, KC_C) {
|
|
||||||
SEND_STRING("const_cast<>");
|
|
||||||
send_keystrokes(KC_LEFT, KC_NO);
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_C, KC_D) {
|
|
||||||
SEND_STRING("dynamic_cast<>");
|
|
||||||
send_keystrokes(KC_LEFT, KC_NO);
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_C, KC_R) {
|
|
||||||
SEND_STRING("reinterpret_cast<>");
|
|
||||||
send_keystrokes(KC_LEFT, KC_NO);
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_C, KC_S) {
|
|
||||||
SEND_STRING("static_cast<>");
|
|
||||||
send_keystrokes(KC_LEFT, KC_NO);
|
|
||||||
}
|
|
||||||
|
|
||||||
SEQ_ONE_KEY(KC_SLSH) {
|
|
||||||
send_keystrokes(KC_SLSH, NK_DOWN, KC_LSFT, KC_8, KC_8, NK_UP, KC_LSFT, KC_ENT,
|
|
||||||
NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_ENT,
|
|
||||||
NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_SLSH, KC_UP, KC_END, KC_SPC,
|
|
||||||
KC_NO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,188 +0,0 @@
|
|||||||
# ErgoDox EZ Configuration for typing like a boss.
|
|
||||||
|
|
||||||
This layout has 7 layers:
|
|
||||||
0. Base layers
|
|
||||||
1. Symbols and F-keys
|
|
||||||
2. Number pad (with hexadecimal)
|
|
||||||
3. Cursor keys
|
|
||||||
4. Mouse movement and clicks
|
|
||||||
5. Keyword macros
|
|
||||||
6. Emacs
|
|
||||||
|
|
||||||
There are also some leader keys defined for frequently used commands (git etc).
|
|
||||||
|
|
||||||
## The layers
|
|
||||||
|
|
||||||
Double hashes (`##`) indicate transparent keys (`KC_TRNS`) and blanks indicate no key (`KC_NO`).
|
|
||||||
|
|
||||||
### 0. Base layer
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| ESC | 1 | 2 | 3 | 4 | 5 | SfLt | | SfRt | 6 | 7 | 8 | 9 | 0 | BkSp |
|
|
||||||
|--------|------|------|------|------|-------------| |------|------|------|------|------|------|--------|
|
|
||||||
| Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Del |
|
|
||||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| Caps/L2| A | S | D | F | G |------| |------| H | J | K | L | ; |Enter/L2|
|
|
||||||
|--------|------|------|------|------|------| L6 | | L6 |------|------|------|------|------|--------|
|
|
||||||
| LSft/( | Z | X | C | V/L3 | B/L4 | | | | N/L4 | M/L3 | , | . | / | RSft/) |
|
|
||||||
`--------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
|Ctrl/[| Alt/]| # | Left |Right | | Up | Down | - | Alt/[|Ctrl/]|
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| L2 | lead | | lead | Ins |
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| Space| BkSp | Home | | PgUp | Enter|Space |
|
|
||||||
| / | / |------| |------| / | / |
|
|
||||||
| Ctrl | Alt |End/L5| |PDn/L5| Alt | Ctrl |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
Space Cadet shift is enabled. Ctrl and Alt doubles up as normal keys when tapped.
|
|
||||||
SfLt and SfRt sends Shift + left and Shift + Right respectively - for use with emacs with `windmove-default-keybindings`.
|
|
||||||
Caps and Enter may be held down to activate layer 2 (hexadecimal number pad).
|
|
||||||
Please see `matrix_scan_user` function in `keymap.c` for list of commands available via `lead` key.
|
|
||||||
|
|
||||||
### 1. Symbols and F-keys
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| ## | F1 | F2 | F3 | F4 | F5 | ## | | ## | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
|--------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
|
||||||
| ## | ! | " | £ | $ | % | ## | | ## | - | + | = | @ | ~ | F12 |
|
|
||||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| ## | ^ | & | * | _ | # |------| |------| { | } | ; | ' | # | ## |
|
|
||||||
|--------|------|------|------|------|------| ## | | ## |------|------|------|------|------|--------|
|
|
||||||
| ## | \ | | | ` | - | / | | | | [ | ] | < | > | ? | ## |
|
|
||||||
`--------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
| ## | ## | ## | ## | ## | | ## | ## | ## | ## | ## |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| ## | ## | | ## | ## |
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| | | ## | | ## | | |
|
|
||||||
| ## | ## |------| |------| ## | ## |
|
|
||||||
| | | ## | | ## | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Number pad (with hexadecimal)
|
|
||||||
|
|
||||||
```
|
|
||||||
,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| ## | A | B | C | D | E | F | | A | B | C | D | E | F | ## |
|
|
||||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
|
||||||
| ## | * | 7 | 8 | 9 | * | 0x | | 0x | * | 7 | 8 | 9 | * | ## |
|
|
||||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| ## | / | 4 | 5 | 6 | / |------| |------| / | 4 | 5 | 6 | / | ## |
|
|
||||||
|---------|------|------|------|------|------| ## | | ## |------|------|------|------|------|--------|
|
|
||||||
| ## | - | 1 | 2 | 3 | - | | | | - | 1 | 2 | 3 | - | ## |
|
|
||||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
| = | + | 0 | , | . | | 0 | , | . | + | = |
|
|
||||||
`-----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| ## | ## | | ## | ## |
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| | | ## | | ## | | |
|
|
||||||
| ## | ## |------| |------| ## | ## |
|
|
||||||
| | | ## | | ## | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Cursor keys
|
|
||||||
|
|
||||||
```
|
|
||||||
,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
|
||||||
| | Home | | Up | | PgUp | | | | PgUp | | Up | | Home | |
|
|
||||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| | End | Left | Down | Right| PgDn |------| |------| PgDn | Left | Down | Right| End | |
|
|
||||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| ## | Up | | Down | ## | | | | | | ## | Down | | Up | ## |
|
|
||||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
| Left | Down | Right| | | | | | Left | Down | Right|
|
|
||||||
`-----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | | | | |
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| | | | | | | |
|
|
||||||
| ## | ## |------| |------| ## | ## |
|
|
||||||
| | | | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Mouse movement and clicks
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | | | | | | | | | | | | |
|
|
||||||
|--------|------|------|------|------|-------------| |------|------|------|------|------|------|--------|
|
|
||||||
| | | Lclk | MsUp | Rclk | | | | | | Lclk | MsUp | Rclk | | |
|
|
||||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| | |MsLeft|MsDown|MsRght| |------| |------| |MsLeft|MsDown|MsRght| | |
|
|
||||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| Lclk | MsUp | Rclk |MsDown| | ## | | | | ## | |MsDown| Lclk | MsUp | Rclk |
|
|
||||||
`--------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
|MsLeft|MsDown|MsRight | | | | |MsLeft|MsDown|MsRght|
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | | | | |
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| | | | | | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Keyword macros
|
|
||||||
|
|
||||||
```
|
|
||||||
,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | scarf| sadf | smily| | | | decaf| | | | | |
|
|
||||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
|
||||||
| | const| volat| oper | ret | tmpl | | | | typen| cont | prv | pro | pub | |
|
|
||||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| | | str | obj | | gitl |------| |------| | | | nulp | | |
|
|
||||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| | | extr | cls | virt | break| | | |namesp| goodm| goodn| | | |
|
|
||||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
| | | inc | | | | | | | | |
|
|
||||||
`-----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | | | ecet | ecets|
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| | | | | | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | ## | | ## | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
Please see `keymap.c` for the keywords/commands.
|
|
||||||
Some are const, volatile, operator, return, template, typename, continue, private,
|
|
||||||
protected, public, struct, class, extern, virtual, break, namespace.
|
|
||||||
Also a git log command I use a lot (`git log --oneline --graph --decorate=short` (I know git can be configured but that is boring)).
|
|
||||||
|
|
||||||
### 6. Emacs
|
|
||||||
|
|
||||||
```
|
|
||||||
,---------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | | | | | | empb | | emnb | emfs | emfb | | | | |
|
|
||||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
|
||||||
| | emtr | | | | | | | | emun | emre | w-up | | | |
|
|
||||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
|
||||||
| | | emwr | | | |------| |------| |w-left|w-down|w-rght| | |
|
|
||||||
|---------|------|------|------|------|------| ## | | ## |------|------|------|------|------|--------|
|
|
||||||
| | | | | | | | | | | |w-down| | | |
|
|
||||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
|
||||||
| | | | | | | | | | | |
|
|
||||||
`-----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | | | | |
|
|
||||||
,------|------|------| |------|------|------.
|
|
||||||
| | | | | | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
Some emacs shortcuts like toggle read/write mode (emtr), write file (emwr), previous-buffer (empb),
|
|
||||||
next-buffer (emnb), smaller font(emfs), larger font (emfb), undo (emun), redo (emre) and switching between windows in a frame.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
LEADER_ENABLE = yes
|
|
||||||
@@ -1,231 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define MDIA 2 // media keys
|
|
||||||
#define UNIC 3 // unicode entry layer
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | ESC | 1! | 2@ | 3# | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | -_ | += | BkSp |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | |\ |
|
|
||||||
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
|
|
||||||
* | Win | A | S | D | F | G |------| |------| H | J | K | L | :; | '" |
|
|
||||||
* |--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
|
|
||||||
* | LShift |Z/Alt | X | C | V | B | | | | N | M | , | . | Alt | RShift |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |LCtrl | COPY | PASTE| Left | Right| | Down | Up |Hyper | `~ | RCtrl |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* Hyper = Ctrl+Super+Alt+Shift | ~L3 | F5 | | F2 | ~L2 |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | PgUp | | Ins | | |
|
|
||||||
* | Enter| BkSp |------| |------| ~L1 |Space |
|
|
||||||
* | | | PgDn | | Del | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
|
|
||||||
KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G,
|
|
||||||
KC_LSFT, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_HOME,
|
|
||||||
KC_LCTRL, LCTL(KC_C), LCTL(KC_V), KC_LEFT,KC_RGHT,
|
|
||||||
TT(UNIC), KC_F5,
|
|
||||||
KC_PGUP,
|
|
||||||
KC_ENT,KC_BSPC,KC_PGDN,
|
|
||||||
// right hand
|
|
||||||
KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
|
||||||
KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
|
|
||||||
KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV, KC_RCTRL,
|
|
||||||
KC_F2, TT(MDIA),
|
|
||||||
KC_INS,
|
|
||||||
KC_DELT,TT(SYMB), KC_SPC
|
|
||||||
),
|
|
||||||
/* Keymap 1: Symbol Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |PrintScr|
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | £ | | | | | | . | 0 | = |Alt+F4|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ↑ ,-------------. ,-------------.
|
|
||||||
* THERE! | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* CAD = Ctrl + Alt + Delete | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | CAD | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// SYMBOLS
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
|
||||||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
|
||||||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
|
||||||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
|
||||||
KC_TRNS,M(3),KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
|
||||||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
|
|
||||||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
|
||||||
KC_TRNS,KC_DOT, KC_0, KC_EQL, LALT(KC_F4),
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
LCTL(LALT(KC_DEL)), KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 2: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | TEENSY | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | MsUp | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | Prev | Next | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | Lclk | Rclk | |VolDn |VolUp | Mute | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | |Brwser|
|
|
||||||
* | | |------| |------| |Back |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// MEDIA AND MOUSE
|
|
||||||
[MDIA] = LAYOUT_ergodox(
|
|
||||||
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// 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_MPLY,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_WBAK
|
|
||||||
),
|
|
||||||
/* Keymap 3: Unicode Entry
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | Alt | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | + | + | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Alt | | | E | | | | | | | 7 | 8 | 9 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | Alt | A | | D | F | |------| |------| | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | Alt | | | C | | B | | | | | 1 | 2 | 3 | + | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | Alt | Alt | Alt | | | | 0 | 0 | 0 | + | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* WINDOWS ONLY SETUP!! | ~L3 | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | Alt | Alt |------| |------| Alt | Alt |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[UNIC] = LAYOUT_ergodox( // layer 3 : Unicode Entry
|
|
||||||
// left hand
|
|
||||||
KC_LALT, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6,
|
|
||||||
KC_LALT, KC_TRNS, KC_TRNS, KC_E, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_LALT, KC_A, KC_TRNS, KC_D, KC_F, KC_TRNS,
|
|
||||||
KC_LALT, KC_TRNS, KC_TRNS, KC_C, KC_TRNS, KC_B, KC_TRNS,
|
|
||||||
KC_LALT, KC_LALT, KC_LALT, KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_LALT,KC_LALT, KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_P7, KC_P8, KC_P9, KC_P0, KC_PPLS,KC_PPLS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_TRNS,
|
|
||||||
KC_P0, KC_P0, KC_P0, KC_PPLS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_LALT, KC_LALT
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
}
|
|
||||||
case 3: // this would trigger when you hit a key mapped as M(3)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO( I(255), D(LALT), T(P1), T(P5), T(P6), U(LALT), END );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 = biton32(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;
|
|
||||||
case 3:
|
|
||||||
ergodox_right_led_3_on();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// none
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
Englishman in New York
|
|
||||||
===========================
|
|
||||||
|
|
||||||
:microphone: :tea:
|
|
||||||
|
|
||||||
About
|
|
||||||
------
|
|
||||||
|
|
||||||
After using the massdrop configurator to get the basics, I wanted to add a
|
|
||||||
little extra to my ergodox. Notably the Hyper hotkey, the press and hold,
|
|
||||||
and a way to have my beloved £ :pound: symbol available<sup>[1](#unicode)</sup>. Why not switch to a GB
|
|
||||||
layout? Well the computers I use are US keymap'd and I can't always change
|
|
||||||
that. Plus I've got used to 2/@ and 3/# and moving to the ergodox was hard
|
|
||||||
enough. :sweat_smile:
|
|
||||||
|
|
||||||
I started from the default and edited from there as I needed. It's somewhat
|
|
||||||
similar to a regular layout, particularly R1 and shift/controls. I ended up
|
|
||||||
with a few keys that were blank, so I'm testing out some shortcuts. Alt+F4 for
|
|
||||||
quitting things in Windows, is one example, but I felt it was better placed on
|
|
||||||
the 1st layer - in case of fat fingers.
|
|
||||||
|
|
||||||
Layout
|
|
||||||
-------
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Base Layer
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| ESC | 1! | 2@ | 3# | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | -_ | += | BkSp |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | |\ |
|
|
||||||
|--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
|
|
||||||
| Win | A | S | D | F | G |------| |------| H | J | K | L | :; | '" |
|
|
||||||
|--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
|
|
||||||
| LShift |Z/Alt | X | C | V | B | | | | N | M | , | . | Alt | RShift |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
|LCtrl | COPY | PASTE| Left | Right| | Down | Up |Hyper | `~ | RCtrl |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
Hyper = Ctrl+Super+Alt+Shift | ~L3 | F5 | | F2 | ~L2 |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
| | | PgUp | | Ins | | |
|
|
||||||
| Enter| BkSp |------| |------| ~L1 |Space |
|
|
||||||
| | | PgDn | | Del | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Symbol Layer
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |PrintScr|
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| | £ | | | | | | . | 0 | = |Alt+F4|
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
↑ ,-------------. ,-------------.
|
|
||||||
THERE! | | | | | |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
CAD = Ctrl + Alt + Delete | | | | | | | |
|
|
||||||
| | |------| |------| | |
|
|
||||||
| | | | | CAD | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
### Media Layer
|
|
||||||
|
|
||||||
Not touched this, not used either.
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| TEENSY | | | | | | | | | | | | | | |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| | | | MsUp | | | | | | | | | | | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| | | | | | | | | | | | Prev | Next | | |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| | | | Lclk | Rclk | |VolDn |VolUp | Mute | | |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
| | | | | |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
| | | | | | |Brwser|
|
|
||||||
| | |------| |------| |Back |
|
|
||||||
| | | | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
### Unicode Layer
|
|
||||||
|
|
||||||
Used to enter/test unicode input on Windows. All numbers are numpad keys.
|
|
||||||
|
|
||||||
```
|
|
||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
| Alt | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | + | + | |
|
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
| Alt | | | E | | | | | | | 7 | 8 | 9 | + | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| Alt | A | | D | F | |------| |------| | 4 | 5 | 6 | + | |
|
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
| Alt | | | C | | B | | | | | 1 | 2 | 3 | + | |
|
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
| Alt | Alt | Alt | | | | 0 | 0 | 0 | + | |
|
|
||||||
`----------------------------------' `----------------------------------'
|
|
||||||
,-------------. ,-------------.
|
|
||||||
WINDOWS ONLY SETUP!! | ~L3 | | | | |
|
|
||||||
,------|------|------| |------+------+------.
|
|
||||||
| | | | | | | |
|
|
||||||
| Alt | Alt |------| |------| Alt | Alt |
|
|
||||||
| | | | | | | |
|
|
||||||
`--------------------' `--------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
------
|
|
||||||
|
|
||||||
~L1 / L2 / L3 will momentarily switch to a layer if held and another key is pressed.
|
|
||||||
If pressed and released will remain on layer until pressed again.
|
|
||||||
|
|
||||||
### Unicode
|
|
||||||
|
|
||||||
This layout is for Windows only. To enter a character Press and Hold Alt, type + and hex code then release Alt.
|
|
||||||
|
|
||||||
Changelog
|
|
||||||
-----------
|
|
||||||
|
|
||||||
### [0.2.1] - 2016-04-05
|
|
||||||
|
|
||||||
* Changed £ to alt code in Windows. Windows sucks at unicode.
|
|
||||||
|
|
||||||
### [0.2.0] - 2016-03-27
|
|
||||||
|
|
||||||
* Added unicode layer
|
|
||||||
* Moved Copy/Paste to left hand side
|
|
||||||
* Switched Enter and Space (again)
|
|
||||||
* Added L3 (unicode layer) toggle
|
|
||||||
* Removed Press and Hold for Alt on right hand size (/)
|
|
||||||
* Swapped Volume Up/Down to match arrows
|
|
||||||
* Tried fixing £ macro
|
|
||||||
* Removed * in the matrix function things (upstream change)
|
|
||||||
|
|
||||||
### [0.1.1] - 2016-03-23
|
|
||||||
|
|
||||||
* Changed £ input to a macro
|
|
||||||
|
|
||||||
|
|
||||||
### [0.1.0] - 2016-03-22
|
|
||||||
|
|
||||||
After actually using the keyboard, I've made some changes:
|
|
||||||
|
|
||||||
* Swapped Enter and Space
|
|
||||||
* Moved backspace to thumb keys (top right still remains)
|
|
||||||
* Added Ctrl+Alt+Delete
|
|
||||||
* Added Teensy Reset on 2nd layer
|
|
||||||
* Switched Up and Down
|
|
||||||
* Changed copy/paste to be Ctrl+c and Ctrl+v as KC_COPY/PASTE didn't work (in Windows)
|
|
||||||
* Moved ~L2 to replace +L1 after learning how the function works (notes above)
|
|
||||||
* Hopefully fixed GBP symbol (unicode enabled in MakeFile)
|
|
||||||
|
|
||||||
### [0.0.1] - 2016-03-21
|
|
||||||
|
|
||||||
First version
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
-------
|
|
||||||
|
|
||||||
Space for feedback and notes for future improvements
|
|
||||||
|
|
||||||
----
|
|
||||||
<sup><a name="unicode">1</a></sup>: For Windows only, and you have to edit the [registry](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input).
|
|
||||||
@@ -1,674 +0,0 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The GNU General Public License is a free, copyleft license for
|
|
||||||
software and other kinds of works.
|
|
||||||
|
|
||||||
The licenses for most software and other practical works are designed
|
|
||||||
to take away your freedom to share and change the works. By contrast,
|
|
||||||
the GNU General Public License is intended to guarantee your freedom to
|
|
||||||
share and change all versions of a program--to make sure it remains free
|
|
||||||
software for all its users. We, the Free Software Foundation, use the
|
|
||||||
GNU General Public License for most of our software; it applies also to
|
|
||||||
any other work released this way by its authors. You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
them if you wish), that you receive source code or can get it if you
|
|
||||||
want it, that you can change the software or use pieces of it in new
|
|
||||||
free programs, and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to prevent others from denying you
|
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
|
||||||
or can get the source code. And you must show them these terms so they
|
|
||||||
know their rights.
|
|
||||||
|
|
||||||
Developers that use the GNU GPL protect your rights with two steps:
|
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
|
||||||
|
|
||||||
For the developers' and authors' protection, the GPL clearly explains
|
|
||||||
that there is no warranty for this free software. For both users' and
|
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
|
||||||
changed, so that their problems will not be attributed erroneously to
|
|
||||||
authors of previous versions.
|
|
||||||
|
|
||||||
Some devices are designed to deny users access to install or run
|
|
||||||
modified versions of the software inside them, although the manufacturer
|
|
||||||
can do so. This is fundamentally incompatible with the aim of
|
|
||||||
protecting users' freedom to change the software. The systematic
|
|
||||||
pattern of such abuse occurs in the area of products for individuals to
|
|
||||||
use, which is precisely where it is most unacceptable. Therefore, we
|
|
||||||
have designed this version of the GPL to prohibit the practice for those
|
|
||||||
products. If such problems arise substantially in other domains, we
|
|
||||||
stand ready to extend this provision to those domains in future versions
|
|
||||||
of the GPL, as needed to protect the freedom of users.
|
|
||||||
|
|
||||||
Finally, every program is threatened constantly by software patents.
|
|
||||||
States should not allow patents to restrict development and use of
|
|
||||||
software on general-purpose computers, but in those that do, we wish to
|
|
||||||
avoid the special danger that patents applied to a free program could
|
|
||||||
make it effectively proprietary. To prevent this, the GPL assures that
|
|
||||||
patents cannot be used to render the program non-free.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
0. Definitions.
|
|
||||||
|
|
||||||
"This License" refers to version 3 of the GNU General Public License.
|
|
||||||
|
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
|
||||||
works, such as semiconductor masks.
|
|
||||||
|
|
||||||
"The Program" refers to any copyrightable work licensed under this
|
|
||||||
License. Each licensee is addressed as "you". "Licensees" and
|
|
||||||
"recipients" may be individuals or organizations.
|
|
||||||
|
|
||||||
To "modify" a work means to copy from or adapt all or part of the work
|
|
||||||
in a fashion requiring copyright permission, other than the making of an
|
|
||||||
exact copy. The resulting work is called a "modified version" of the
|
|
||||||
earlier work or a work "based on" the earlier work.
|
|
||||||
|
|
||||||
A "covered work" means either the unmodified Program or a work based
|
|
||||||
on the Program.
|
|
||||||
|
|
||||||
To "propagate" a work means to do anything with it that, without
|
|
||||||
permission, would make you directly or secondarily liable for
|
|
||||||
infringement under applicable copyright law, except executing it on a
|
|
||||||
computer or modifying a private copy. Propagation includes copying,
|
|
||||||
distribution (with or without modification), making available to the
|
|
||||||
public, and in some countries other activities as well.
|
|
||||||
|
|
||||||
To "convey" a work means any kind of propagation that enables other
|
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
|
||||||
|
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
|
||||||
to the extent that it includes a convenient and prominently visible
|
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
|
||||||
tells the user that there is no warranty for the work (except to the
|
|
||||||
extent that warranties are provided), that licensees may convey the
|
|
||||||
work under this License, and how to view a copy of this License. If
|
|
||||||
the interface presents a list of user commands or options, such as a
|
|
||||||
menu, a prominent item in the list meets this criterion.
|
|
||||||
|
|
||||||
1. Source Code.
|
|
||||||
|
|
||||||
The "source code" for a work means the preferred form of the work
|
|
||||||
for making modifications to it. "Object code" means any non-source
|
|
||||||
form of a work.
|
|
||||||
|
|
||||||
A "Standard Interface" means an interface that either is an official
|
|
||||||
standard defined by a recognized standards body, or, in the case of
|
|
||||||
interfaces specified for a particular programming language, one that
|
|
||||||
is widely used among developers working in that language.
|
|
||||||
|
|
||||||
The "System Libraries" of an executable work include anything, other
|
|
||||||
than the work as a whole, that (a) is included in the normal form of
|
|
||||||
packaging a Major Component, but which is not part of that Major
|
|
||||||
Component, and (b) serves only to enable use of the work with that
|
|
||||||
Major Component, or to implement a Standard Interface for which an
|
|
||||||
implementation is available to the public in source code form. A
|
|
||||||
"Major Component", in this context, means a major essential component
|
|
||||||
(kernel, window system, and so on) of the specific operating system
|
|
||||||
(if any) on which the executable work runs, or a compiler used to
|
|
||||||
produce the work, or an object code interpreter used to run it.
|
|
||||||
|
|
||||||
The "Corresponding Source" for a work in object code form means all
|
|
||||||
the source code needed to generate, install, and (for an executable
|
|
||||||
work) run the object code and to modify the work, including scripts to
|
|
||||||
control those activities. However, it does not include the work's
|
|
||||||
System Libraries, or general-purpose tools or generally available free
|
|
||||||
programs which are used unmodified in performing those activities but
|
|
||||||
which are not part of the work. For example, Corresponding Source
|
|
||||||
includes interface definition files associated with source files for
|
|
||||||
the work, and the source code for shared libraries and dynamically
|
|
||||||
linked subprograms that the work is specifically designed to require,
|
|
||||||
such as by intimate data communication or control flow between those
|
|
||||||
subprograms and other parts of the work.
|
|
||||||
|
|
||||||
The Corresponding Source need not include anything that users
|
|
||||||
can regenerate automatically from other parts of the Corresponding
|
|
||||||
Source.
|
|
||||||
|
|
||||||
The Corresponding Source for a work in source code form is that
|
|
||||||
same work.
|
|
||||||
|
|
||||||
2. Basic Permissions.
|
|
||||||
|
|
||||||
All rights granted under this License are granted for the term of
|
|
||||||
copyright on the Program, and are irrevocable provided the stated
|
|
||||||
conditions are met. This License explicitly affirms your unlimited
|
|
||||||
permission to run the unmodified Program. The output from running a
|
|
||||||
covered work is covered by this License only if the output, given its
|
|
||||||
content, constitutes a covered work. This License acknowledges your
|
|
||||||
rights of fair use or other equivalent, as provided by copyright law.
|
|
||||||
|
|
||||||
You may make, run and propagate covered works that you do not
|
|
||||||
convey, without conditions so long as your license otherwise remains
|
|
||||||
in force. You may convey covered works to others for the sole purpose
|
|
||||||
of having them make modifications exclusively for you, or provide you
|
|
||||||
with facilities for running those works, provided that you comply with
|
|
||||||
the terms of this License in conveying all material for which you do
|
|
||||||
not control copyright. Those thus making or running the covered works
|
|
||||||
for you must do so exclusively on your behalf, under your direction
|
|
||||||
and control, on terms that prohibit them from making any copies of
|
|
||||||
your copyrighted material outside their relationship with you.
|
|
||||||
|
|
||||||
Conveying under any other circumstances is permitted solely under
|
|
||||||
the conditions stated below. Sublicensing is not allowed; section 10
|
|
||||||
makes it unnecessary.
|
|
||||||
|
|
||||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
|
||||||
|
|
||||||
No covered work shall be deemed part of an effective technological
|
|
||||||
measure under any applicable law fulfilling obligations under article
|
|
||||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
|
||||||
similar laws prohibiting or restricting circumvention of such
|
|
||||||
measures.
|
|
||||||
|
|
||||||
When you convey a covered work, you waive any legal power to forbid
|
|
||||||
circumvention of technological measures to the extent such circumvention
|
|
||||||
is effected by exercising rights under this License with respect to
|
|
||||||
the covered work, and you disclaim any intention to limit operation or
|
|
||||||
modification of the work as a means of enforcing, against the work's
|
|
||||||
users, your or third parties' legal rights to forbid circumvention of
|
|
||||||
technological measures.
|
|
||||||
|
|
||||||
4. Conveying Verbatim Copies.
|
|
||||||
|
|
||||||
You may convey verbatim copies of the Program's source code as you
|
|
||||||
receive it, in any medium, provided that you conspicuously and
|
|
||||||
appropriately publish on each copy an appropriate copyright notice;
|
|
||||||
keep intact all notices stating that this License and any
|
|
||||||
non-permissive terms added in accord with section 7 apply to the code;
|
|
||||||
keep intact all notices of the absence of any warranty; and give all
|
|
||||||
recipients a copy of this License along with the Program.
|
|
||||||
|
|
||||||
You may charge any price or no price for each copy that you convey,
|
|
||||||
and you may offer support or warranty protection for a fee.
|
|
||||||
|
|
||||||
5. Conveying Modified Source Versions.
|
|
||||||
|
|
||||||
You may convey a work based on the Program, or the modifications to
|
|
||||||
produce it from the Program, in the form of source code under the
|
|
||||||
terms of section 4, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The work must carry prominent notices stating that you modified
|
|
||||||
it, and giving a relevant date.
|
|
||||||
|
|
||||||
b) The work must carry prominent notices stating that it is
|
|
||||||
released under this License and any conditions added under section
|
|
||||||
7. This requirement modifies the requirement in section 4 to
|
|
||||||
"keep intact all notices".
|
|
||||||
|
|
||||||
c) You must license the entire work, as a whole, under this
|
|
||||||
License to anyone who comes into possession of a copy. This
|
|
||||||
License will therefore apply, along with any applicable section 7
|
|
||||||
additional terms, to the whole of the work, and all its parts,
|
|
||||||
regardless of how they are packaged. This License gives no
|
|
||||||
permission to license the work in any other way, but it does not
|
|
||||||
invalidate such permission if you have separately received it.
|
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
|
||||||
work need not make them do so.
|
|
||||||
|
|
||||||
A compilation of a covered work with other separate and independent
|
|
||||||
works, which are not by their nature extensions of the covered work,
|
|
||||||
and which are not combined with it such as to form a larger program,
|
|
||||||
in or on a volume of a storage or distribution medium, is called an
|
|
||||||
"aggregate" if the compilation and its resulting copyright are not
|
|
||||||
used to limit the access or legal rights of the compilation's users
|
|
||||||
beyond what the individual works permit. Inclusion of a covered work
|
|
||||||
in an aggregate does not cause this License to apply to the other
|
|
||||||
parts of the aggregate.
|
|
||||||
|
|
||||||
6. Conveying Non-Source Forms.
|
|
||||||
|
|
||||||
You may convey a covered work in object code form under the terms
|
|
||||||
of sections 4 and 5, provided that you also convey the
|
|
||||||
machine-readable Corresponding Source under the terms of this License,
|
|
||||||
in one of these ways:
|
|
||||||
|
|
||||||
a) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by the
|
|
||||||
Corresponding Source fixed on a durable physical medium
|
|
||||||
customarily used for software interchange.
|
|
||||||
|
|
||||||
b) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by a
|
|
||||||
written offer, valid for at least three years and valid for as
|
|
||||||
long as you offer spare parts or customer support for that product
|
|
||||||
model, to give anyone who possesses the object code either (1) a
|
|
||||||
copy of the Corresponding Source for all the software in the
|
|
||||||
product that is covered by this License, on a durable physical
|
|
||||||
medium customarily used for software interchange, for a price no
|
|
||||||
more than your reasonable cost of physically performing this
|
|
||||||
conveying of source, or (2) access to copy the
|
|
||||||
Corresponding Source from a network server at no charge.
|
|
||||||
|
|
||||||
c) Convey individual copies of the object code with a copy of the
|
|
||||||
written offer to provide the Corresponding Source. This
|
|
||||||
alternative is allowed only occasionally and noncommercially, and
|
|
||||||
only if you received the object code with such an offer, in accord
|
|
||||||
with subsection 6b.
|
|
||||||
|
|
||||||
d) Convey the object code by offering access from a designated
|
|
||||||
place (gratis or for a charge), and offer equivalent access to the
|
|
||||||
Corresponding Source in the same way through the same place at no
|
|
||||||
further charge. You need not require recipients to copy the
|
|
||||||
Corresponding Source along with the object code. If the place to
|
|
||||||
copy the object code is a network server, the Corresponding Source
|
|
||||||
may be on a different server (operated by you or a third party)
|
|
||||||
that supports equivalent copying facilities, provided you maintain
|
|
||||||
clear directions next to the object code saying where to find the
|
|
||||||
Corresponding Source. Regardless of what server hosts the
|
|
||||||
Corresponding Source, you remain obligated to ensure that it is
|
|
||||||
available for as long as needed to satisfy these requirements.
|
|
||||||
|
|
||||||
e) Convey the object code using peer-to-peer transmission, provided
|
|
||||||
you inform other peers where the object code and Corresponding
|
|
||||||
Source of the work are being offered to the general public at no
|
|
||||||
charge under subsection 6d.
|
|
||||||
|
|
||||||
A separable portion of the object code, whose source code is excluded
|
|
||||||
from the Corresponding Source as a System Library, need not be
|
|
||||||
included in conveying the object code work.
|
|
||||||
|
|
||||||
A "User Product" is either (1) a "consumer product", which means any
|
|
||||||
tangible personal property which is normally used for personal, family,
|
|
||||||
or household purposes, or (2) anything designed or sold for incorporation
|
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
|
||||||
product received by a particular user, "normally used" refers to a
|
|
||||||
typical or common use of that class of product, regardless of the status
|
|
||||||
of the particular user or of the way in which the particular user
|
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
|
||||||
is a consumer product regardless of whether the product has substantial
|
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
|
||||||
the only significant mode of use of the product.
|
|
||||||
|
|
||||||
"Installation Information" for a User Product means any methods,
|
|
||||||
procedures, authorization keys, or other information required to install
|
|
||||||
and execute modified versions of a covered work in that User Product from
|
|
||||||
a modified version of its Corresponding Source. The information must
|
|
||||||
suffice to ensure that the continued functioning of the modified object
|
|
||||||
code is in no case prevented or interfered with solely because
|
|
||||||
modification has been made.
|
|
||||||
|
|
||||||
If you convey an object code work under this section in, or with, or
|
|
||||||
specifically for use in, a User Product, and the conveying occurs as
|
|
||||||
part of a transaction in which the right of possession and use of the
|
|
||||||
User Product is transferred to the recipient in perpetuity or for a
|
|
||||||
fixed term (regardless of how the transaction is characterized), the
|
|
||||||
Corresponding Source conveyed under this section must be accompanied
|
|
||||||
by the Installation Information. But this requirement does not apply
|
|
||||||
if neither you nor any third party retains the ability to install
|
|
||||||
modified object code on the User Product (for example, the work has
|
|
||||||
been installed in ROM).
|
|
||||||
|
|
||||||
The requirement to provide Installation Information does not include a
|
|
||||||
requirement to continue to provide support service, warranty, or updates
|
|
||||||
for a work that has been modified or installed by the recipient, or for
|
|
||||||
the User Product in which it has been modified or installed. Access to a
|
|
||||||
network may be denied when the modification itself materially and
|
|
||||||
adversely affects the operation of the network or violates the rules and
|
|
||||||
protocols for communication across the network.
|
|
||||||
|
|
||||||
Corresponding Source conveyed, and Installation Information provided,
|
|
||||||
in accord with this section must be in a format that is publicly
|
|
||||||
documented (and with an implementation available to the public in
|
|
||||||
source code form), and must require no special password or key for
|
|
||||||
unpacking, reading or copying.
|
|
||||||
|
|
||||||
7. Additional Terms.
|
|
||||||
|
|
||||||
"Additional permissions" are terms that supplement the terms of this
|
|
||||||
License by making exceptions from one or more of its conditions.
|
|
||||||
Additional permissions that are applicable to the entire Program shall
|
|
||||||
be treated as though they were included in this License, to the extent
|
|
||||||
that they are valid under applicable law. If additional permissions
|
|
||||||
apply only to part of the Program, that part may be used separately
|
|
||||||
under those permissions, but the entire Program remains governed by
|
|
||||||
this License without regard to the additional permissions.
|
|
||||||
|
|
||||||
When you convey a copy of a covered work, you may at your option
|
|
||||||
remove any additional permissions from that copy, or from any part of
|
|
||||||
it. (Additional permissions may be written to require their own
|
|
||||||
removal in certain cases when you modify the work.) You may place
|
|
||||||
additional permissions on material, added by you to a covered work,
|
|
||||||
for which you have or can give appropriate copyright permission.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, for material you
|
|
||||||
add to a covered work, you may (if authorized by the copyright holders of
|
|
||||||
that material) supplement the terms of this License with terms:
|
|
||||||
|
|
||||||
a) Disclaiming warranty or limiting liability differently from the
|
|
||||||
terms of sections 15 and 16 of this License; or
|
|
||||||
|
|
||||||
b) Requiring preservation of specified reasonable legal notices or
|
|
||||||
author attributions in that material or in the Appropriate Legal
|
|
||||||
Notices displayed by works containing it; or
|
|
||||||
|
|
||||||
c) Prohibiting misrepresentation of the origin of that material, or
|
|
||||||
requiring that modified versions of such material be marked in
|
|
||||||
reasonable ways as different from the original version; or
|
|
||||||
|
|
||||||
d) Limiting the use for publicity purposes of names of licensors or
|
|
||||||
authors of the material; or
|
|
||||||
|
|
||||||
e) Declining to grant rights under trademark law for use of some
|
|
||||||
trade names, trademarks, or service marks; or
|
|
||||||
|
|
||||||
f) Requiring indemnification of licensors and authors of that
|
|
||||||
material by anyone who conveys the material (or modified versions of
|
|
||||||
it) with contractual assumptions of liability to the recipient, for
|
|
||||||
any liability that these contractual assumptions directly impose on
|
|
||||||
those licensors and authors.
|
|
||||||
|
|
||||||
All other non-permissive additional terms are considered "further
|
|
||||||
restrictions" within the meaning of section 10. If the Program as you
|
|
||||||
received it, or any part of it, contains a notice stating that it is
|
|
||||||
governed by this License along with a term that is a further
|
|
||||||
restriction, you may remove that term. If a license document contains
|
|
||||||
a further restriction but permits relicensing or conveying under this
|
|
||||||
License, you may add to a covered work material governed by the terms
|
|
||||||
of that license document, provided that the further restriction does
|
|
||||||
not survive such relicensing or conveying.
|
|
||||||
|
|
||||||
If you add terms to a covered work in accord with this section, you
|
|
||||||
must place, in the relevant source files, a statement of the
|
|
||||||
additional terms that apply to those files, or a notice indicating
|
|
||||||
where to find the applicable terms.
|
|
||||||
|
|
||||||
Additional terms, permissive or non-permissive, may be stated in the
|
|
||||||
form of a separately written license, or stated as exceptions;
|
|
||||||
the above requirements apply either way.
|
|
||||||
|
|
||||||
8. Termination.
|
|
||||||
|
|
||||||
You may not propagate or modify a covered work except as expressly
|
|
||||||
provided under this License. Any attempt otherwise to propagate or
|
|
||||||
modify it is void, and will automatically terminate your rights under
|
|
||||||
this License (including any patent licenses granted under the third
|
|
||||||
paragraph of section 11).
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly and
|
|
||||||
finally terminates your license, and (b) permanently, if the copyright
|
|
||||||
holder fails to notify you of the violation by some reasonable means
|
|
||||||
prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you have
|
|
||||||
received notice of violation of this License (for any work) from that
|
|
||||||
copyright holder, and you cure the violation prior to 30 days after
|
|
||||||
your receipt of the notice.
|
|
||||||
|
|
||||||
Termination of your rights under this section does not terminate the
|
|
||||||
licenses of parties who have received copies or rights from you under
|
|
||||||
this License. If your rights have been terminated and not permanently
|
|
||||||
reinstated, you do not qualify to receive new licenses for the same
|
|
||||||
material under section 10.
|
|
||||||
|
|
||||||
9. Acceptance Not Required for Having Copies.
|
|
||||||
|
|
||||||
You are not required to accept this License in order to receive or
|
|
||||||
run a copy of the Program. Ancillary propagation of a covered work
|
|
||||||
occurring solely as a consequence of using peer-to-peer transmission
|
|
||||||
to receive a copy likewise does not require acceptance. However,
|
|
||||||
nothing other than this License grants you permission to propagate or
|
|
||||||
modify any covered work. These actions infringe copyright if you do
|
|
||||||
not accept this License. Therefore, by modifying or propagating a
|
|
||||||
covered work, you indicate your acceptance of this License to do so.
|
|
||||||
|
|
||||||
10. Automatic Licensing of Downstream Recipients.
|
|
||||||
|
|
||||||
Each time you convey a covered work, the recipient automatically
|
|
||||||
receives a license from the original licensors, to run, modify and
|
|
||||||
propagate that work, subject to this License. You are not responsible
|
|
||||||
for enforcing compliance by third parties with this License.
|
|
||||||
|
|
||||||
An "entity transaction" is a transaction transferring control of an
|
|
||||||
organization, or substantially all assets of one, or subdividing an
|
|
||||||
organization, or merging organizations. If propagation of a covered
|
|
||||||
work results from an entity transaction, each party to that
|
|
||||||
transaction who receives a copy of the work also receives whatever
|
|
||||||
licenses to the work the party's predecessor in interest had or could
|
|
||||||
give under the previous paragraph, plus a right to possession of the
|
|
||||||
Corresponding Source of the work from the predecessor in interest, if
|
|
||||||
the predecessor has it or can get it with reasonable efforts.
|
|
||||||
|
|
||||||
You may not impose any further restrictions on the exercise of the
|
|
||||||
rights granted or affirmed under this License. For example, you may
|
|
||||||
not impose a license fee, royalty, or other charge for exercise of
|
|
||||||
rights granted under this License, and you may not initiate litigation
|
|
||||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
|
||||||
any patent claim is infringed by making, using, selling, offering for
|
|
||||||
sale, or importing the Program or any portion of it.
|
|
||||||
|
|
||||||
11. Patents.
|
|
||||||
|
|
||||||
A "contributor" is a copyright holder who authorizes use under this
|
|
||||||
License of the Program or a work on which the Program is based. The
|
|
||||||
work thus licensed is called the contributor's "contributor version".
|
|
||||||
|
|
||||||
A contributor's "essential patent claims" are all patent claims
|
|
||||||
owned or controlled by the contributor, whether already acquired or
|
|
||||||
hereafter acquired, that would be infringed by some manner, permitted
|
|
||||||
by this License, of making, using, or selling its contributor version,
|
|
||||||
but do not include claims that would be infringed only as a
|
|
||||||
consequence of further modification of the contributor version. For
|
|
||||||
purposes of this definition, "control" includes the right to grant
|
|
||||||
patent sublicenses in a manner consistent with the requirements of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
|
||||||
patent license under the contributor's essential patent claims, to
|
|
||||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
|
||||||
propagate the contents of its contributor version.
|
|
||||||
|
|
||||||
In the following three paragraphs, a "patent license" is any express
|
|
||||||
agreement or commitment, however denominated, not to enforce a patent
|
|
||||||
(such as an express permission to practice a patent or covenant not to
|
|
||||||
sue for patent infringement). To "grant" such a patent license to a
|
|
||||||
party means to make such an agreement or commitment not to enforce a
|
|
||||||
patent against the party.
|
|
||||||
|
|
||||||
If you convey a covered work, knowingly relying on a patent license,
|
|
||||||
and the Corresponding Source of the work is not available for anyone
|
|
||||||
to copy, free of charge and under the terms of this License, through a
|
|
||||||
publicly available network server or other readily accessible means,
|
|
||||||
then you must either (1) cause the Corresponding Source to be so
|
|
||||||
available, or (2) arrange to deprive yourself of the benefit of the
|
|
||||||
patent license for this particular work, or (3) arrange, in a manner
|
|
||||||
consistent with the requirements of this License, to extend the patent
|
|
||||||
license to downstream recipients. "Knowingly relying" means you have
|
|
||||||
actual knowledge that, but for the patent license, your conveying the
|
|
||||||
covered work in a country, or your recipient's use of the covered work
|
|
||||||
in a country, would infringe one or more identifiable patents in that
|
|
||||||
country that you have reason to believe are valid.
|
|
||||||
|
|
||||||
If, pursuant to or in connection with a single transaction or
|
|
||||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
|
||||||
covered work, and grant a patent license to some of the parties
|
|
||||||
receiving the covered work authorizing them to use, propagate, modify
|
|
||||||
or convey a specific copy of the covered work, then the patent license
|
|
||||||
you grant is automatically extended to all recipients of the covered
|
|
||||||
work and works based on it.
|
|
||||||
|
|
||||||
A patent license is "discriminatory" if it does not include within
|
|
||||||
the scope of its coverage, prohibits the exercise of, or is
|
|
||||||
conditioned on the non-exercise of one or more of the rights that are
|
|
||||||
specifically granted under this License. You may not convey a covered
|
|
||||||
work if you are a party to an arrangement with a third party that is
|
|
||||||
in the business of distributing software, under which you make payment
|
|
||||||
to the third party based on the extent of your activity of conveying
|
|
||||||
the work, and under which the third party grants, to any of the
|
|
||||||
parties who would receive the covered work from you, a discriminatory
|
|
||||||
patent license (a) in connection with copies of the covered work
|
|
||||||
conveyed by you (or copies made from those copies), or (b) primarily
|
|
||||||
for and in connection with specific products or compilations that
|
|
||||||
contain the covered work, unless you entered into that arrangement,
|
|
||||||
or that patent license was granted, prior to 28 March 2007.
|
|
||||||
|
|
||||||
Nothing in this License shall be construed as excluding or limiting
|
|
||||||
any implied license or other defenses to infringement that may
|
|
||||||
otherwise be available to you under applicable patent law.
|
|
||||||
|
|
||||||
12. No Surrender of Others' Freedom.
|
|
||||||
|
|
||||||
If conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot convey a
|
|
||||||
covered work so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you may
|
|
||||||
not convey it at all. For example, if you agree to terms that obligate you
|
|
||||||
to collect a royalty for further conveying from those to whom you convey
|
|
||||||
the Program, the only way you could satisfy both those terms and this
|
|
||||||
License would be to refrain entirely from conveying the Program.
|
|
||||||
|
|
||||||
13. Use with the GNU Affero General Public License.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
|
||||||
permission to link or combine any covered work with a work licensed
|
|
||||||
under version 3 of the GNU Affero General Public License into a single
|
|
||||||
combined work, and to convey the resulting work. The terms of this
|
|
||||||
License will continue to apply to the part which is the covered work,
|
|
||||||
but the special requirements of the GNU Affero General Public License,
|
|
||||||
section 13, concerning interaction through a network will apply to the
|
|
||||||
combination as such.
|
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the GNU General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Program specifies that a certain numbered version of the GNU General
|
|
||||||
Public License "or any later version" applies to it, you have the
|
|
||||||
option of following the terms and conditions either of that numbered
|
|
||||||
version or of any later version published by the Free Software
|
|
||||||
Foundation. If the Program does not specify a version number of the
|
|
||||||
GNU General Public License, you may choose any version ever published
|
|
||||||
by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
|
||||||
versions of the GNU General Public License can be used, that proxy's
|
|
||||||
public statement of acceptance of a version permanently authorizes you
|
|
||||||
to choose that version for the Program.
|
|
||||||
|
|
||||||
Later license versions may give you additional or different
|
|
||||||
permissions. However, no additional obligations are imposed on any
|
|
||||||
author or copyright holder as a result of your choosing to follow a
|
|
||||||
later version.
|
|
||||||
|
|
||||||
15. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
|
||||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
|
||||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
|
||||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
|
||||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. Limitation of Liability.
|
|
||||||
|
|
||||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
|
||||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
|
||||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
||||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
|
||||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGES.
|
|
||||||
|
|
||||||
17. Interpretation of Sections 15 and 16.
|
|
||||||
|
|
||||||
If the disclaimer of warranty and limitation of liability provided
|
|
||||||
above cannot be given local legal effect according to their terms,
|
|
||||||
reviewing courts shall apply local law that most closely approximates
|
|
||||||
an absolute waiver of all civil liability in connection with the
|
|
||||||
Program, unless a warranty or assumption of liability accompanies a
|
|
||||||
copy of the Program in return for a fee.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
state the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
|
||||||
notice like this when it starts in an interactive mode:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, your program's commands
|
|
||||||
might be different; for a GUI interface, you would use an "about box".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
|
||||||
may consider it more useful to permit linking proprietary applications with
|
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License. But first, please read
|
|
||||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
||||||
@@ -1,229 +0,0 @@
|
|||||||
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
|
||||||
|
|
||||||
## v1.12
|
|
||||||
|
|
||||||
*2018-11-22*
|
|
||||||
|
|
||||||
### Overall changes
|
|
||||||
|
|
||||||
* Updated to work with QMK master.
|
|
||||||
|
|
||||||
### Miscellaneous
|
|
||||||
|
|
||||||
* The `😂` symbol can be entered with UCIS.
|
|
||||||
* `LEAD r` now inputs `Right Alt`.
|
|
||||||
|
|
||||||
## v1.11
|
|
||||||
|
|
||||||
*2017-10-01*
|
|
||||||
|
|
||||||
### Overall changes
|
|
||||||
|
|
||||||
* Updated to work with QMK master.
|
|
||||||
* The `$` and `^` symbols on the number row were swapped on both the base and the ADORE layers.
|
|
||||||
* The bracket tap-dance keys can now be used to input Japanese brackets, `「` and `」` with a third tap.
|
|
||||||
* The second column of the top row on the right side will act as a "Social" application selector on the `AppSel` layer.
|
|
||||||
* The third key on the same column will select a password manager.
|
|
||||||
* The `GUI` key will now launch `rofi` when triple-tapped.
|
|
||||||
|
|
||||||
### Miscellaneous
|
|
||||||
|
|
||||||
* The `👶` symbol can be entered with UCIS.
|
|
||||||
* The `👪` symbol can be entered with UCIS.
|
|
||||||
|
|
||||||
### Tools
|
|
||||||
|
|
||||||
* `tools/hid-commands` can now find the `Mstdn`, not just `Slack`, as the "Slack"/chat app.
|
|
||||||
* `tools/hid-commands` can now find the Plex web app as a music/media player.
|
|
||||||
* `tools/hid-commands` now understands the "Social" application selector. It raises the `Mstdn` and `Tweetdeck` windows, but keeps focus on the previous window.
|
|
||||||
* `tools/hid-commands` now understands the "Social2" application selector, which raises `Signal` and `Viber`, but keeps focus on the previous window.
|
|
||||||
* `tools/hid-commands` is now able to select a password manager (KeePass*).
|
|
||||||
* `tools/hid-commands` can now run `rofi` when receiving an `appsel_helper` command (triggered by a triple-tapped `GUI` key).
|
|
||||||
|
|
||||||
## v1.10
|
|
||||||
|
|
||||||
*2016-12-28*
|
|
||||||
|
|
||||||
### Miscellaneous
|
|
||||||
|
|
||||||
* `µ` can now be entered with UCIS.
|
|
||||||
* `™` can now be entered with UCIS.
|
|
||||||
|
|
||||||
### Tools
|
|
||||||
|
|
||||||
* `tools/hid-commands` can now find Banshee, and prefers it over Kodi.
|
|
||||||
* `tools/hid-commands` can now find Chrome too, not juts Chromium.
|
|
||||||
|
|
||||||
## v1.9
|
|
||||||
|
|
||||||
*2016-10-16*
|
|
||||||
|
|
||||||
### Overall changes
|
|
||||||
|
|
||||||
* `F12` was replaced by an `Fx` key, that activate the **Media** layer as a one-shot layer, and also `Alt` as a one-shot modifier.
|
|
||||||
|
|
||||||
### Base layer changes
|
|
||||||
|
|
||||||
* The `Media Stop` key is now a tap-dance key, and resets the device for programming on the fourth tap.
|
|
||||||
|
|
||||||
### Miscellaneous
|
|
||||||
|
|
||||||
* `π` can now be entered with UCIS.
|
|
||||||
* `🐁` can now be entered with UCIS.
|
|
||||||
|
|
||||||
### Tools
|
|
||||||
|
|
||||||
* The `tools/layer-notify` tool was removed, it was an example, which I don't use.
|
|
||||||
|
|
||||||
#### `tools/hid-commands`
|
|
||||||
|
|
||||||
* Now looks at the `DISABLE_APPSEL_START` environment value, and does not display an AppSel notification if it is non-empty.
|
|
||||||
* Will attempt to re-program the keyboard when receiving a `reflash` command.
|
|
||||||
* No longer tries to select Emacs 24 on `APPSEL_EMACS`, rather, it goes for any Emacs.
|
|
||||||
* The `APPSEL_MUSIC` command now includes Kodi in the list too, as the last choice.
|
|
||||||
|
|
||||||
## v1.8
|
|
||||||
|
|
||||||
*2016-10-03*
|
|
||||||
|
|
||||||
### ADORE
|
|
||||||
|
|
||||||
* Major rearrangements were made, to reduce pinky use, and to balance out the hand usage.
|
|
||||||
|
|
||||||
### Tools
|
|
||||||
|
|
||||||
* The `hid-commands` tool will now display a notification when the **AppSel** layer is triggered.
|
|
||||||
* The `log-to-heatmap.py` tool now treats the innermost keys on the bottom row as thumb keys, as far as statistics are concerned.
|
|
||||||
|
|
||||||
### Miscellaneous
|
|
||||||
|
|
||||||
* Fixed the **Steno** toggle key.
|
|
||||||
|
|
||||||
## v1.7
|
|
||||||
|
|
||||||
*2016-09-18*
|
|
||||||
|
|
||||||
### Overall changes
|
|
||||||
|
|
||||||
* The number row has been completely rearranged on both the **Base** and the **ADORE** layers.
|
|
||||||
* The number/function key behavior was changed: function keys are now on the **Media**.
|
|
||||||
* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the **Base** and **ADORE** layers.
|
|
||||||
* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped.
|
|
||||||
* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it.
|
|
||||||
|
|
||||||
### ADORE
|
|
||||||
|
|
||||||
* `Y` and `X` have been swapped again.
|
|
||||||
|
|
||||||
### Media/Navigation layer
|
|
||||||
|
|
||||||
* The function keys are now on this layer.
|
|
||||||
* Mouse keys have been removed.
|
|
||||||
* Media start/stop/prev/next have been removed.
|
|
||||||
* `Print screen` has been removed.
|
|
||||||
* There is only one screen lock key now.
|
|
||||||
|
|
||||||
### Heatmap
|
|
||||||
|
|
||||||
* Fixed a few issues in the finger-stats calculation.
|
|
||||||
* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool.
|
|
||||||
* The heatmap tool will now colorize the stats by default.
|
|
||||||
* The periodic stats are now printed in a more compact format.
|
|
||||||
|
|
||||||
### Tools
|
|
||||||
|
|
||||||
* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes.
|
|
||||||
* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator.
|
|
||||||
* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side.
|
|
||||||
|
|
||||||
## v1.6
|
|
||||||
|
|
||||||
*2016-08-24*
|
|
||||||
|
|
||||||
### Base layer changes
|
|
||||||
|
|
||||||
* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`.
|
|
||||||
* The `:;` and `-_` keys are now available on the base layer, on their **ADORE** location, too, just below `[{(`/`]})`.
|
|
||||||
* The `Apps` key has been replaced by `F12`.
|
|
||||||
* The `-`/`_` is no longer a tap-dance key.
|
|
||||||
|
|
||||||
### ADORE layer changes
|
|
||||||
|
|
||||||
* Adjustments were made to the **ADORE** layer, to separate some inconvenient combinations.
|
|
||||||
|
|
||||||
### Miscellaneous changes
|
|
||||||
|
|
||||||
* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one.
|
|
||||||
* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off.
|
|
||||||
* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now.
|
|
||||||
|
|
||||||
### Heatmap
|
|
||||||
|
|
||||||
* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off.
|
|
||||||
* The heatmap generator received a lot of updates.
|
|
||||||
|
|
||||||
## v1.5
|
|
||||||
|
|
||||||
*2016-08-12*
|
|
||||||
|
|
||||||
* The **1HAND** layer has been removed.
|
|
||||||
* A `Delete` key is now available on the right thumb cluster.
|
|
||||||
* The **ADORE** layer received a major update, see the layout image above.
|
|
||||||
* It is now possible to enable automatic logging for the **ADORE** layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default.
|
|
||||||
* The `~` key and the `Media Next/Prev` key have been swapped on the **Base** layer.
|
|
||||||
* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
|
|
||||||
* There is some experimental support for entering Unicode symbols.
|
|
||||||
|
|
||||||
## v1.4
|
|
||||||
|
|
||||||
*2016-07-29*
|
|
||||||
|
|
||||||
* When toggling the key logging on or off, the LEDs will do a little dance.
|
|
||||||
* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
|
|
||||||
* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
|
|
||||||
* The `-`/`_` key was turned into a tap-dance key too.
|
|
||||||
* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.
|
|
||||||
|
|
||||||
## v1.3
|
|
||||||
|
|
||||||
*2016-07-06*
|
|
||||||
|
|
||||||
* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a *heatmap* out of the logs.
|
|
||||||
* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the **Base** layer for an image that shows where arrows are.
|
|
||||||
* The **experimental** layer has been redone, and is now called **ADORE**, and as such, can be enabled by `LEAD a` now.
|
|
||||||
* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot.
|
|
||||||
|
|
||||||
## v1.2
|
|
||||||
|
|
||||||
*2016-06-22*
|
|
||||||
|
|
||||||
* The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with certain operating systems.
|
|
||||||
* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted.
|
|
||||||
* The `=` and `\` keys were swapped, `=` moved to the home row, on both the **Base** and the **experimental** layers.
|
|
||||||
* The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access.
|
|
||||||
* The **Emacs** layer is gone, replaced by a simplified **navigation and media** layer.
|
|
||||||
* `LEAD v` types the firmware version, and the keymap version.
|
|
||||||
* On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped.
|
|
||||||
* The **Steno** layer gained a few more `#` and `*` keys, to make it easier on my fingers.
|
|
||||||
|
|
||||||
## v1.1
|
|
||||||
|
|
||||||
*2016-06-14*
|
|
||||||
|
|
||||||
* The keyboard starts in NKRO mode, bootmagic and other things are disabled.
|
|
||||||
* A **Steno** layer was added, to be used with Plover.
|
|
||||||
* An **experimental** layer was added, something halfway between Dvorak and Capewell-Dvorak. A work in progress.
|
|
||||||
* `LEAD y` types `\o/`.
|
|
||||||
* Some keys on the **Base** layer have been moved around:
|
|
||||||
- `?` moved to the left pinky, left of `Q`.
|
|
||||||
- `=` shifted one row down, but `F11` stayed where it was.
|
|
||||||
- `-` on the left half was replaced by `Tab`.
|
|
||||||
- `Tab`'s original position is taken by a `Media Next`/`Media Prev` key.
|
|
||||||
- `:` now inputs `;` when shifted.
|
|
||||||
* `ESC` cancels the **Hungarian** layer too, not just modifiers.
|
|
||||||
|
|
||||||
## v1.0
|
|
||||||
|
|
||||||
*2016-05-26*
|
|
||||||
|
|
||||||
Initial version.
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#ifndef CONFIG_ALGERNON_H
|
|
||||||
#define CONFIG_ALGERNON_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#undef MOUSEKEY_TIME_TO_MAX
|
|
||||||
#undef MOUSEKEY_MAX_SPEED
|
|
||||||
|
|
||||||
#define MOUSEKEY_TIME_TO_MAX 1
|
|
||||||
#define MOUSEKEY_MAX_SPEED 2
|
|
||||||
|
|
||||||
#undef MOUSEKEY_DELAY
|
|
||||||
#define MOUSEKEY_DELAY 0
|
|
||||||
|
|
||||||
#undef MOUSEKEY_WHEEL_DELAY
|
|
||||||
#define MOUSEKEY_WHEEL_DELAY 0
|
|
||||||
|
|
||||||
#define ONESHOT_TAP_TOGGLE 2
|
|
||||||
#define ONESHOT_TIMEOUT 3000
|
|
||||||
|
|
||||||
#undef LOCKING_SUPPORT_ENABLE
|
|
||||||
#undef LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
#undef LEADER_TIMEOUT
|
|
||||||
#define LEADER_TIMEOUT 1000
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 103 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 104 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB |
File diff suppressed because it is too large
Load Diff
@@ -1,152 +0,0 @@
|
|||||||
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
|
||||||
|
|
||||||
algernon's layout
|
|
||||||
=======================
|
|
||||||
|
|
||||||
This is the layout I used to use on my [ErgoDox EZ][ez], while I was using [QMK][qmk]. I no longer do so, and this repository is obsolete, and not updated anymore. My current firmware is based on [Kaleidoscope][kaleidoscope], and is located [elsewhere][ergodox-sketch]. I'm keeping the repo around for historical and educational purposes.
|
|
||||||
|
|
||||||
[kaleidoscope]: https://github.com/keyboardio/Kaleidoscope
|
|
||||||
[ergodox-sketch]: https://git.madhouse-project.org/algernon/ErgoDox-sketch
|
|
||||||
|
|
||||||
Nevertheless, this is an unconventional layout for the [ErgoDox EZ][ez]. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox].
|
|
||||||
|
|
||||||
[ez]: https://ergodox-ez.com/
|
|
||||||
[blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/
|
|
||||||
|
|
||||||
Some of the things in the layout only work when one uses [Spacemacs][spacemacs] and [GNOME][gnome] under Linux. Your mileage may vary.
|
|
||||||
|
|
||||||
[spacemacs]: http://spacemacs.org/
|
|
||||||
[gnome]: https://www.gnome.org/
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
* [Layouts](#layouts)
|
|
||||||
- [Base layer](#base-layer)
|
|
||||||
- [ADORE layer](#adore-layer)
|
|
||||||
- [Steno layer](#steno-layer)
|
|
||||||
- [LED states](#led-states)
|
|
||||||
* [Tools](#tools)
|
|
||||||
- [Heatmap](#heatmap)
|
|
||||||
- [Layer notification](#layer-notification)
|
|
||||||
* [Special features](#special-features)
|
|
||||||
- [Unicode Symbol Input](#unicode-symbol-input)
|
|
||||||
* [Building](#building)
|
|
||||||
- [Using on Windows](#using-on-windows)
|
|
||||||
* [Changelog](https://github.com/algernon/ergodox-layout/blob/master/NEWS.md#readme)
|
|
||||||
* [License](#license)
|
|
||||||
|
|
||||||
# Layouts
|
|
||||||
|
|
||||||
## Base layer
|
|
||||||
|
|
||||||
[](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
|
|
||||||
|
|
||||||
At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave:
|
|
||||||
|
|
||||||
* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer.
|
|
||||||
* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap.
|
|
||||||
* The `GUI` key is special, because while a single tap works as usual, when double-tapped, it turns the number row into an application selector, and when triple tapped, it runs an application selector program on the host.
|
|
||||||
* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode.
|
|
||||||
* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle.
|
|
||||||
* The **Fx** key is one-shot, and activates the **Media** layer, along with a one-shot `Alt`.
|
|
||||||
* When holding the `Tab`/**Arrow** key, the arrow layer activates while the key is held. Tapping the key produces the normal, `Tab` key. Double-tapping it toggles the **Arrow** layer on until a third tap.
|
|
||||||
* Tapping the `:` key once yields `:`, tapping it twice yields `;`.
|
|
||||||
* Tapping the `[{(`/`)}]` keys once yields `[` (or `{` when shifted), tapping them twice yields `(`.
|
|
||||||
* The **Lead** key allows me to type in a sequence of keys, and trigger some actions:
|
|
||||||
- `LEAD l` uses the unicode input method to enter a `λ`.
|
|
||||||
- `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
|
|
||||||
- `LEAD y` types `\o/`.
|
|
||||||
- `LEAD w m` maximises the currently focused window.
|
|
||||||
- `LEAD a` makes the [ADORE layer](#adore-layer) the default.
|
|
||||||
- `LEAD v` prints the firmware version, the keyboard and the keymap.
|
|
||||||
- `LEAD d` toggles logging keypress positions to the HID console.
|
|
||||||
- `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader.
|
|
||||||
- `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode.
|
|
||||||
- `LEAD r` inputs `Right Alt`, which is the `Compose` key of my choice.
|
|
||||||
|
|
||||||
The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front.
|
|
||||||
|
|
||||||
## ADORE layer
|
|
||||||
|
|
||||||
[](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
|
|
||||||
|
|
||||||
My experimental layout, that I keep tweaking. No full description here, because things are very much in flux.
|
|
||||||
|
|
||||||
Note that the **HUN** layer does not work well with ADORE: it still has the same layout as on the [Base](#base-layer) layer. This will remain until ADORE becomes the default.
|
|
||||||
|
|
||||||
## Steno layer
|
|
||||||
|
|
||||||
[](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
|
|
||||||
|
|
||||||
This is to be used with [Plover](http://www.openstenoproject.org/plover/), nothing really fancy here. The **STENO** key toggles the layer on and off, and sends the toggle command to Plover too.
|
|
||||||
|
|
||||||
## LED states
|
|
||||||
|
|
||||||
The primary purpose of the LEDs is to show the modifier status, a secondary, to show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each have their designated LEDs: the *red*, *green* and *blue*, respectively. When a modifier is in a one-shot state, the respective LED will turn on with a dimmer light. If the modifier is toggled on, the brightness of the LED turns full.
|
|
||||||
|
|
||||||
For the layers, the following rules apply:
|
|
||||||
|
|
||||||
* When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active.
|
|
||||||
* When the **Hungarian** layer is active, the *green* and *blue* LEDs are on.
|
|
||||||
* When the **Media** layer is active, the *red* and *green* ones are on.
|
|
||||||
* When the **ARROW** layer is active, the *red* and *blue* ones are on.
|
|
||||||
* For the [Steno layer](#steno-layer), all LEDs will be turned on.
|
|
||||||
|
|
||||||
Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on.
|
|
||||||
|
|
||||||
# Special features
|
|
||||||
|
|
||||||
## Unicode Symbol Input
|
|
||||||
|
|
||||||
Once in the Unicode Symbol Input mode, one is able to type in symbol names, press `Enter` or `Space`, and get the Unicode symbol itself back. When in the mode, a capital `U` is printed first. Once the sequence is finished, all of it is erased by sending enough `Backspace` taps, and the firmware starts the OS-specific unicode input sequence. Then, it looks up the symbol name, and enters the associated code. If it is not found, it will just replay the pressed keycodes.
|
|
||||||
|
|
||||||
For the list of supported symbols, please see the source.
|
|
||||||
|
|
||||||
This is an experimental feature, and may or may not work reliably.
|
|
||||||
|
|
||||||
# Tools
|
|
||||||
|
|
||||||
## Heatmap
|
|
||||||
|
|
||||||
When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too.
|
|
||||||
|
|
||||||
Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, either pipe the output of `hid_listen` into it, or pipe it an already saved log, and it will save the results into files in an output directory (given on the command-line). See the output of `tools/log-to-heatmap.py --help` for more information.
|
|
||||||
|
|
||||||
[kle]: http://www.keyboard-layout-editor.com/
|
|
||||||
|
|
||||||
The generated heatmap looks somewhat like this:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Layer notification
|
|
||||||
|
|
||||||
There is a very small tool in `tools/layer-notify`, that listens to the HID console, looking for layer change events, and pops up a notification for every detected change. It is a very simple tool, mainly serving as an example.
|
|
||||||
|
|
||||||
# Building
|
|
||||||
|
|
||||||
To make my workflow easier, this layout is maintained in [its own repository][algernon:ez-layout]. To build it, you will need the [QMK][qmk] firmware checked out, and this repo either checked out to something like `layouts/community/algernon_master`, or symlinked there. One way to achieve that is this:
|
|
||||||
|
|
||||||
[algernon:ez-layout]: https://github.com/algernon/ergodox-layout
|
|
||||||
[qmk]: https://github.com/qmk/qmk_firmware
|
|
||||||
|
|
||||||
```
|
|
||||||
$ git clone https://github.com/qmk/qmk_firmware.git
|
|
||||||
$ cd qmk_firmware
|
|
||||||
$ git clone https://github.com/algernon/ergodox-layout.git \
|
|
||||||
layouts/community/ergodox/algernon_master
|
|
||||||
$ make ergodox_ez:algernon_master
|
|
||||||
```
|
|
||||||
|
|
||||||
From time to time, updates may be submitted back to the QMK repository. If you are reading it there, you can build the firmware like any other firmware included with it (assuming you are in the root directory of the firmware):
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make ergodox_ez:algernon
|
|
||||||
```
|
|
||||||
|
|
||||||
## Using on Windows
|
|
||||||
|
|
||||||
The keymap default to forcing NKRO, which seems to upset Windows, and except the modifiers, none of them work. If you experience this problem, recompile the firmware with `FORCE_NKRO=no` added to the `make` command line.
|
|
||||||
|
|
||||||
# License
|
|
||||||
|
|
||||||
The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
BOOTMAGIC_ENABLE=no
|
|
||||||
COMMAND_ENABLE=no
|
|
||||||
SLEEP_LED_ENABLE=no
|
|
||||||
FORCE_NKRO ?= yes
|
|
||||||
DEBUG_ENABLE = no
|
|
||||||
CONSOLE_ENABLE = no
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
KEYLOGGER_ENABLE ?= yes
|
|
||||||
UCIS_ENABLE = yes
|
|
||||||
MOUSEKEY_ENABLE = no
|
|
||||||
LEADER_ENABLE = yes
|
|
||||||
RGBLIGHT_ENABLE = no
|
|
||||||
|
|
||||||
AUTOLOG_ENABLE ?= yes
|
|
||||||
|
|
||||||
ifeq (${FORCE_NKRO},yes)
|
|
||||||
OPT_DEFS += -DFORCE_NKRO
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (${AUTOLOG_ENABLE},yes)
|
|
||||||
KEYLOGGER_ENABLE = yes
|
|
||||||
OPT_DEFS += -DAUTOLOG_ENABLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (${KEYLOGGER_ENABLE},yes)
|
|
||||||
OPT_DEFS += -DKEYLOGGER_ENABLE
|
|
||||||
CONSOLE_ENABLE = yes
|
|
||||||
endif
|
|
||||||
|
|
||||||
OPT_DEFS += -DUSER_PRINT
|
|
||||||
|
|
||||||
LAYOUT_ergodox_VERSION = $(shell \
|
|
||||||
if [ -d "${LAYOUT_ergodox_PATH}/.git" ]; then \
|
|
||||||
cd "${LAYOUT_ergodox_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \
|
|
||||||
else echo QMK; fi)
|
|
||||||
|
|
||||||
LAYOUT_ergodox_BRANCH = $(shell \
|
|
||||||
if [ -d "${LAYOUT_ergodox_PATH}/.git" ]; then \
|
|
||||||
cd "${LAYOUT_ergodox_PATH}"; \
|
|
||||||
fi; \
|
|
||||||
git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
||||||
|
|
||||||
OPT_DEFS += -DLAYOUT_ergodox_VERSION=\"$(LAYOUT_ergodox_VERSION)\\\#$(LAYOUT_ergodox_BRANCH)\"
|
|
||||||
@@ -1,486 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"backcolor": "#ffffff",
|
|
||||||
"name": "ErgoDox - algernon's layout: Heatmap",
|
|
||||||
"author": "Gergely Nagy <kbd@gergo.csillger.hu>",
|
|
||||||
"notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
|
|
||||||
"switchMount": "cherry",
|
|
||||||
"switchBrand": "gateron",
|
|
||||||
"switchType": "KS-3-Tea",
|
|
||||||
"pcb": true,
|
|
||||||
"css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
|
|
||||||
},
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": 3.5,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"*\n5\nF5",
|
|
||||||
{
|
|
||||||
"x": 10.5,
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"#\n4\nF4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"@\n7\nF7",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"^\n3\nF3",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"!\n2\nF2",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"&\n6\nF6"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"$\n1\nF1",
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"F11",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"Fx",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"f": 3,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"%\n0\nF10"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"f": 9,
|
|
||||||
"a": 6,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
|
|
||||||
{
|
|
||||||
"f": 3,
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
" \n9\nF9",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
" \n8\nF8",
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"STENO"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"C",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"L"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"W",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"H",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"G",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"P"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"F",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"fa": [0, 0, 0],
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"{\n(\n[",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"}\n)\n]",
|
|
||||||
{
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"M"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"f": 3,
|
|
||||||
"a": 4,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"\n\n|\n\\",
|
|
||||||
{
|
|
||||||
"a": 6,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"X",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"/\n?",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"~\n`"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"E",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"T"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"O",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"n": true
|
|
||||||
},
|
|
||||||
"I",
|
|
||||||
{
|
|
||||||
"x": 8.5,
|
|
||||||
"n": true
|
|
||||||
},
|
|
||||||
"R",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"N"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"U",
|
|
||||||
{
|
|
||||||
"x": 6.5
|
|
||||||
},
|
|
||||||
"D"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"fa": [
|
|
||||||
6
|
|
||||||
],
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-arrows'></i>\n\nTab",
|
|
||||||
{
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"A",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"S",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
6
|
|
||||||
],
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"+\n="
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.625,
|
|
||||||
"x": 6.5,
|
|
||||||
"a": 7,
|
|
||||||
"f": 9,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-columns'></i>",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-table'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 4,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"\"\n'",
|
|
||||||
{
|
|
||||||
"x": 10.5,
|
|
||||||
"a": 6,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"V"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"Q",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"<\n,",
|
|
||||||
{
|
|
||||||
"x": 8.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"K",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"Y"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
">\n.",
|
|
||||||
{
|
|
||||||
"x": 6.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"B"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"f": 9,
|
|
||||||
"w": 1.5,
|
|
||||||
"g": true
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"a": 6,
|
|
||||||
"f": 3,
|
|
||||||
"g": false
|
|
||||||
},
|
|
||||||
"Z",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
"J",
|
|
||||||
{
|
|
||||||
"f": 9,
|
|
||||||
"g": true,
|
|
||||||
"w": 1.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"g": true,
|
|
||||||
"a": 7,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"g": false,
|
|
||||||
"a": 5
|
|
||||||
},
|
|
||||||
";\n:",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"_\n-",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"g": true,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 0.5
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"r": 30,
|
|
||||||
"rx": 6.5,
|
|
||||||
"ry": 4.25,
|
|
||||||
"y": -1,
|
|
||||||
"x": 1,
|
|
||||||
"g": false
|
|
||||||
},
|
|
||||||
"Alt",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
9
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"f": 9,
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
|
||||||
{
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class='fa fa-angle-double-up'></i>",
|
|
||||||
{
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"Ctrl"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": 2
|
|
||||||
},
|
|
||||||
"ESC"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"r": -30,
|
|
||||||
"rx": 13,
|
|
||||||
"y": -1,
|
|
||||||
"x": -3,
|
|
||||||
"f": 2
|
|
||||||
},
|
|
||||||
"MEDIA",
|
|
||||||
{},
|
|
||||||
"DEL"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": -3
|
|
||||||
},
|
|
||||||
"HUN",
|
|
||||||
{
|
|
||||||
"f": 9,
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class='kb kb-Return-2'></i>",
|
|
||||||
{
|
|
||||||
"f": 3,
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"SPC"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": -3,
|
|
||||||
"f": 2
|
|
||||||
},
|
|
||||||
"LEAD"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
@@ -1,477 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"backcolor": "#ffffff",
|
|
||||||
"name": "ErgoDox - algernon's layout: Heatmap",
|
|
||||||
"author": "Gergely Nagy <kbd@gergo.csillger.hu>",
|
|
||||||
"notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
|
|
||||||
"switchMount": "cherry",
|
|
||||||
"switchBrand": "gateron",
|
|
||||||
"switchType": "KS-3-Tea",
|
|
||||||
"pcb": true,
|
|
||||||
"css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
|
|
||||||
},
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": 3.5,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"*\n5\nF5",
|
|
||||||
{
|
|
||||||
"x": 10.5,
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"#\n4\nF4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"@\n7\nF7",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"^\n3\nF3",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"!\n2\nF2",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"&\n6\nF6"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"$\n1\nF1",
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"F11",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"Fx",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"f": 3,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"%\n0\nF10"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"f": 6,
|
|
||||||
"a": 6,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>",
|
|
||||||
{
|
|
||||||
"f": 3,
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
|
|
||||||
},
|
|
||||||
" \n9\nF9",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
" \n8\nF8",
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"STENO"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
">\n.",
|
|
||||||
{
|
|
||||||
"x": 10.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"C"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5,
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"<\n,",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"P",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"G",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"R"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"Y",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"{\n(\n[",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"}\n)\n]",
|
|
||||||
{
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"F"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"f": 3,
|
|
||||||
"a": 4,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"\n\n~\n`",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"\"\n'",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"L",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"|\n\\"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"E",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"T"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"O",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"n": true
|
|
||||||
},
|
|
||||||
"U",
|
|
||||||
{
|
|
||||||
"x": 8.5,
|
|
||||||
"n": true
|
|
||||||
},
|
|
||||||
"H",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"N"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"I",
|
|
||||||
{
|
|
||||||
"x": 6.5
|
|
||||||
},
|
|
||||||
"D"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"fa": [
|
|
||||||
6
|
|
||||||
],
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-arrows'></i>\n\nTab",
|
|
||||||
{
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"A",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"S",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
6
|
|
||||||
],
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"+\n="
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.625,
|
|
||||||
"x": 6.5,
|
|
||||||
"a": 7,
|
|
||||||
"f": 9,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-columns'></i>",
|
|
||||||
{
|
|
||||||
"x": 4.5,
|
|
||||||
"h": 1.5
|
|
||||||
},
|
|
||||||
"<i class='fa fa-table'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 3.5,
|
|
||||||
"f": 3,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"J",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
"W"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"Q",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"K",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"M",
|
|
||||||
{
|
|
||||||
"x": 1
|
|
||||||
},
|
|
||||||
"V"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 5.5
|
|
||||||
},
|
|
||||||
"X",
|
|
||||||
{
|
|
||||||
"x": 6.5
|
|
||||||
},
|
|
||||||
"B"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"f": 9,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"?\n/",
|
|
||||||
{
|
|
||||||
"x": 14.5,
|
|
||||||
"a": 6
|
|
||||||
},
|
|
||||||
"Z",
|
|
||||||
{
|
|
||||||
"f": 9,
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"<i class='kb kb-Multimedia-Stop'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.375,
|
|
||||||
"x": 3.5,
|
|
||||||
"g": true,
|
|
||||||
"a": 7,
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"x": 10.5
|
|
||||||
},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.875,
|
|
||||||
"x": 2.5
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"g": false,
|
|
||||||
"a": 5
|
|
||||||
},
|
|
||||||
";\n:",
|
|
||||||
{
|
|
||||||
"x": 8.5
|
|
||||||
},
|
|
||||||
"_\n-",
|
|
||||||
{
|
|
||||||
"x": 1,
|
|
||||||
"g": true,
|
|
||||||
"a": 7
|
|
||||||
},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 0.5
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{},
|
|
||||||
"",
|
|
||||||
{
|
|
||||||
"x": 14.5
|
|
||||||
},
|
|
||||||
"",
|
|
||||||
{},
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"r": 30,
|
|
||||||
"rx": 6.5,
|
|
||||||
"ry": 4.25,
|
|
||||||
"y": -1,
|
|
||||||
"x": 1,
|
|
||||||
"g": false
|
|
||||||
},
|
|
||||||
"Alt",
|
|
||||||
{
|
|
||||||
"a": 4,
|
|
||||||
"fa": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
9
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"a": 7,
|
|
||||||
"f": 9,
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
|
||||||
{
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class='fa fa-angle-double-up'></i>",
|
|
||||||
{
|
|
||||||
"f": 3
|
|
||||||
},
|
|
||||||
"Ctrl"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": 2
|
|
||||||
},
|
|
||||||
"ESC"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"r": -30,
|
|
||||||
"rx": 13,
|
|
||||||
"y": -1,
|
|
||||||
"x": -3,
|
|
||||||
"f": 2
|
|
||||||
},
|
|
||||||
"MEDIA",
|
|
||||||
{},
|
|
||||||
"DEL"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": -3
|
|
||||||
},
|
|
||||||
"LEAD",
|
|
||||||
{
|
|
||||||
"f": 9,
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"<i class='kb kb-Return-2'></i>",
|
|
||||||
{
|
|
||||||
"f": 3,
|
|
||||||
"h": 2
|
|
||||||
},
|
|
||||||
"SPC"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"x": -3,
|
|
||||||
"f": 2
|
|
||||||
},
|
|
||||||
"HUN"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
LAST_APPSEL_START=0
|
|
||||||
|
|
||||||
cmd_wm () {
|
|
||||||
WIN="$(xdotool getactivewindow)"
|
|
||||||
wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
|
|
||||||
xdotool windowsize ${WIN} 100% 100%
|
|
||||||
wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_helper () {
|
|
||||||
rofi -show window
|
|
||||||
}
|
|
||||||
|
|
||||||
_cmd_appsel () {
|
|
||||||
wmctrl -x -a $1 || true
|
|
||||||
xdotool key Escape
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_music () {
|
|
||||||
wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \
|
|
||||||
wmctrl -x -a banshee || wmctrl -x -a kodi || \
|
|
||||||
wmctrl -x -a plex || true
|
|
||||||
xdotool key Escape
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_slack () {
|
|
||||||
wmctrl -x -a slack || wmctrl -x -a Mstdn || true
|
|
||||||
xdotool key Escape
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_emacs () {
|
|
||||||
_cmd_appsel emacs
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_term () {
|
|
||||||
_cmd_appsel gnome-terminal
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_chrome () {
|
|
||||||
wmctrl -x -a chrom || wmctrl -x -a Chrome || true
|
|
||||||
xdotool key Escape
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_start () {
|
|
||||||
if [ ! -z "${DISABLE_APPSEL_START}" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
APPSEL_START=$(date +%s)
|
|
||||||
if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
LAST_APPSEL_START=$APPSEL_START
|
|
||||||
notify-send -t 1000 "Please select an application!" -c device -u low \
|
|
||||||
-i /usr/share/icons/Adwaita/24x24/devices/video-display.png
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_social () {
|
|
||||||
# Save the current window
|
|
||||||
a=$(xdotool getactivewindow)
|
|
||||||
# Raise & Focus Mstdn & Tweetdeck
|
|
||||||
wmctrl -x -a trunk.mad-scientist.club.Google-chrome || true; wmctrl -x -a tweetdeck || true
|
|
||||||
# Focus the previously active window
|
|
||||||
xdotool windowfocus $a || true; xdotool windowactivate $a || true
|
|
||||||
|
|
||||||
xdotool key Escape
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_social2 () {
|
|
||||||
# Save the current window
|
|
||||||
a=$(xdotool getactivewindow)
|
|
||||||
# Raise & Focus Viber & Signal
|
|
||||||
wmctrl -x -a Viber || true; wmctrl -a Signal || true
|
|
||||||
# Focus the previously active window
|
|
||||||
xdotool windowfocus $a || true; xdotool windowactivate $a || true
|
|
||||||
|
|
||||||
xdotool key Escape
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_appsel_pwmgr () {
|
|
||||||
_cmd_appsel keepass
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_reflash () {
|
|
||||||
teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_help () {
|
|
||||||
cat <<EOF
|
|
||||||
Use the source, Luke!
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
while read l; do
|
|
||||||
case "$l" in
|
|
||||||
"CMD:"*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cmd="$(echo $l | cut -d: -f2-)"
|
|
||||||
|
|
||||||
echo "Got command: ${cmd}"
|
|
||||||
|
|
||||||
if type cmd_${cmd} >/dev/null 2>&1; then
|
|
||||||
cmd_${cmd}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
@@ -1,344 +0,0 @@
|
|||||||
#! /usr/bin/env python3
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import re
|
|
||||||
import argparse
|
|
||||||
import time
|
|
||||||
|
|
||||||
from math import floor
|
|
||||||
from os.path import dirname
|
|
||||||
from subprocess import Popen, PIPE, STDOUT
|
|
||||||
from blessings import Terminal
|
|
||||||
|
|
||||||
class Heatmap(object):
|
|
||||||
coords = [
|
|
||||||
[
|
|
||||||
# Row 0
|
|
||||||
[ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2],
|
|
||||||
[ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
# Row 1
|
|
||||||
[ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2],
|
|
||||||
[ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
# Row 2
|
|
||||||
[12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ],
|
|
||||||
[ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
# Row 3
|
|
||||||
[17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0],
|
|
||||||
[13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
# Row 4
|
|
||||||
[20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [],
|
|
||||||
[19, 4], [18, 2], [19, 6], [20, 4], [20, 6], [], [], [], []
|
|
||||||
],
|
|
||||||
[
|
|
||||||
# Row 5
|
|
||||||
[ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2],
|
|
||||||
[24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ],
|
|
||||||
],
|
|
||||||
]
|
|
||||||
|
|
||||||
def set_attr_at(self, block, n, attr, fn, val):
|
|
||||||
blk = self.heatmap[block][n]
|
|
||||||
if attr in blk:
|
|
||||||
blk[attr] = fn(blk[attr], val)
|
|
||||||
else:
|
|
||||||
blk[attr] = fn(None, val)
|
|
||||||
|
|
||||||
def coord(self, col, row):
|
|
||||||
return self.coords[row][col]
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def set_attr(orig, new):
|
|
||||||
return new
|
|
||||||
|
|
||||||
def set_bg(self, coords, color):
|
|
||||||
(block, n) = coords
|
|
||||||
self.set_attr_at(block, n, "c", self.set_attr, color)
|
|
||||||
#self.set_attr_at(block, n, "g", self.set_attr, False)
|
|
||||||
|
|
||||||
def set_tap_info(self, coords, count, cap):
|
|
||||||
(block, n) = coords
|
|
||||||
def _set_tap_info(o, _count, _cap):
|
|
||||||
ns = 4 - o.count ("\n")
|
|
||||||
return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100)
|
|
||||||
|
|
||||||
if not cap:
|
|
||||||
cap = 1
|
|
||||||
self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def heatmap_color (v):
|
|
||||||
colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]]
|
|
||||||
fb = 0
|
|
||||||
if v <= 0:
|
|
||||||
idx1, idx2 = 0, 0
|
|
||||||
elif v >= 1:
|
|
||||||
idx1, idx2 = len(colors) - 1, len(colors) - 1
|
|
||||||
else:
|
|
||||||
val = v * (len(colors) - 1)
|
|
||||||
idx1 = int(floor(val))
|
|
||||||
idx2 = idx1 + 1
|
|
||||||
fb = val - float(idx1)
|
|
||||||
|
|
||||||
r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0]
|
|
||||||
g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1]
|
|
||||||
b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2]
|
|
||||||
|
|
||||||
r, g, b = [x * 255 for x in (r, g, b)]
|
|
||||||
return "#%02x%02x%02x" % (int(r), int(g), int(b))
|
|
||||||
|
|
||||||
def __init__(self, layout):
|
|
||||||
self.log = {}
|
|
||||||
self.total = 0
|
|
||||||
self.max_cnt = 0
|
|
||||||
self.layout = layout
|
|
||||||
|
|
||||||
def update_log(self, coords):
|
|
||||||
(c, r) = coords
|
|
||||||
if not (c, r) in self.log:
|
|
||||||
self.log[(c, r)] = 0
|
|
||||||
self.log[(c, r)] = self.log[(c, r)] + 1
|
|
||||||
self.total = self.total + 1
|
|
||||||
if self.max_cnt < self.log[(c, r)]:
|
|
||||||
self.max_cnt = self.log[(c, r)]
|
|
||||||
|
|
||||||
def get_heatmap(self):
|
|
||||||
with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f:
|
|
||||||
self.heatmap = json.load (f)
|
|
||||||
|
|
||||||
## Reset colors
|
|
||||||
for row in self.coords:
|
|
||||||
for coord in row:
|
|
||||||
if coord != []:
|
|
||||||
self.set_bg (coord, "#d9dae0")
|
|
||||||
|
|
||||||
for (c, r) in self.log:
|
|
||||||
coords = self.coord(c, r)
|
|
||||||
b, n = coords
|
|
||||||
cap = self.max_cnt
|
|
||||||
if cap == 0:
|
|
||||||
cap = 1
|
|
||||||
v = float(self.log[(c, r)]) / cap
|
|
||||||
self.set_bg (coords, self.heatmap_color (v))
|
|
||||||
self.set_tap_info (coords, self.log[(c, r)], self.total)
|
|
||||||
return self.heatmap
|
|
||||||
|
|
||||||
def get_stats(self):
|
|
||||||
usage = [
|
|
||||||
# left hand
|
|
||||||
[0, 0, 0, 0, 0],
|
|
||||||
# right hand
|
|
||||||
[0, 0, 0, 0, 0]
|
|
||||||
]
|
|
||||||
finger_map = [0, 0, 1, 2, 3, 3, 3, 1, 1, 1, 2, 3, 4, 4]
|
|
||||||
for (c, r) in self.log:
|
|
||||||
if r == 5: # thumb cluster
|
|
||||||
if c <= 6: # left side
|
|
||||||
usage[0][4] = usage[0][4] + self.log[(c, r)]
|
|
||||||
else:
|
|
||||||
usage[1][0] = usage[1][0] + self.log[(c, r)]
|
|
||||||
elif r == 4 and (c == 4 or c == 9): # bottom row thumb keys
|
|
||||||
if c <= 6: # left side
|
|
||||||
usage[0][4] = usage[0][4] + self.log[(c, r)]
|
|
||||||
else:
|
|
||||||
usage[1][0] = usage[1][0] + self.log[(c, r)]
|
|
||||||
else:
|
|
||||||
fc = c
|
|
||||||
hand = 0
|
|
||||||
if fc >= 7:
|
|
||||||
hand = 1
|
|
||||||
fm = finger_map[fc]
|
|
||||||
usage[hand][fm] = usage[hand][fm] + self.log[(c, r)]
|
|
||||||
hand_usage = [0, 0]
|
|
||||||
for f in usage[0]:
|
|
||||||
hand_usage[0] = hand_usage[0] + f
|
|
||||||
for f in usage[1]:
|
|
||||||
hand_usage[1] = hand_usage[1] + f
|
|
||||||
|
|
||||||
total = self.total
|
|
||||||
if total == 0:
|
|
||||||
total = 1
|
|
||||||
stats = {
|
|
||||||
"total-keys": total,
|
|
||||||
"hands": {
|
|
||||||
"left": {
|
|
||||||
"usage": round(float(hand_usage[0]) / total * 100, 2),
|
|
||||||
"fingers": {
|
|
||||||
"pinky": 0,
|
|
||||||
"ring": 0,
|
|
||||||
"middle": 0,
|
|
||||||
"index": 0,
|
|
||||||
"thumb": 0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"right": {
|
|
||||||
"usage": round(float(hand_usage[1]) / total * 100, 2),
|
|
||||||
"fingers": {
|
|
||||||
"thumb": 0,
|
|
||||||
"index": 0,
|
|
||||||
"middle": 0,
|
|
||||||
"ring": 0,
|
|
||||||
"pinky": 0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hmap = ['left', 'right']
|
|
||||||
fmap = ['pinky', 'ring', 'middle', 'index', 'thumb',
|
|
||||||
'thumb', 'index', 'middle', 'ring', 'pinky']
|
|
||||||
for hand_idx in range(len(usage)):
|
|
||||||
hand = usage[hand_idx]
|
|
||||||
for finger_idx in range(len(hand)):
|
|
||||||
stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = round(float(hand[finger_idx]) / total * 100, 2)
|
|
||||||
return stats
|
|
||||||
|
|
||||||
def dump_all(out_dir, heatmaps):
|
|
||||||
stats = {}
|
|
||||||
t = Terminal()
|
|
||||||
t.clear()
|
|
||||||
sys.stdout.write("\x1b[2J\x1b[H")
|
|
||||||
|
|
||||||
print ('{t.underline}{outdir}{t.normal}\n'.format(t=t, outdir=out_dir))
|
|
||||||
|
|
||||||
keys = list(heatmaps.keys())
|
|
||||||
keys.sort()
|
|
||||||
|
|
||||||
for layer in keys:
|
|
||||||
if len(heatmaps[layer].log) == 0:
|
|
||||||
continue
|
|
||||||
|
|
||||||
with open ("%s/%s.json" % (out_dir, layer), "w") as f:
|
|
||||||
json.dump(heatmaps[layer].get_heatmap(), f)
|
|
||||||
stats[layer] = heatmaps[layer].get_stats()
|
|
||||||
|
|
||||||
left = stats[layer]['hands']['left']
|
|
||||||
right = stats[layer]['hands']['right']
|
|
||||||
|
|
||||||
print ('{t.bold}{layer}{t.normal} ({total:,} taps):'.format(t=t, layer=layer,
|
|
||||||
total=int(stats[layer]['total-keys'] / 2)))
|
|
||||||
print (('{t.underline} | ' + \
|
|
||||||
'left ({l[usage]:6.2f}%) | ' + \
|
|
||||||
'right ({r[usage]:6.2f}%) |{t.normal}').format(t=t, l=left, r=right))
|
|
||||||
print ((' {t.bright_magenta}pinky{t.white} | {left[pinky]:6.2f}% | {right[pinky]:6.2f}% |\n' + \
|
|
||||||
' {t.bright_cyan}ring{t.white} | {left[ring]:6.2f}% | {right[ring]:6.2f}% |\n' + \
|
|
||||||
' {t.bright_blue}middle{t.white} | {left[middle]:6.2f}% | {right[middle]:6.2f}% |\n' + \
|
|
||||||
' {t.bright_green}index{t.white} | {left[index]:6.2f}% | {right[index]:6.2f}% |\n' + \
|
|
||||||
' {t.bright_red}thumb{t.white} | {left[thumb]:6.2f}% | {right[thumb]:6.2f}% |\n' + \
|
|
||||||
'').format(left=left['fingers'], right=right['fingers'], t=t))
|
|
||||||
|
|
||||||
def process_line(line, heatmaps, opts, stamped_log = None):
|
|
||||||
m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line)
|
|
||||||
if not m:
|
|
||||||
return False
|
|
||||||
if stamped_log is not None:
|
|
||||||
if line.startswith("KL:"):
|
|
||||||
print ("%10.10f %s" % (time.time(), line),
|
|
||||||
file = stamped_log, end = '')
|
|
||||||
else:
|
|
||||||
print (line,
|
|
||||||
file = stamped_log, end = '')
|
|
||||||
stamped_log.flush()
|
|
||||||
|
|
||||||
(c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4))
|
|
||||||
if (c, r) not in opts.allowed_keys:
|
|
||||||
return False
|
|
||||||
|
|
||||||
heatmaps[l].update_log ((c, r))
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def setup_allowed_keys(opts):
|
|
||||||
if len(opts.only_key):
|
|
||||||
incmap={}
|
|
||||||
for v in opts.only_key:
|
|
||||||
m = re.search ('(\d+),(\d+)', v)
|
|
||||||
if not m:
|
|
||||||
continue
|
|
||||||
(c, r) = (int(m.group(1)), int(m.group(2)))
|
|
||||||
incmap[(c, r)] = True
|
|
||||||
else:
|
|
||||||
incmap={}
|
|
||||||
for r in range(0, 6):
|
|
||||||
for c in range(0, 14):
|
|
||||||
incmap[(c, r)] = True
|
|
||||||
|
|
||||||
for v in opts.ignore_key:
|
|
||||||
m = re.search ('(\d+),(\d+)', v)
|
|
||||||
if not m:
|
|
||||||
continue
|
|
||||||
(c, r) = (int(m.group(1)), int(m.group(2)))
|
|
||||||
del(incmap[(c, r)])
|
|
||||||
|
|
||||||
return incmap
|
|
||||||
|
|
||||||
def main(opts):
|
|
||||||
heatmaps = {"Dvorak": Heatmap("Dvorak"),
|
|
||||||
"ADORE": Heatmap("ADORE")
|
|
||||||
}
|
|
||||||
cnt = 0
|
|
||||||
out_dir = opts.outdir
|
|
||||||
|
|
||||||
if not os.path.exists(out_dir):
|
|
||||||
os.makedirs(out_dir)
|
|
||||||
|
|
||||||
opts.allowed_keys = setup_allowed_keys(opts)
|
|
||||||
|
|
||||||
if not opts.one_shot:
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open("%s/stamped-log" % out_dir, "r") as f:
|
|
||||||
while True:
|
|
||||||
line = f.readline()
|
|
||||||
if not line:
|
|
||||||
break
|
|
||||||
if not process_line(line, heatmaps, opts):
|
|
||||||
continue
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
stamped_log = open ("%s/stamped-log" % (out_dir), "a+")
|
|
||||||
else:
|
|
||||||
stamped_log = None
|
|
||||||
|
|
||||||
while True:
|
|
||||||
line = sys.stdin.readline()
|
|
||||||
if not line:
|
|
||||||
break
|
|
||||||
if not process_line(line, heatmaps, opts, stamped_log):
|
|
||||||
continue
|
|
||||||
|
|
||||||
cnt = cnt + 1
|
|
||||||
|
|
||||||
if opts.dump_interval != -1 and cnt >= opts.dump_interval and not opts.one_shot:
|
|
||||||
cnt = 0
|
|
||||||
dump_all(out_dir, heatmaps)
|
|
||||||
|
|
||||||
dump_all (out_dir, heatmaps)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
parser = argparse.ArgumentParser (description = "keylog to heatmap processor")
|
|
||||||
parser.add_argument ('outdir', action = 'store',
|
|
||||||
help = 'Output directory')
|
|
||||||
parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int,
|
|
||||||
default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only')
|
|
||||||
parser.add_argument ('--ignore-key', dest = 'ignore_key', action = 'append', type = str,
|
|
||||||
default = [], help = 'Ignore the key at position (x, y)')
|
|
||||||
parser.add_argument ('--only-key', dest = 'only_key', action = 'append', type = str,
|
|
||||||
default = [], help = 'Only include key at position (x, y)')
|
|
||||||
parser.add_argument ('--one-shot', dest = 'one_shot', action = 'store_true',
|
|
||||||
help = 'Do not load previous data, and do not update it, either.')
|
|
||||||
args = parser.parse_args()
|
|
||||||
if len(args.ignore_key) and len(args.only_key):
|
|
||||||
print ("--ignore-key and --only-key are mutually exclusive, please only use one of them!",
|
|
||||||
file = sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
main(args)
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
charmap = {
|
|
||||||
'9': [[1, 0]],
|
|
||||||
'7': [[2, 0]], '@': [[2, 5], [2, 0]],
|
|
||||||
'5': [[3, 0]], '*': [[2, 5], [3, 0]],
|
|
||||||
'3': [[4, 0]], '^': [[2, 5], [4, 0]],
|
|
||||||
'1': [[5, 0]], '$': [[2, 5], [5, 0]],
|
|
||||||
'0': [[8, 0]], '%': [[2, 5], [8, 0]],
|
|
||||||
'2': [[9, 0]], '!': [[2, 5], [9, 0]],
|
|
||||||
'4': [[10, 0]], '#': [[2, 5], [10, 0]],
|
|
||||||
'6': [[11, 0]], '&': [[2, 5], [11, 0]],
|
|
||||||
'8': [[12, 0]],
|
|
||||||
|
|
||||||
'\\': [[0, 1]], '|': [[2, 5], [0, 1]],
|
|
||||||
'x': [[1, 1]], 'X': [[2, 5], [1, 1]],
|
|
||||||
'w': [[2, 1]], 'W': [[2, 5], [2, 1]],
|
|
||||||
'c': [[3, 1]], 'C': [[2, 5], [3, 1]],
|
|
||||||
'h': [[4, 1]], 'H': [[2, 5], [4, 1]],
|
|
||||||
'f': [[5, 1]], 'F': [[2, 5], [5, 1]],
|
|
||||||
'[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]],
|
|
||||||
']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]],
|
|
||||||
'm': [[8, 1]], 'M': [[2, 5], [8, 1]],
|
|
||||||
'g': [[9, 1]], 'G': [[2, 5], [9, 1]],
|
|
||||||
'l': [[10, 1]], 'L': [[2, 5], [10, 1]],
|
|
||||||
'p': [[11, 1]], 'P': [[2, 5], [11, 1]],
|
|
||||||
'/': [[12, 1]], '?': [[2, 5], [12, 1]],
|
|
||||||
'`': [[13, 1]], '~': [[2, 5], [13, 1]],
|
|
||||||
|
|
||||||
'\t': [[0, 2]],
|
|
||||||
'a': [[1, 2]], 'A': [[2, 5], [1, 2]],
|
|
||||||
'o': [[2, 2]], 'O': [[2, 5], [2, 2]],
|
|
||||||
'e': [[3, 2]], 'E': [[2, 5], [3, 2]],
|
|
||||||
'i': [[4, 2]], 'I': [[2, 5], [4, 2]],
|
|
||||||
'u': [[5, 2]], 'U': [[2, 5], [5, 2]],
|
|
||||||
'd': [[8, 2]], 'D': [[2, 5], [8, 2]],
|
|
||||||
'r': [[9, 2]], 'R': [[2, 5], [9, 2]],
|
|
||||||
't': [[10, 2]], 'T': [[2, 5], [10, 2]],
|
|
||||||
'n': [[11, 2]], 'N': [[2, 5], [11, 2]],
|
|
||||||
's': [[12, 2]], 'S': [[2, 5], [12, 2]],
|
|
||||||
'=': [[13, 2]], '+': [[2, 5], [13, 2]],
|
|
||||||
|
|
||||||
'z': [[1, 3]], 'Z': [[2, 5], [1, 3]],
|
|
||||||
'q': [[2, 3]], 'Q': [[2, 5], [2, 3]],
|
|
||||||
'\'': [[3, 3]], '"': [[2, 5], [3, 3]],
|
|
||||||
',': [[4, 3]], '<': [[2, 5], [4, 3]],
|
|
||||||
'.': [[5, 3]], '>': [[2, 5], [5, 3]],
|
|
||||||
'b': [[8, 3]], 'B': [[2, 5], [8, 3]],
|
|
||||||
'k': [[9, 3]], 'K': [[2, 5], [9, 3]],
|
|
||||||
'v': [[10, 3]], 'V': [[2, 5], [10, 3]],
|
|
||||||
'y': [[11, 3]], 'Y': [[2, 5], [11, 3]],
|
|
||||||
'j': [[12, 3]], 'J': [[2, 5], [12, 3]],
|
|
||||||
|
|
||||||
':': [[4, 4]], ';': [[4, 4], [4, 4]],
|
|
||||||
'-': [[9, 4]], '_': [[2, 5], [9, 4]],
|
|
||||||
|
|
||||||
' ': [[10, 5]],
|
|
||||||
'\n': [[11, 5]],
|
|
||||||
|
|
||||||
## Layered things
|
|
||||||
# Hungarian
|
|
||||||
'á': [[9, 5], [1, 2]], 'Á': [[2, 5], [9, 5], [1, 2]],
|
|
||||||
'ó': [[9, 5], [2, 2]], 'Ó': [[2, 5], [9, 5], [2, 2]],
|
|
||||||
'ő': [[9, 5], [2, 1]], 'Ő': [[2, 5], [9, 5], [2, 1]],
|
|
||||||
'ö': [[9, 5], [2, 3]], 'Ö': [[2, 5], [9, 5], [2, 3]],
|
|
||||||
'é': [[9, 5], [3, 2]], 'É': [[2, 5], [9, 5], [3, 2]],
|
|
||||||
'ú': [[9, 5], [4, 2]], 'Ú': [[2, 5], [9, 5], [4, 2]],
|
|
||||||
'ű': [[9, 5], [4, 1]], 'Ű': [[2, 5], [9, 5], [4, 1]],
|
|
||||||
'ü': [[9, 5], [4, 3]], 'Ü': [[2, 5], [9, 5], [4, 3]],
|
|
||||||
'í': [[9, 5], [5, 2]], 'Í': [[2, 5], [9, 5], [5, 2]],
|
|
||||||
}
|
|
||||||
|
|
||||||
def lookup_char(layer, ch):
|
|
||||||
if ch in charmap:
|
|
||||||
return charmap[ch]
|
|
||||||
return None
|
|
||||||
|
|
||||||
def process_char(layer, ch, out=sys.stdout):
|
|
||||||
keys = lookup_char(layer, ch)
|
|
||||||
if not keys:
|
|
||||||
print ("Unknown char: %s" % ch, file=sys.stderr)
|
|
||||||
else:
|
|
||||||
for (c, r) in keys:
|
|
||||||
print ("KL: col=%d, row=%d, pressed=1, layer=%s" % (r, c, layer), file=out)
|
|
||||||
print ("KL: col=%d, row=%d, pressed=0, layer=%s" % (r, c, layer), file=out)
|
|
||||||
|
|
||||||
def process_file(fn, layer, out=sys.stdout):
|
|
||||||
with open(fn, "r") as f:
|
|
||||||
ch = f.read(1)
|
|
||||||
while ch:
|
|
||||||
process_char(layer, ch, out)
|
|
||||||
ch = f.read(1)
|
|
||||||
|
|
||||||
if sys.argv[1] == '-':
|
|
||||||
out='/dev/stdin'
|
|
||||||
else:
|
|
||||||
out=sys.argv[1]
|
|
||||||
|
|
||||||
if len(sys.argv) >= 2:
|
|
||||||
layer = 'ADORE'
|
|
||||||
else:
|
|
||||||
layer = sys.argv[2]
|
|
||||||
|
|
||||||
process_file(out, layer = layer)
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_CONFIG_H
|
|
||||||
|
|
||||||
#define FORCE_NKRO
|
|
||||||
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#undef IGNORE_MOD_TAP_INTERRUPT
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define ETC 2 // etc
|
|
||||||
|
|
||||||
enum macro_id {
|
|
||||||
TEENSY,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
[BASE] = LAYOUT_ergodox(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_PGUP,
|
|
||||||
CTL_T(KC_ESC), LT(ETC,KC_A), KC_S, KC_E, KC_T, KC_G,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN,
|
|
||||||
KC_GRV, KC_DEL, KC_DEL, KC_LALT, GUI_T(KC_TAB),
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
LT(SYMB,KC_BSPC), CTL_T(KC_ESC), KC_NO,
|
|
||||||
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_VOLU, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_BSLS,
|
|
||||||
KC_Y, KC_N, KC_I, KC_O, KC_H, KC_QUOT,
|
|
||||||
KC_VOLD, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
GUI_T(KC_TAB), KC_LEFT, KC_DOWN, KC_UP, LCAG_T(KC_RGHT),
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, SFT_T(KC_ENT), LT(SYMB,KC_SPC)
|
|
||||||
),
|
|
||||||
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
|
|
||||||
KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BSLS,
|
|
||||||
KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_ASTR, KC_TRNS,
|
|
||||||
KC_TILD, KC_AMPR, KC_AMPR, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_EQL, KC_7, KC_8, KC_9, KC_PLUS, KC_NO,
|
|
||||||
KC_MINS, KC_4, KC_5, KC_6, KC_QUOT, KC_NO,
|
|
||||||
KC_TRNS, KC_UNDS, KC_1, KC_2, KC_3, KC_DQUO, KC_TRNS,
|
|
||||||
KC_0, KC_NO, KC_DOT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
[ETC] = LAYOUT_ergodox(
|
|
||||||
RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_TRNS,
|
|
||||||
KC_TRNS, LT(ETC,KC_A), KC_NO, KC_NO, KC_NO, KC_PGDN,
|
|
||||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_HOME, KC_NO,
|
|
||||||
KC_VOLD, KC_F4, KC_F5, KC_F6, KC_END, KC_NO,
|
|
||||||
KC_TRNS, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_INS, KC_TRNS,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
switch(id) {
|
|
||||||
case TEENSY:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
uint8_t layer = biton32(layer_state);
|
|
||||||
|
|
||||||
ergodox_board_led_off();
|
|
||||||
ergodox_right_led_1_off();
|
|
||||||
ergodox_right_led_2_off();
|
|
||||||
ergodox_right_led_3_off();
|
|
||||||
switch (layer) {
|
|
||||||
case 1:
|
|
||||||
ergodox_right_led_1_on();
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
ergodox_right_led_2_on();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
|
||||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ # nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
// Netable differences vs. the default firmware for the ErgoDox EZ:
|
|
||||||
// 1. The Cmd key is now on the right side, making Cmd+Space easier.
|
|
||||||
// 2. The media keys work on OSX (But not on Windows).
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define MDIA 2 // media keys
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | = | 1 | 2 | 3 | 4 | 5 | '" | | '" | 6 | 7 | 8 | 9 | 0 | BkSp |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Tab | Q | W | E | R | T | ~L1 | | ~L1 | Y | U | I | O | P | - |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| / |
|
|
||||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
|
||||||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |Grv/L1| Alt |AltShf| Left | Right| | Up | Down | [ | ] | L1 |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | App | LGui | | Esc |Ctrl/Esc|
|
|
||||||
* ,------|------|------| |------+--------+------.
|
|
||||||
* | | | ( | | { | | |
|
|
||||||
* | Space| LGui |------| |------| RGui |Enter |
|
|
||||||
* | | | ) | | } | | |
|
|
||||||
* `--------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
|
||||||
// Otherwise, it needs KC_*
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_QUOT,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TT(SYMB),
|
|
||||||
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
|
|
||||||
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
|
||||||
LT(SYMB,KC_GRV),KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
|
||||||
ALT_T(KC_APP), KC_LGUI,
|
|
||||||
KC_LPRN,
|
|
||||||
KC_SPC,KC_LGUI,KC_RPRN,
|
|
||||||
// right hand
|
|
||||||
KC_QUOT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
|
||||||
TT(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_BSLS,
|
|
||||||
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
|
||||||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TG(1),
|
|
||||||
KC_ESC, CTL_T(KC_ESC),
|
|
||||||
KC_LCBR,
|
|
||||||
KC_RCBR,KC_RGUI, KC_ENT
|
|
||||||
),
|
|
||||||
/* Keymap 1: Symbol Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | . | 0 | = | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// SYMBOLS
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
|
||||||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
|
||||||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
|
||||||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
|
||||||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
|
||||||
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
/* Keymap 2: Media and mouse keys
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | MsUp | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | Prev | Next | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | | | | | |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | |Brwser|
|
|
||||||
* | | |------| |------| |Back |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
// MEDIA AND MOUSE
|
|
||||||
LAYOUT_ergodox(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// 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_MPLY,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_WBAK
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 = biton32(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2016 Kaleb Elwert
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
# Belak's Ergodox Layout
|
|
||||||
|
|
||||||
This has been based off of [emacs\_osx\_dk](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ergodox/emacs_osx_dk)
|
|
||||||
from the main qmk repo. However, I've taken some of the ideas for the thumbs
|
|
||||||
from [dvorak\_emacs](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ergodox/dvorak_emacs)
|
|
||||||
and tweaked it a bit based on the keycaps I have.
|
|
||||||
|
|
||||||
This keyboard is intended for use in emacs (one of the main reasons for easy
|
|
||||||
access to modifiers) but it could be useful in other instances as well.
|
|
||||||
|
|
||||||
The main repo is used as a testbed, so sometimes the layout may be in a strange
|
|
||||||
state. The qmk version should be relatively stable.
|
|
||||||
|
|
||||||
## Instructions
|
|
||||||
|
|
||||||
This is currently being used on a regular ergodox, but it should work fine on
|
|
||||||
the infinity as well. Though, you may have to modify the commands to build and
|
|
||||||
flash the firmware to match the separate halves as defined in the infinity
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
If you are using this keymap in the qmk repo, you should be able to just run
|
|
||||||
`make ergodox-belak-teensy`. If you're using this externally (I sometimes make
|
|
||||||
changes before syncing them to qmk), use the following instructions:
|
|
||||||
|
|
||||||
1. Clone the main qmk repo
|
|
||||||
2. Clone this to `$QMK/keyboards/ergodox/keymaps/belak-external`
|
|
||||||
3. Run `make ergodox-belak-external-teensy` from the root of the qmk repo.
|
|
||||||
|
|
||||||
## Changelog
|
|
||||||
|
|
||||||
Fifth Revision
|
|
||||||
|
|
||||||
* Change layer keys to tap-dance keys which cycle through additional layers
|
|
||||||
* Add a few emoji keys (in preparation for an emoji layer)
|
|
||||||
|
|
||||||
Fourth Revision
|
|
||||||
|
|
||||||
* Remove media layer
|
|
||||||
* Add a layer which swaps control and gui on the thumb keys.
|
|
||||||
* Add some basic code to save settings to the eeprom
|
|
||||||
* Save the state of the keys swapped in the thumb in the eeprom
|
|
||||||
|
|
||||||
Third Revision
|
|
||||||
|
|
||||||
* Add numpad layer and remove numpad from symbols layer
|
|
||||||
* Disable media layer
|
|
||||||
* Add arrow keys on ijkl to the symbols layer
|
|
||||||
* Replace ALT on held enter and held delete with GUI (for better OSX
|
|
||||||
compatibility, as there's already an ALT key relatively close)
|
|
||||||
* Replace keys above enter and delete with temporary layer switch buttons not
|
|
||||||
matching the other layer switch for that hand.
|
|
||||||
* Reindent and space out most of the layer definitions
|
|
||||||
|
|
||||||
Second Revision
|
|
||||||
|
|
||||||
* Clean up definitions to make differences between layers easier to see
|
|
||||||
* Remove old LCD code
|
|
||||||
* Add new LCD code based on fredizzimo's branch
|
|
||||||
|
|
||||||
First Revision
|
|
||||||
|
|
||||||
* Reverse grave and escape
|
|
||||||
|
|
||||||
Initial Version
|
|
||||||
|
|
||||||
* Copy from emacs\_osx\_dk
|
|
||||||
* "Fix" right alt
|
|
||||||
* Change thumb keys to match default layout (backspace, delete, enter, space)
|
|
||||||
* Add modifiers to thumb keys (ctrl to backspace and space, alt to delete and
|
|
||||||
enter)
|
|
||||||
* Replace the RAlt below the brackets with LGui and RGui
|
|
||||||
* Remove LCtrl and RCtrl from the keys above shift
|
|
||||||
* Add browser forward, and move browser back
|
|
||||||
* "Fix" the order of volume keys
|
|
||||||
|
|
||||||
## Repository
|
|
||||||
|
|
||||||
The original code for this is kept at https://github.com/belak/ergodox-layout and
|
|
||||||
is synced to qmk every few main revisions.
|
|
||||||
@@ -1,367 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "eeconfig.h"
|
|
||||||
#include "eeprom.h"
|
|
||||||
|
|
||||||
#define LAYER_ON(pos) ((layer_state) & (1<<(pos)))
|
|
||||||
|
|
||||||
#define EECONFIG_BELAK_MAGIC (uint16_t)0xBE42
|
|
||||||
|
|
||||||
// NOTE: This is just a number that's a bit beyond the end of what's already
|
|
||||||
// defined. As there is no other define we can base this on, it may need to be
|
|
||||||
// changed in the future. The initial value here is used as a placeholder with a
|
|
||||||
// magic word, similar to the normal eeconfig. Note that all the storage being
|
|
||||||
// used needs to fit inside the 32 bytes of the Ergodox Infinity.
|
|
||||||
#define EECONFIG_BELAK (uint16_t *)16
|
|
||||||
|
|
||||||
// The correct way to do this would be how the normal eeconfig handles it and
|
|
||||||
// use a bitfield. However, the eeprom has a ton of space which isn't being
|
|
||||||
// used so I don't really care and have a separate byte for every setting.
|
|
||||||
#define EECONFIG_BELAK_SWAP_GUI_CTRL (uint8_t *)18
|
|
||||||
|
|
||||||
static uint8_t swap_gui_ctrl = 0;
|
|
||||||
static uint8_t td_led_override = 0;
|
|
||||||
|
|
||||||
enum belak_keycodes {
|
|
||||||
// Function codes
|
|
||||||
BEL_F0 = SAFE_RANGE,
|
|
||||||
BEL_F1,
|
|
||||||
|
|
||||||
E_SHRUG,
|
|
||||||
E_TFLIP,
|
|
||||||
E_TSET,
|
|
||||||
};
|
|
||||||
|
|
||||||
inline void tap(uint16_t keycode) {
|
|
||||||
register_code(keycode);
|
|
||||||
unregister_code(keycode);
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: Add LED support to the tap dance by using the advanced macro
|
|
||||||
#define LTOGGLE TD(TD_LAYER_TOGGLE)
|
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
|
||||||
#define SYMB 1 // symbols
|
|
||||||
#define NUMP 2 // numpad
|
|
||||||
#define SWPH 3 // swap gui/ctrl on the hands
|
|
||||||
|
|
||||||
enum belak_td {
|
|
||||||
TD_LAYER_TOGGLE = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
void belak_td_each(qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void belak_td_finished(qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void belak_td_reset(qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN_ADVANCED(belak_td_each, belak_td_finished, belak_td_reset),
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Basic layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | Esc | 1 | 2 | 3 | 4 | 5 | L1 | | L2 | 6 | 7 | 8 | 9 | 0 | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | - |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | \ | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
|
||||||
* |--------+------+------+------+------+------| LGui | | RGui |------+------+------+------+------+--------|
|
|
||||||
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |Layers| LCtrl| Left | Right| LAlt | | RAlt | Up | Down | RCtrl|Layers|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,--------------.
|
|
||||||
* | ~L2 | Ins | | Grv | ~L1 |
|
|
||||||
* ,-------|------|------| |------+-------+-------.
|
|
||||||
* | Back | | Home | | PgUp | | |
|
|
||||||
* | Space | Del |------| |------| Enter | Space |
|
|
||||||
* | | | End | | PgDn | | |
|
|
||||||
* `---------------------' `----------------------'
|
|
||||||
*/
|
|
||||||
[BASE] = LAYOUT_ergodox( // layer 0 : default
|
|
||||||
// left hand
|
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, TG(SYMB),
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
|
|
||||||
CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI,
|
|
||||||
LTOGGLE, KC_LCTRL, KC_LEFT,KC_RGHT,KC_LALT,
|
|
||||||
MO(NUMP),KC_INS,
|
|
||||||
KC_HOME,
|
|
||||||
CTL_T(KC_BSPC),GUI_T(KC_DEL),KC_END,
|
|
||||||
// right hand
|
|
||||||
TG(NUMP), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
|
|
||||||
KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
|
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
||||||
KC_RGUI, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
KC_RALT,KC_UP, KC_DOWN,KC_RCTRL, LTOGGLE,
|
|
||||||
KC_GRV, MO(SYMB),
|
|
||||||
KC_PGUP,
|
|
||||||
KC_PGDN, GUI_T(KC_ENT), CTL_T(KC_SPC)
|
|
||||||
),
|
|
||||||
/* Keymap 1: Symbol Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | ! | @ | { | } | | | | | | Up | | Up | | | F12 |
|
|
||||||
* |--------+------+------+------+------+------| TFLIP| | TSET |------+------+------+------+------+--------|
|
|
||||||
* | | # | $ | ( | ) | ` |------| |------| Down | Left | Down | Rght | | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | % | ^ | [ | ] | ~ | SHRUG| | | & | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |LClear| | | | | | | | | |LClear|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | TOGL | | | | TOGL |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[SYMB] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, E_TFLIP,
|
|
||||||
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, E_TSET,
|
|
||||||
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
|
|
||||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, E_SHRUG,
|
|
||||||
BEL_F1, _______, _______, _______, _______,
|
|
||||||
BEL_F0, _______,
|
|
||||||
_______,
|
|
||||||
_______, _______, _______,
|
|
||||||
// right hand
|
|
||||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
_______, KC_UP, _______, KC_UP, _______, _______, KC_F12,
|
|
||||||
KC_DOWN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
|
||||||
_______, KC_AMPR, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, BEL_F1,
|
|
||||||
_______, BEL_F0,
|
|
||||||
_______,
|
|
||||||
_______, _______, _______
|
|
||||||
),
|
|
||||||
/* Keymap 2: Numpad Layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | 7 | 8 | 9 | * | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |------| |------| | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | 1 | 2 | 3 | \ | |
|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
||||||
* |LClear| | | | | | 0 | 0 | . | = |LClear|
|
|
||||||
* `----------------------------------' `----------------------------------'
|
|
||||||
* ,-------------. ,-------------.
|
|
||||||
* | TOGL | | | | TOGL |
|
|
||||||
* ,------|------|------| |------+------+------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[NUMP] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
BEL_F1, _______, _______, _______, _______,
|
|
||||||
BEL_F0, _______,
|
|
||||||
_______,
|
|
||||||
_______, _______, _______,
|
|
||||||
// right hand
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, KC_7, KC_8, KC_9, KC_ASTR, _______,
|
|
||||||
_______, KC_4, KC_5, KC_6, KC_PLUS, _______,
|
|
||||||
_______, _______, KC_1, KC_2, KC_3, KC_BSLS, _______,
|
|
||||||
KC_0, KC_0, KC_DOT, KC_EQL, BEL_F1,
|
|
||||||
_______, BEL_F0,
|
|
||||||
_______,
|
|
||||||
_______, _______, _______
|
|
||||||
),
|
|
||||||
/* Keymap 3: Swap control and gui on the thumb */
|
|
||||||
[SWPH] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______,
|
|
||||||
_______, _______,
|
|
||||||
_______,
|
|
||||||
GUI_T(KC_BSPC), CTL_T(KC_DEL), _______,
|
|
||||||
// right hand
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______,
|
|
||||||
_______, _______,
|
|
||||||
_______,
|
|
||||||
_______, CTL_T(KC_ENT), GUI_T(KC_SPC)
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Runs just one time when the keyboard initializes.
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
// If our magic word wasn't set properly, we need to zero out the settings.
|
|
||||||
if (eeprom_read_word(EECONFIG_BELAK) != EECONFIG_BELAK_MAGIC) {
|
|
||||||
eeprom_update_word(EECONFIG_BELAK, EECONFIG_BELAK_MAGIC);
|
|
||||||
eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eeprom_read_byte(EECONFIG_BELAK_SWAP_GUI_CTRL)) {
|
|
||||||
layer_on(SWPH);
|
|
||||||
swap_gui_ctrl = 1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
ergodox_board_led_off();
|
|
||||||
ergodox_right_led_1_off();
|
|
||||||
ergodox_right_led_2_off();
|
|
||||||
ergodox_right_led_3_off();
|
|
||||||
|
|
||||||
switch (td_led_override) {
|
|
||||||
case 1:
|
|
||||||
ergodox_right_led_1_on();
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
ergodox_right_led_2_on();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Layer 1 and 2 are both overlay layers, so they could both be on. This
|
|
||||||
// means we can't use the lazy check of checking for the first significant
|
|
||||||
// bit.
|
|
||||||
if (LAYER_ON(SYMB)) {
|
|
||||||
ergodox_right_led_1_on();
|
|
||||||
}
|
|
||||||
if (LAYER_ON(NUMP)) {
|
|
||||||
ergodox_right_led_2_on();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case BEL_F0:
|
|
||||||
if(record->event.pressed){
|
|
||||||
swap_gui_ctrl = !swap_gui_ctrl;
|
|
||||||
eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, swap_gui_ctrl);
|
|
||||||
|
|
||||||
if (swap_gui_ctrl) {
|
|
||||||
layer_on(SWPH);
|
|
||||||
} else {
|
|
||||||
layer_off(SWPH);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BEL_F1:
|
|
||||||
if(record->event.pressed){
|
|
||||||
layer_off(SYMB);
|
|
||||||
layer_off(NUMP);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case E_SHRUG: // ¯\_(ツ)_/¯
|
|
||||||
if (record->event.pressed) {
|
|
||||||
process_unicode((0x00AF|QK_UNICODE), record); // Hand
|
|
||||||
tap(KC_BSLS); // Arm
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
tap(KC_UNDS); // Arm
|
|
||||||
tap(KC_LPRN); // Head
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
process_unicode((0x30C4|QK_UNICODE), record); // Face
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
tap(KC_RPRN); // Head
|
|
||||||
tap(KC_UNDS); // Arm
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
tap(KC_SLSH); // Arm
|
|
||||||
process_unicode((0x00AF|QK_UNICODE), record); // Hand
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case E_TFLIP: // (╯°□°)╯ ︵ ┻━┻
|
|
||||||
if (record->event.pressed) {
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
tap(KC_9);
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
process_unicode((0x256F|QK_UNICODE), record); // Arm
|
|
||||||
process_unicode((0x00B0|QK_UNICODE), record); // Eye
|
|
||||||
process_unicode((0x25A1|QK_UNICODE), record); // Mouth
|
|
||||||
process_unicode((0x00B0|QK_UNICODE), record); // Eye
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
tap(KC_0);
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
process_unicode((0x256F|QK_UNICODE), record); // Arm
|
|
||||||
tap(KC_SPC);
|
|
||||||
process_unicode((0x0361|QK_UNICODE), record); // Flippy
|
|
||||||
tap(KC_SPC);
|
|
||||||
process_unicode((0x253B|QK_UNICODE), record); // Table
|
|
||||||
process_unicode((0x2501|QK_UNICODE), record); // Table
|
|
||||||
process_unicode((0x253B|QK_UNICODE), record); // Table
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case E_TSET: // ┬──┬ ノ( ゜-゜ノ)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
process_unicode((0x252C|QK_UNICODE), record); // Table
|
|
||||||
process_unicode((0x2500|QK_UNICODE), record); // Table
|
|
||||||
process_unicode((0x2500|QK_UNICODE), record); // Table
|
|
||||||
process_unicode((0x252C|QK_UNICODE), record); // Table
|
|
||||||
tap(KC_SPC);
|
|
||||||
process_unicode((0x30CE|QK_UNICODE), record); // Arm
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
tap(KC_9);
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
tap(KC_SPC);
|
|
||||||
process_unicode((0x309C|QK_UNICODE), record); // Eye
|
|
||||||
tap(KC_MINS);
|
|
||||||
process_unicode((0x309C|QK_UNICODE), record); // Eye
|
|
||||||
process_unicode((0x30CE|QK_UNICODE), record); // Arm
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
tap(KC_0);
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void belak_td_each(qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
switch (state->count) {
|
|
||||||
case 1:
|
|
||||||
td_led_override = 1;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
td_led_override = 2;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
reset_tap_dance(state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void belak_td_finished(qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
switch (state->count) {
|
|
||||||
case 1:
|
|
||||||
layer_on(SYMB);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
layer_on(NUMP);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
td_led_override = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void belak_td_reset(qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
td_led_override = 0;
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
TAP_DANCE_ENABLE=yes
|
|
||||||
UNICODE_ENABLE=yes
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2017 Fred Sundvik
|
|
||||||
|
|
||||||
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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Currently we are assuming that both the backlight and LCD are enabled
|
|
||||||
// But it's entirely possible to write a custom visualizer that use only
|
|
||||||
// one of them
|
|
||||||
#ifndef LCD_BACKLIGHT_ENABLE
|
|
||||||
#error This visualizer needs that LCD backlight is enabled
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LCD_ENABLE
|
|
||||||
#error This visualizer needs that LCD is enabled
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "simple_visualizer.h"
|
|
||||||
|
|
||||||
static void get_visualizer_layer_and_color(visualizer_state_t* state) {
|
|
||||||
uint8_t saturation = 60;
|
|
||||||
if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
|
|
||||||
saturation = 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (state->status.layer & 0x4) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
|
|
||||||
state->layer_text = "Media";
|
|
||||||
}
|
|
||||||
else if (state->status.layer & 0x2) {
|
|
||||||
state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
|
|
||||||
state->layer_text = "Symbols";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
|
|
||||||
state->layer_text = "Base";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,368 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "keymap_bepo.h"
|
|
||||||
#include "keymap_french.h"
|
|
||||||
|
|
||||||
// keymaps
|
|
||||||
#define BEPO 0 // default layer, for bepo compatible systems
|
|
||||||
#define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems
|
|
||||||
#define QW_A 2 // bepo with altgr key to qwerty compat layer
|
|
||||||
#define QW_S 3 // bepo with shift key to qwerty compat layer
|
|
||||||
#define AZ_B 4 // bepo to azerty base compat layer, for azerty systems
|
|
||||||
#define AZ_A 5 // bepo with altgr key to azerty compat layer
|
|
||||||
#define AZ_S 6 // bepo with shift key to azerty compat layer
|
|
||||||
#define FNAV 7 // function / navigation / mouse layer
|
|
||||||
#define NUMK 8 // numeric keypad layer
|
|
||||||
|
|
||||||
// macros
|
|
||||||
#define KP_00 0 // keypad "double 0"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: default layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | % | B |E_ACUT| P | O |E_GRAV|Backsp| |CapsLo| ^ | V | D | L | J | Z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | W | A | U | I | E | , |------| |------| C | T | S | R | N | M |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | E_CIRC |A_GRAV| Y | X | . | K | | | | ' | Q | G | H | F | C_CEDIL|
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[BEPO] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL,
|
|
||||||
BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC,
|
|
||||||
BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA,
|
|
||||||
BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB,
|
|
||||||
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
|
||||||
DF(BEPO), DF(QW_B),
|
|
||||||
MO(NUMK),
|
|
||||||
KC_SPC, KC_LSHIFT, MO(FNAV),
|
|
||||||
// Right hand
|
|
||||||
KC_SLCK, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL,
|
|
||||||
KC_CAPSLOCK, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z,
|
|
||||||
BP_C, BP_T, BP_S, BP_R, BP_N, BP_M,
|
|
||||||
KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED,
|
|
||||||
KC_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
|
||||||
DF(AZ_B), DF(BEPO),
|
|
||||||
MO(NUMK),
|
|
||||||
MO(FNAV), KC_RSHIFT, KC_ENTER),
|
|
||||||
/* Keymap 1: bepo to qwerty base compat layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | % | b | e | p | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | w | a | u | i | e | , |------| |------| c | t | s | r | n | m |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | e | a | y | x | . | k | | | | ' | q | g | h | f | c |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[QW_B] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL,
|
|
||||||
KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC,
|
|
||||||
KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA,
|
|
||||||
KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB,
|
|
||||||
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_SPC, MO(QW_S), KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL,
|
|
||||||
KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
|
|
||||||
KC_C, KC_T, KC_S, KC_R, KC_N, KC_M,
|
|
||||||
KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C,
|
|
||||||
MO(QW_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, MO(QW_S), KC_ENTER),
|
|
||||||
/* Keymap 2: bepo with altgr key to qwerty compat layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | w | a | u | i | € | , |------| |------| c | t | s | r | n | m |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | _ |LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[QW_A] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL,
|
|
||||||
KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC,
|
|
||||||
KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA,
|
|
||||||
KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB,
|
|
||||||
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_UNDS, MO(QW_S), KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL,
|
|
||||||
KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
|
|
||||||
KC_C, KC_T, KC_S, KC_R, KC_N, KC_M,
|
|
||||||
KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C,
|
|
||||||
KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, MO(QW_S), KC_ENTER),
|
|
||||||
/* Keymap 3: bepo with shift key to qwerty compat layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | ` | B | E | P | O | E |Backsp| |CapsLo| ! | V | D | L | J | Z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | W | A | U | I | E | ; |------| |------| C | T | S | R | N | M |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[QW_S] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
KC_HASH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
|
||||||
KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS,
|
|
||||||
S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON,
|
|
||||||
S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB),
|
|
||||||
S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT),
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
|
||||||
KC_TRNS, KC_EXLM, S(KC_V), S(KC_D), S(KC_L), S(KC_J), S(KC_Z),
|
|
||||||
S(KC_C), S(KC_T), S(KC_S), S(KC_R), S(KC_N), S(KC_M),
|
|
||||||
KC_TRNS, S(KC_SLASH), S(KC_Q), S(KC_G), S(KC_H), S(KC_F), S(KC_C),
|
|
||||||
S(KC_RALT), S(KC_RCTL), S(KC_RGUI), KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
/* Keymap 4: bepo to azerty base compat layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | % | b |e_acut| p | o |e_grav|Backsp| |CapsLo| ^ | v | d | l | j | z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | w | a | u | i | e | , |------| |------| c | t | s | r | n | m |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | e |a_grav| y | x | . | k | | | | ' | q | g | h | f | c_cedil|
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[AZ_B] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LPRN, FR_RPRN, KC_DEL,
|
|
||||||
FR_PERC, KC_B, FR_EACU, KC_P, KC_O, FR_EGRV, KC_BSPC,
|
|
||||||
FR_W, FR_A, KC_U, KC_I, KC_E, FR_COMM,
|
|
||||||
KC_E, FR_AGRV, KC_Y, KC_X, FR_DOT, KC_K, KC_TAB,
|
|
||||||
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_SPC, MO(AZ_S), KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL,
|
|
||||||
KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z,
|
|
||||||
KC_C, KC_T, KC_S, KC_R, KC_N, FR_M,
|
|
||||||
KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED,
|
|
||||||
MO(AZ_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, MO(AZ_S), KC_ENTER),
|
|
||||||
/* Keymap 5: bepo with altgr key to azerty compat layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | w | a |u_grav| trem | € | , |------| |------| c | t | s | r | n | m |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | / | \ | { | } | . | ~ | | | | ' | q | g | h | f | c |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | _ |LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[AZ_A] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LBRC, FR_RBRC, KC_DEL,
|
|
||||||
FR_PERC, FR_PIPE, FR_EACU, FR_AMP, KC_O, FR_EGRV, KC_BSPC,
|
|
||||||
FR_W, FR_A, FR_UGRV, S(KC_LBRC), FR_EURO, FR_COMM,
|
|
||||||
FR_SLSH, FR_BSLS, FR_LCBR, FR_RCBR, FR_DOT, FR_TILD, KC_TAB,
|
|
||||||
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
FR_UNDS, MO(AZ_S), KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL,
|
|
||||||
KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z,
|
|
||||||
KC_C, KC_T, KC_S, KC_R, KC_N, FR_M,
|
|
||||||
KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED,
|
|
||||||
KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, MO(AZ_S), KC_ENTER),
|
|
||||||
/* Keymap 6: bepo with shift key to azerty compat layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | ° |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | ` | B | E | P | O | E |Backsp| |CapsLo| ! | V | D | L | J | Z |
|
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
|
||||||
* | W | A | U | I | E | ; |------| |------| C | T | S | R | N | M |
|
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
|
||||||
* | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | |L_NumK| |L_NumK| | |
|
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
|
||||||
* | | |L_FNav| |L_FNav| | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[AZ_S] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
FR_HASH, FR_1, FR_2, FR_3, FR_4, FR_5, KC_TRNS,
|
|
||||||
FR_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS,
|
|
||||||
S(FR_W), S(FR_A), S(KC_U), S(KC_I), S(KC_E), FR_SCLN,
|
|
||||||
S(KC_E), S(FR_A), S(KC_Y), S(KC_X), FR_COLN, S(KC_K), S(KC_TAB),
|
|
||||||
S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT),
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_TRNS, FR_6, FR_7, FR_8, FR_9, FR_0, FR_OVRR,
|
|
||||||
KC_TRNS, FR_EXLM, S(KC_V), S(KC_D), S(KC_L), S(KC_J), S(FR_Z),
|
|
||||||
S(KC_C), S(KC_T), S(KC_S), S(KC_R), S(KC_N), S(FR_M),
|
|
||||||
KC_TRNS, FR_QUES, S(FR_Q), S(KC_G), S(KC_H), S(KC_F), S(KC_C),
|
|
||||||
S(KC_RALT), S(KC_RCTL), S(KC_RGUI), KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
/* Keymap 7: function / navigation / mouse layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | Next |LClick| Up |RClick| WhUp |VolDwn| | | PgUp | Home | Up | End | F11 | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | Prev | Left | Down | Right|WhDown|------| |------| PgDn | Left | Down | Right| F12 | |
|
|
||||||
* |--------+------+------+------+------+------| VolUp| | |------+------+------+------+------+--------|
|
|
||||||
* | | Undo | Cut | Copy | Paste| | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[FNAV] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE,
|
|
||||||
KC_NO, KC_MS_BTN5, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_VOLU,
|
|
||||||
KC_NO, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
|
|
||||||
KC_NO, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_VOLD,
|
|
||||||
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_NO, KC_TRNS, KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
|
||||||
KC_NO, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_F11, KC_NO,
|
|
||||||
KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F12, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_NO),
|
|
||||||
/* Keymap 8: numeric keypad layer, sends keypad codes
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | NumLo| / | * | - | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | 7 | 8 | 9 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |------| |------| | 4 | 5 | 6 | + | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | 1 | 2 | 3 | Enter| |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | | | 0 | 00 | . | Enter| |
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | |
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[NUMK] = LAYOUT_ergodox(
|
|
||||||
// Left hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_NO, KC_TRNS, KC_TRNS,
|
|
||||||
// Right hand
|
|
||||||
KC_NO, KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO,
|
|
||||||
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_PLUS, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_NO,
|
|
||||||
KC_KP_0, M(KP_00), KC_KP_COMMA, KC_KP_ENTER, KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_NO)
|
|
||||||
};
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|
||||||
{
|
|
||||||
switch(id) {
|
|
||||||
// keypad "double 0"
|
|
||||||
case KP_00:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO( T(KP_0), D(KP_0), END );
|
|
||||||
} else {
|
|
||||||
return MACRO( U(KP_0), END );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||
# BEPO keymap for the ErgoDox
|
|
||||||
|
|
||||||
This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this readme will be in french.
|
|
||||||
|
|
||||||
# Disposition BÉPO pour l'ErgoDox
|
|
||||||
|
|
||||||
Cette keymap a été pensée pour la disposition BÉPO (http://bepo.fr), qui est une disposition de clavier francophone, ergonomique et libre, élaborée selon la méthode Dvorak. L'adaptation de cette disposition à l'ErgoDox a été réalisée en conservant les points forts du clavier TypeMatrix 2030 (très répandu dans la communauté bépo, avec un excellent rapport ergonomie / prix) voir en réglant certains de ses défauts (3 colonnes pour l'auriculaire droit et touche "Ê") et en apportant son lot de nouveautés (compatibilité avec les systèmes azerty et qwerty).
|
|
||||||
|
|
||||||
Particularités
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Touches de repos des pouces : "espace" à gauche et "entrée" à droite.
|
|
||||||
|
|
||||||
Placement des touches de combinaison ("Shift", "Alt", "Ctrl"...) adapté aux pouces, et permettant de conserver chaque doigt pour les rangées de lettres auxquelles ils sont assignés sans avoir à changer la touche de combinaison de côté (exemple : "A" majuscule puis "M" majuscule avec les auriculaires et un seul appui d'une touche "Shift").
|
|
||||||
|
|
||||||
Les touches "Alt" et "Alt Gr" sont accessibles avec les pouces sur la rangée du bas comme sur la TypeMatrix 2030, avec une symétrie gauche / droite.
|
|
||||||
|
|
||||||
Les touches "Ctrl" sont placées sur la même ligne que les touche "Alt" et "Alt Gr" comme sur un clavier clasique, elles sont accessibles aux pouces sur la rangée du bas (moins éloigné que le groupe de touches de pouces pour des petites mains).
|
|
||||||
|
|
||||||
Les touches "Backspace" et "Delete" sont placées comme sur la TypeMatrix 2030, du côté gauche uniquement (pour laisser celles de la main droite servir de {caps,num,scroll}lock puisqu'elles ont des LED).
|
|
||||||
|
|
||||||
La touche "Tab" est placée comme sur la TypeMatrix 2020.
|
|
||||||
|
|
||||||
Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO".
|
|
||||||
|
|
||||||
Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite et d'effectuer des actions souris avec uniquement la main gauche. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long).
|
|
||||||
|
|
||||||
Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0".
|
|
||||||
|
|
||||||
Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour des accès BIOS ou console en QWERTY.
|
|
||||||
|
|
||||||
Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier AZERTY. Cette compatibilité n'est pas parfaite (pas de gestion des caractères non présents sur le clavier AZERTY, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour faire du bureau à distance vers un système Windows sans BEPO.
|
|
||||||
|
|
||||||
> Olivier Smedts <olivier@gid0.org>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Having a file like this allows you to override Makefile definitions
|
|
||||||
# for your own particular keymap
|
|
||||||
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user