[Keymap] the results of some experiments and radically simplify keymap.c (#6172)
* keymap simplification and fancy alt tab behaviour * move symbols around and try ergo numbers * mess with symbol positions * f11 and f12 for volume control (for ease of remapping) * slack unread navigation * experiment with mods on home row * mods on symbol layer * dedicated tab left and tab right keys * swap next and prev * remove hold to shift on a and o * revert to simpler keymap * restore readme * point to keymap image * cmd + cmd -> cmd + ctrl * expand readme * slack unread channel navigation * Update keyboards/planck/keymaps/callum/keymap.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * return true from cmd handling blockmaster
parent
48b5903677
commit
5b776cfc2d
|
@ -1,7 +0,0 @@
|
||||||
#define MOUSEKEY_DELAY 0
|
|
||||||
#define MOUSEKEY_INTERVAL 16
|
|
||||||
#define MOUSEKEY_MAX_SPEED 20
|
|
||||||
#define MOUSEKEY_TIME_TO_MAX 100
|
|
||||||
#define MOUSEKEY_WHEEL_DELAY 0
|
|
||||||
#define MOUSEKEY_WHEEL_MAX_SPEED 1
|
|
||||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
|
|
|
@ -1,331 +1,259 @@
|
||||||
#include "planck.h"
|
#include "planck.h"
|
||||||
#include "action_layer.h"
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
#define a KC_A
|
||||||
|
#define b KC_B
|
||||||
|
#define c KC_C
|
||||||
|
#define d KC_D
|
||||||
|
#define e KC_E
|
||||||
|
#define f KC_F
|
||||||
|
#define g KC_G
|
||||||
|
#define h KC_H
|
||||||
|
#define i KC_I
|
||||||
|
#define j KC_J
|
||||||
|
#define k KC_K
|
||||||
|
#define l KC_L
|
||||||
|
#define m KC_M
|
||||||
|
#define n KC_N
|
||||||
|
#define o KC_O
|
||||||
|
#define p KC_P
|
||||||
|
#define q KC_Q
|
||||||
|
#define r KC_R
|
||||||
|
#define s KC_S
|
||||||
|
#define t KC_T
|
||||||
|
#define u KC_U
|
||||||
|
#define v KC_V
|
||||||
|
#define w KC_W
|
||||||
|
#define x KC_X
|
||||||
|
#define y KC_Y
|
||||||
|
#define z KC_Z
|
||||||
|
|
||||||
|
#define lalt KC_LALT
|
||||||
|
#define lctl KC_LCTL
|
||||||
|
#define lsft KC_LSFT
|
||||||
|
#define ralt KC_RALT
|
||||||
|
#define rctl KC_RCTL
|
||||||
|
#define rsft KC_RSFT
|
||||||
|
|
||||||
|
#define n0 KC_0
|
||||||
|
#define n1 KC_1
|
||||||
|
#define n2 KC_2
|
||||||
|
#define n3 KC_3
|
||||||
|
#define n4 KC_4
|
||||||
|
#define n5 KC_5
|
||||||
|
#define n6 KC_6
|
||||||
|
#define n7 KC_7
|
||||||
|
#define n8 KC_8
|
||||||
|
#define n9 KC_9
|
||||||
|
|
||||||
|
#define bspc KC_BSPC
|
||||||
|
#define caps KC_CAPS
|
||||||
|
#define comm KC_COMM
|
||||||
|
#define dash A(KC_MINS)
|
||||||
|
#define scln KC_SCLN
|
||||||
|
#define slsh KC_SLSH
|
||||||
|
#define spc KC_SPC
|
||||||
|
#define tab KC_TAB
|
||||||
|
#define del KC_DEL
|
||||||
|
#define dot KC_DOT
|
||||||
|
#define ent KC_ENT
|
||||||
|
#define mins KC_MINS
|
||||||
|
#define quot KC_QUOT
|
||||||
|
#define esc KC_ESC
|
||||||
|
#define gbp A(KC_3)
|
||||||
|
|
||||||
|
#define down KC_DOWN
|
||||||
|
#define home KC_HOME
|
||||||
|
#define end KC_END
|
||||||
|
#define up KC_UP
|
||||||
|
#define pgdn KC_PGDN
|
||||||
|
#define pgup KC_PGUP
|
||||||
|
#define left KC_LEFT
|
||||||
|
#define rght KC_RGHT
|
||||||
|
|
||||||
|
#define tabl S(C(KC_TAB))
|
||||||
|
#define tabr C(KC_TAB)
|
||||||
|
#define fwd G(KC_RBRC)
|
||||||
|
#define back G(KC_LBRC)
|
||||||
|
#define dtl C(KC_LEFT)
|
||||||
|
#define dtr C(KC_RGHT)
|
||||||
|
#define slup S(A(KC_UP))
|
||||||
|
#define sldn S(A(KC_DOWN))
|
||||||
|
|
||||||
|
#define f1 KC_F1
|
||||||
|
#define f2 KC_F2
|
||||||
|
#define f3 KC_F3
|
||||||
|
#define f4 KC_F4
|
||||||
|
#define f5 KC_F5
|
||||||
|
#define f6 KC_F6
|
||||||
|
#define f7 KC_F7
|
||||||
|
#define f8 KC_F8
|
||||||
|
#define f9 KC_F9
|
||||||
|
#define f10 KC_F10
|
||||||
|
#define f11 KC_F11
|
||||||
|
#define f12 KC_F12
|
||||||
|
#define f13 KC_F13
|
||||||
|
#define f14 KC_F14
|
||||||
|
#define f15 KC_F15
|
||||||
|
#define f16 KC_F16
|
||||||
|
#define f17 KC_F17
|
||||||
|
#define f18 KC_F18
|
||||||
|
#define f19 KC_F19
|
||||||
|
#define f20 KC_F20
|
||||||
|
|
||||||
|
#define mute KC_MUTE
|
||||||
|
#define next KC_MNXT
|
||||||
|
#define play KC_MPLY
|
||||||
|
#define prev KC_MPRV
|
||||||
|
#define vold KC_F11
|
||||||
|
#define volu KC_F12
|
||||||
|
|
||||||
|
#define symb MO(SYMB)
|
||||||
|
#define move MO(MOVE)
|
||||||
|
#define func MO(FUNC)
|
||||||
|
|
||||||
|
#define rset RESET
|
||||||
|
#define powr KC_POWER
|
||||||
|
|
||||||
|
#define ____ KC_TRNS
|
||||||
|
#define xxxx KC_NO
|
||||||
|
|
||||||
extern keymap_config_t keymap_config;
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
#define AC(X) A(C(X))
|
|
||||||
#define SC(X) S(C(X))
|
|
||||||
|
|
||||||
enum planck_layers {
|
enum planck_layers {
|
||||||
_COLEMAK,
|
BASE,
|
||||||
_QWERTY,
|
|
||||||
_SYMB,
|
|
||||||
_MOVE,
|
|
||||||
_FUNC,
|
|
||||||
_MOUSE,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum planck_keycodes {
|
|
||||||
COLEMAK = SAFE_RANGE,
|
|
||||||
QWERTY,
|
|
||||||
SYMB,
|
SYMB,
|
||||||
MOVE,
|
MOVE,
|
||||||
FUNC,
|
FUNC,
|
||||||
MOUSE,
|
};
|
||||||
|
|
||||||
|
enum planck_keycodes {
|
||||||
|
ampr = SAFE_RANGE,
|
||||||
|
astr,
|
||||||
|
at,
|
||||||
|
bsls,
|
||||||
|
circ,
|
||||||
|
dlr,
|
||||||
|
eql,
|
||||||
|
exlm,
|
||||||
|
grv,
|
||||||
|
hash,
|
||||||
|
lbrc,
|
||||||
|
lcbr,
|
||||||
|
lprn,
|
||||||
|
perc,
|
||||||
|
pipe,
|
||||||
|
plus,
|
||||||
|
rbrc,
|
||||||
|
rcbr,
|
||||||
|
rprn,
|
||||||
|
tild,
|
||||||
|
|
||||||
|
cmd,
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[BASE] = LAYOUT_planck_grid(
|
||||||
/* COLEMAK
|
tab, q, w, f, p, g, j, l, u, y, scln, mins,
|
||||||
* ,-----------------------------------------------------------------------.
|
bspc, a, r, s, t, d, h, n, e, i, o, quot,
|
||||||
* |Tab | Q | W | F | P | G | J | L | U | Y | ; | - |
|
lsft, z, x, c, v, b, k, m, comm, dot, slsh, rsft,
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
func, lctl, lalt, cmd, move, ent, spc, symb, cmd, ralt, rctl, func
|
||||||
* |Bksp | A | R | S | T | D | H | N | E | I | O | ' |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* |Shift| Z | X | C | V | B | K | M | , | . | / |Shift|
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
|
|
||||||
* `-----------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_COLEMAK] = LAYOUT_planck_grid(
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_F,
|
|
||||||
KC_P, KC_G, KC_J, KC_L,
|
|
||||||
KC_U, KC_Y, KC_SCLN, KC_MINS,
|
|
||||||
|
|
||||||
KC_BSPC, KC_A, KC_R, KC_S,
|
|
||||||
KC_T, KC_D, KC_H, KC_N,
|
|
||||||
KC_E, KC_I, KC_O, KC_QUOT,
|
|
||||||
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C,
|
|
||||||
KC_V, KC_B, KC_K, KC_M,
|
|
||||||
KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
|
|
||||||
FUNC, KC_LCTL, KC_LALT, KC_LGUI,
|
|
||||||
SYMB, KC_ENT, KC_SPC, MOVE,
|
|
||||||
KC_RGUI, KC_RALT, KC_RCTL, FUNC
|
|
||||||
),
|
),
|
||||||
|
|
||||||
/* QWERTY
|
[SYMB] = LAYOUT_planck_grid(
|
||||||
* ,-----------------------------------------------------------------------.
|
esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash,
|
||||||
* |Tab | Q | W | E | R | T | Y | U | I | O | P | - |
|
del, bsls, hash, astr, eql, pipe, at, rprn, lprn, dlr, ampr, gbp,
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
caps, grv, exlm, lbrc, rbrc, circ, tild, rcbr, lcbr, plus, perc, caps,
|
||||||
* |Bksp | A | S | D | F | G | H | J | K | L | ; | ' |
|
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* |Shift| Z | X | C | V | B | N | M | , | . | / |Shift|
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
|
|
||||||
* `-----------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_QWERTY] = LAYOUT_planck_grid(
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E,
|
|
||||||
KC_R, KC_T, KC_Y, KC_U,
|
|
||||||
KC_I, KC_O, KC_P, KC_MINS,
|
|
||||||
|
|
||||||
KC_BSPC, KC_A, KC_S, KC_D,
|
|
||||||
KC_F, KC_G, KC_H, KC_J,
|
|
||||||
KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
||||||
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C,
|
|
||||||
KC_V, KC_B, KC_N, KC_M,
|
|
||||||
KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
|
|
||||||
FUNC, KC_LCTL, KC_LALT, KC_LGUI,
|
|
||||||
SYMB, KC_ENT, KC_SPC, MOVE,
|
|
||||||
KC_RGUI, KC_RALT, KC_RCTL, FUNC
|
|
||||||
),
|
),
|
||||||
|
|
||||||
/* SYMB
|
[MOVE] = LAYOUT_planck_grid(
|
||||||
* ,-----------------------------------------------------------------------.
|
esc, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, xxxx,
|
||||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |ndash|
|
del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, xxxx,
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
____, xxxx, xxxx, back, fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____,
|
||||||
* | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ |
|
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | | | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_SYMB] = LAYOUT_planck_grid(
|
|
||||||
KC_ESC, KC_1, KC_2, KC_3,
|
|
||||||
KC_4, KC_5, KC_6, KC_7,
|
|
||||||
KC_8, KC_9, KC_0, A(KC_MINS),
|
|
||||||
|
|
||||||
KC_DEL, KC_EXLM, KC_AT, KC_HASH,
|
|
||||||
KC_DLR, KC_PERC, KC_CIRC, KC_AMPR,
|
|
||||||
KC_ASTR, KC_LPRN, KC_RPRN, A(KC_3),
|
|
||||||
|
|
||||||
_______, KC_TILD, KC_GRV, KC_PLUS,
|
|
||||||
KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC,
|
|
||||||
KC_RBRC, KC_LCBR, KC_RCBR, _______,
|
|
||||||
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______
|
|
||||||
),
|
),
|
||||||
|
|
||||||
/* MOVE
|
[FUNC] = LAYOUT_planck_grid(
|
||||||
* ,-----------------------------------------------------------------------.
|
rset, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, volu,
|
||||||
* | | | | | | |CtrUp|Home | Up | End |Caps |Mouse|
|
powr, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, vold,
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
____, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, ____,
|
||||||
* | | | | | | |CtrL |Left |Down |Right|CtrR | |
|
____, ____, ____, ____, prev, mute, play, next, ____, ____, ____, ____
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | | | | |CtrDn|PgDn |PgUp |TabL |TabR | |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | | | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_MOVE] = LAYOUT_planck_grid(
|
|
||||||
AC(KC_A), AC(KC_B), AC(KC_C), AC(KC_D),
|
|
||||||
AC(KC_E), AC(KC_F), C(KC_UP), KC_HOME,
|
|
||||||
KC_UP, KC_END, KC_CAPS, MOUSE,
|
|
||||||
|
|
||||||
AC(KC_G), AC(KC_H), AC(KC_I), AC(KC_J),
|
|
||||||
AC(KC_K), AC(KC_L), C(KC_LEFT), KC_LEFT,
|
|
||||||
KC_DOWN, KC_RGHT, C(KC_RIGHT), XXXXXXX,
|
|
||||||
|
|
||||||
_______, AC(KC_M), AC(KC_N), AC(KC_O),
|
|
||||||
AC(KC_P), AC(KC_Q), C(KC_DOWN), KC_PGDN,
|
|
||||||
KC_PGUP, SC(KC_TAB), C(KC_TAB), _______,
|
|
||||||
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______
|
|
||||||
),
|
),
|
||||||
|
|
||||||
/* FUNC
|
|
||||||
* ,-----------------------------------------------------------------------.
|
|
||||||
* |Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |VolUp|
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | | | | | | | |Clmak|Qwrty| |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | | |Prev |Mute |Play |Next | | | | |
|
|
||||||
* `-----------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FUNC] = LAYOUT_planck_grid(
|
|
||||||
RESET, KC_F1, KC_F2, KC_F3,
|
|
||||||
KC_F4, KC_F5, KC_F6, KC_F7,
|
|
||||||
KC_F8, KC_F9, KC_F10, KC_VOLU,
|
|
||||||
|
|
||||||
KC_POWER, KC_F11, KC_F12, KC_F13,
|
|
||||||
KC_F14, KC_F15, KC_F16, KC_F17,
|
|
||||||
KC_F18, KC_F19, KC_F20, KC_VOLD,
|
|
||||||
|
|
||||||
_______, XXXXXXX, KC_HOME, SC(KC_TAB),
|
|
||||||
C(KC_TAB), KC_END, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX, COLEMAK, QWERTY, _______,
|
|
||||||
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT,
|
|
||||||
_______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* MOUSE
|
|
||||||
* ,-----------------------------------------------------------------------.
|
|
||||||
* | | |CtrL |CtrU |CtrR | B5 |CtrU | ScL |Up | ScR | | |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | Ac0 | Ac1 | Ac2 | B4 |CtrL |Left |Down |Right|CtrR | |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | |Home | End | B3 |CtrD | ScD | ScU |TabL |TabR | |
|
|
||||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
|
||||||
* | | | | | | B2 | B1 | | | | | |
|
|
||||||
* `-----------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_MOUSE] = LAYOUT_planck_grid(
|
|
||||||
_______, XXXXXXX, C(KC_LEFT), C(KC_UP),
|
|
||||||
C(KC_RIGHT), KC_BTN5, C(KC_UP), KC_WH_R,
|
|
||||||
KC_MS_U, KC_WH_L, XXXXXXX, XXXXXXX,
|
|
||||||
|
|
||||||
_______, XXXXXXX, KC_ACL0, KC_ACL1,
|
|
||||||
KC_ACL2, KC_BTN4, C(KC_LEFT), KC_MS_L,
|
|
||||||
KC_MS_D, KC_MS_R, C(KC_RIGHT), XXXXXXX,
|
|
||||||
|
|
||||||
_______, XXXXXXX, XXXXXXX, KC_HOME,
|
|
||||||
KC_END, KC_BTN3, C(KC_DOWN), KC_WH_U,
|
|
||||||
KC_WH_D, SC(KC_TAB), C(KC_TAB), _______,
|
|
||||||
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, KC_BTN2, KC_BTN1, _______,
|
|
||||||
_______, _______, _______, _______
|
|
||||||
)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
bool send_string_if_keydown(keyrecord_t *record, const char *s) {
|
||||||
float colemak_song[][2] = SONG(COLEMAK_SOUND);
|
|
||||||
float qwerty_song[][2] = SONG(QWERTY_SOUND);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void set_colemak(void) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
stop_all_notes();
|
|
||||||
PLAY_SONG(colemak_song);
|
|
||||||
#endif
|
|
||||||
set_single_persistent_default_layer(_COLEMAK);
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_qwerty(void) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
stop_all_notes();
|
|
||||||
PLAY_SONG(qwerty_song);
|
|
||||||
#endif
|
|
||||||
set_single_persistent_default_layer(_QWERTY);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case COLEMAK:
|
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
set_colemak();
|
SEND_STRING(s);
|
||||||
}
|
}
|
||||||
return false;
|
return true;
|
||||||
case QWERTY:
|
}
|
||||||
if (record->event.pressed) {
|
|
||||||
set_qwerty();
|
int cmd_keys_down = 0;
|
||||||
}
|
|
||||||
return false;
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
case SYMB:
|
switch (keycode) {
|
||||||
if (record->event.pressed) {
|
// Override the defualt auto shifted symbols to use SEND_STRING See
|
||||||
layer_off(_MOUSE);
|
// https://github.com/qmk/qmk_firmware/issues/4072
|
||||||
layer_on(_SYMB);
|
case ampr:
|
||||||
} else {
|
return send_string_if_keydown(record, "&");
|
||||||
layer_off(_SYMB);
|
case astr:
|
||||||
}
|
return send_string_if_keydown(record, "*");
|
||||||
return false;
|
case at:
|
||||||
case MOVE:
|
return send_string_if_keydown(record, "@");
|
||||||
if (record->event.pressed) {
|
case bsls:
|
||||||
layer_off(_MOUSE);
|
return send_string_if_keydown(record, "\\");
|
||||||
layer_on(_MOVE);
|
case circ:
|
||||||
} else {
|
return send_string_if_keydown(record, "^");
|
||||||
layer_off(_MOVE);
|
case dlr:
|
||||||
}
|
return send_string_if_keydown(record, "$");
|
||||||
return false;
|
case eql:
|
||||||
case FUNC:
|
return send_string_if_keydown(record, "=");
|
||||||
if (record->event.pressed) {
|
case exlm:
|
||||||
layer_off(_MOUSE);
|
return send_string_if_keydown(record, "!");
|
||||||
layer_on(_FUNC);
|
case grv:
|
||||||
} else {
|
return send_string_if_keydown(record, "`");
|
||||||
layer_off(_FUNC);
|
case hash:
|
||||||
}
|
return send_string_if_keydown(record, "#");
|
||||||
return false;
|
case lbrc:
|
||||||
case MOUSE:
|
return send_string_if_keydown(record, "[");
|
||||||
if (record->event.pressed) {
|
case lcbr:
|
||||||
layer_on(_MOUSE);
|
return send_string_if_keydown(record, "{");
|
||||||
}
|
case lprn:
|
||||||
return false;
|
return send_string_if_keydown(record, "(");
|
||||||
|
case perc:
|
||||||
// Override the defualt auto shifted symbols to use SEND_STRING
|
return send_string_if_keydown(record, "%");
|
||||||
// See https://github.com/qmk/qmk_firmware/issues/4072
|
case pipe:
|
||||||
case KC_EXLM:
|
return send_string_if_keydown(record, "|");
|
||||||
if (record->event.pressed) { SEND_STRING("!"); }
|
case plus:
|
||||||
return false;
|
return send_string_if_keydown(record, "+");
|
||||||
case KC_AT:
|
case rbrc:
|
||||||
if (record->event.pressed) { SEND_STRING("@"); }
|
return send_string_if_keydown(record, "]");
|
||||||
return false;
|
case rcbr:
|
||||||
case KC_HASH:
|
return send_string_if_keydown(record, "}");
|
||||||
if (record->event.pressed) { SEND_STRING("#"); }
|
case rprn:
|
||||||
return false;
|
return send_string_if_keydown(record, ")");
|
||||||
case KC_DLR:
|
case tild:
|
||||||
if (record->event.pressed) { SEND_STRING("$"); }
|
return send_string_if_keydown(record, "~");
|
||||||
return false;
|
|
||||||
case KC_PERC:
|
// cmd + cmd -> cmd + ctl
|
||||||
if (record->event.pressed) { SEND_STRING("%"); }
|
case cmd:
|
||||||
return false;
|
if (record->event.pressed) {
|
||||||
case KC_CIRC:
|
if (cmd_keys_down == 0) {
|
||||||
if (record->event.pressed) { SEND_STRING("^"); }
|
register_code(KC_LCMD);
|
||||||
return false;
|
} else {
|
||||||
case KC_AMPR:
|
register_code(KC_LCTL);
|
||||||
if (record->event.pressed) { SEND_STRING("&"); }
|
}
|
||||||
return false;
|
cmd_keys_down++;
|
||||||
case KC_ASTR:
|
} else {
|
||||||
if (record->event.pressed) { SEND_STRING("*"); }
|
if (cmd_keys_down == 1) {
|
||||||
return false;
|
unregister_code(KC_LCMD);
|
||||||
case KC_LPRN:
|
} else {
|
||||||
if (record->event.pressed) { SEND_STRING("("); }
|
unregister_code(KC_LCTL);
|
||||||
return false;
|
}
|
||||||
case KC_RPRN:
|
cmd_keys_down--;
|
||||||
if (record->event.pressed) { SEND_STRING(")"); }
|
}
|
||||||
return false;
|
return true;
|
||||||
case KC_TILD:
|
|
||||||
if (record->event.pressed) { SEND_STRING("~"); }
|
|
||||||
return false;
|
|
||||||
case KC_GRV:
|
|
||||||
if (record->event.pressed) { SEND_STRING("`"); }
|
|
||||||
return false;
|
|
||||||
case KC_PLUS:
|
|
||||||
if (record->event.pressed) { SEND_STRING("+"); }
|
|
||||||
return false;
|
|
||||||
case KC_EQL:
|
|
||||||
if (record->event.pressed) { SEND_STRING("="); }
|
|
||||||
return false;
|
|
||||||
case KC_PIPE:
|
|
||||||
if (record->event.pressed) { SEND_STRING("|"); }
|
|
||||||
return false;
|
|
||||||
case KC_BSLS:
|
|
||||||
if (record->event.pressed) { SEND_STRING("\\"); }
|
|
||||||
return false;
|
|
||||||
case KC_LBRC:
|
|
||||||
if (record->event.pressed) { SEND_STRING("["); }
|
|
||||||
return false;
|
|
||||||
case KC_RBRC:
|
|
||||||
if (record->event.pressed) { SEND_STRING("]"); }
|
|
||||||
return false;
|
|
||||||
case KC_LCBR:
|
|
||||||
if (record->event.pressed) { SEND_STRING("{"); }
|
|
||||||
return false;
|
|
||||||
case KC_RCBR:
|
|
||||||
if (record->event.pressed) { SEND_STRING("}"); }
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# callum’s planck layout
|
# callum's planck layout
|
||||||
|
|
||||||
This is a layout for the grid planck, built with a few ideals in mind:
|
This is a layout for the grid planck, built with a few ideals in mind:
|
||||||
|
|
||||||
- Consistent and minimal response times should be maintained. Keys that react
|
- Consistent and minimal response times should be maintained. Keys that react
|
||||||
differently depending on whether they are tapped or held, keys that react
|
differently depending on whether they are tapped or held, keys that react
|
||||||
differently if they are double tapped, etc. should be avoided -- they
|
differently if they are double tapped, etc. should be avoided – they
|
||||||
inevitably send their keycode later than a normal key -- interrupting the
|
inevitably send their keycode later than a normal key – interrupting the
|
||||||
immediate feedback from the screen. Therefore we restrict ourselves to
|
immediate feedback from the screen. Therefore we restrict ourselves to
|
||||||
chording as our only means of getting more than one symbol out of a single
|
chording as our only means of getting more than one symbol out of a single
|
||||||
physical key.
|
physical key.
|
||||||
|
@ -17,7 +17,22 @@ This is a layout for the grid planck, built with a few ideals in mind:
|
||||||
- There should be two of every modifier (one on each side), otherwise certain
|
- There should be two of every modifier (one on each side), otherwise certain
|
||||||
long key combinations become hard to make.
|
long key combinations become hard to make.
|
||||||
|
|
||||||
A layout graphic can be found [here][keyboard-layout-editor] (excludes window
|
- It should be possible to do things you might want to do while using the mouse
|
||||||
management keys).
|
with only the left hand (e.g. change tabs, navigate back or forwards in
|
||||||
|
browser history).
|
||||||
|
|
||||||
[keyboard-layout-editor]: http://www.keyboard-layout-editor.com/#/gists/ade5ec1f814bf83046489a4b632575ff
|
- Symbols should be arranged so that the most frequently used are easiest to
|
||||||
|
reach. This includes numbers, and lower numbers are more commonly used than
|
||||||
|
higher ones. (number arrangement borrowed from [dustypomeleau's minidox
|
||||||
|
layout][].
|
||||||
|
|
||||||
|
Layout rendered with [keyboard-layout-editor.com][]:
|
||||||
|
|
||||||
|
![](https://callum-oakley.github.io/images/keymap.png)
|
||||||
|
|
||||||
|
The only behaviour not captured in this graphic is: pressing both cmd keys will
|
||||||
|
send cmd+ctrl. See [keymap.c][] for details.
|
||||||
|
|
||||||
|
[dustypomeleau's minidox layout]: https://github.com/qmk/qmk_firmware/tree/master/keyboards/minidox/keymaps/dustypomerleau
|
||||||
|
[keyboard-layout-editor.com]: http://www.keyboard-layout-editor.com
|
||||||
|
[keymap.c]: keymap.c
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
|
Loading…
Reference in New Issue