[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 blockdaktil_manuform
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 "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;
|
||||
|
||||
#define AC(X) A(C(X))
|
||||
#define SC(X) S(C(X))
|
||||
|
||||
enum planck_layers {
|
||||
_COLEMAK,
|
||||
_QWERTY,
|
||||
_SYMB,
|
||||
_MOVE,
|
||||
_FUNC,
|
||||
_MOUSE,
|
||||
};
|
||||
|
||||
enum planck_keycodes {
|
||||
COLEMAK = SAFE_RANGE,
|
||||
QWERTY,
|
||||
BASE,
|
||||
SYMB,
|
||||
MOVE,
|
||||
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] = {
|
||||
|
||||
/* COLEMAK
|
||||
* ,-----------------------------------------------------------------------.
|
||||
* |Tab | Q | W | F | P | G | J | L | U | Y | ; | - |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
||||
* |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
|
||||
[BASE] = LAYOUT_planck_grid(
|
||||
tab, q, w, f, p, g, j, l, u, y, scln, mins,
|
||||
bspc, a, r, s, t, d, h, n, e, i, o, quot,
|
||||
lsft, z, x, c, v, b, k, m, comm, dot, slsh, rsft,
|
||||
func, lctl, lalt, cmd, move, ent, spc, symb, cmd, ralt, rctl, func
|
||||
),
|
||||
|
||||
/* QWERTY
|
||||
* ,-----------------------------------------------------------------------.
|
||||
* |Tab | Q | W | E | R | T | Y | U | I | O | P | - |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
||||
* |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] = LAYOUT_planck_grid(
|
||||
esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash,
|
||||
del, bsls, hash, astr, eql, pipe, at, rprn, lprn, dlr, ampr, gbp,
|
||||
caps, grv, exlm, lbrc, rbrc, circ, tild, rcbr, lcbr, plus, perc, caps,
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
||||
),
|
||||
|
||||
/* SYMB
|
||||
* ,-----------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |ndash|
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
||||
* | 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] = LAYOUT_planck_grid(
|
||||
esc, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, xxxx,
|
||||
del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, xxxx,
|
||||
____, xxxx, xxxx, back, fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____,
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
||||
),
|
||||
|
||||
/* MOVE
|
||||
* ,-----------------------------------------------------------------------.
|
||||
* | | | | | | |CtrUp|Home | Up | End |Caps |Mouse|
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
||||
* | | | | | | |CtrL |Left |Down |Right|CtrR | |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
|
||||
* | | | | | | |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] = LAYOUT_planck_grid(
|
||||
rset, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, volu,
|
||||
powr, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, vold,
|
||||
____, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, ____,
|
||||
____, ____, ____, ____, prev, mute, play, next, ____, ____, ____, ____
|
||||
),
|
||||
|
||||
/* 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
|
||||
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) {
|
||||
set_colemak();
|
||||
}
|
||||
return false;
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_qwerty();
|
||||
}
|
||||
return false;
|
||||
case SYMB:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_MOUSE);
|
||||
layer_on(_SYMB);
|
||||
} else {
|
||||
layer_off(_SYMB);
|
||||
}
|
||||
return false;
|
||||
case MOVE:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_MOUSE);
|
||||
layer_on(_MOVE);
|
||||
} else {
|
||||
layer_off(_MOVE);
|
||||
}
|
||||
return false;
|
||||
case FUNC:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_MOUSE);
|
||||
layer_on(_FUNC);
|
||||
} else {
|
||||
layer_off(_FUNC);
|
||||
}
|
||||
return false;
|
||||
case MOUSE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_MOUSE);
|
||||
}
|
||||
return false;
|
||||
|
||||
// Override the defualt auto shifted symbols to use SEND_STRING
|
||||
// See https://github.com/qmk/qmk_firmware/issues/4072
|
||||
case KC_EXLM:
|
||||
if (record->event.pressed) { SEND_STRING("!"); }
|
||||
return false;
|
||||
case KC_AT:
|
||||
if (record->event.pressed) { SEND_STRING("@"); }
|
||||
return false;
|
||||
case KC_HASH:
|
||||
if (record->event.pressed) { SEND_STRING("#"); }
|
||||
return false;
|
||||
case KC_DLR:
|
||||
if (record->event.pressed) { SEND_STRING("$"); }
|
||||
return false;
|
||||
case KC_PERC:
|
||||
if (record->event.pressed) { SEND_STRING("%"); }
|
||||
return false;
|
||||
case KC_CIRC:
|
||||
if (record->event.pressed) { SEND_STRING("^"); }
|
||||
return false;
|
||||
case KC_AMPR:
|
||||
if (record->event.pressed) { SEND_STRING("&"); }
|
||||
return false;
|
||||
case KC_ASTR:
|
||||
if (record->event.pressed) { SEND_STRING("*"); }
|
||||
return false;
|
||||
case KC_LPRN:
|
||||
if (record->event.pressed) { SEND_STRING("("); }
|
||||
return false;
|
||||
case KC_RPRN:
|
||||
if (record->event.pressed) { SEND_STRING(")"); }
|
||||
return false;
|
||||
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;
|
||||
bool send_string_if_keydown(keyrecord_t *record, const char *s) {
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(s);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int cmd_keys_down = 0;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
// Override the defualt auto shifted symbols to use SEND_STRING See
|
||||
// https://github.com/qmk/qmk_firmware/issues/4072
|
||||
case ampr:
|
||||
return send_string_if_keydown(record, "&");
|
||||
case astr:
|
||||
return send_string_if_keydown(record, "*");
|
||||
case at:
|
||||
return send_string_if_keydown(record, "@");
|
||||
case bsls:
|
||||
return send_string_if_keydown(record, "\\");
|
||||
case circ:
|
||||
return send_string_if_keydown(record, "^");
|
||||
case dlr:
|
||||
return send_string_if_keydown(record, "$");
|
||||
case eql:
|
||||
return send_string_if_keydown(record, "=");
|
||||
case exlm:
|
||||
return send_string_if_keydown(record, "!");
|
||||
case grv:
|
||||
return send_string_if_keydown(record, "`");
|
||||
case hash:
|
||||
return send_string_if_keydown(record, "#");
|
||||
case lbrc:
|
||||
return send_string_if_keydown(record, "[");
|
||||
case lcbr:
|
||||
return send_string_if_keydown(record, "{");
|
||||
case lprn:
|
||||
return send_string_if_keydown(record, "(");
|
||||
case perc:
|
||||
return send_string_if_keydown(record, "%");
|
||||
case pipe:
|
||||
return send_string_if_keydown(record, "|");
|
||||
case plus:
|
||||
return send_string_if_keydown(record, "+");
|
||||
case rbrc:
|
||||
return send_string_if_keydown(record, "]");
|
||||
case rcbr:
|
||||
return send_string_if_keydown(record, "}");
|
||||
case rprn:
|
||||
return send_string_if_keydown(record, ")");
|
||||
case tild:
|
||||
return send_string_if_keydown(record, "~");
|
||||
|
||||
// cmd + cmd -> cmd + ctl
|
||||
case cmd:
|
||||
if (record->event.pressed) {
|
||||
if (cmd_keys_down == 0) {
|
||||
register_code(KC_LCMD);
|
||||
} else {
|
||||
register_code(KC_LCTL);
|
||||
}
|
||||
cmd_keys_down++;
|
||||
} else {
|
||||
if (cmd_keys_down == 1) {
|
||||
unregister_code(KC_LCMD);
|
||||
} else {
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
cmd_keys_down--;
|
||||
}
|
||||
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:
|
||||
|
||||
- Consistent and minimal response times should be maintained. 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
|
||||
inevitably send their keycode later than a normal key -- interrupting the
|
||||
differently if they are double tapped, etc. should be avoided – they
|
||||
inevitably send their keycode later than a normal key – interrupting the
|
||||
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
|
||||
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
|
||||
long key combinations become hard to make.
|
||||
|
||||
A layout graphic can be found [here][keyboard-layout-editor] (excludes window
|
||||
management keys).
|
||||
- It should be possible to do things you might want to do while using the mouse
|
||||
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
|
||||
#
|
||||
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)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
|
|
Loading…
Reference in New Issue