Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5682254f71 | ||
|
|
45d437ca04 | ||
|
|
51a86b85f3 | ||
|
|
2fd670bec0 | ||
|
|
6ba22b5f5e | ||
|
|
a15510b57b | ||
|
|
5acc0e54aa | ||
|
|
7feadbd66d | ||
|
|
206233d98c | ||
|
|
82372d36af | ||
|
|
df26ede131 | ||
|
|
67e150a08a | ||
|
|
ba945c5e77 | ||
|
|
be002137f9 | ||
|
|
a621c7f88b | ||
|
|
722adce095 | ||
|
|
98316ef017 | ||
|
|
ff2b01da49 | ||
|
|
6549e169f8 | ||
|
|
e9a4a5e961 | ||
|
|
ef4abfeb31 | ||
|
|
b4802d7567 | ||
|
|
d2a11b523b | ||
|
|
086aad0d7e | ||
|
|
ec88a0b3cc | ||
|
|
7d5606085f | ||
|
|
19f0285a76 | ||
|
|
29108d1477 | ||
|
|
4cefb45a2d | ||
|
|
f894103997 | ||
|
|
b56a9a9899 | ||
|
|
e32e7dc0f5 | ||
|
|
44ce179192 | ||
|
|
d9ffd77ee7 | ||
|
|
e553bb3af4 | ||
|
|
b107d64d69 | ||
|
|
c81be932d2 | ||
|
|
899584187f | ||
|
|
6a75a7d672 | ||
|
|
be9fd4b4fa | ||
|
|
cc158d90ae | ||
|
|
5c11ba74d8 | ||
|
|
a44ba492ea | ||
|
|
22f985eba7 | ||
|
|
49cfdb544d | ||
|
|
3aa620c1ac | ||
|
|
c2c9cb2505 | ||
|
|
a7942c4f48 | ||
|
|
3d5d3e1b0c | ||
|
|
f37daa5343 | ||
|
|
3ee346c07b | ||
|
|
78a4cfd453 | ||
|
|
6b5d67fcc6 | ||
|
|
d1854e0e04 | ||
|
|
0440c0f072 | ||
|
|
568c662c14 | ||
|
|
96b0382fb4 | ||
|
|
21fa16651c | ||
|
|
2c404cca12 | ||
|
|
a5b5279da9 | ||
|
|
54d48140cd | ||
|
|
7146dfea6e | ||
|
|
8f80f35186 | ||
|
|
1b8ed53f21 | ||
|
|
b51a0db6ed | ||
|
|
2a7f9a7e46 | ||
|
|
effffa33a5 | ||
|
|
0f9bfafb9e | ||
|
|
a916f4e8b8 | ||
|
|
9cfa37bb3d | ||
|
|
fbaf964a85 | ||
|
|
06684555d2 | ||
|
|
cd4ccee703 | ||
|
|
1ef911d150 | ||
|
|
4c48c29c0e | ||
|
|
a584675735 | ||
|
|
6b1f707ce9 | ||
|
|
b4b06f81b5 | ||
|
|
1a0dfbbc96 | ||
|
|
4d783d0e69 | ||
|
|
06433eb1a0 | ||
|
|
34a1bf9e20 | ||
|
|
b766407cbe | ||
|
|
c686793b59 | ||
|
|
26c6f6a85c | ||
|
|
814b570ba1 | ||
|
|
ee0b34feaf | ||
|
|
f006ebebbd |
No files matched your search
+3
-3
@@ -1,12 +1,12 @@
|
|||||||
[submodule "lib/chibios"]
|
[submodule "lib/chibios"]
|
||||||
path = lib/chibios
|
path = lib/chibios
|
||||||
url = https://github.com/ChibiOS/ChibiOS.git
|
url = https://github.com/qmk/ChibiOS
|
||||||
[submodule "lib/chibios-contrib"]
|
[submodule "lib/chibios-contrib"]
|
||||||
path = lib/chibios-contrib
|
path = lib/chibios-contrib
|
||||||
url = https://github.com/ChibiOS/ChibiOS-Contrib.git
|
url = https://github.com/qmk/ChibiOS-Contrib
|
||||||
[submodule "lib/ugfx"]
|
[submodule "lib/ugfx"]
|
||||||
path = lib/ugfx
|
path = lib/ugfx
|
||||||
url = https://bitbucket.org/Tectu/ugfx
|
url = https://github.com/qmk/uGFX
|
||||||
[submodule "lib/googletest"]
|
[submodule "lib/googletest"]
|
||||||
path = lib/googletest
|
path = lib/googletest
|
||||||
url = https://github.com/google/googletest
|
url = https://github.com/google/googletest
|
||||||
+4
-2
@@ -233,8 +233,10 @@ ifeq ($(strip $(LCD_ENABLE)), yes)
|
|||||||
CIE1931_CURVE = yes
|
CIE1931_CURVE = yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(LED_ENABLE)), yes)
|
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
|
||||||
CIE1931_CURVE = yes
|
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
|
||||||
|
CIE1931_CURVE = yes
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(CIE1931_CURVE)), yes)
|
ifeq ($(strip $(CIE1931_CURVE)), yes)
|
||||||
|
|||||||
@@ -1,2 +1,9 @@
|
|||||||
|
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
|
|
||||||
|
MIDI_ENABLE = yes
|
||||||
|
|
||||||
|
# if MIDI_ENABLE is set to yes, then CONSOLE_ENABLE has to be disabled, because of the firmware size
|
||||||
|
CONSOLE_ENABLE = false
|
||||||
|
COMMAND_ENABLE = no
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
#define MIDI_BASIC
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||||
|
|
||||||
|
/* Disabling rollover allows you to use the opposite shift key to cancel the space cadet state in the event
|
||||||
|
of an erroneous press instead of emitting a pair of parentheses when the keys are released.
|
||||||
|
*/
|
||||||
|
#define DISABLE_SPACE_CADET_ROLLOVER
|
||||||
|
|
||||||
|
/*
|
||||||
|
Setting the Space Cadet Parens for German layout
|
||||||
|
|
||||||
|
Default is
|
||||||
|
#define LSPO_KEY KC_9
|
||||||
|
#define RSPC_KEY KC_0
|
||||||
|
*/
|
||||||
|
#define LSPO_KEY KC_8
|
||||||
|
#define RSPC_KEY KC_9
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -3,62 +3,94 @@
|
|||||||
// Helpful defines
|
// Helpful defines
|
||||||
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
#define _______ KC_TRNS
|
#define _______ KC_TRNS
|
||||||
|
#define xxxxxxx KC_NO
|
||||||
|
#define HPR_TAB ALL_T(KC_TAB)
|
||||||
|
#define CTL_ESC CTL_T(KC_ESC)
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
// entirely and just use numbers.
|
// entirely and just use numbers.
|
||||||
#define _BL 0
|
#define _BL 0 // BASE Layer
|
||||||
#define _FL 1
|
#define _FL 1 // Function Layer
|
||||||
#define _ME 2
|
#define _ME 2 // Media Layer
|
||||||
#define _CL 3
|
#define _CL 3 // Control Layer
|
||||||
#define _ML 4
|
#define _ML 4 // Mouse Layer
|
||||||
|
#if defined(MIDI_ENABLE)
|
||||||
|
#define _MI 5 // MIDI Layer
|
||||||
|
#define TO_MIDI TO(_MI)
|
||||||
|
#else
|
||||||
|
#define TO_MIDI _______
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TO_BASE TO(_BL)
|
||||||
|
#define MO_FUNC MO(_FL)
|
||||||
|
#define MEDIA MO(_ME)
|
||||||
|
#define MO_CTL MO(_CL)
|
||||||
|
#define L_MOUSE LT(_ML, KC_SPC)
|
||||||
|
#define ESC_FUN LT(_FL, KC_ESC)
|
||||||
|
|
||||||
|
#define ESC_GRV F(0)
|
||||||
|
#define RGB_RST F(1)
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap _BL: Base Layer (Default Layer)
|
/* Keymap _BL: Base Layer (Default Layer) */
|
||||||
*/
|
|
||||||
[_BL] = KEYMAP(
|
[_BL] = KEYMAP(
|
||||||
F(0), 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, \
|
ESC_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_INS, \
|
||||||
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, \
|
HPR_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, \
|
||||||
MO(_FL), 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, \
|
ESC_FUN, 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, KC_UP, \
|
KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSPC, KC_UP, \
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, _______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_RALT, MO(_ME), MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
|
KC_LCTL, KC_LGUI, KC_LALT,_______, L_MOUSE, L_MOUSE, _______, KC_RALT, KC_RCTL, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
/* Keymap _FL: Function Layer
|
/* Keymap _FL: Function Layer */
|
||||||
*/
|
|
||||||
[_FL] = KEYMAP(
|
[_FL] = KEYMAP(
|
||||||
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, _______, _______, BL_STEP, \
|
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, _______, _______, BL_STEP, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,_______, KC_PAUS, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, KC_PAUS, _______, _______, _______, _______, \
|
||||||
MO(_FL), _______, MO(_CL),_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RGHT, _______, _______, _______, _______, \
|
_______, _______, MO_CTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, _______, KC_PGUP, \
|
_______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, TO_MIDI, _______, _______, KC_PGUP, \
|
||||||
_______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, MO_FUNC, KC_HOME, KC_PGDN, KC_END),
|
||||||
|
|
||||||
/* Keymap _ME: Media layer
|
/* Keymap _ME: Media layer */
|
||||||
*/
|
|
||||||
[_ME] = KEYMAP(
|
[_ME] = KEYMAP(
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_VOLD, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, MO(_FL), _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______,_______, _______,_______, _______, _______, _______, _______, KC_MPRV, KC_MPLY,KC_MNXT),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT),
|
||||||
|
|
||||||
/* Keymap _CL: Control layer
|
/* Keymap _CL: Control layer */
|
||||||
*/
|
|
||||||
[_CL] = KEYMAP(
|
[_CL] = KEYMAP(
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
_______, RGB_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||||
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
|
||||||
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
_______, _______, MO_CTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, \
|
||||||
_______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
_______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||||
|
|
||||||
/* Keymap _ML: Mouse layer
|
/* Keymap _ML: Mouse layer */
|
||||||
*/
|
|
||||||
[_ML] = KEYMAP(
|
[_ML] = KEYMAP(
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, KC_BTN3,KC_BTN2,KC_BTN1,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R, _______, _______, _______, _______, \
|
_______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, _______, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MS_U, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, \
|
||||||
_______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D,KC_MS_R),
|
_______, _______, _______, _______, L_MOUSE, L_MOUSE, _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R),
|
||||||
|
|
||||||
|
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
|
||||||
|
/* Keymap _MI: MIDI layer (Advanced)*/
|
||||||
|
[_MI] = KEYMAP(
|
||||||
|
TO_BASE,MI_VEL_1,MI_VEL_2,MI_VEL_3,MI_VEL_4,MI_VEL_5,MI_VEL_6,MI_VEL_7,MI_VEL_8,MI_VEL_9,MI_VEL_10, MI_CHD, MI_CHU, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||||
|
xxxxxxx, xxxxxxx, MI_Cs, MI_Ds, xxxxxxx, MI_Fs, MI_Gs, MI_As, xxxxxxx, MI_Cs_1, MI_Ds_1, xxxxxxx, MI_Fs_1, xxxxxxx, xxxxxxx, \
|
||||||
|
MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, MI_G_1, xxxxxxx, \
|
||||||
|
MI_SUS, xxxxxxx, MI_OCTD, MI_OCTU,MI_MODSD,MI_MODSU, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, MI_TRNSD,MI_TRNSU,MI_TRNS_0, MI_SUS, xxxxxxx, \
|
||||||
|
xxxxxxx, xxxxxxx, xxxxxxx,xxxxxxx, MI_ALLOFF, MI_ALLOFF, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx),
|
||||||
|
#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
|
||||||
|
/* Keymap _MI: MIDI layer (Basic)*/
|
||||||
|
[_MI] = KEYMAP(
|
||||||
|
TO_BASE, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||||
|
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||||
|
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||||
|
xxxxxxx, xxxxxxx, MI_ON, MI_OFF, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||||
|
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx),
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This is a list of user defined functions. F(N) corresponds to item N
|
/* This is a list of user defined functions. F(N) corresponds to item N
|
||||||
@@ -66,6 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
*/
|
*/
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
||||||
|
[1] = ACTION_FUNCTION(1), // Calls action_function()
|
||||||
};
|
};
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
@@ -102,6 +135,11 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 1:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_mode(1);
|
||||||
|
rgblight_sethsv(206, 255, 255);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,26 +148,34 @@ enum layer_id {
|
|||||||
LAYER_FUNCTION,
|
LAYER_FUNCTION,
|
||||||
LAYER_MEDIA,
|
LAYER_MEDIA,
|
||||||
LAYER_CONTROL,
|
LAYER_CONTROL,
|
||||||
LAYER_MOUSE
|
LAYER_MOUSE,
|
||||||
|
#if defined(MIDI_ENABLE)
|
||||||
|
LAYER_MIDI
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
void clueboard_set_led(uint8_t id) {
|
void clueboard_set_led(uint8_t id, uint8_t val) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case LAYER_BASE:
|
case LAYER_BASE:
|
||||||
rgblight_sethsv_noeeprom(346, 0, 255);
|
rgblight_sethsv_noeeprom(0, 0, val);
|
||||||
break;
|
break;
|
||||||
case LAYER_FUNCTION:
|
case LAYER_FUNCTION:
|
||||||
rgblight_sethsv_noeeprom(46, 255, 255);
|
rgblight_sethsv_noeeprom(46, 255, val);
|
||||||
break;
|
break;
|
||||||
case LAYER_MEDIA:
|
case LAYER_MEDIA:
|
||||||
rgblight_sethsv_noeeprom(86, 255, 255);
|
rgblight_sethsv_noeeprom(86, 255, val);
|
||||||
break;
|
break;
|
||||||
case LAYER_CONTROL:
|
case LAYER_CONTROL:
|
||||||
rgblight_sethsv_noeeprom(346, 255, 255);
|
rgblight_sethsv_noeeprom(346, 255, val);
|
||||||
break;
|
break;
|
||||||
case LAYER_MOUSE:
|
case LAYER_MOUSE:
|
||||||
rgblight_sethsv_noeeprom(206, 255, 255);
|
rgblight_sethsv_noeeprom(206, 255, val);
|
||||||
break;
|
break;
|
||||||
|
#if defined(MIDI_ENABLE)
|
||||||
|
case LAYER_MIDI:
|
||||||
|
rgblight_sethsv_noeeprom(316, 255, val);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -140,18 +186,23 @@ void matrix_scan_user(void) {
|
|||||||
if (!rgblight_config.enable || rgblight_config.mode != 1) { return; }
|
if (!rgblight_config.enable || rgblight_config.mode != 1) { return; }
|
||||||
|
|
||||||
uint32_t layer = layer_state;
|
uint32_t layer = layer_state;
|
||||||
|
uint8_t val = rgblight_config.val;
|
||||||
|
|
||||||
if (layer & (1<<_FL)) {
|
if (layer & (1<<_FL)) {
|
||||||
if (layer & (1<<_ME)) {
|
if (layer & (1<<_ME)) {
|
||||||
clueboard_set_led(LAYER_MEDIA);
|
clueboard_set_led(LAYER_MEDIA, val);
|
||||||
} else if (layer & (1<<_CL)) {
|
} else if (layer & (1<<_CL)) {
|
||||||
clueboard_set_led(LAYER_CONTROL);
|
clueboard_set_led(LAYER_CONTROL, val);
|
||||||
} else {
|
} else {
|
||||||
clueboard_set_led(LAYER_FUNCTION);
|
clueboard_set_led(LAYER_FUNCTION, val);
|
||||||
}
|
}
|
||||||
} else if (layer & (1<<_ML)) {
|
} else if (layer & (1<<_ML)) {
|
||||||
clueboard_set_led(LAYER_MOUSE);
|
clueboard_set_led(LAYER_MOUSE, val);
|
||||||
|
#if defined(MIDI_ENABLE)
|
||||||
|
} else if (layer & (1<<_MI)) {
|
||||||
|
clueboard_set_led(LAYER_MIDI, val);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
clueboard_set_led(LAYER_BASE);
|
clueboard_set_led(LAYER_BASE, val);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1,6 +1,8 @@
|
|||||||

|
# Layout of @magicmonty
|
||||||
|
|
||||||
# MouseKeys Layout
|
[Keyboard Layout Editor File]
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
This layout is a combination of the `mouse_keys` and the `win_optimized` layouts.
|
This layout is a combination of the `mouse_keys` and the `win_optimized` layouts.
|
||||||
This layout is optimized for an ISO layout.
|
This layout is optimized for an ISO layout.
|
||||||
@@ -10,7 +12,11 @@ will move your mouse cursor. You can click using the 3 mods to the left of the
|
|||||||
arrow keys, or the 3 keys under your primary fingers on the home row.
|
arrow keys, or the 3 keys under your primary fingers on the home row.
|
||||||
The Left, Down, Up and Right for the mouse movement are also VIM-Like on the HJKL keys
|
The Left, Down, Up and Right for the mouse movement are also VIM-Like on the HJKL keys
|
||||||
|
|
||||||
The CapsLock is disabled and works as Function key.
|
There is also a MIDI layer included.
|
||||||
|
|
||||||
|
The CapsLock is disabled and works as Escape when tapped and Fn when Hold.
|
||||||
|
The Tab key works as Tab when tapped, and [Hyper] (Ctrl + Alt + Shift + Cmd) when hold
|
||||||
|
The Shift-Keys are configured as [Space Cadet Shift Parentheses]
|
||||||
|
|
||||||
There is also a separate media layer with Volume/Play controls
|
There is also a separate media layer with Volume/Play controls
|
||||||
|
|
||||||
@@ -21,3 +27,8 @@ The different layers are signalled throug setting of the underlight:
|
|||||||
- Media layer: Green
|
- Media layer: Green
|
||||||
- Mouse layer: Blue
|
- Mouse layer: Blue
|
||||||
- Control layer: Red
|
- Control layer: Red
|
||||||
|
- Midi layer: Purple
|
||||||
|
|
||||||
|
[Hyper]: http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
|
||||||
|
[Space Cadet Shift Parentheses]: http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
|
||||||
|
[Keyboard Layout Editor File]: http://www.keyboard-layout-editor.com/#/gists/f869b8789242a712e0f46eabbd550056
|
||||||
@@ -25,43 +25,90 @@
|
|||||||
#include "lcd_backlight_keyframes.h"
|
#include "lcd_backlight_keyframes.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LED_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
#include "led_keyframes.h"
|
#include "led_keyframes.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "visualizer_keyframes.h"
|
#include "visualizer_keyframes.h"
|
||||||
|
|
||||||
|
|
||||||
#if defined(LCD_ENABLE) && defined(LCD_BACKLIGHT_ENABLE)
|
#if defined(LCD_ENABLE) || defined(LCD_BACKLIGHT_ENABLE) || defined(BACKLIGHT_ENABLE)
|
||||||
|
|
||||||
|
static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||||
|
#ifdef LCD_ENABLE
|
||||||
|
lcd_keyframe_enable(animation, state);
|
||||||
|
#endif
|
||||||
|
#ifdef LCD_BACKLIGHT_ENABLE
|
||||||
|
backlight_keyframe_enable(animation, state);
|
||||||
|
#endif
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
led_keyframe_enable(animation, state);
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||||
|
#ifdef LCD_ENABLE
|
||||||
|
lcd_keyframe_disable(animation, state);
|
||||||
|
#endif
|
||||||
|
#ifdef LCD_BACKLIGHT_ENABLE
|
||||||
|
backlight_keyframe_disable(animation, state);
|
||||||
|
#endif
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
led_keyframe_disable(animation, state);
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||||
|
bool ret = false;
|
||||||
|
#ifdef LCD_BACKLIGHT_ENABLE
|
||||||
|
ret |= backlight_keyframe_animate_color(animation, state);
|
||||||
|
#endif
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
ret |= led_keyframe_fade_in_all(animation, state);
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||||
|
bool ret = false;
|
||||||
|
#ifdef LCD_BACKLIGHT_ENABLE
|
||||||
|
ret |= backlight_keyframe_animate_color(animation, state);
|
||||||
|
#endif
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
ret |= led_keyframe_fade_out_all(animation, state);
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Don't worry, if the startup animation is long, you can use the keyboard like normal
|
// Don't worry, if the startup animation is long, you can use the keyboard like normal
|
||||||
// during that time
|
// during that time
|
||||||
keyframe_animation_t default_startup_animation = {
|
keyframe_animation_t default_startup_animation = {
|
||||||
.num_frames = 4,
|
.num_frames = 3,
|
||||||
.loop = false,
|
.loop = false,
|
||||||
.frame_lengths = {0, 0, 0, gfxMillisecondsToTicks(5000), 0},
|
.frame_lengths = {0, 0, gfxMillisecondsToTicks(5000)},
|
||||||
.frame_functions = {
|
.frame_functions = {
|
||||||
lcd_keyframe_enable,
|
keyframe_enable,
|
||||||
backlight_keyframe_enable,
|
|
||||||
lcd_keyframe_draw_logo,
|
lcd_keyframe_draw_logo,
|
||||||
backlight_keyframe_animate_color,
|
keyframe_fade_in,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
keyframe_animation_t default_suspend_animation = {
|
keyframe_animation_t default_suspend_animation = {
|
||||||
.num_frames = 4,
|
.num_frames = 3,
|
||||||
.loop = false,
|
.loop = false,
|
||||||
.frame_lengths = {0, gfxMillisecondsToTicks(1000), 0, 0},
|
.frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
|
||||||
.frame_functions = {
|
.frame_functions = {
|
||||||
lcd_keyframe_display_layer_text,
|
lcd_keyframe_display_layer_text,
|
||||||
backlight_keyframe_animate_color,
|
keyframe_fade_out,
|
||||||
lcd_keyframe_disable,
|
keyframe_disable,
|
||||||
backlight_keyframe_disable,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(LED_ENABLE)
|
#if defined(BACKLIGHT_ENABLE)
|
||||||
#define CROSSFADE_TIME 1000
|
#define CROSSFADE_TIME 1000
|
||||||
#define GRADIENT_TIME 3000
|
#define GRADIENT_TIME 3000
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ extern const uint8_t CIE1931_CURVE[];
|
|||||||
#define GDISP_INITIAL_CONTRAST 0
|
#define GDISP_INITIAL_CONTRAST 0
|
||||||
#endif
|
#endif
|
||||||
#ifndef GDISP_INITIAL_BACKLIGHT
|
#ifndef GDISP_INITIAL_BACKLIGHT
|
||||||
#define GDISP_INITIAL_BACKLIGHT 100
|
#define GDISP_INITIAL_BACKLIGHT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
|
#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
|
||||||
@@ -173,7 +173,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// software shutdown disable (i.e. turn stuff on)
|
// software shutdown disable (i.e. turn stuff on)
|
||||||
write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
|
write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
|
||||||
gfxSleepMilliseconds(10);
|
gfxSleepMilliseconds(10);
|
||||||
|
|
||||||
// Finish Init
|
// Finish Init
|
||||||
@@ -183,7 +183,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||||||
g->g.Width = GDISP_SCREEN_WIDTH;
|
g->g.Width = GDISP_SCREEN_WIDTH;
|
||||||
g->g.Height = GDISP_SCREEN_HEIGHT;
|
g->g.Height = GDISP_SCREEN_HEIGHT;
|
||||||
g->g.Orientation = GDISP_ROTATE_0;
|
g->g.Orientation = GDISP_ROTATE_0;
|
||||||
g->g.Powermode = powerOn;
|
g->g.Powermode = powerOff;
|
||||||
g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
|
g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
|
||||||
g->g.Contrast = GDISP_INITIAL_CONTRAST;
|
g->g.Contrast = GDISP_INITIAL_CONTRAST;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -204,7 +204,8 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||||||
uint8_t* src = PRIV(g)->frame_buffer;
|
uint8_t* src = PRIV(g)->frame_buffer;
|
||||||
for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
|
for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
|
||||||
for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
|
for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
|
||||||
PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[*src];
|
uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
|
||||||
|
PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
|
||||||
++src;
|
++src;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -297,8 +298,13 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||||||
g->g.Orientation = (orientation_t)g->p.ptr;
|
g->g.Orientation = (orientation_t)g->p.ptr;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case GDISP_CONTROL_CONTRAST:
|
case GDISP_CONTROL_BACKLIGHT:
|
||||||
return;
|
if (g->g.Backlight == (unsigned)g->p.ptr)
|
||||||
|
return;
|
||||||
|
unsigned val = (unsigned)g->p.ptr;
|
||||||
|
g->g.Backlight = val > 100 ? 100 : val;
|
||||||
|
g->flags |= GDISP_FLG_NEEDFLUSH;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // GDISP_NEED_CONTROL
|
#endif // GDISP_NEED_CONTROL
|
||||||
|
|||||||
@@ -62,15 +62,10 @@ CUSTOM_MATRIX ?= yes # Custom matrix file
|
|||||||
SERIAL_LINK_ENABLE = yes
|
SERIAL_LINK_ENABLE = yes
|
||||||
VISUALIZER_ENABLE ?= yes
|
VISUALIZER_ENABLE ?= yes
|
||||||
LCD_ENABLE ?= yes
|
LCD_ENABLE ?= yes
|
||||||
LED_ENABLE ?= no
|
BACKLIGHT_ENABLE ?= yes
|
||||||
LCD_BACKLIGHT_ENABLE ?= yes
|
LCD_BACKLIGHT_ENABLE ?= yes
|
||||||
MIDI_ENABLE = no
|
MIDI_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|
||||||
ifdef LCD_ENABLE
|
|
||||||
include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
|
include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
|
||||||
endif
|
include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
|
||||||
|
|
||||||
ifdef LED_ENABLE
|
|
||||||
include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
|
|
||||||
endif
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
SUBPROJECT_DEFAULT = infinity
|
SUBPROJECT_DEFAULT = infinity
|
||||||
LCD_BACKLIGHT_ENABLE = yes
|
LCD_BACKLIGHT_ENABLE = yes
|
||||||
LCD_ENABLE = yes
|
LCD_ENABLE = yes
|
||||||
LED_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
TAP_DANCE_ENABLE=yes
|
||||||
|
UNICODE_ENABLE=yes
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
# Belak's Ergodox Layout
|
||||||
|
|
||||||
|
This has been based off of [emacs\_osx\_dk](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/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/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/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.
|
||||||
@@ -0,0 +1,368 @@
|
|||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "eeconfig.h"
|
||||||
|
#include "eeprom.h"
|
||||||
|
|
||||||
|
#define LAYER_ON(pos) ((layer_state) & (1<<(pos)))
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
|
#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] = KEYMAP( // 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] = KEYMAP(
|
||||||
|
// 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] = KEYMAP(
|
||||||
|
// 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] = KEYMAP(
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
|
|
||||||
# QMK Build Options
|
# QMK Build Options
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # 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
|
||||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
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 = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
@@ -29,9 +29,9 @@ MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
|||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
endif
|
endif
|
||||||
@@ -26,22 +26,22 @@
|
|||||||
#define _FL 1
|
#define _FL 1
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BL] = KEYMAP(
|
[_BL] = KEYMAP(
|
||||||
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_SLCK, KC_BRK, \
|
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_SLCK, KC_BRK, \
|
||||||
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_INS, KC_HOME, KC_PGUP, \
|
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_INS, KC_HOME, 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_END, KC_PGDN, \
|
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_END, KC_PGDN, \
|
||||||
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_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_UP, \
|
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, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
),
|
),
|
||||||
[_FL] = KEYMAP(
|
[_FL] = KEYMAP(
|
||||||
BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \
|
BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
@@ -50,32 +50,32 @@ const uint16_t PROGMEM fn_actions[] = {
|
|||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
{
|
{
|
||||||
// MACRODOWN only works in this function
|
// MACRODOWN only works in this function
|
||||||
switch(id) {
|
switch(id) {
|
||||||
case 0:
|
case 0:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
SEND_STRING("The");
|
SEND_STRING("The");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
SEND_STRING("Custom");
|
SEND_STRING("Custom");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
SEND_STRING("Keyboard");
|
SEND_STRING("Keyboard");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
|
return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ void matrix_scan_user(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ See [keymap.c](keymap.c) for details.
|
|||||||
|
|
||||||
## Layers
|
## Layers
|
||||||
|
|
||||||
The keymap have two layers. To access the functions on the second layer, hold down caps lock and press the corresponding key.
|
The keymap have two layers. To access the functions on the second layer, hold down `Fn` and press the corresponding key.
|
||||||
|
|
||||||
### Layer 1: Default Layer
|
### Layer 1: Default Layer
|
||||||
,---. ,---------------. ,---------------. ,---------------. ,-----------.
|
,---. ,---------------. ,---------------. ,---------------. ,-----------.
|
||||||
|
|||||||
@@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
|
|
||||||
# QMK Build Options
|
# QMK Build Options
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # 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
|
||||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
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 = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
@@ -29,9 +29,9 @@ MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
|||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
endif
|
endif
|
||||||
@@ -26,22 +26,22 @@
|
|||||||
#define _FL 1
|
#define _FL 1
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BL] = KEYMAP_WINKEYLESS(
|
[_BL] = KEYMAP_WINKEYLESS(
|
||||||
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_SLCK, KC_BRK, \
|
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_SLCK, KC_BRK, \
|
||||||
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_INS, KC_HOME, KC_PGUP, \
|
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_INS, KC_HOME, 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_END, KC_PGDN, \
|
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_END, KC_PGDN, \
|
||||||
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_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_UP, \
|
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, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
),
|
),
|
||||||
[_FL] = KEYMAP_WINKEYLESS(
|
[_FL] = KEYMAP_WINKEYLESS(
|
||||||
BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \
|
BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
@@ -50,32 +50,32 @@ const uint16_t PROGMEM fn_actions[] = {
|
|||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
{
|
{
|
||||||
// MACRODOWN only works in this function
|
// MACRODOWN only works in this function
|
||||||
switch(id) {
|
switch(id) {
|
||||||
case 0:
|
case 0:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
SEND_STRING("The");
|
SEND_STRING("The");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
SEND_STRING("Custom");
|
SEND_STRING("Custom");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
SEND_STRING("Keyboard");
|
SEND_STRING("Keyboard");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
|
return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ void matrix_scan_user(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ See [keymap.c](keymap.c) for details.
|
|||||||
|
|
||||||
## Layers
|
## Layers
|
||||||
|
|
||||||
The keymap have two layers. To access the functions on the second layer, hold down caps lock and press the corresponding key.
|
The keymap have two layers. To access the functions on the second layer, hold down `Fn` and press the corresponding key.
|
||||||
|
|
||||||
### Layer 1: Default Layer
|
### Layer 1: Default Layer
|
||||||
,---. ,---------------. ,---------------. ,---------------. ,-----------.
|
,---. ,---------------. ,---------------. ,---------------. ,-----------.
|
||||||
|
|||||||
+13
-13
@@ -16,24 +16,24 @@
|
|||||||
#include "kmac.h"
|
#include "kmac.h"
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
led_init_ports();
|
led_init_ports();
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
void matrix_scan_kb(void) {
|
||||||
// put your looping keyboard code here
|
// put your looping keyboard code here
|
||||||
// runs every cycle (a lot)
|
// runs every cycle (a lot)
|
||||||
|
|
||||||
matrix_scan_user();
|
matrix_scan_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
// put your per-action keyboard code here
|
// put your per-action keyboard code here
|
||||||
// runs for every action, just before processing by the firmware
|
// runs for every action, just before processing by the firmware
|
||||||
|
|
||||||
return process_record_user(keycode, record);
|
return process_record_user(keycode, record);
|
||||||
}
|
}
|
||||||
|
|
||||||
void led_init_ports(void) {
|
void led_init_ports(void) {
|
||||||
@@ -64,12 +64,12 @@ void led_set_kb(uint8_t usb_led) {
|
|||||||
PORTE |= (1<<6); // HI
|
PORTE |= (1<<6); // HI
|
||||||
}
|
}
|
||||||
|
|
||||||
led_set_user(usb_led);
|
led_set_user(usb_led);
|
||||||
}
|
}
|
||||||
|
|
||||||
void backlight_init_ports(void) {
|
void backlight_init_ports(void) {
|
||||||
DDRB |= (1<<1) | (1<<2) | (1<<3) | (1<<4); // OUT
|
DDRB |= (1<<1) | (1<<2) | (1<<3) | (1<<4); // OUT
|
||||||
DDRD |= (1<<7); // OUT
|
DDRD |= (1<<7); // OUT
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Backlight pin configuration
|
/* Backlight pin configuration
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ bool matrix_is_on(uint8_t row, uint8_t col)
|
|||||||
inline
|
inline
|
||||||
matrix_row_t matrix_get_row(uint8_t row)
|
matrix_row_t matrix_get_row(uint8_t row)
|
||||||
{
|
{
|
||||||
return matrix[row];
|
return matrix[row];
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_print(void)
|
void matrix_print(void)
|
||||||
|
|||||||
@@ -57,14 +57,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= yes # 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
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file
|
CUSTOM_MATRIX ?= yes # Custom matrix file
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
|
MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
|
||||||
UNICODE_ENABLE ?= no # Unicode
|
UNICODE_ENABLE ?= no # Unicode
|
||||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
USE_I2C = no
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define TAPPING_TERM 150
|
||||||
|
|
||||||
|
#define USE_SERIAL
|
||||||
|
#define EE_HANDS
|
||||||
|
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
#ifdef SUBPROJECT_rev1
|
||||||
|
#include "../../rev1/config.h"
|
||||||
|
#endif
|
||||||
|
#ifdef SUBPROJECT_rev2
|
||||||
|
#include "../../rev2/config.h"
|
||||||
|
#endif
|
||||||
|
#ifdef SUBPROJECT_rev2fliphalf
|
||||||
|
#include "../../rev2fliphalf/config.h"
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
#include "lets_split.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "eeconfig.h"
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _COLEMAK 1
|
||||||
|
#define _DVORAK 2
|
||||||
|
#define _LOWER 3
|
||||||
|
#define _RAISE 4
|
||||||
|
#define _ADJUST 16
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
COLEMAK,
|
||||||
|
DVORAK,
|
||||||
|
LOWER,
|
||||||
|
RAISE,
|
||||||
|
ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fillers to make layering more clear
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXXXX KC_NO
|
||||||
|
|
||||||
|
// Tap Dance Declarations
|
||||||
|
enum {
|
||||||
|
SFT_CAP = 0,
|
||||||
|
LFT_HOM,
|
||||||
|
DWN_PDN,
|
||||||
|
UPP_PUP,
|
||||||
|
RGT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
// Dylan's additions
|
||||||
|
#define C_A_DEL LALT(LCTL(KC_DEL))
|
||||||
|
#define C_A_INS LALT(LCTL(KC_INS))
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = KEYMAP( \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
||||||
|
CTL_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, \
|
||||||
|
TD(SFT_CAP), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \
|
||||||
|
ADJUST, KC_LCTL, 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 |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_COLEMAK] = KEYMAP( \
|
||||||
|
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 , \
|
||||||
|
ADJUST, KC_LCTL, 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 |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_DVORAK] = KEYMAP( \
|
||||||
|
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 , \
|
||||||
|
ADJUST, KC_LCTL, 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 | | END | HOME |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_LOWER] = KEYMAP( \
|
||||||
|
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_END, KC_HOME, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, 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 DN |PG UP |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_RAISE] = KEYMAP( \
|
||||||
|
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_PGDN, KC_PGUP, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust (Lower + Raise)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | Reset| | | | | | | | | | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_ADJUST] = KEYMAP( \
|
||||||
|
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
|
||||||
|
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, C_A_INS, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_DEL \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[SFT_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
|
||||||
|
[LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
|
||||||
|
[DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
|
||||||
|
[UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
|
||||||
|
[RGT_END] = ACTION_TAP_DANCE_DOUBLE(KC_RGHT, KC_END)
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||||
|
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||||
|
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void persistent_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL<<_QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL<<_COLEMAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL<<_DVORAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case LOWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RAISE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case ADJUST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
#define TD_DOT TD(TDK_DOT)
|
#define TD_DOT TD(TDK_DOT)
|
||||||
#define TD_SLSH TD(TDK_SLSH)
|
#define TD_SLSH TD(TDK_SLSH)
|
||||||
|
|
||||||
|
// macros
|
||||||
#define ACTION_TAP_DANCE_FN_KEYCODE(user_fn, kc) { \
|
#define ACTION_TAP_DANCE_FN_KEYCODE(user_fn, kc) { \
|
||||||
.fn = { NULL, user_fn, NULL }, \
|
.fn = { NULL, user_fn, NULL }, \
|
||||||
.user_data = (void *)&((qk_tap_dance_pair_t) { kc, 0 }) \
|
.user_data = (void *)&((qk_tap_dance_pair_t) { kc, 0 }) \
|
||||||
@@ -47,6 +48,7 @@
|
|||||||
.user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }) \
|
.user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }) \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define TAP(keycode) register_code16(keycode); unregister_code16(keycode)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -25,10 +25,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[DEF] = {
|
[DEF] = {
|
||||||
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P},
|
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P },
|
||||||
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, TD_SCLN},
|
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, TD_SCLN},
|
||||||
{KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, TD_COMM, TD_DOT, TD_SLSH},
|
{KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, TD_COMM, TD_DOT, TD_SLSH},
|
||||||
{OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, KC_SPC, KC_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
{OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, KC_SPC, KC_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
||||||
},
|
},
|
||||||
/* Lower
|
/* Lower
|
||||||
* ,-----------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------------------------------.
|
||||||
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
|
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
|
||||||
{KC_TILD, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR},
|
{KC_TILD, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR},
|
||||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DQUO, KC_PIPE},
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DQUO, KC_PIPE},
|
||||||
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
|
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END }
|
||||||
},
|
},
|
||||||
/* Raise
|
/* Raise
|
||||||
* ,-----------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------------------------------.
|
||||||
@@ -59,10 +59,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[RSE] = {
|
[RSE] = {
|
||||||
{KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0},
|
{KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0 },
|
||||||
{KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC},
|
{KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC},
|
||||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS},
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS},
|
||||||
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
|
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END }
|
||||||
},
|
},
|
||||||
/* Function
|
/* Function
|
||||||
* ,-----------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------------------------------.
|
||||||
@@ -76,17 +76,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[FUN] = {
|
[FUN] = {
|
||||||
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10},
|
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 },
|
||||||
{KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R},
|
{KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R},
|
||||||
{BL_TOGG, BL_STEP, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3},
|
{BL_TOGG, BL_STEP, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3},
|
||||||
{_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R}
|
{_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R}
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
void tap(uint16_t keycode) {
|
|
||||||
register_code16(keycode);
|
|
||||||
unregister_code16(keycode);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void tap_dance_triple(qk_tap_dance_state_t *state, void *user_data) {
|
void tap_dance_triple(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
@@ -96,25 +90,22 @@ void tap_dance_triple(qk_tap_dance_state_t *state, void *user_data) {
|
|||||||
switch(state->count) {
|
switch(state->count) {
|
||||||
case 2:
|
case 2:
|
||||||
register_code(KC_LSFT);
|
register_code(KC_LSFT);
|
||||||
tap(keycode);
|
TAP(keycode);
|
||||||
unregister_code(KC_LSFT);
|
unregister_code(KC_LSFT);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3: // fall through
|
||||||
if (pair->kc2) {
|
if (pair->kc2) {
|
||||||
keycode = pair->kc2;
|
keycode = pair->kc2;
|
||||||
}
|
}
|
||||||
tap(keycode);
|
TAP(keycode);
|
||||||
tap(keycode);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
tap(keycode);
|
TAP(keycode);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
[TDK_SCLN] = ACTION_TAP_DANCE_FN_KEYCODE2(tap_dance_triple, KC_SCLN, KC_COLN),
|
[TDK_SCLN] = ACTION_TAP_DANCE_FN_KEYCODE2(tap_dance_triple, KC_SCLN, KC_COLN),
|
||||||
[TDK_COMM] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_COMM),
|
[TDK_COMM] = ACTION_TAP_DANCE_FN_KEYCODE2(tap_dance_triple, KC_COMM, KC_LABK),
|
||||||
[TDK_DOT] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_DOT),
|
[TDK_DOT] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_DOT),
|
||||||
[TDK_SLSH] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_SLSH)
|
[TDK_SLSH] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_SLSH)
|
||||||
};
|
};
|
||||||
@@ -126,6 +117,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ enum planck_keycodes {
|
|||||||
#define M_BRDFT M(MACRO_BREATH_DEFAULT)
|
#define M_BRDFT M(MACRO_BREATH_DEFAULT)
|
||||||
// Tap Dance Declarations
|
// Tap Dance Declarations
|
||||||
enum {
|
enum {
|
||||||
ESC_CAP = 0,
|
SFT_CAP = 0,
|
||||||
LFT_HOM,
|
LFT_HOM,
|
||||||
DWN_PDN,
|
DWN_PDN,
|
||||||
UPP_PUP,
|
UPP_PUP,
|
||||||
@@ -72,10 +72,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = {
|
[_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 },
|
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
|
||||||
{TD(ESC_CAP), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
|
{CTL_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)},
|
{TD(SFT_CAP), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)},
|
||||||
{BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
|
{BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Colemak
|
/* Colemak
|
||||||
@@ -192,7 +192,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
[ESC_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
|
[SFT_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
|
||||||
[LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
|
[LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
|
||||||
[DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
|
[DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
|
||||||
[UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
|
[UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = no # 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 = yes # 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. Do not enable this with audio at the same time.
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
TAP_DANCE_ENABLE = no # Enable tap dancing keys
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
|
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 CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6060
|
||||||
|
#define DEVICE_VER 0x0003
|
||||||
|
#define MANUFACTURER Sentraq
|
||||||
|
#define PRODUCT S60-RGB
|
||||||
|
#define DESCRIPTION QMK keyboard firmware for Sentraq S60-RGB
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
|
||||||
|
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B7
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/* Backlight configuration
|
||||||
|
*/
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
/* Underlight configuration
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define RGB_DI_PIN F6
|
||||||
|
#define RGBLIGHT_TIMER
|
||||||
|
#define RGBLED_NUM 10 // Number of LEDs
|
||||||
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
#define RGBLIGHT_VAL_STEP 17
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
// For Tap Dancing
|
||||||
|
|
||||||
|
#define TAPPING_TOGGLE 1
|
||||||
|
#define TAPPING_TERM 300
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||||
|
|
||||||
|
// Space Cadet Rollover - if set, allows to tap opposite shift key to cancel erroneous press
|
||||||
|
#define DISABLE_SPACE_CADET_ROLLOVER
|
||||||
|
|
||||||
|
// Prevent stuck modifiers
|
||||||
|
#define PREVENT_STUCK_MODIFIERS
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,695 @@
|
|||||||
|
#include "s60_x.h"
|
||||||
|
|
||||||
|
// Keyboard Layers
|
||||||
|
|
||||||
|
enum keyboard_layers {
|
||||||
|
BASE, //Base Layer
|
||||||
|
ARROWFN, //Arrow/FN Layer
|
||||||
|
MOUSE, //Mouse Layer
|
||||||
|
MIDI_BASE, //Midi Layer
|
||||||
|
MIDI_CHORDS, //Midi Chord Layer
|
||||||
|
MORSE, //Morse Code Layer
|
||||||
|
};
|
||||||
|
|
||||||
|
// Morse Code Macro Keys
|
||||||
|
|
||||||
|
enum morse_macros {
|
||||||
|
MC_0 = M(0),
|
||||||
|
MC_1 = M(1),
|
||||||
|
MC_2 = M(2),
|
||||||
|
MC_3 = M(3),
|
||||||
|
MC_4 = M(4),
|
||||||
|
MC_5 = M(5),
|
||||||
|
MC_6 = M(6),
|
||||||
|
MC_7 = M(7),
|
||||||
|
MC_8 = M(8),
|
||||||
|
MC_9 = M(9),
|
||||||
|
MC_A = M(10),
|
||||||
|
MC_B = M(11),
|
||||||
|
MC_C = M(12),
|
||||||
|
MC_D = M(13),
|
||||||
|
MC_E = M(14),
|
||||||
|
MC_F = M(15),
|
||||||
|
MC_G = M(16),
|
||||||
|
MC_H = M(17),
|
||||||
|
MC_I = M(18),
|
||||||
|
MC_J = M(19),
|
||||||
|
MC_K = M(20),
|
||||||
|
MC_L = M(21),
|
||||||
|
MC_M = M(22),
|
||||||
|
MC_N = M(23),
|
||||||
|
MC_O = M(24),
|
||||||
|
MC_P = M(25),
|
||||||
|
MC_Q = M(26),
|
||||||
|
MC_R = M(27),
|
||||||
|
MC_S = M(28),
|
||||||
|
MC_T = M(29),
|
||||||
|
MC_U = M(30),
|
||||||
|
MC_V = M(31),
|
||||||
|
MC_W = M(32),
|
||||||
|
MC_X = M(33),
|
||||||
|
MC_Y = M(34),
|
||||||
|
MC_Z = M(35),
|
||||||
|
MC_DOT = M(36),
|
||||||
|
MC_COMM = M(37),
|
||||||
|
MC_APOS = M(38),
|
||||||
|
MC_SLSH = M(39),
|
||||||
|
MC_SCLN = M(40),
|
||||||
|
MC_EQL = M(41),
|
||||||
|
MC_MINS = M(42),
|
||||||
|
MC_SPACE = M(43),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Custom Keys
|
||||||
|
|
||||||
|
enum custom_keys {
|
||||||
|
|
||||||
|
// Miscellaneous Keycodes
|
||||||
|
|
||||||
|
TFS = LCTL(LALT(KC_DEL)), // Three Finger Salute - Sends Ctl-Alt-Del
|
||||||
|
MAGSYS = SAFE_RANGE, // Magic SysRq key - Sends Alt-PSCR
|
||||||
|
MC_LSFT, // Morse Code Left Shift
|
||||||
|
MC_RSFT, // Morse Code Right Shift
|
||||||
|
|
||||||
|
// MIDI Chord Keycodes - Major
|
||||||
|
|
||||||
|
MI_CH_C,
|
||||||
|
MI_CH_Cs,
|
||||||
|
MI_CH_Db = MI_CH_Cs,
|
||||||
|
MI_CH_D,
|
||||||
|
MI_CH_Ds,
|
||||||
|
MI_CH_Eb = MI_CH_Ds,
|
||||||
|
MI_CH_E,
|
||||||
|
MI_CH_F,
|
||||||
|
MI_CH_Fs,
|
||||||
|
MI_CH_Gb = MI_CH_Fs,
|
||||||
|
MI_CH_G ,
|
||||||
|
MI_CH_Gs,
|
||||||
|
MI_CH_Ab = MI_CH_Gs,
|
||||||
|
MI_CH_A,
|
||||||
|
MI_CH_As,
|
||||||
|
MI_CH_Bb = MI_CH_As,
|
||||||
|
MI_CH_B,
|
||||||
|
|
||||||
|
// MIDI Chord Keycodes Minor
|
||||||
|
|
||||||
|
MI_CH_Cm,
|
||||||
|
MI_CH_Csm,
|
||||||
|
MI_CH_Dbm = MI_CH_Csm,
|
||||||
|
MI_CH_Dm,
|
||||||
|
MI_CH_Dsm,
|
||||||
|
MI_CH_Ebm = MI_CH_Dsm,
|
||||||
|
MI_CH_Em,
|
||||||
|
MI_CH_Fm,
|
||||||
|
MI_CH_Fsm,
|
||||||
|
MI_CH_Gbm = MI_CH_Fsm,
|
||||||
|
MI_CH_Gm,
|
||||||
|
MI_CH_Gsm,
|
||||||
|
MI_CH_Abm = MI_CH_Gsm,
|
||||||
|
MI_CH_Am,
|
||||||
|
MI_CH_Asm,
|
||||||
|
MI_CH_Bbm = MI_CH_Asm,
|
||||||
|
MI_CH_Bm,
|
||||||
|
|
||||||
|
//MIDI Chord Keycodes Dominant Seventh
|
||||||
|
|
||||||
|
MI_CH_CDom7,
|
||||||
|
MI_CH_CsDom7,
|
||||||
|
MI_CH_DbDom7 = MI_CH_CsDom7,
|
||||||
|
MI_CH_DDom7,
|
||||||
|
MI_CH_DsDom7,
|
||||||
|
MI_CH_EbDom7 = MI_CH_DsDom7,
|
||||||
|
MI_CH_EDom7,
|
||||||
|
MI_CH_FDom7,
|
||||||
|
MI_CH_FsDom7,
|
||||||
|
MI_CH_GbDom7 = MI_CH_FsDom7,
|
||||||
|
MI_CH_GDom7,
|
||||||
|
MI_CH_GsDom7,
|
||||||
|
MI_CH_AbDom7 = MI_CH_GsDom7,
|
||||||
|
MI_CH_ADom7,
|
||||||
|
MI_CH_AsDom7,
|
||||||
|
MI_CH_BbDom7 = MI_CH_AsDom7,
|
||||||
|
MI_CH_BDom7,
|
||||||
|
|
||||||
|
// MIDI Chord Keycodes Diminished Seventh
|
||||||
|
|
||||||
|
MI_CH_CDim7,
|
||||||
|
MI_CH_CsDim7,
|
||||||
|
MI_CH_DbDim7 = MI_CH_CsDim7,
|
||||||
|
MI_CH_DDim7,
|
||||||
|
MI_CH_DsDim7,
|
||||||
|
MI_CH_EbDim7 = MI_CH_DsDim7,
|
||||||
|
MI_CH_EDim7,
|
||||||
|
MI_CH_FDim7,
|
||||||
|
MI_CH_FsDim7,
|
||||||
|
MI_CH_GbDim7 = MI_CH_FsDim7,
|
||||||
|
MI_CH_GDim7,
|
||||||
|
MI_CH_GsDim7,
|
||||||
|
MI_CH_AbDim7 = MI_CH_GsDim7,
|
||||||
|
MI_CH_ADim7,
|
||||||
|
MI_CH_AsDim7,
|
||||||
|
MI_CH_BbDim7 = MI_CH_AsDim7,
|
||||||
|
MI_CH_BDim7,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//Keymaps
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* 0: Custom Dvorak/HHKBish Base Layer
|
||||||
|
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │ \ │ ` │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ TAB │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │BSPC │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│CT/ES│ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │▒▒▒▒▒│CT/EN│█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│LSPO │▒▒▒▒▒│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │▒▒▒▒▒│RSPC │▒▒▒▒▒│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│MO(2)│L_GUI│L_ALT│█████│█████│█████│SPFN1│█████│█████│█████│AG/AP│R_GUI│CT|S │CT|AL│█████│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[BASE] = KEYMAP(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, \
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC, \
|
||||||
|
CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_NO, MT(MOD_RCTL, KC_ENT), \
|
||||||
|
KC_LSPO, KC_NO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, KC_RSPC, KC_NO, \
|
||||||
|
MO(2), KC_LGUI, KC_LALT, LT(1, KC_SPACE), ALGR_T(KC_APP), KC_RGUI, OSM(MOD_LCTL | MOD_LSFT), OSM(MOD_LCTL | MOD_LALT)
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 1: Arrow/FN Layer
|
||||||
|
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │TO(3)│TO(5)│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │ │ │ │ │PGUP │ UP │ │ │ │ INS │ DEL │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│CAPS │HOME │ │ END │ │ │ │LEFT │DOWN │RIGHT│ │ │▒▒▒▒▒│ │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │▒▒▒▒▒│ │ │ │ │ │SPACE│PGDN │PSCR │SLCK │PAUSE│▒▒▒▒▒│ │▒▒▒▒▒│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[ARROWFN] = KEYMAP(
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TO(3), TO(5), \
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_NO, KC_NO, KC_NO, KC_INS, KC_DEL, \
|
||||||
|
KC_CAPS, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, KC_NO, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPACE, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_TRNS, KC_NO, \
|
||||||
|
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 2: Mouse Keys Layer
|
||||||
|
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│RESET│ F13 │ F14 │ F15 │ F16 │ F17 │ F18 │ F19 │ F20 │ F21 │ F22 │ F23 │ F24 │ │ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│DEBUG│ │ │ │ │ │ │BTN1 │MS_UP│BTN2 │WH_UP│ │ │ │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│TFS │ │ │ │ │ │ │MS_LT│MS_DN│MS_RT│WH_DN│BTN3 │▒▒▒▒▒│ │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│MAGSYS▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │█████│█████│█████│ PWR │█████│█████│█████│ │ │ │ │█████│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[MOUSE] = KEYMAP(
|
||||||
|
|
||||||
|
RESET, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, \
|
||||||
|
DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_UP, KC_BTN2, KC_WH_U, KC_NO, KC_NO, KC_NO, \
|
||||||
|
TFS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_WH_D, KC_BTN3, KC_NO, KC_TRNS, \
|
||||||
|
MAGSYS, 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_NO, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_POWER, KC_TRNS, KC_TRNS, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 3: Midi Base Layer
|
||||||
|
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│TO(0)│ Cmaj│ Gmaj│ Dmaj│ Amaj│ Emaj│ Bmaj│Gbmaj│Dbmaj│Abmaj│Ebmaj│Bbmaj│ Fmaj│ │TO(4)│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│OCT+ │ │ C# │ D# │ │ F# │ G# │ A# │ │ C# │ D# │ │ │ │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│OCT- │ C │ D │ E │ F │ G │ A │ B │ C │ D │ E │ F │▒▒▒▒▒│ │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ Cm │▒▒▒▒▒│ Gm │ Dm │ Am │ Em │ Bm │ Gbm │ Dbm │ Abm │ Ebm │ Bbm │▒▒▒▒▒│ Fm │▒▒▒▒▒│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │█████│█████│█████│A-OFF│█████│█████│█████│ │ │ │ │█████│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[MIDI_BASE] = KEYMAP(
|
||||||
|
TO(0), MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Gb, MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, KC_NO, TO(4), \
|
||||||
|
MI_OCTU, KC_NO, MI_Cs, MI_Ds, KC_NO, MI_Fs, MI_Gs, MI_As, KC_NO, MI_Cs_1, MI_Ds_1, KC_NO, KC_NO, KC_NO, \
|
||||||
|
MI_OCTD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, KC_NO, KC_NO, \
|
||||||
|
MI_CH_Cm, KC_NO, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Gbm, MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, KC_NO, MI_CH_Fm, KC_NO, \
|
||||||
|
KC_NO, KC_NO, KC_NO, MI_ALLOFF, KC_NO, KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 4: Midi Chord Layer
|
||||||
|
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│TO(0)│ Cmaj│ Gmaj│ Dmaj│ Amaj│ Emaj│ Bmaj│Gbmaj│Dbmaj│Abmaj│Ebmaj│Bbmaj│ Fmaj│TO(3)│ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│OCT+ │ Cm │ Gm │ Dm │ Am │ Em │ Bbm │ Gbm │ Dbm │ Abm │ Ebm │ Bbm │ Fm │ │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│OCT- │Cdom7│Gdom7│Ddom7│Adom7│Edom7│Bdom7│Gbdo7│Dbdo7│Abdo7│Ebdo7│Bbdo7│▒▒▒▒▒│Fdom7│█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│Cdim7│▒▒▒▒▒│Gdim7│Ddim7│Adim7│Edim7│Bdim7│Gbdi7│Dbdi7│Abdi7│Ebdi7│Bbdi7│▒▒▒▒▒│Fdim7│▒▒▒▒▒│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │█████│█████│█████│A-OFF│█████│█████│█████│ │ │ │ │█████│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[MIDI_CHORDS] = KEYMAP(
|
||||||
|
TO(0), MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Gb, MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, TO(3), KC_NO, \
|
||||||
|
MI_OCTU, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Gbm, MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, KC_NO, \
|
||||||
|
MI_OCTD, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_GbDom7, MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, KC_NO, MI_CH_FDom7, \
|
||||||
|
MI_CH_CDim7, KC_NO, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_GbDim7, MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, KC_NO, MI_CH_FDim7, KC_NO, \
|
||||||
|
KC_NO, KC_NO, KC_NO, MI_ALLOFF, KC_NO, KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 5: Morse Code Layer
|
||||||
|
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│TO(0)│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │ │ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │BSPC │█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │▒▒▒▒▒│ENTER│█████│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│SHIFT│▒▒▒▒▒│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │▒▒▒▒▒│SHIFT│▒▒▒▒▒│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │█████│█████│█████│SPACE│█████│█████│█████│ │ │ │ │█████│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[MORSE] = KEYMAP(
|
||||||
|
TO(0), MC_1, MC_2, MC_3, MC_4, MC_5, MC_6, MC_7, MC_8, MC_9, MC_0, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||||
|
KC_TAB, MC_APOS, MC_COMM, MC_DOT, MC_P, MC_Y, MC_F, MC_G, MC_C, MC_R, MC_L, MC_SLSH, MC_EQL, KC_BSPC, \
|
||||||
|
KC_NO, MC_A, MC_O, MC_E, MC_U, MC_I, MC_D, MC_H, MC_T, MC_N, MC_S, MC_MINS, KC_NO, KC_ENT, \
|
||||||
|
MC_LSFT, KC_NO, MC_SCLN, MC_Q, MC_J, MC_K, MC_X, MC_B, MC_M, MC_W, MC_V, MC_Z, KC_NO, MC_RSFT, KC_NO, \
|
||||||
|
KC_NO, KC_NO, KC_NO, MC_SPACE, KC_NO, KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Morse Code Macros
|
||||||
|
|
||||||
|
int mc_shift_on = false; // Variable that defines whether MC_LSFT or MC_RSFT are pressed
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
|
||||||
|
switch(id) {
|
||||||
|
|
||||||
|
case 0: //Number 0-)
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.--.-
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //-----
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: //Number 1-!
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(MINS), T(SPACE), END); //-.-.--
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //.----
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: //Number 2-@
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.--.-.
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(MINS), T(SPACE), END); //..---
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: // Number 3
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(MINS), T(SPACE), END); //...--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: //Number 4-$
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(DOT), T(DOT), T(MINS), T(SPACE), END); //...-..-
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //....-
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: //Number 5
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //.....
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6: //Number 6
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //-....
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7: //Number 7-&
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //.-...
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //--...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8: //Number 8
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //---..
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 9: //Number 9-(
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(SPACE), END); //-.--.
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(DOT), T(SPACE), END); //----.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 10: //Letter A
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(SPACE), END); //.-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 11: //Letter B
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //-...
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 12: //Letter C
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //-.-.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 13: //Letter D
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(SPACE), END); //-..
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 14: //Letter E
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(SPACE), END); //.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 15: //Letter F
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //..-.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 16: //Letter G
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(DOT), T(SPACE), END); //--.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 17: //Letter H
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //....
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 18: //Letter I
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(SPACE), END); //..
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 19: //Letter J
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(SPACE), END); //.---
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 20: //Letter K
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 21: //Letter L
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(SPACE), END); //.-..
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 22: //Letter M
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(SPACE), END); //--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 23: //Letter N
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(SPACE), END); //-.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 24: //Letter O
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(MINS), T(SPACE), END); //---
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 25: //Letter P
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(MINS), T(DOT), T(SPACE), END); //.--.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 26: //Letter Q
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //--.-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 27: //Letter R
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 28: //Letter S
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(SPACE), END); //...
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 29: //Letter T
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(SPACE), END); //-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 30: //Letter U
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(MINS), T(SPACE), END); //..-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 31: //Letter V
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //...-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 32: //Letter W
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(MINS), T(SPACE), END); //.--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 33: //Letter X
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(MINS), T(SPACE), END); //-..-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 34: //Letter Y
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
}
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(SPACE), END); //-.--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 35: //Letter Z
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //--..
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 36: //Punctuation .
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(SPACE), END); //.-.-.-
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 37: //Punctuation ,
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(MINS), T(MINS), T(SPACE), END); //--..--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 38: //Punctuation '-"
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-..-.
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(MINS), T(DOT), T(SPACE), END); //-....-
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 39: //Punctuation /-?
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //..--..
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //-..-.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 40: //Punctuation ;-:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(MINS), T(MINS), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //---...
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //-.-.-.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 41: //Punctuation =-+
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-.-.
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //-...-
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 42: //Punctuation --_
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (mc_shift_on == true) {
|
||||||
|
return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //..--.-
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //-....-
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 43: //Morse Space
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(T(BSLS), T(SPACE), END); //When pressed, this sends a slash followed by a space, making it easier to distinguish words in Morse
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom Keys
|
||||||
|
|
||||||
|
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
|
||||||
|
|
||||||
|
switch(keycode) {
|
||||||
|
|
||||||
|
// Miscellaneous Keycodes
|
||||||
|
|
||||||
|
case MAGSYS: //Magic SysRq function - Toggles key on and off depending on state of LALT key
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (keyboard_report->mods & (MOD_BIT(KC_LALT))) {
|
||||||
|
unregister_code(KC_PSCR);
|
||||||
|
unregister_code(KC_LALT);
|
||||||
|
} else {
|
||||||
|
register_code(KC_LALT);
|
||||||
|
register_code(KC_PSCR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MC_LSFT ... MC_RSFT:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
mc_shift_on = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mc_shift_on = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// MIDI Chord Keycodes
|
||||||
|
|
||||||
|
case MI_CH_C ... MI_CH_B: // Major Chords
|
||||||
|
root_note = keycode - MI_CH_C + MI_C;
|
||||||
|
process_midi(root_note, record);
|
||||||
|
process_midi(root_note + 4, record); // Major Third Note
|
||||||
|
process_midi(root_note + 7, record); // Fifth Note
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
|
||||||
|
root_note = keycode - MI_CH_Cm + MI_C;
|
||||||
|
process_midi(root_note, record);
|
||||||
|
process_midi(root_note + 3, record); // Minor Third Note
|
||||||
|
process_midi(root_note + 7, record); // Fifth Note
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
|
||||||
|
root_note = keycode - MI_CH_CDom7 + MI_C;
|
||||||
|
process_midi(root_note, record);
|
||||||
|
process_midi(root_note + 4, record); // Major Third Note
|
||||||
|
process_midi(root_note + 10, record); // Minor Seventh Note
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
|
||||||
|
root_note = keycode - MI_CH_CDim7 + MI_C;
|
||||||
|
process_midi(root_note, record);
|
||||||
|
process_midi(root_note + 3, record); // Minor Third Note
|
||||||
|
process_midi(root_note - 3, record); // Diminished 7th Note
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# Bluebear’s custom S60X layout
|
||||||
|
|
||||||
|
Custom keyboard layout for my S60X, my first ever custom mechanical keyboard kit.
|
||||||
|
|
||||||
|
This layout was inspired in part by the HHKB line of keyboards and a quest to find the perfect ergonomic, logical layout for what I do. If you like this layout, please feel free to use it, modify it and share it.
|
||||||
|
|
||||||
|
## [BASE Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20BASE%20layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff7a00&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:0&:9;;&=Esc%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E&_c=#cccccc;&=!%0A1&=/@%0A2&=#%0A3&=$%0A4&=%25%0A5&=%5E%0A6&=/&%0A7&=*%0A8&=(%0A9&=)%0A0&=%7B%0A%5B&=%7D%0A%5D&=%7C%0A%5C&=~%0A%60;&@_w:1.5;&=Tab&=%22%0A%27&=%3C%0A,&=%3E%0A.&=P&=Y&=F&=G&=C&=R&=L&=?%0A//&=+%0A/=&_w:1.5;&=Backspace;&@_w:1.75;&=Ctrl%20(hold)%0AEsc%20%20(tap)&=A&=O&=E&=U&=I&=D&=H&=T&=N&=S&=/_%0A-&_w:2.25;&=Enter%20(tap)%0ACtrl%20(hold);&@_w:2.25;&=Shift%20(hold)%0A(%20(tap)&=/:%0A/;&=Q&=J&=K&=X&=B&=M&=W&=V&=Z&_w:2.75;&=Shift%20(hold)%0A)%20(tap);&@_w:1.25;&=Mouse%20Layer%20(hold)&_w:1.25;&=Win&_w:1.25;&=Alt&_a:5&w:6.25;&=Space%20(tap)%0AArrowFN%20Layer%20(hold)&_a:4&w:1.25;&=AltGr(h)%0AComp%20(t)&_w:1.25;&=Win&_w:1.25;&=Ctrl%20+%20Shift%20(oneshot)&_w:1.25;&=Ctrl%20+%20Alt%20(oneshot))
|
||||||
|
|
||||||
|
- Dvorak keyboard layout
|
||||||
|
- Hold left control key for LCTL, and tap it for ESC
|
||||||
|
- Hold enter key for RCTL and tap for ENT
|
||||||
|
- Hold the space key to momentarily switch to ARROWFN layer
|
||||||
|
- Left bottom key acts as momentary switch to the MOUSE layer
|
||||||
|
- Hold right alt key for AltGr and tap for APP(which I have mapped to Compose in OS)
|
||||||
|
- Hold left shift key for LSFT and tap for ( (Space Cadet style)
|
||||||
|
- Hold right shift key for RSFT and tap for ) (Space Cadet style)
|
||||||
|
- Tap key on bottom row, second from the right (where APP usually is) to get CTL-Shift (one shot modifier - next key pressed will be modified by ctl-shift)
|
||||||
|
- Tap key on bottom right to get CTL-Alt (one shot modifier - next key pressed will be modified by ctl-alt)
|
||||||
|
|
||||||
|
## [ARROWFN Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20ARROWFN%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true%3B&@_c=%23ff6b00&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:0&:9%3B%3B&=Esc%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class%2F=%27kb%20kb-logo-commodore%27%3E%3C%2F%2Fi%3E&_c=%23cccccc%3B&=F1&=F2&=F3&=F4&=F5&=F6&=F7&=F8&=F9&=F0&=F11&=F12&=To%20MIDI%20Layer&=To%20MORSE%20Layer%3B&@_a:7&w:1.5%3B&=&=&=&=&=&=&=&_a:4%3B&=PgUp&=%3Ci%20class%2F=%27kb%20kb-Arrows-Up%27%3E%3C%2F%2Fi%3E&_a:7%3B&=&=&=&_a:4%3B&=Ins&_w:1.5%3B&=Delete%3B&@_w:1.75%3B&=Caps%20Lock&=Home&_a:7%3B&=&_a:4%3B&=End&_a:7%3B&=&=&=&_a:4%3B&=%3Ci%20class%2F=%27kb%20kb-Arrows-Left%27%3E%3C%2F%2Fi%3E&=%3Ci%20class%2F=%27kb%20kb-Arrows-Down%27%3E%3C%2F%2Fi%3E&=%3Ci%20class%2F=%27kb%20kb-Arrows-Right%27%3E%3C%2F%2Fi%3E&_a:7%3B&=&=&_a:4&w:2.25%3B&=Enter%3B&@_a:7&w:2.25%3B&=&=&=&=&=&=&_a:4%3B&=Space&=PgDn&=Print%20Screen&=Scroll%20Lock&=Pause&_a:7&w:2.75%3B&=%3B&@_w:1.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=&_w:6.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=)
|
||||||
|
|
||||||
|
- Number row becomes F1 to F12
|
||||||
|
- C, T, H, N keys become Up, Down, Left, Right (equivalent to IJKL on QWERTY keyboard)
|
||||||
|
- Access to various other keys normally found on a full sized keyboard (INS, DEL, PSCR, SLCK, PAUSE, PGUP, PGDN, HOME, END)
|
||||||
|
- Top right button toggles MORSE layer
|
||||||
|
- Second from right, top row, toggles MIDI_BASE layer
|
||||||
|
- Holding Space-B lets you send Space repeatedly
|
||||||
|
- Hitting the LCTL button in this layer toggles caps lock
|
||||||
|
|
||||||
|
## [MOUSE Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MOUSE%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff7f08&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:0&:9;;&=Reset%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E&_c=#cccccc;&=F13&=F14&=F15&=F16&=F17&=F18&=F19&=F20&=F21&=F22&=F23&=F24&_a:7;&=&=;&@_a:4&w:1.5;&=Debug&_a:7;&=&=&=&=&=&=&_a:4;&=Mouse%20Button%201&_f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Up%27%3E%3C//i%3E&=Mouse%20Button%202&_f:3;&=Mouse%20Wheel%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Up%27%3E%3C//i%3E&_a:7;&=&=&_w:1.5;&=;&@_a:4&w:1.75;&=Ctl+%0ADel%0A%0A%0A%0A%0AAlt+&_a:7;&=&=&=&=&=&=&_a:4&f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Left%27%3E%3C//i%3E&_f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Down%27%3E%3C//i%3E&_f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Right%27%3E%3C//i%3E&_f:3;&=Mouse%20Wheel%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Down%27%3E%3C//i%3E&=Mouse%20Button%203&_a:7&w:2.25;&=;&@_a:4&w:2.25;&=Magic%0AToggle%0A%0A%0A%0A%0ASysRq&_a:7;&=&=&=&=&=&=&=&=&=&=&_w:2.75;&=;&@_w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&w:6.25;&=Power&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
|
||||||
|
|
||||||
|
- Move the mouse with mouse keys
|
||||||
|
- Hitting the escape key in this layer will give RESET, which puts the controller into dfu mode for flashing firmware onto it
|
||||||
|
- If Debug is enabled, hitting the TAB key in this layer activates debugging to the console when listening with hid-listen
|
||||||
|
- TFS button (Three Finger Salute) sends Ctl-Alt-Del
|
||||||
|
- MAGSYS toggles the Magic SysRq key (works only in Linux)
|
||||||
|
- Hitting the space key in this layer is like hitting power button on computer
|
||||||
|
- Number row becomes F13 to F24
|
||||||
|
|
||||||
|
## [MIDI_BASE Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MIDI%20BASE%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff8300&a:5&fa@:9;;&=%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E%0ABASE%0A%0A%0ALayer&_c=#cccccc&a:4&f:3;&=%F0%9F%8E%B6%0ACmaj&_f:3;&=%F0%9F%8E%B6%0AGmaj&_f:3;&=%F0%9F%8E%B6%0ADmaj&_f:3;&=%F0%9F%8E%B6%0AAmaj&_f:3;&=%F0%9F%8E%B6%0AEmaj&_f:3;&=%F0%9F%8E%B6%0ABmaj&_f:3;&=%F0%9F%8E%B6%0AF#maj%0A%0A%0A%0A%0AGbmaj//&_f:3;&=%F0%9F%8E%B6%0AC#maj%0A%0A%0A%0A%0ADbmaj//&_f:3;&=%F0%9F%8E%B6%0AG#maj%0A%0A%0A%0A%0AAbmaj&_f:3;&=%F0%9F%8E%B6%0AD#maj%0A%0A%0A%0A%0AEbmaj//&_f:3;&=%F0%9F%8E%B6%0AA#maj%0A%0A%0A%0A%0ABbmaj//&_f:3;&=%F0%9F%8E%B6%0AFmaj&_a:7;&=&_a:4&f:3;&=To%0AChord%0A%0A%0A%0A%0AMidi;&@_f:3&w:1.5;&=Octave%20Up&_a:7;&=&_a:4&f:3;&=%E2%99%A9%0AC#//Db&_f:3;&=%E2%99%A9%0AD#//Eb&_a:7;&=&_a:4&f:3;&=%E2%99%A9%0AF#//Gb&_f:3;&=%E2%99%A9%0AG#//Ab&_f:3;&=%E2%99%A9%0AA#//Bb&_a:7;&=&_a:4&f:3;&=%E2%99%A9%0AD1b%0A%0A%0A%0A%0AC1#//&_f:3;&=%E2%99%A9%0AE1b%0A%0A%0A%0A%0AD1#//&_a:7;&=&=&_w:1.5;&=;&@_a:4&f:3&w:1.75;&=Octave%20Down&_f:3;&=%E2%99%A9%0AC&_f:3;&=%E2%99%A9%0AD&_f:3;&=%E2%99%A9%0AE&_f:3;&=%E2%99%A9%0AF&_f:3;&=%E2%99%A9%0AG&_f:3;&=%E2%99%A9%0AA&_f:3;&=%E2%99%A9%0AB&_f:3;&=%E2%99%A9%0AC1&_f:3;&=%E2%99%A9%0AD1&_f:3;&=%E2%99%A9%0AE1&_f:3;&=%E2%99%A9%0AF1&_a:7&w:2.25;&=;&@_a:4&f:3&w:2.25;&=%F0%9F%8E%B6%0ACm&_f:3;&=%F0%9F%8E%B6%0AGm&_f:3;&=%F0%9F%8E%B6%0ADm&_f:3;&=%F0%9F%8E%B6%0AAm&_f:3;&=%F0%9F%8E%B6%0AEm&_f:3;&=%F0%9F%8E%B6%0ABm&_f:3;&=%F0%9F%8E%B6%0AF#m%0A%0A%0A%0A%0AGbm//&_f:3;&=%F0%9F%8E%B6%0AC#m%0A%0A%0A%0A%0ADbm//&_f:3;&=%F0%9F%8E%B6%0AG#m%0A%0A%0A%0A%0AAbm//&_f:3;&=%F0%9F%8E%B6%0AD#m%0A%0A%0A%0A%0AEbm&_f:3;&=%F0%9F%8E%B6%0AA#m%0A%0A%0A%0A%0ABbm//&_f:3&w:2.75;&=%F0%9F%8E%B6%0AFm;&@_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&f:3&w:6.25;&=All%20notes%20off&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
|
||||||
|
|
||||||
|
This layer was inspired by the [Satan Midi layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/satan/keymaps/midi) and gives access to basic MIDI notes. What I added were two layers of MIDI chords (major and minor triads) arranged in a circle of fifths pattern. Thanks to @fredizzimo for helping me with the code for these.
|
||||||
|
|
||||||
|
- Top right button toggles MORSE_CHORDS layer
|
||||||
|
- Escape brings you back to the BASE layer
|
||||||
|
|
||||||
|
## [MIDI_CHORD Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MIDI%20CHORD%20Layer&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true&pcb:false;&@_c=#ff8300&a:5&fa@:9;;&=%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E%0ABASE%0A%0A%0ALayer&_c=#cccccc&a:4&f:3;&=%F0%9F%8E%B6%0ACmaj&_f:3;&=%F0%9F%8E%B6%0AGmaj&_f:3;&=%F0%9F%8E%B6%0ADmaj&_f:3;&=%F0%9F%8E%B6%0AAmaj&_f:3;&=%F0%9F%8E%B6%0AEmaj&_f:3;&=%F0%9F%8E%B6%0ABmaj&_f:3;&=%F0%9F%8E%B6%0AF#maj%0A%0A%0A%0A%0AGbmaj//&_f:3;&=%F0%9F%8E%B6%0AC#maj%0A%0A%0A%0A%0ADbmaj//&_f:3;&=%F0%9F%8E%B6%0AG#maj%0A%0A%0A%0A%0AAbmaj&_f:3;&=%F0%9F%8E%B6%0AD#maj%0A%0A%0A%0A%0AEbmaj//&_f:3;&=%F0%9F%8E%B6%0AA#maj%0A%0A%0A%0A%0ABbmaj//&_f:3;&=%F0%9F%8E%B6%0AFmaj&_f:3;&=To%20Midi%20Base&_a:7;&=;&@_a:4&f:3&w:1.5;&=Octave%20Up&_f:3;&=%F0%9F%8E%B6%0ACm&_f:3;&=%F0%9F%8E%B6%0AGm&_f:3;&=%F0%9F%8E%B6%0ADm&_f:3;&=%F0%9F%8E%B6%0AAm&_f:3;&=%F0%9F%8E%B6%0AEm&_f:3;&=%F0%9F%8E%B6%0ABm&_f:3;&=%F0%9F%8E%B6%0AF#m%0A%0A%0A%0A%0AGbm//&_f:3;&=%F0%9F%8E%B6%0AC#m%0A%0A%0A%0A%0ADbm//&_f:3;&=%F0%9F%8E%B6%0AG#m%0A%0A%0A%0A%0AAbm//&_f:3;&=%F0%9F%8E%B6%0AD#m%0A%0A%0A%0A%0AEbm//&_f:3;&=%F0%9F%8E%B6%0AA#m%0A%0A%0A%0A%0ABbm//&_f:3;&=%F0%9F%8E%B6%0AFm&_a:7&w:1.5;&=;&@_a:4&f:3&w:1.75;&=Octave%20Down&_f:3;&=%F0%9F%8E%B6%0AC7&_f:3;&=%F0%9F%8E%B6%0AG7&_f:3;&=%F0%9F%8E%B6%0AD7&_f:3;&=%F0%9F%8E%B6%0AA7&_f:3;&=%F0%9F%8E%B6%0AE7&_f:3;&=%F0%9F%8E%B6%0AB7&_f:3;&=%F0%9F%8E%B6%0AF#7%0A%0A%0A%0A%0AGb7//&_f:3;&=%F0%9F%8E%B6%0AC#7%0A%0A%0A%0A%0ADb7//&_f:3;&=%F0%9F%8E%B6%0AG#7%0A%0A%0A%0A%0AAb7//&_f:3;&=%F0%9F%8E%B6%0AD#7%0A%0A%0A%0A%0AEb7//&_f:3;&=%F0%9F%8E%B6%0AA#7%0A%0A%0A%0A%0ABb7//&_f:3&w:2.25;&=%F0%9F%8E%B6%0AF7;&@_f:3&w:2.25;&=%F0%9F%8E%B6%0ACdim7&_f:3;&=%F0%9F%8E%B6%0AGdim7&_f:3;&=%F0%9F%8E%B6%0ADdim7&_f:3;&=%F0%9F%8E%B6%0AAdim7&_f:3;&=%F0%9F%8E%B6%0AEdim7&_f:3;&=%F0%9F%8E%B6%0ABdim7&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0AGb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0ADb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0AAb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0AEb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0ABb&_f:3&w:2.75;&=%F0%9F%8E%B6%0AFdim7;&@_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&f:3&w:6.25;&=All%20notes%20off&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
|
||||||
|
|
||||||
|
After figuring out how to code my MIDI chord function, I decided to dedicate a full layer to these chords. This chord layout was inspired by the [Stradella Base system](https://en.wikipedia.org/wiki/Stradella_bass_system) found on accordions. This layer is a tool for musical composition and songwriting. Originally, I had written the chord functions using the F(n) functions, but finally ended up using process_record_user and custom keycodes. I think this was a more efficient and elegant way of coding these.
|
||||||
|
|
||||||
|
- Second from right, top row, toggles MIDI_BASE layer
|
||||||
|
- Escape brings you back to the BASE layer
|
||||||
|
|
||||||
|
## [MORSE LAYER](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MORSE%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff8a00&a:5&fa@:9;;&=%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E%0ABASE%0A%0A%0ALayer&_c=#cccccc&a:4&fa@:5&:5;;&=-.-.--%0A.----&=.--.-.%0A..---&=%0A...--&=...-..-%0A....-&=%0A.....&=%0A-....&=.-...%0A--...&=%0A---..&=-.--.%0A----.&=-.--.-%0A-----&_a:7;&=&=&=&=;&@_w:1.5;&=&_a:4;&=.-..-.%0A.----.&=%0A--..--&=%0A.-.-.-&=.--.&=-.--&=..-.&=--.&=-.-.&=.-.&=.-..&=..--..%0A-..-.&=.-.-.%0A-...-&_f:3&w:1.5;&=Backspace;&@_a:7&w:1.75;&=&_a:4&f:3;&=.-&_f:3;&=---&_f:3;&=.&_f:3&n:true;&=..-&_f:3;&=..&_f:3;&=-..&_f:3&n:true;&=....&_f:3;&=-&_f:3;&=-.&_f:3;&=...&_f:3;&=..--.-%0A-....-&_f:3&w:2.25;&=Enter;&@_f:3&w:2.25;&=Shift&_f:3;&=---...%0A-.-.-.&_f:3;&=--.-&_f:3;&=.---&_f:3;&=-.-&_f:3;&=-..-&_f:3;&=-...&_f:3;&=--&_f:3;&=.--&_f:3;&=...-&_f:3;&=--..&_f:3&w:2.75;&=Shift;&@_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&f:3&w:6.25;&=Space%20(%5C%20)&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
|
||||||
|
|
||||||
|
This layer is really just for fun, and because I am a ham radio operator and morse code enthusiast. Hitting the alphanumerical keys in this layer will send a series of dits (.) and dahs (-) representing that character in morse code. This is all done through M(n). There are also a couple of characters that are sent through a shifted key on a regular layout, like @ or !. The same applies on this layer. And because I type using the Dvorak layout, this layer is also arranged in this manner.
|
||||||
|
|
||||||
|
- Escape brings you back to the BASE layer
|
||||||
|
|
||||||
|
### THIS IS STILL A WORK IN PROGRESS
|
||||||
|
|
||||||
|
This keyboard layout is still a work in progress and there are a couple of kinks left to iron out. But it is still very usable and the midi and morse code layers are lots of fun to use. Please feel free to use, share and improve all, or part of this layout.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
/* 0: ANSI qwerty */
|
/* 0: ANSI qwerty */
|
||||||
[_BL] = ANSI_KEYMAP(
|
[_BL] = ANSI_KEYMAP(
|
||||||
F(3), 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_DEL, \
|
F(4), 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_DEL, \
|
||||||
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_END, \
|
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_END, \
|
||||||
F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
@@ -34,11 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │█████│ │
|
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
||||||
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
@@ -52,78 +52,64 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
/* 2: Fn layer
|
/* 2: Fn layer
|
||||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
* │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
* │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ │
|
* │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │█████│ │
|
* │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │█████│ │
|
* │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │ │Home │End │▒▒▒▒▒│ │Vol+ │ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
|
||||||
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[_FL] = ANSI_KEYMAP(
|
[_FL] = ANSI_KEYMAP(
|
||||||
KC_GRAVE, 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_TRNS, KC_TRNS, \
|
KC_GRAVE, 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_TRNS, KC_TRNS, \
|
||||||
KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
|
KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
|
||||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
KC_TRNS, KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, \
|
KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY),
|
||||||
|
|
||||||
/* 3: Locking layer for controlling the underglow
|
/* 3: Locking layer for controlling the underglow
|
||||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ │
|
* │ │BL On│BL St│ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
||||||
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[_UL] = ANSI_KEYMAP(
|
[_UL] = ANSI_KEYMAP(
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_STEP, KC_TRNS, 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, RGB_TOG, RGB_MOD, KC_TRNS, 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, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 {
|
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,
|
SHIFT_ESC,
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
[0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
|
[0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
|
||||||
[1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
|
[1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
|
||||||
[2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
|
[2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
|
||||||
[3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
|
[3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
|
||||||
[4] = ACTION_FUNCTION(RGBLED_TOGGLE), // Turn on/off underglow
|
[4] = ACTION_FUNCTION(SHIFT_ESC),
|
||||||
[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),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
// Would like to do something like this, that would be cool
|
||||||
|
// Turn off all the LEDs on except for the ones mapped on the UL layer, for example
|
||||||
/* uint32_t layer = layer_state; */
|
/* uint32_t layer = layer_state; */
|
||||||
/* if (layer & (1<<1)) { */
|
/* if (layer & (1<<1)) { */
|
||||||
/* gh60_wasd_leds_on(); */
|
/* gh60_wasd_leds_on(); */
|
||||||
@@ -155,49 +141,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|||||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case RGBLED_TOGGLE:
|
static uint8_t shift_esc_shift_mask;
|
||||||
//led operations
|
// Shift + ESC = ~
|
||||||
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;
|
|
||||||
static uint8_t shift_esc_shift_mask;
|
|
||||||
// Shift + ESC = ~
|
|
||||||
case SHIFT_ESC:
|
case SHIFT_ESC:
|
||||||
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ A Mac ANSI layout that assumes standard sized shifts, enter, and backspace keys.
|
|||||||
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
|
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│END │
|
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │▒▒▒▒▒│END │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│PG_UP│
|
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│▒▒▒▒▒│PG_UP│
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
|
│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
@@ -17,11 +17,11 @@ A Mac ANSI layout that assumes standard sized shifts, enter, and backspace keys.
|
|||||||
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ │
|
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │█████│ │
|
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │█████│ │
|
│ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│▒▒▒▒▒│Vol+ │ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │
|
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
|
||||||
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
#include "s65_x.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] = {
|
||||||
|
/* 0: Main layer, swapped alt and GUI for Mac
|
||||||
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
* │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│▒▒▒▒▒│END │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ ~ │▒▒▒▒▒│ENTER│PG_UP│
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │LEFT │DOWN │RIGHT│
|
||||||
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 0: ISO qwerty */
|
||||||
|
[_BL] = ISO_KEYMAP(
|
||||||
|
F(4), 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_DEL, \
|
||||||
|
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_END, \
|
||||||
|
F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRAVE, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||||
|
|
||||||
|
|
||||||
|
/* 1: Locking arrow keys to WASD for when you need dedicated arrow keys
|
||||||
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
||||||
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_AL] = ISO_KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS, \
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
/* 2: Fn layer
|
||||||
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
* │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │_UL │ │ │ │ │ │ │ │ Home│ End │▒▒▒▒▒│ │Vol+ │ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
|
||||||
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_FL] = ISO_KEYMAP(
|
||||||
|
KC_GRAVE, 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_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY),
|
||||||
|
|
||||||
|
/* 3: Locking layer for controlling the underglow
|
||||||
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │BL On│BL St│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │ │ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
||||||
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_UL] = ISO_KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_STEP, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 {
|
||||||
|
SHIFT_ESC,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
|
||||||
|
[1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
|
||||||
|
[2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
|
||||||
|
[3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
|
||||||
|
[12] = ACTION_FUNCTION(SHIFT_ESC),
|
||||||
|
};
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
// Would like to do something like this, that would be cool
|
||||||
|
// Turn off all the LEDs on except for the ones mapped on the UL layer, for example
|
||||||
|
/* 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(); */
|
||||||
|
/* } */
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
#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) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
### 1 ISO
|
||||||
|
An ISO layout that assumes standard sized shifts, enter, and backspace keys.
|
||||||
|
|
||||||
|
#### 1.0 Default layer
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│▒▒▒▒▒│END │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ ~ │▒▒▒▒▒│ENTER│PG_UP│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │LEFT │DOWN │RIGHT│
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
#### 1.1 Fn layer
|
||||||
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│▒▒▒▒▒│Vol+ │ │
|
||||||
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
|
||||||
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
|
||||||
@@ -50,8 +50,6 @@ The █████ blocks on the layouts hides the switch positions that do not
|
|||||||
|
|
||||||
The ▒▒▒▒▒ blocks hides switch positions not used on this particular layout, but they do exist on the PCB.
|
The ▒▒▒▒▒ blocks hides switch positions not used on this particular layout, but they do exist on the PCB.
|
||||||
|
|
||||||
There is no LED support on the PCB at the moment, but I'll let the code for that untouched.
|
|
||||||
|
|
||||||
|
|
||||||
### 1 [Standard - ANSI (default layout)](keymaps/default/keymap.c)
|
### 1 [Standard - ANSI (default layout)](keymaps/default/keymap.c)
|
||||||
|
|
||||||
@@ -59,9 +57,9 @@ There is no LED support on the PCB at the moment, but I'll let the code for that
|
|||||||
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
|
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│END │
|
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │▒▒▒▒▒│END │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│PG_UP│
|
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│▒▒▒▒▒│PG_UP│
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
|
│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
@@ -71,11 +69,11 @@ There is no LED support on the PCB at the moment, but I'll let the code for that
|
|||||||
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ │
|
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │█████│ │
|
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │█████│ │
|
│ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │▒▒▒▒▒│ │
|
||||||
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │
|
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │
|
||||||
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
led_init_ports();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
void matrix_scan_kb(void) {
|
||||||
@@ -14,11 +13,6 @@ void matrix_scan_kb(void) {
|
|||||||
matrix_scan_user();
|
matrix_scan_user();
|
||||||
};
|
};
|
||||||
|
|
||||||
void led_init_ports(void) {
|
|
||||||
// * Set our LED pins as output
|
|
||||||
DDRB |= (1<<7);
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
void led_set_kb(uint8_t usb_led) {
|
||||||
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||||
// Turn capslock on
|
// Turn capslock on
|
||||||
|
|||||||
+20
-6
@@ -9,16 +9,30 @@
|
|||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
|
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
|
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
|
||||||
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, \
|
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
|
||||||
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
|
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
|
||||||
) { \
|
) { \
|
||||||
{ KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
|
{ KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
|
||||||
{ KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, K115 }, \
|
{ KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
|
||||||
{ KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
|
{ KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
|
||||||
{ KC_NO, KC_NO, KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, K315 }, \
|
{ KC_NO, KC_NO, KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
|
||||||
{ KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
|
{ KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define ISO_KEYMAP( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
|
||||||
|
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
|
||||||
|
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
|
||||||
|
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
|
||||||
|
) { \
|
||||||
|
{ KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
|
||||||
|
{ KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K214, K115 }, \
|
||||||
|
{ KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
|
||||||
|
{ KC_NO, KC_NO, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
|
||||||
|
{ KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
|
||||||
|
}
|
||||||
void matrix_init_user(void);
|
void matrix_init_user(void);
|
||||||
void matrix_scan_user(void);
|
void matrix_scan_user(void);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#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 = yes # Console for debug(+400)
|
||||||
|
#DEBUG_ENABLE = yes
|
||||||
|
#COMMAND_ENABLE = yes # 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
|
||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
#include "tv44.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "eeconfig.h"
|
||||||
|
|
||||||
|
// Layer names. We stick to 3 letters if possible so MO(NAME) fits in 7
|
||||||
|
// characters and doesn't mess with the grid.
|
||||||
|
#define _QW 0
|
||||||
|
#define _L1 1
|
||||||
|
#define _L2 2
|
||||||
|
#define _L3 3
|
||||||
|
|
||||||
|
// Curly braces have their own keys. These are defined so they don't mess up the
|
||||||
|
// grid in layer 2.
|
||||||
|
#define L_CURBR LSFT(KC_LBRC)
|
||||||
|
#define R_CURBR LSFT(KC_RBRC)
|
||||||
|
|
||||||
|
#define L1_TAB LT(_L1, KC_TAB)
|
||||||
|
#define L2_ESC LT(_L2, KC_ESC)
|
||||||
|
#define L2_SLSH LT(_L2, KC_SLSH)
|
||||||
|
#define L3_QUOT LT(_L3, KC_QUOT)
|
||||||
|
|
||||||
|
// Tap dance magic
|
||||||
|
#define TD_LGUI TD(BE_TD_GUI)
|
||||||
|
#define TD_LCTL TD(BE_TD_CTL)
|
||||||
|
#define TD_LALT TD(BE_TD_ALT)
|
||||||
|
|
||||||
|
enum belak_td {
|
||||||
|
BE_TD_GUI = 0,
|
||||||
|
BE_TD_CTL,
|
||||||
|
BE_TD_ALT,
|
||||||
|
};
|
||||||
|
|
||||||
|
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data);
|
||||||
|
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[BE_TD_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
|
||||||
|
[BE_TD_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
|
||||||
|
[BE_TD_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t tap_dance_keys[] = {
|
||||||
|
[BE_TD_GUI] = KC_LGUI,
|
||||||
|
[BE_TD_CTL] = KC_LCTL,
|
||||||
|
[BE_TD_ALT] = KC_LALT,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fillers to make layering more clear
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_QW] = KEYMAP_ARROW_COMMAND( /* Qwerty */
|
||||||
|
L2_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
L1_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, L3_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, L2_SLSH,
|
||||||
|
TD_LCTL, MO(_L3), TD_LALT, TD_LGUI, KC_ENT, KC_SPC, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[_L1] = KEYMAP_ARROW_COMMAND( /* LAYER 1 */
|
||||||
|
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||||
|
_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
|
||||||
|
_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
|
||||||
|
_______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_L2] = KEYMAP_ARROW_COMMAND( /* LAYER 2 */
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_L3] = KEYMAP_ARROW_COMMAND( /* LAYER 3 */
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
|
||||||
|
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||||
|
_______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {};
|
||||||
|
|
||||||
|
// Tap dance functions
|
||||||
|
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1:
|
||||||
|
register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
|
||||||
|
send_keyboard_report();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
layer_on(_L2);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
layer_off(_L2);
|
||||||
|
layer_on(_L1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
reset_tap_dance(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
layer_off(_L1);
|
||||||
|
layer_off(_L2);
|
||||||
|
unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# Belak's TV44 (TV46?) layout
|
||||||
|
|
||||||
|
This layout is roughly based on the low-rider arrow-southpaw layout from [the
|
||||||
|
configurator](http://minivan.config.thevankeyboards.com) with a number of
|
||||||
|
changes to make it easier to use and add in missing keys (like adding / and '
|
||||||
|
to the main layer)
|
||||||
@@ -21,48 +21,52 @@ extern keymap_config_t keymap_config;
|
|||||||
#define DVORAK M(_DV)
|
#define DVORAK M(_DV)
|
||||||
#define COLEMAK M(_CM)
|
#define COLEMAK M(_CM)
|
||||||
|
|
||||||
|
// Curly braces have their own keys. These are defined to make them not mess up
|
||||||
|
// the grid in layer 2.
|
||||||
|
#define L_CURBR LSFT(KC_LBRC)
|
||||||
|
#define R_CURBR LSFT(KC_RBRC)
|
||||||
|
|
||||||
// Fillers to make layering more clear
|
// Fillers to make layering more clear
|
||||||
#define _______ KC_TRNS
|
#define _______ KC_TRNS
|
||||||
#define XXXXXXX KC_NO
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_QW] = { /* Qwerty */
|
[_QW] = KEYMAP( /* 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 },
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
{MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) },
|
MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1),
|
||||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) },
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
|
||||||
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
|
||||||
},
|
),
|
||||||
[_DV] = { /* Dvorak */
|
[_DV] = KEYMAP( /* Dvorak */
|
||||||
{KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
|
KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||||
{MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) },
|
MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1),
|
||||||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) },
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2),
|
||||||
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
|
||||||
},
|
),
|
||||||
[_CM] = { /* Colemak */
|
[_CM] = KEYMAP( /* Colemak */
|
||||||
{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_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||||
{MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1) },
|
MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1),
|
||||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) },
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
|
||||||
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
|
||||||
},
|
),
|
||||||
[_L1] = { /* LAYER 1 */
|
[_L1] = KEYMAP( /* LAYER 1 */
|
||||||
{KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
|
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||||
{_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ },
|
_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
|
||||||
{_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT },
|
_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
|
||||||
{_______, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ }
|
_______, KC_LGUI, _______, _______, _______, _______, _______, _______
|
||||||
},
|
),
|
||||||
[_L2] = { /* LAYER 2 */
|
[_L2] = KEYMAP( /* LAYER 2 */
|
||||||
{_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______ },
|
_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
{KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4, KC_5, KC_6, KC_VOLU, KC_ENT },
|
KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
|
||||||
{_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______ },
|
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
|
||||||
{_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ }
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
},
|
),
|
||||||
[_L3] = { /* LAYER 3 */
|
[_L3] = KEYMAP( /* LAYER 3 */
|
||||||
{_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______ },
|
_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
|
||||||
{KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______ },
|
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
|
||||||
{KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______ },
|
KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||||
{_______, KC_LSFT, KC_B, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_C, _______, _______, XXXXXXX, _______ }
|
_______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
|
||||||
}
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include "../../config.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
*TV44 keymap definition macro
|
|
||||||
*/
|
|
||||||
#define KEYMAP_TV44( \
|
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
|
|
||||||
K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
|
|
||||||
K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
|
|
||||||
K37, K38, K39, K40, K41, K42, K43, K44 \
|
|
||||||
) { \
|
|
||||||
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
|
|
||||||
{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
|
|
||||||
{ K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
|
|
||||||
{ K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, KC_NO, K44 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
|
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
|
||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = KEYMAP_TV44(
|
[_QWERTY] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
|
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
|
||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
[_COLEMAK] = KEYMAP_TV44(
|
[_COLEMAK] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
|
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
|
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
|
||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
[_DVORAK] = KEYMAP_TV44(
|
[_DVORAK] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
|
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Brite | | | | | | Vol- | Mute |
|
* | Brite | | | | | | Vol- | Mute |
|
||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
[_LOWER] = KEYMAP_TV44(
|
[_LOWER] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
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_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Brite | | | | | | Vol- | Mute |
|
* | Brite | | | | | | Vol- | Mute |
|
||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = KEYMAP_TV44(
|
[_RAISE] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC ,
|
KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -205,7 +205,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* seem to work on Mac. Presumably they'll work under Windows.
|
* seem to work on Mac. Presumably they'll work under Windows.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[_TOUCHCURSOR] = KEYMAP_TV44(
|
[_TOUCHCURSOR] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
ALT_TAB,CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______ ,
|
ALT_TAB,CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______ ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -228,7 +228,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[_MOUSECURSOR] = KEYMAP_TV44(
|
[_MOUSECURSOR] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
_______,_______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______ ,
|
_______,_______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______ ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -251,7 +251,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[_PLOVER] = KEYMAP_TV44(
|
[_PLOVER] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
KC_1 , KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
|
KC_1 , KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -273,7 +273,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | Reset |
|
* | | | | | | | | Reset |
|
||||||
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
|
||||||
*/
|
*/
|
||||||
[_ADJUST] = KEYMAP_TV44(
|
[_ADJUST] = KEYMAP(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
|
_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#include "../../config.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
*TV44 keymap definition macro
|
|
||||||
*/
|
|
||||||
#define KEYMAP_TV44( \
|
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
|
|
||||||
K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
|
|
||||||
K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
|
|
||||||
K37, K38, K39, K40, K41, K42, K43, K44 \
|
|
||||||
) { \
|
|
||||||
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
|
|
||||||
{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
|
|
||||||
{ K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
|
|
||||||
{ K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, KC_NO, K44 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*TV45 keymap definition macro (arrows layout)
|
|
||||||
*/
|
|
||||||
#define KEYMAP_TV45( \
|
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
|
|
||||||
K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
|
|
||||||
K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
|
|
||||||
K37, K38, K39, K40, K41, K42, K43, K44, K45 \
|
|
||||||
) { \
|
|
||||||
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
|
|
||||||
{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
|
|
||||||
{ K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
|
|
||||||
{ K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, K44, K45 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
|
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
|
||||||
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = KEYMAP_TV45(
|
[_QWERTY] = KEYMAP_ARROW(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
|
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
|
||||||
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
||||||
*/
|
*/
|
||||||
[_COLEMAK] = KEYMAP_TV45(
|
[_COLEMAK] = KEYMAP_ARROW(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
|
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
|
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
|
||||||
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
||||||
*/
|
*/
|
||||||
[_DVORAK] = KEYMAP_TV45(
|
[_DVORAK] = KEYMAP_ARROW(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
|
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Brite | | | Home | End | | Left | Down | Right |
|
* | Brite | | | Home | End | | Left | Down | Right |
|
||||||
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
||||||
*/
|
*/
|
||||||
[_LOWER] = KEYMAP_TV45(
|
[_LOWER] = KEYMAP_ARROW(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL ,
|
ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -137,7 +137,7 @@ ALT_T(BACKLIT), _______ , _______ , KC_HOME , KC_END , _____
|
|||||||
* | Brite | | | Play | Next | | Mute | Vol- | Vol+ |
|
* | Brite | | | Play | Next | | Mute | Vol- | Vol+ |
|
||||||
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = KEYMAP_TV45(
|
[_RAISE] = KEYMAP_ARROW(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
|
ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
@@ -159,7 +159,7 @@ ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _____
|
|||||||
* | | | | | | | | | |
|
* | | | | | | | | | |
|
||||||
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
|
||||||
*/
|
*/
|
||||||
[_ADJUST] = KEYMAP_TV45(
|
[_ADJUST] = KEYMAP_ARROW(
|
||||||
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
|
||||||
_______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET ,
|
_______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET ,
|
||||||
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ This keymap is based on a combination of my Planck keymap and [jeebak's TV44 lay
|
|||||||
|
|
||||||
I had been using something close to the default Minivan layout, but after spending a bit of time with the Planck and Preonic, I decided it would be better for me to try to standardize to some degree, where possible.
|
I had been using something close to the default Minivan layout, but after spending a bit of time with the Planck and Preonic, I decided it would be better for me to try to standardize to some degree, where possible.
|
||||||
|
|
||||||
Also, it's worth noting that my Minivan is one with the "arrows" layout, which has a 45th key, so I had to define a new KEYMAP_TV45 macro in config.h. In spite of this, the 45-key Minivan is still technically considered a "TV44" as far as I know.
|
Also, it's worth noting that my Minivan is one with the "arrows" layout, which has a 45th key. In spite of this, the 45-key Minivan is still technically considered a "TV44" as far as I know.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -21,9 +21,9 @@ Also, it's worth noting that my Minivan is one with the "arrows" layout, which h
|
|||||||
This key modifies with "Hyper" (see [Brett Terpstra's post](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) on this) when held, and outputs the code for Tab when tapped. On the Mac, I use KeyboardMaestro to remap my hyper-keys to do a lot of crazy things.
|
This key modifies with "Hyper" (see [Brett Terpstra's post](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) on this) when held, and outputs the code for Tab when tapped. On the Mac, I use KeyboardMaestro to remap my hyper-keys to do a lot of crazy things.
|
||||||
|
|
||||||
3. **Ctrl/Escape**
|
3. **Ctrl/Escape**
|
||||||
|
|
||||||
I set up another mod-tap, this time for the Escape key that would act as a Control modifier when held.
|
I set up another mod-tap, this time for the Escape key that would act as a Control modifier when held.
|
||||||
|
|
||||||
4. **Alt/Backtick**
|
4. **Alt/Backtick**
|
||||||
|
|
||||||
I don't currently have LEDs on most of my keyboards, and I certainly don't want LED controls on the base layer of a 40%.
|
I don't currently have LEDs on most of my keyboards, and I certainly don't want LED controls on the base layer of a 40%.
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
|
* | Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
|
||||||
* `--------------------------------------------------------------------------'
|
* `--------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[0] = {
|
[0] = KEYMAP_ARROW(
|
||||||
{KC_TAB, 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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
{KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT},
|
KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,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_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
|
||||||
{FTN ,KC_LGUI,KC_LALT,LOWER,XXXXXXX,XXXXXXX,XXXXXXX,RAISE,KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT}
|
FTN, KC_LGUI,KC_LALT, LOWER, RAISE, KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT
|
||||||
},
|
),
|
||||||
/* LOWER
|
/* LOWER
|
||||||
* ,--------------------------------------------------------------------------.
|
* ,--------------------------------------------------------------------------.
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||||
@@ -48,12 +48,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | END | LEFT| Down|RIGHT|
|
* | | | | | | END | LEFT| Down|RIGHT|
|
||||||
* `--------------------------------------------------------------------------'
|
* `--------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[1] = {
|
[1] = KEYMAP_ARROW(
|
||||||
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______},
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS },
|
_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,
|
||||||
{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN },
|
_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN,
|
||||||
{XXXXXXX,_______,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
|
XXXXXXX,_______,_______, _______,XXXXXXX, KC_END, KC_LEFT,KC_DOWN,KC_RIGHT
|
||||||
},
|
),
|
||||||
/* RAISE
|
/* RAISE
|
||||||
* ,--------------------------------------------------------------------------.
|
* ,--------------------------------------------------------------------------.
|
||||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
|
||||||
@@ -65,12 +65,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | END | LEFT| Down|RIGHT|
|
* | | | | | | END | LEFT| Down|RIGHT|
|
||||||
* `--------------------------------------------------------------------------'
|
* `--------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[2] ={
|
[2] = KEYMAP_ARROW(
|
||||||
{KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______ },
|
KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______,
|
||||||
{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE },
|
_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE,
|
||||||
{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN },
|
_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN,
|
||||||
{XXXXXXX,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
|
XXXXXXX,_______,_______, _______,_______, KC_END, KC_LEFT,KC_DOWN,KC_RIGHT
|
||||||
},
|
),
|
||||||
/* FTN
|
/* FTN
|
||||||
* ,--------------------------------------------------------------------------.
|
* ,--------------------------------------------------------------------------.
|
||||||
* | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
|
* | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
|
||||||
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
|
* | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
|
||||||
* `--------------------------------------------------------------------------'
|
* `--------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[4] = {
|
[4] = KEYMAP_ARROW(
|
||||||
{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT},
|
KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX,S(KC_CAPS) ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DELT,
|
||||||
{_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT) ,XXXXXXX ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX},
|
_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT),XXXXXXX,LALT(KC_CAPS) ,KC_CAPS ,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX,
|
||||||
{_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,KC_RCTL},
|
_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX,LCTL(KC_CAPS) ,KC_SLCK ,KC_HOME,XXXXXXX,KC_END ,XXXXXXX,KC_RCTL,
|
||||||
{_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LCTL(LALT(KC_DELT)),XXXXXXX,XXXXXXX,XXXXXXX,LGUI(LCTL(KC_F4)),MOUSE,XXXXXXX,XXXXXXX,M(0)}
|
_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)), LCTL(LALT(KC_DELT)),LGUI(LCTL(KC_F4)), MOUSE ,XXXXXXX ,XXXXXXX,M(0)
|
||||||
},
|
),
|
||||||
/* MOUSE
|
/* MOUSE
|
||||||
* ,--------------------------------------------------------------------------.
|
* ,--------------------------------------------------------------------------.
|
||||||
* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
|
* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
|
||||||
@@ -99,12 +99,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | GO_DEFAULT | GO_DEFAULT | | | | |
|
* | | | | GO_DEFAULT | GO_DEFAULT | | | | |
|
||||||
* `--------------------------------------------------------------------------'
|
* `--------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[10] ={
|
[10] = KEYMAP_ARROW(
|
||||||
{XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET},
|
XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET,
|
||||||
{XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX},
|
XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX,
|
||||||
{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX},
|
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX,
|
||||||
{XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX}
|
XXXXXXX,XXXXXXX,XXXXXXX, GO_DEFT,GO_DEFT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
|
||||||
}
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
@@ -135,4 +135,4 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
@@ -28,47 +28,47 @@ enum planck_keycodes {
|
|||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_DVORAK] = { /* 0: Dvorak */
|
[_DVORAK] = KEYMAP( /* 0: Dvorak */
|
||||||
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH},
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
|
||||||
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS},
|
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
|
||||||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT},
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
|
||||||
{KC_LCTL, KC_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT }
|
KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
|
||||||
},
|
),
|
||||||
|
|
||||||
[_QWERTY] = { /* 1: Qwerty */
|
[_QWERTY] = KEYMAP( /* 1: 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},
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
{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_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
|
KC_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, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT }
|
KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
|
||||||
},
|
),
|
||||||
|
|
||||||
[_COLEMAK] = { /* 2: Colemak */
|
[_COLEMAK] = KEYMAP( /* 2: Colemak */
|
||||||
{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_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_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_RSFT},
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
{KC_LCTL, KC_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT }
|
KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
|
||||||
},
|
),
|
||||||
|
|
||||||
[_LOWER] = {/* 1: FN 1 */
|
[_LOWER] = KEYMAP( /* 1: FN 1 */
|
||||||
{KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE},
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
|
||||||
{_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
|
_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||||
{KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______},
|
KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
|
||||||
{KC_LEFT, KC_RGHT, _______, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, _______, KC_UP, XXXXXXX, KC_DOWN}
|
KC_LEFT, KC_RGHT, _______, KC_DEL, KC_INS, _______, KC_UP, KC_DOWN
|
||||||
},
|
),
|
||||||
|
|
||||||
[_RAISE] = { /* 2: FN 2 */
|
[_RAISE] = KEYMAP( /* 2: FN 2 */
|
||||||
{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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
|
||||||
{_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
|
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
{KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______},
|
KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
|
||||||
{KC_LEFT, KC_RGHT, _______, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, _______, KC_UP, XXXXXXX, KC_DOWN}
|
KC_LEFT, KC_RGHT, _______, KC_DEL, KC_INS, _______, KC_UP, KC_DOWN
|
||||||
},
|
),
|
||||||
|
|
||||||
[_ADJUST] = {
|
[_ADJUST] = KEYMAP(
|
||||||
{KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 },
|
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
|
||||||
{_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______},
|
_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
|
||||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
{KC_HOME, KC_END, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PGUP, XXXXXXX, KC_PGDN}
|
KC_HOME, KC_END, _______, _______, _______, _______, KC_PGUP, KC_PGDN
|
||||||
}
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
void persistent_default_layer_set(uint16_t default_layer) {
|
void persistent_default_layer_set(uint16_t default_layer) {
|
||||||
|
|||||||
+49
-4
@@ -4,19 +4,64 @@
|
|||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
// This a shortcut to help you visually see your layout.
|
// This a shortcut to help you visually see your layout.
|
||||||
// The following is an example using the Planck MIT layout
|
// There are a number of variations depending on the layout of your bottom row.
|
||||||
// The first section contains all of the arguements
|
// The arrow variant adds an additional key on the bottom-right, while the
|
||||||
// The second converts the arguments into a two-dimensional array
|
// command variant adds an additional key on the bottom-left. arrow-command is a
|
||||||
|
// combination of both of those, having an additional key on both sides.
|
||||||
|
//
|
||||||
|
// Please note that the numbering of the macro arguments are based on the
|
||||||
|
// numbers of the keys on the PCB.
|
||||||
|
|
||||||
#define KEYMAP( \
|
#define KEYMAP( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
||||||
K30, K31, K32, K33, K37, K38, K39, K3A, K3B \
|
K30, K31, K32, K33, K37, K38, K39, K3B \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
|
||||||
|
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, KC_NO, K3B } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP_ARROW( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
||||||
|
K30, K31, K32, K33, K37, K38, K39, K3A, K3B \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
|
||||||
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
|
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP_COMMAND( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
||||||
|
K30, K31, K34, K32, K33, K37, K38, K39, K3B \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
|
||||||
|
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, KC_NO, K3B } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP_ARROW_COMMAND( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
||||||
|
K30, K31, K34, K32, K33, K37, K38, K39, K3A, K3B \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
|
||||||
|
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 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/>.
|
||||||
|
*/
|
||||||
|
#include "whitefox.h"
|
||||||
|
|
||||||
|
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Layer 0: Default Layer
|
||||||
|
* ,---------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backsp|Ins|
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Del|
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | FN | A| S| D| F| G| H| J| K| L| ;| '| Enter |PgU|
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |Up |PgD|
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* |Ctrl|Gui |Alt | Space |Alt |Ctrl| |Lef|Dow|Rig|
|
||||||
|
* `---------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[0] = KEYMAP( \
|
||||||
|
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_NO,KC_BSPC,KC_INS, \
|
||||||
|
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, \
|
||||||
|
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, KC_PGUP,\
|
||||||
|
KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,\
|
||||||
|
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RCTL,KC_NO, KC_LEFT,KC_DOWN,KC_RGHT \
|
||||||
|
),
|
||||||
|
/* Layer 1: FN Layer
|
||||||
|
* ,---------------------------------------------------------------.
|
||||||
|
* | ` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | | | | | | | | | | | | |pup| |
|
||||||
|
* |---------------------------------------------------------------|
|
||||||
|
* | | | | | | | |hom|pdn|end|
|
||||||
|
* `---------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[1] = KEYMAP( \
|
||||||
|
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_TRNS,KC_TRNS,KC_MUTE,\
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, KC_TRNS,\
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 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, KC_PGUP,KC_VOLD,\
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_HOME,KC_PGDN,KC_END \
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#Jetpacktuxedo's keymap for whitefox aria
|
||||||
|
|
||||||
|
This is designed for the aria layout so you may have some keys that don't line up properly, namely around the split backspace area and the right hand bottom row mods. Additionally I use capslock as fn.
|
||||||
+1
-1
Submodule lib/chibios updated: a7df9a8910...8fce03b3a7.
+1
-1
Submodule lib/ugfx updated: 13e084ae62...3e97b74e03.
@@ -55,8 +55,8 @@
|
|||||||
#define ES_UMLT LSFT(ES_GRV)
|
#define ES_UMLT LSFT(ES_GRV)
|
||||||
|
|
||||||
#define ES_GRTR LSFT(ES_LESS)
|
#define ES_GRTR LSFT(ES_LESS)
|
||||||
#define ES_SCLN LSFT(ES_COMM)
|
#define ES_SCLN LSFT(KC_COMM)
|
||||||
#define ES_COLN LSFT(ES_DOT)
|
#define ES_COLN LSFT(KC_DOT)
|
||||||
#define ES_UNDS LSFT(ES_MINS)
|
#define ES_UNDS LSFT(ES_MINS)
|
||||||
|
|
||||||
// Alt Gr-ed characters
|
// Alt Gr-ed characters
|
||||||
@@ -72,6 +72,6 @@
|
|||||||
#define ES_RBRC ALGR(ES_PLUS)
|
#define ES_RBRC ALGR(ES_PLUS)
|
||||||
|
|
||||||
#define ES_LCBR ALGR(ES_ACUT)
|
#define ES_LCBR ALGR(ES_ACUT)
|
||||||
#define ES_RCRB ALGR(ES_CCED)
|
#define ES_RCBR ALGR(ES_CCED)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -437,6 +437,14 @@ bool process_record_quantum(keyrecord_t *record) {
|
|||||||
return false;
|
return false;
|
||||||
// break;
|
// break;
|
||||||
}
|
}
|
||||||
|
case GRAVE_ESC: {
|
||||||
|
void (*method)(uint8_t) = (record->event.pressed) ? &add_key : &del_key;
|
||||||
|
uint8_t shifted = get_mods() & ((MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)
|
||||||
|
|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)));
|
||||||
|
|
||||||
|
method(shifted ? KC_GRAVE : KC_ESCAPE);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
shift_interrupted[0] = true;
|
shift_interrupted[0] = true;
|
||||||
shift_interrupted[1] = true;
|
shift_interrupted[1] = true;
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ enum quantum_keycodes {
|
|||||||
MAGIC_UNHOST_NKRO,
|
MAGIC_UNHOST_NKRO,
|
||||||
MAGIC_UNSWAP_ALT_GUI,
|
MAGIC_UNSWAP_ALT_GUI,
|
||||||
MAGIC_TOGGLE_NKRO,
|
MAGIC_TOGGLE_NKRO,
|
||||||
|
GRAVE_ESC,
|
||||||
|
|
||||||
// Leader key
|
// Leader key
|
||||||
#ifndef DISABLE_LEADER
|
#ifndef DISABLE_LEADER
|
||||||
@@ -514,6 +515,8 @@ enum quantum_keycodes {
|
|||||||
#define MACROTAP(kc) (kc | QK_MACRO | FUNC_TAP<<8)
|
#define MACROTAP(kc) (kc | QK_MACRO | FUNC_TAP<<8)
|
||||||
#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
|
#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
|
||||||
|
|
||||||
|
#define KC_GESC GRAVE_ESC
|
||||||
|
|
||||||
|
|
||||||
// L-ayer, T-ap - 256 keycode max, 16 layer max
|
// L-ayer, T-ap - 256 keycode max, 16 layer max
|
||||||
#define LT(layer, kc) (kc | QK_LAYER_TAP | ((layer & 0xF) << 8))
|
#define LT(layer, kc) (kc | QK_LAYER_TAP | ((layer & 0xF) << 8))
|
||||||
|
|||||||
@@ -127,3 +127,17 @@ bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer
|
|||||||
gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0);
|
gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||||
|
(void)state;
|
||||||
|
(void)animation;
|
||||||
|
gdispGSetPowerMode(LED_DISPLAY, powerOff);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||||
|
(void)state;
|
||||||
|
(void)animation;
|
||||||
|
gdispGSetPowerMode(LED_DISPLAY, powerOn);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
@@ -35,6 +35,9 @@ bool led_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t*
|
|||||||
bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
|
bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
|
||||||
bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
|
bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
|
||||||
|
|
||||||
|
bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
|
||||||
|
bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
|
||||||
|
|
||||||
extern keyframe_animation_t led_test_animation;
|
extern keyframe_animation_t led_test_animation;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,8 +58,11 @@ SOFTWARE.
|
|||||||
static visualizer_keyboard_status_t current_status = {
|
static visualizer_keyboard_status_t current_status = {
|
||||||
.layer = 0xFFFFFFFF,
|
.layer = 0xFFFFFFFF,
|
||||||
.default_layer = 0xFFFFFFFF,
|
.default_layer = 0xFFFFFFFF,
|
||||||
.mods = 0xFF,
|
|
||||||
.leds = 0xFFFFFFFF,
|
.leds = 0xFFFFFFFF,
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
.backlight_level = 0,
|
||||||
|
#endif
|
||||||
|
.mods = 0xFF,
|
||||||
.suspended = false,
|
.suspended = false,
|
||||||
#ifdef VISUALIZER_USER_DATA_SIZE
|
#ifdef VISUALIZER_USER_DATA_SIZE
|
||||||
.user_data = {0}
|
.user_data = {0}
|
||||||
@@ -72,6 +75,9 @@ static bool same_status(visualizer_keyboard_status_t* status1, visualizer_keyboa
|
|||||||
status1->mods == status2->mods &&
|
status1->mods == status2->mods &&
|
||||||
status1->leds == status2->leds &&
|
status1->leds == status2->leds &&
|
||||||
status1->suspended == status2->suspended
|
status1->suspended == status2->suspended
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
&& status1->backlight_level == status2->backlight_level
|
||||||
|
#endif
|
||||||
#ifdef VISUALIZER_USER_DATA_SIZE
|
#ifdef VISUALIZER_USER_DATA_SIZE
|
||||||
&& memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0
|
&& memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0
|
||||||
#endif
|
#endif
|
||||||
@@ -279,6 +285,18 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
|
|||||||
bool enabled = visualizer_enabled;
|
bool enabled = visualizer_enabled;
|
||||||
if (force_update || !same_status(&state.status, ¤t_status)) {
|
if (force_update || !same_status(&state.status, ¤t_status)) {
|
||||||
force_update = false;
|
force_update = false;
|
||||||
|
#if BACKLIGHT_ENABLE
|
||||||
|
if(current_status.backlight_level != state.status.backlight_level) {
|
||||||
|
if (current_status.backlight_level != 0) {
|
||||||
|
gdispGSetPowerMode(LED_DISPLAY, powerOn);
|
||||||
|
uint16_t percent = (uint16_t)current_status.backlight_level * 100 / BACKLIGHT_LEVELS;
|
||||||
|
gdispGSetBacklight(LED_DISPLAY, percent);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
gdispGSetPowerMode(LED_DISPLAY, powerOff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (visualizer_enabled) {
|
if (visualizer_enabled) {
|
||||||
if (current_status.suspended) {
|
if (current_status.suspended) {
|
||||||
stop_all_keyframe_animations();
|
stop_all_keyframe_animations();
|
||||||
@@ -309,7 +327,7 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
|
|||||||
update_keyframe_animation(animations[i], &state, delta, &sleep_time);
|
update_keyframe_animation(animations[i], &state, delta, &sleep_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef LED_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
gdispGFlush(LED_DISPLAY);
|
gdispGFlush(LED_DISPLAY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -372,7 +390,7 @@ void visualizer_init(void) {
|
|||||||
#ifdef LCD_ENABLE
|
#ifdef LCD_ENABLE
|
||||||
LCD_DISPLAY = get_lcd_display();
|
LCD_DISPLAY = get_lcd_display();
|
||||||
#endif
|
#endif
|
||||||
#ifdef LED_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
LED_DISPLAY = get_led_display();
|
LED_DISPLAY = get_led_display();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -445,6 +463,9 @@ void visualizer_update(uint32_t default_state, uint32_t state, uint8_t mods, uin
|
|||||||
.default_layer = default_state,
|
.default_layer = default_state,
|
||||||
.mods = mods,
|
.mods = mods,
|
||||||
.leds = leds,
|
.leds = leds,
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
.backlight_level = current_status.backlight_level,
|
||||||
|
#endif
|
||||||
.suspended = current_status.suspended,
|
.suspended = current_status.suspended,
|
||||||
};
|
};
|
||||||
#ifdef VISUALIZER_USER_DATA_SIZE
|
#ifdef VISUALIZER_USER_DATA_SIZE
|
||||||
@@ -467,3 +488,10 @@ void visualizer_resume(void) {
|
|||||||
current_status.suspended = false;
|
current_status.suspended = false;
|
||||||
update_status(true);
|
update_status(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
void backlight_set(uint8_t level) {
|
||||||
|
current_status.backlight_level = level;
|
||||||
|
update_status(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -34,6 +34,10 @@ SOFTWARE.
|
|||||||
#include "lcd_backlight.h"
|
#include "lcd_backlight.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
#include "backlight.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// use this function to merge both real_mods and oneshot_mods in a uint16_t
|
// use this function to merge both real_mods and oneshot_mods in a uint16_t
|
||||||
uint8_t visualizer_get_mods(void);
|
uint8_t visualizer_get_mods(void);
|
||||||
|
|
||||||
@@ -65,9 +69,12 @@ struct keyframe_animation_t;
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t layer;
|
uint32_t layer;
|
||||||
uint32_t default_layer;
|
uint32_t default_layer;
|
||||||
uint8_t mods;
|
|
||||||
uint32_t leds; // See led.h for available statuses
|
uint32_t leds; // See led.h for available statuses
|
||||||
|
uint8_t mods;
|
||||||
bool suspended;
|
bool suspended;
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
uint8_t backlight_level;
|
||||||
|
#endif
|
||||||
#ifdef VISUALIZER_USER_DATA_SIZE
|
#ifdef VISUALIZER_USER_DATA_SIZE
|
||||||
uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
|
uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -42,9 +42,8 @@ SRC += $(VISUALIZER_DIR)/resources/lcd_logo.c
|
|||||||
OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
|
OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(LED_ENABLE)), yes)
|
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
|
||||||
SRC += $(VISUALIZER_DIR)/led_keyframes.c
|
SRC += $(VISUALIZER_DIR)/led_keyframes.c
|
||||||
OPT_DEFS += -DLED_ENABLE
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include $(GFXLIB)/gfx.mk
|
include $(GFXLIB)/gfx.mk
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ void backlight_init(void)
|
|||||||
eeconfig_init();
|
eeconfig_init();
|
||||||
}
|
}
|
||||||
backlight_config.raw = eeconfig_read_backlight();
|
backlight_config.raw = eeconfig_read_backlight();
|
||||||
|
if (backlight_config.level > BACKLIGHT_LEVELS) {
|
||||||
|
backlight_config.level = BACKLIGHT_LEVELS;
|
||||||
|
}
|
||||||
backlight_set(backlight_config.enable ? backlight_config.level : 0);
|
backlight_set(backlight_config.enable ? backlight_config.level : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+15
-4
@@ -6,16 +6,27 @@ TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
|
|||||||
if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
|
if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
|
||||||
exit_code=0
|
exit_code=0
|
||||||
NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | wc -l)
|
NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | wc -l)
|
||||||
if [[ $NEFM -gt 0 ]] ; then
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then
|
||||||
echo "Making all keymaps for all keyboards"
|
echo "Making all keymaps for all keyboards"
|
||||||
make all-keyboards AUTOGEN="true"
|
make all-keyboards AUTOGEN="true"
|
||||||
: $((exit_code = $exit_code + $?))
|
: $((exit_code = $exit_code + $?))
|
||||||
else
|
else
|
||||||
MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
|
MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
|
||||||
for KB in $MKB ; do
|
for KB in $MKB ; do
|
||||||
echo "Making all keymaps for $KB"
|
KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l)
|
||||||
make "$KB" AUTOGEN=true
|
if [[ $KEYMAP_ONLY -gt 0 ]]; then
|
||||||
: $((exit_code = $exit_code + $?))
|
echo "Making all keymaps for $KB"
|
||||||
|
make ${KB}-allsp-allkm AUTOGEN=true
|
||||||
|
: $((exit_code = $exit_code + $?))
|
||||||
|
else
|
||||||
|
MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
|
||||||
|
for KM in $MKM ; do
|
||||||
|
echo "Making $KM for $KB"
|
||||||
|
make ${KB}-allsp-${KM} AUTOGEN=true
|
||||||
|
: $((exit_code = $exit_code + $?))
|
||||||
|
done
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
exit $exit_code
|
exit $exit_code
|
||||||
|
|||||||
Reference in new issue
Block a user