1
0
Fork 0

Remove obvious user keymaps, keyboards/{d,e,f}* edition. (#22695)

This commit is contained in:
Nick Brassel 2023-12-18 21:45:52 +11:00 committed by GitHub
parent d235352504
commit a1c8b1ebf7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
480 changed files with 0 additions and 33279 deletions

View file

@ -1,19 +0,0 @@
/* Copyright 2019 Takuya Urakawa (dm9records.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/>.
*/
#pragma once
// place overrides here

View file

@ -1,411 +0,0 @@
/* Copyright 2019 Takuya Urakawa (dm9records.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/>.
*/
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
enum plaid_layers {
_QWERTY,
_COLEMAK,
_DVORAK,
_LOWER,
_RAISE,
_PLOVER,
_ADJUST
};
enum plaid_keycodes {
QWERTY = SAFE_RANGE,
COLEMAK,
DVORAK,
PLOVER,
EXT_PLV,
LED_1,
LED_2,
LED_3,
LED_4,
LED_5,
LED_6,
LED_7,
LED_8,
LED_9,
LED_0
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
// array of keys considered modifiers for led purposes
const uint16_t modifiers[] = {
KC_LCTL,
KC_RCTL,
KC_LALT,
KC_RALT,
KC_LSFT,
KC_RSFT,
KC_LGUI,
KC_RGUI,
LOWER,
RAISE
};
//Setup consts for LED modes
#define LEDMODE_ON 1 //always on
#define LEDMODE_OFF 0 //always off
#define LEDMODE_MODS 2 //On with modifiers
#define LEDMODE_BLINKIN 3 //blinkinlights - % chance toggle on keypress
#define LEDMODE_KEY 4 //On with any keypress, off with key release
#define LEDMODE_ENTER 5 // On with enter key
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ltrl | Rctl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_plaid_grid(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
KC_LCTL, KC_RCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT_plaid_grid(
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
KC_ESC, 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_ENT ,
KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
* ,-----------------------------------------------------------------------------------.
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_DVORAK] = LAYOUT_plaid_grid(
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_plaid_grid(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_plaid_grid(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Plover layer (http://opensteno.org)
* ,-----------------------------------------------------------------------------------.
* | # | # | # | # | # | # | # | # | # | # | # | # |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | S | T | P | H | * | * | F | P | L | T | D |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | S | K | W | R | * | * | R | B | G | S | Z |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Exit | | | A | O | | E | U | | | |
* `-----------------------------------------------------------------------------------'
*/
[_PLOVER] = LAYOUT_plaid_grid(
KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
),
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
* |Reset | | | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_plaid_grid(
QK_BOOT,LED_1, LED_2, LED_3, LED_4, LED_5,LED_6, LED_7, LED_8, LED_9, LED_0,KC_DEL ,
_______, _______, MU_NEXT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
//Setup config struct for LED
typedef union {
uint32_t raw;
struct {
uint8_t red_mode :8;
uint8_t green_mode :8;
};
} led_config_t;
led_config_t led_config;
//Set leds to saved state during powerup
void keyboard_post_init_user(void) {
// Call the post init code.
led_config.raw = eeconfig_read_user();
if(led_config.red_mode == LEDMODE_ON) {
writePinHigh(LED_RED);
}
if(led_config.green_mode == LEDMODE_ON) {
writePinHigh(LED_GREEN);
}
}
void eeconfig_init_user(void) { // EEPROM is getting reset!
led_config.raw = 0;
led_config.red_mode = LEDMODE_ON;
led_config.green_mode = LEDMODE_MODS;
eeconfig_update_user(led_config.raw);
eeconfig_update_user(led_config.raw);
}
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
void led_keypress_update(uint8_t led, uint8_t led_mode, uint16_t keycode, keyrecord_t *record) {
switch (led_mode) {
case LEDMODE_MODS:
for (int i=0;i<ARRAY_SIZE(modifiers);i++) {
if(keycode==modifiers[i]) {
if (record->event.pressed) {
writePinHigh(led);
}
else {
writePinLow(led);
}
}
}
break;
case LEDMODE_BLINKIN:
if (record->event.pressed) {
if(rand() % 2 == 1) {
if(rand() % 2 == 0) {
writePinLow(led);
}
else {
writePinHigh(led);
}
}
}
break;
case LEDMODE_KEY:
if (record->event.pressed) {
writePinHigh(led);
return;
}
else {
writePinLow(led);
return;
}
break;
case LEDMODE_ENTER:
if (keycode==KC_ENT) {
writePinHigh(led);
}
else {
writePinLow(led);
}
break;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
/* If the either led mode is keypressed based, call the led updater
then let it fall through the keypress handlers. Just to keep
the logic out of this procedure */
if (led_config.red_mode >= LEDMODE_MODS && led_config.red_mode <= LEDMODE_ENTER) {
led_keypress_update(LED_RED, led_config.red_mode, keycode, record);
}
if (led_config.green_mode >= LEDMODE_MODS && led_config.green_mode <= LEDMODE_ENTER) {
led_keypress_update(LED_GREEN, led_config.green_mode, keycode, record);
}
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
print("mode just switched to qwerty and this is a huge string\n");
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
return false;
break;
case DVORAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_DVORAK);
}
return false;
break;
case PLOVER:
if (record->event.pressed) {
layer_off(_RAISE);
layer_off(_LOWER);
layer_off(_ADJUST);
layer_on(_PLOVER);
if (!eeconfig_is_enabled()) {
eeconfig_init();
}
keymap_config.raw = eeconfig_read_keymap();
keymap_config.nkro = 1;
eeconfig_update_keymap(keymap_config.raw);
}
return false;
break;
case EXT_PLV:
if (record->event.pressed) {
layer_off(_PLOVER);
}
return false;
break;
case LED_1:
if (record->event.pressed) {
if (led_config.red_mode==LEDMODE_ON) {
led_config.red_mode=LEDMODE_OFF;
writePinLow(LED_RED);
}
else {
led_config.red_mode=LEDMODE_ON;
writePinHigh(LED_RED);
}
}
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_2:
if (record->event.pressed) {
if (led_config.green_mode==LEDMODE_ON) {
led_config.green_mode=LEDMODE_OFF;
writePinLow(LED_GREEN);
}
else {
led_config.green_mode=LEDMODE_ON;
writePinHigh(LED_GREEN);
}
}
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_3:
led_config.red_mode=LEDMODE_MODS;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_4:
led_config.green_mode=LEDMODE_MODS;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_5:
led_config.red_mode=LEDMODE_BLINKIN;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_6:
led_config.green_mode=LEDMODE_BLINKIN;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_7:
led_config.red_mode=LEDMODE_KEY;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_8:
led_config.green_mode=LEDMODE_KEY;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_9:
led_config.red_mode=LEDMODE_ENTER;
eeconfig_update_user(led_config.raw);
return false;
break;
case LED_0:
led_config.green_mode=LEDMODE_ENTER;
eeconfig_update_user(led_config.raw);
return false;
break;
}
return true;
}

View file

@ -1,36 +0,0 @@
# Brickbots keymap for plaid
Original copyright 2019 Takuya Urakawa (dm9records.com)
LED Support added by Richard Sutherland (rich@brickbots.com)
This layout is based on the Planck layout, with esc/tab swapped and an extra
ctrl key in the bottom left corner. It includes an adjust layer (6)
accessible by holding the lower and raise modifiers (MO3 and MO4) together.
The adjustment layer is used to set the behavior of the two LEDs:
**Modifier Mode:**
Activates when any modifier (shift, alt, os, MO) key is held
down. LED turns off when key is release
**Blinkinlights Mode:**
Random chance of state change on each keystroke.
**Keypress Mode:**
On for any keypress as long as the key is pressed
**Carriage Mode:**
Turns on when enter is pressed, turns off when any next key is pressed
To set the behavior of an LED, and save it to eeprom, hold the
raise/lower keys together to access the adjust layer, then use
the keys indicated below to set the behaviors
* q = Toggle Red LED state, deactivates any other modes
* w = Toggle Green LED state, deactivates any other modes
* e = Set RED LED to modifier mode
* r = Set GREEN LED to modifier mode
* t = Set RED LED to Blinkinlights mode
* y = set GREEN LED to Blinkinlights mode
* u = set RED LED to Keypress mode
* i = set GREEN LED to Keypress mode
* o = set RED LED to Carriage mode
* p = set GREEN LED to Carriage mode

View file

@ -1,213 +0,0 @@
/* Copyright 2020 Benjamin Große <ste3ls@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/>.
*/
#include QMK_KEYBOARD_H
enum plaid_layers {
_QWERTY,
_XMONAD,
_RAISE,
_LOWER,
};
enum plaid_keycodes {
AUTOCLICK = SAFE_RANGE
};
static bool autoclick = false;
static bool autoclick_state = false;
static uint16_t autoclick_timer = 0;
#define XMONAD LM(_XMONAD, MOD_LGUI)
#define SPC_LWR LT(_LOWER, KC_SPACE)
#define ENT_RSE LT(_RAISE, KC_ENT)
#define LOWER LT(_LOWER, KC_BSPC)
#define LS_ESC LSFT_T(KC_ESC)
#define RS_QUOT RSFT_T(KC_QUOT)
#define LCT_MINS LCTL_T(KC_MINS)
#define RCT_EQL RCTL_T(KC_EQL)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P |Bckspc|
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | - | Z | X | C | V | B | N | M | , | . | / | = |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | Alt | GUI |XMONAD|LShift| Space |Ent/RA|RShift|LOWER | RAlt |RCtrl |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_plaid_grid( // Base QWERTY
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
LS_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RS_QUOT,
LCT_MINS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCT_EQL,
KC_LCTL, KC_LALT, KC_LGUI, XMONAD, SC_LSPO, KC_SPACE,_______, ENT_RSE, SC_RSPC, LOWER, KC_RALT, KC_RCTL
),
[_XMONAD] = LAYOUT_plaid_grid( // Xmonad with MOD4
KC_Q, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_P, _______,
KC_LSFT, _______, _______, _______, _______, _______, KC_H, KC_J, KC_K, KC_L, _______, _______,
KC_LSFT, _______, _______, KC_C, _______, KC_B, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______
),
/* Raised
* ,-----------------------------------------------------------------------------------.
* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ~ | { | PgUp | PgDn | End | Home | Left | Down | Up | Right| } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | [ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ] |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | |VolDn |VolUp |Mute |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_plaid_grid( // Numbers, arrows, symbols
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_TILD, KC_LCBR, KC_PGUP, KC_PGDN, KC_END, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCBR, KC_PIPE,
KC_LBRC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RBRC,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE
),
[_LOWER] = LAYOUT_plaid_grid( // F, media keys, reset
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, MU_NEXT, AU_ON, AU_OFF, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, QK_BOOT,
_______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, AUTOCLICK
)
};
#define BLINKEN_RANDOM_STARTLE false
static uint16_t blinken_timer = 0;
static uint16_t next_timeout = 1000;
enum blinken_modes {
BLINK_HOLD,
BLINK_STARTLED,
BLINK_STARTLED_LAYER
};
static uint16_t blinken_mode = BLINK_HOLD;
static uint16_t blinken_timer_startled = 0;
static uint16_t blinken_startled_state = 0;
void matrix_init_user(void) {
// https://github.com/hsgw/plaid/issues/15#issuecomment-534677102
eeconfig_init();
}
void keyboard_post_init_user(void) {
writePinHigh(LED_RED);
writePinHigh(LED_GREEN);
blinken_timer = timer_read();
}
void matrix_scan_user(void) {
if (blinken_mode != BLINK_STARTLED_LAYER && timer_elapsed(blinken_timer) > next_timeout) {
blinken_timer = timer_read();
if (BLINKEN_RANDOM_STARTLE && rand() % 5 == 0) {
blinken_mode = BLINK_STARTLED;
blinken_timer_startled = timer_read();
blinken_startled_state = 0;
} else {
blinken_mode = BLINK_HOLD;
if(rand() % 2 == 0) {
next_timeout = 1000;
} else if(rand() % 2 == 0) {
next_timeout = 500;
} else {
next_timeout = 300;
}
if(rand() % 2 == 0) {
writePinLow(LED_RED);
} else {
writePinHigh(LED_RED);
}
if(rand() % 2 == 0) {
writePinLow(LED_GREEN);
} else {
writePinHigh(LED_GREEN);
}
}
} else if ((blinken_mode == BLINK_STARTLED || blinken_mode == BLINK_STARTLED_LAYER)
&& timer_elapsed(blinken_timer_startled) > 50) {
blinken_timer_startled = timer_read();
switch (blinken_startled_state) {
case 0:
writePinLow(LED_GREEN);
blinken_startled_state += 1;
break;
case 1:
writePinHigh(LED_RED);
blinken_startled_state += 1;
break;
case 2:
writePinHigh(LED_GREEN);
blinken_startled_state += 1;
break;
case 3:
writePinLow(LED_RED);
blinken_startled_state = 0;
break;
}
}
if (autoclick && timer_elapsed(autoclick_timer) > (autoclick_state ? 20 : 100)) {
if (!autoclick_state) {
mousekey_on(KC_MS_BTN1);
} else {
mousekey_off(KC_MS_BTN1);
}
mousekey_send();
autoclick_state = !autoclick_state;
autoclick_timer = timer_read();
}
}
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _RAISE:
blinken_mode = BLINK_STARTLED_LAYER;
break;
case _XMONAD:
blinken_mode = BLINK_STARTLED_LAYER;
break;
case _LOWER:
blinken_mode = BLINK_STARTLED_LAYER;
break;
default:
blinken_mode = BLINK_HOLD;
break;
}
return state;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case AUTOCLICK:
if (record->event.pressed) {
autoclick = !autoclick;
autoclick_timer = timer_read();
}
break;
}
return true;
};

View file

@ -1,19 +0,0 @@
# Gipsy keymap for plaid
This layout is based on my corne layout:
* QWERTY with Tab, Backspace on top, dash and equals on the bottom.
* RAISE has numbers on top, arrows on hjkl, end/home on F/G, symbols on the
bottom and around.
* XMONAD has xmonad wm key bindings, should be used with Layer modifier LGUI
* LOWER has F keys and shouldn't be used much.
* Thumbs are: XMONAD, Left SC shift, Space, Enter/Raise, Right SC shift
Does not have so many modtaps, basically just on enter.
The LEDs of the plaid keep blinking in a soothing dance, reminiscent of some
old machine.
When any layer is active, the LEDs are "startled".
There is an autoclicker for minecraft.

View file

@ -1,19 +0,0 @@
/* Copyright 2019 Takuya Urakawa (dm9records.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/>.
*/
#pragma once
// place overrides here

View file

@ -1,356 +0,0 @@
/* Copyright 2019 Takuya Urakawa (dm9records.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/>.
*/
#include QMK_KEYBOARD_H
enum plaid_layers {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST
};
enum plaid_keycodes {
QWERTY = SAFE_RANGE,
LED_1,
LED_2,
LED_3,
LED_4,
LED_5,
LED_6,
LED_7,
LED_8,
LED_9,
LED_0
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
// array of keys considered modifiers for led purposes
const uint16_t modifiers[] = {
KC_LCTL,
KC_RCTL,
KC_LALT,
KC_RALT,
KC_LSFT,
KC_RSFT,
KC_LGUI,
KC_RGUI,
LOWER,
RAISE
};
//Setup consts for LED modes
#define LEDMODE_ON 1 //always on
#define LEDMODE_OFF 0 //always off
#define LEDMODE_MODS 2 //On with modifiers
#define LEDMODE_BLINKIN 3 //blinkinlights - % chance toggle on keypress
#define LEDMODE_KEY 4 //On with any keypress, off with key release
#define LEDMODE_ENTER 5 // On with enter key
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* |Esc/hy| A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | fn | Alt | GUI |Lower | Space |Raise | GUI | Alt |Shift | Ctrl |
* `-----------------------------------------------------------------------------------'
* (karabiner remaps Caps lock -> fn)
*/
[_QWERTY] = LAYOUT_plaid_grid(
KC_TAB , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
HYPR_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_RSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
KC_RCTL , KC_CAPS, KC_RALT, KC_RGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_RGUI, KC_RALT, KC_RSFT, KC_RCTL
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | Prev | Vol- | Play |
* `-----------------------------------------------------------------------------------'
* volume up key repeats randomly on mac, have to use mac specific volume
*/
[_LOWER] = LAYOUT_plaid_grid(
KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 , KC_BSPC,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC , KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______ , _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MPLY
),
/* Raise
* ,-----------------------------------------------------------------------------------.
* | ~ | | | End | | | |Pg Up | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | Home | |Pg Dn | | | Left | Down | Up |Right | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | Copy |Paste | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | Next | Vol+ | Mute |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_plaid_grid(
KC_TILD, _______, _______, KC_END, _______, _______, _______, KC_PGUP, _______, _______, _______ , KC_DEL ,
_______, KC_HOME, _______, KC_PGDN, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______ , _______,
_______, _______, _______, KC_COPY, KC_PSTE, KC_PGDN, _______, _______, _______, _______, _______ , _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLU, KC_MUTE
),
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
* |Reset | Red |Green | Rmod | Gmod |Rblink|Gblink| Rkey | Gkey | Rcar | Gcar | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | |Power |Sleep |Wake |Eject | | | | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_plaid_grid(
QK_BOOT, LED_1 , LED_2 , LED_3 , LED_4 , LED_5 ,LED_6 , LED_7 , LED_8 , LED_9 , LED_0 , _______ ,
_______, KC_PWR , KC_SLEP, KC_WAKE, KC_EJCT, _______, _______, _______, _______, _______, _______, _______ ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
//Setup config struct for LED
typedef union {
uint32_t raw;
struct {
uint8_t red_mode :8;
uint8_t green_mode :8;
};
} led_config_t;
led_config_t led_config;
//Set leds to saved state during powerup
void keyboard_post_init_user(void) {
// set LED pin modes
setPinOutput(LED_RED);
setPinOutput(LED_GREEN);
// Call the post init code.
led_config.raw = eeconfig_read_user();
if(led_config.red_mode == LEDMODE_ON) {
writePinHigh(LED_RED);
}
if(led_config.green_mode == LEDMODE_ON) {
writePinHigh(LED_GREEN);
}
}
void eeconfig_init_user(void) { // EEPROM is getting reset!
led_config.raw = 0;
led_config.red_mode = LEDMODE_ON;
led_config.green_mode = LEDMODE_MODS;
eeconfig_update_user(led_config.raw);
}
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
void led_keypress_update(uint8_t led, uint8_t led_mode, uint16_t keycode, keyrecord_t *record) {
switch (led_mode) {
case LEDMODE_MODS:
for (int i=0;i<ARRAY_SIZE(modifiers);i++) {
if(keycode==modifiers[i]) {
if (record->event.pressed) {
writePinHigh(led);
}
else {
writePinLow(led);
}
}
}
break;
case LEDMODE_BLINKIN:
if (record->event.pressed) {
/* Markov Chain
*
* 1 - x 1 - y
* /---\ /---\
* v | v |
* /------\ x /------\
* | |------>| |
* | on | y | off |
* | |<------| |
* \------/ \------/
*/
/* Non-homogeneous Markov Chain
*
* /-----\ 1 - x0 /-----\ 1 - x1 /-----\
* |on 0|------->|on 1|------->|on 2|----> ...
* \-----/\ /\-----/\ /\-----/\
* \ / \ / .
* x0\ / x1\ / .
* \/ \/ .
* /\ /\
* y0/ \ y1/ \ .
* / \ / \ .
* / \ / \ .
* /-----\ 1 - y0 /-----\ 1 - y1 /-----\/
* |off 0|------->|off 1|------->|off 2|----> ...
* \-----/ \-----/ \-----/
*
*
* if x = 1/4 and y 1/4, behavior is equivalent to the original code
* and converges to a steady state at the rate of 1/2^k
* where k is the number of key presses
* (the distance from a given vector to the steady state, [1/2, 1/2],
* is cut in half every key press)
*
* if x = y, then it is guaranteed that the steady state is still
* [1/2, 1/2], but the rate at which it converges is variable
*
* if x != y, then there is no well-defined steady state
*/
double x = (1.0*rand())/RAND_MAX;
double y = x;
double p = (readPin(led)) ? x : y;
if (rand() < p*RAND_MAX) {
togglePin(led);
}
/* following code is restriced to x + y <= 1
* if(rand() % 2 == 1) { */
/* if(rand() % 2 == 0) { */
/* writePinLow(led); */
/* } */
/* else { */
/* writePinHigh(led); */
/* } */
/* } */
}
break;
case LEDMODE_KEY:
if (record->event.pressed) {
writePinHigh(led);
return;
}
else {
writePinLow(led);
return;
}
break;
case LEDMODE_ENTER:
if (keycode==KC_ENT) {
writePinHigh(led);
}
else {
writePinLow(led);
}
break;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
/* If the either led mode is keypressed based, call the led updater
then let it fall through the keypress handlers. Just to keep
the logic out of this procedure */
if (led_config.red_mode >= LEDMODE_MODS && led_config.red_mode <= LEDMODE_ENTER) {
led_keypress_update(LED_RED, led_config.red_mode, keycode, record);
}
if (led_config.green_mode >= LEDMODE_MODS && led_config.green_mode <= LEDMODE_ENTER) {
led_keypress_update(LED_GREEN, led_config.green_mode, keycode, record);
}
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
print("mode just switched to qwerty and this is a huge string\n");
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
case LED_1:
if (record->event.pressed) {
if (led_config.red_mode==LEDMODE_ON) {
led_config.red_mode=LEDMODE_OFF;
writePinLow(LED_RED);
}
else {
led_config.red_mode=LEDMODE_ON;
writePinHigh(LED_RED);
}
}
break;
case LED_2:
if (record->event.pressed) {
if (led_config.green_mode==LEDMODE_ON) {
led_config.green_mode=LEDMODE_OFF;
writePinLow(LED_GREEN);
}
else {
led_config.green_mode=LEDMODE_ON;
writePinHigh(LED_GREEN);
}
}
break;
case LED_3:
led_config.red_mode=LEDMODE_MODS;
break;
case LED_4:
led_config.green_mode=LEDMODE_MODS;
break;
case LED_5:
led_config.red_mode=LEDMODE_BLINKIN;
break;
case LED_6:
led_config.green_mode=LEDMODE_BLINKIN;
break;
case LED_7:
led_config.red_mode=LEDMODE_KEY;
break;
case LED_8:
led_config.green_mode=LEDMODE_KEY;
break;
case LED_9:
led_config.red_mode=LEDMODE_ENTER;
break;
case LED_0:
led_config.green_mode=LEDMODE_ENTER;
break;
}
if (keycode >= LED_1 && keycode <= LED_0) {
eeconfig_update_user(led_config.raw);
}
return true;
}

View file

@ -1 +0,0 @@
# stephen-huan's keymap for Plaid

View file

@ -1,19 +0,0 @@
/* Copyright 2019 Ian Canino (ian@thecommittedbug.io)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
// place overrides here

View file

@ -1,182 +0,0 @@
#include QMK_KEYBOARD_H
enum plaid_layers {
_QWERTY,
_DVORAK,
_COLEMAK,
_LOWER,
_RAISE,
_FUNCTION,
};
enum plaid_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, LED };
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
#define LED_ON 1
#define LED_OFF 0
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | LS/( | Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | LGUI | Alt | [ |Lower | Space |Raise | ] | RGUI | \ | RS/) |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_planck_mit(KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LCTL, KC_LGUI, KC_LALT, KC_LBRC, LOWER, KC_SPC, RAISE, KC_RBRC, KC_RGUI, KC_BSLS, SC_RSPC),
/* Colemak
* ,-----------------------------------------------------------------------------------.
* | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | LS/( | Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | LGUI | Alt | [ |Lower | Space |Raise | ] | RGUI | \ | RS/) |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT_planck_mit(KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_RBRC, KC_RGUI, KC_BSLS, SC_RSPC),
/* Dvorak
* ,-----------------------------------------------------------------------------------.
* | Esc | " | , | . | P | Y | F | G | C | R | L | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | O | E | U | I | D | H | T | N | S | / |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | LGUI | Alt | [ |Lower | Space |Raise | ] | RGUI | \ | RS/) |
* `-----------------------------------------------------------------------------------'
*/
[_DVORAK] = LAYOUT_planck_mit(KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, SC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_RBRC, KC_RGUI, KC_BSLS, SC_RSPC),
/* LOWER
* ,----------------------------------------------------------------------------.
* | | | MPRV | MPLY | MNXT | | | | PGUP| UP | PGDN|PSCR |
* |------+------+------+------+------+-----+-----+-----+-----+-----------+-----+
* | | | MUTE | VOLD | VOLU | | | | LEFT| DOWN|RIGHT| |
* |------+------+------+------+------+-----+-----+-----+-----+-----+-----+-----+
* | | | MAIL | WBAK | WFWD | | | | HOME| | END | |
* |------+------+------+------+------+-----+-----+-----+-----+-----------+-----+
* | | | | | | DEL | | | | | |
* `----------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_planck_mit(KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_MAIL, KC_WBAK, KC_WFWD, KC_NO, KC_NO, KC_NO, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
/* RAISE
* ,--------------------------------------------------------------------------------.
* | NLCK | 1 | 2 | 3 | - | | | | ! | # | $ | + |
* |------+------+------+------+------+-----+-----+-----+------+------+------+------+
* | / | 4 | 5 | 6 | + | | | | % | ! | ! | = |
* |------+------+------+------+------+-----+-----+-----+------+------+------+------+
* | * | 7 | 8 | 9 | , | | | | _ | - | @ | ~ |
* |------+------+------+------+------+-----+-----+-----+------+------+------+------+
* | | 0 | . | Ent | = | | | | | | ` |
* `--------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_planck_mit(KC_NUM, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_EXLM, KC_HASH, KC_DLR, KC_PLUS, KC_PSLS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_NO, KC_NO, KC_NO, KC_PERC, KC_ASTR, KC_AMPR, KC_EQL, KC_PAST, KC_P7, KC_P8, KC_P9, KC_PCMM, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_MINS, KC_AT, KC_TILDE, KC_NO, KC_P0, KC_PDOT, KC_PENT, KC_PEQL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_GRV),
/* Function (Lower + Raise)
* ,-----------------------------------------------------------------------------------------------------------------------.
* | QK_BOOT| LCA_T(F1) | LCA_T(F2) | LCA_T(F3) | LCA_T(F4) | LCA_T(F5) | LCA_T(F6) | LCA_T(F7) | | | | |
* |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+
* | | | | | | QWERTY | DVORAK | COLEMAK | | | | |
* |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+
* | | | | | | | | | | | | |
* |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+
* | | | | | | LED | | | | | |
* `-----------------------------------------------------------------------------------------------------------------------'
*/
[_FUNCTION] = LAYOUT_planck_mit(QK_BOOT, LCA_T(KC_F1), LCA_T(KC_F2), LCA_T(KC_F3), LCA_T(KC_F4), LCA_T(KC_F5), LCA_T(KC_F6), LCA_T(KC_F7), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QWERTY, DVORAK, COLEMAK, 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, LED, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)};
// constants to toggle LED behavior
// Setup config struct for LED
typedef union {
uint32_t raw;
struct {
bool red_mode : 1;
bool green_mode : 1;
};
} led_config_t;
led_config_t led_config;
void keyboard_post_init_user(void) { led_config.raw = eeconfig_read_user(); }
void eeconfig_init_user(void) { // EEPROM is getting reset!
led_config.raw = 0;
led_config.red_mode = LED_ON;
led_config.green_mode = LED_ON;
eeconfig_update_user(led_config.raw);
eeconfig_update_user(led_config.raw);
}
// When LOWER and RAISE are held together, go to the FUNCTION layer
layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _FUNCTION); }
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _LOWER:
writePinHigh(LED_RED);
break;
case _RAISE:
writePinHigh(LED_GREEN);
break;
default:
writePinLow(LED_GREEN);
writePinLow(LED_RED);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
return false;
break;
case DVORAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_DVORAK);
}
return false;
break;
case LED:
if (record->event.pressed) {
if (led_config.red_mode == LED_ON && led_config.green_mode == LED_ON) {
led_config.red_mode = LED_OFF;
led_config.green_mode = LED_OFF;
} else if (led_config.red_mode == LED_OFF && led_config.green_mode == LED_OFF) {
led_config.red_mode = LED_ON;
led_config.green_mode = LED_ON;
}
}
eeconfig_update_user(led_config.raw);
return false;
break;
}
return true;
}

View file

@ -1,5 +0,0 @@
![Plaid Layout Image](https://i.imgur.com/WnVnwEG.png)
# The Half Deaf Chef Plaid Layout
Opinionated keymaps optimized for programmers. The Left and Right Shift tap as parenthesis and the bracket keys are to either side of the layer keys (LOWER, RAISE). A 'right-side' up number pad in a layer with a complementary 'symbol' pad on the opposite side. An additional layer is provided to switch to virtual console on Linux based systems running xorg. These changes are propagated among all the layouts.