Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3aa620c1ac | ||
|
|
c2c9cb2505 | ||
|
|
a7942c4f48 | ||
|
|
3d5d3e1b0c | ||
|
|
f37daa5343 | ||
|
|
3ee346c07b | ||
|
|
78a4cfd453 | ||
|
|
6b5d67fcc6 | ||
|
|
d1854e0e04 | ||
|
|
0440c0f072 | ||
|
|
568c662c14 | ||
|
|
96b0382fb4 | ||
|
|
21fa16651c | ||
|
|
2c404cca12 | ||
|
|
a5b5279da9 | ||
|
|
54d48140cd | ||
|
|
7146dfea6e | ||
|
|
8f80f35186 | ||
|
|
1b8ed53f21 | ||
|
|
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
|
||||||
@@ -1,2 +1,8 @@
|
|||||||
|
|
||||||
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
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#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
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -3,16 +3,23 @@
|
|||||||
// 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
|
||||||
|
|
||||||
// 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
|
||||||
|
|
||||||
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)
|
||||||
@@ -24,17 +31,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
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_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_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, _______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_RALT, MO(_ME), MO(_FL), 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(_FL), _______, MO(_CL),_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RGHT, _______, _______, _______, _______, \
|
||||||
_______, _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, _______, KC_PGUP, \
|
_______, _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, TO_MIDI, _______, _______, KC_PGUP, \
|
||||||
_______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
_______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), 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, \
|
||||||
@@ -42,23 +47,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, MO(_FL), _______, \
|
MO(_FL), _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, MO(_FL), _______, \
|
||||||
_______, _______, _______,_______, _______,_______, _______, _______, _______, _______, 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, \
|
_______, F(1), _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||||
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
||||||
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), 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),
|
_______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, 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(_BL),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(_BL), 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 +87,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 +124,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 1:
|
||||||
|
rgblight_mode(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,26 +134,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(346, 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 +172,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](http://www.keyboard-layout-editor.com/#/gists/f869b8789242a712e0f46eabbd550056)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
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,6 +12,8 @@ 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
|
||||||
|
|
||||||
|
There is also a MIDI layer included.
|
||||||
|
|
||||||
The CapsLock is disabled and works as Function key.
|
The CapsLock is disabled and works as Function key.
|
||||||
|
|
||||||
There is also a separate media layer with Volume/Play controls
|
There is also a separate media layer with Volume/Play controls
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -34,11 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │█████│ │
|
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
||||||
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
@@ -55,13 +55,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
* │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 │
|
||||||
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -69,18 +69,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
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, 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, KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, 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
|
||||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ │
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │█████│ │
|
* │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
|
||||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
|
||||||
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
@@ -124,6 +124,8 @@ const uint16_t PROGMEM fn_actions[] = {
|
|||||||
|
|
||||||
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(); */
|
||||||
|
|||||||
@@ -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,225 @@
|
|||||||
|
#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(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, \
|
||||||
|
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_HOME, KC_END, 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_MUTE, KC_VOLD, KC_MPLY),
|
||||||
|
|
||||||
|
/* 3: Locking layer for controlling the underglow
|
||||||
|
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
|
||||||
|
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
* │ │ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, F(4), F(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, F(6), F(7), F(8), F(9), F(10), F(11), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum function_id {
|
||||||
|
RGBLED_TOGGLE,
|
||||||
|
RGBLED_STEP_MODE,
|
||||||
|
RGBLED_INCREASE_HUE,
|
||||||
|
RGBLED_DECREASE_HUE,
|
||||||
|
RGBLED_INCREASE_SAT,
|
||||||
|
RGBLED_DECREASE_SAT,
|
||||||
|
RGBLED_INCREASE_VAL,
|
||||||
|
RGBLED_DECREASE_VAL,
|
||||||
|
SHIFT_ESC,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[0] = ACTION_LAYER_MOMENTARY(_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
|
||||||
|
[4] = ACTION_FUNCTION(RGBLED_TOGGLE), // Turn on/off underglow
|
||||||
|
[5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
|
||||||
|
[6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
|
||||||
|
[7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
|
||||||
|
[8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
|
||||||
|
[9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
|
||||||
|
[10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
|
||||||
|
[11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
|
||||||
|
[12] = ACTION_FUNCTION(SHIFT_ESC),
|
||||||
|
};
|
||||||
|
|
||||||
|
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) {
|
||||||
|
case RGBLED_TOGGLE:
|
||||||
|
//led operations
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_toggle();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_INCREASE_HUE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_hue();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_DECREASE_HUE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_hue();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_INCREASE_SAT:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_sat();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_DECREASE_SAT:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_sat();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_INCREASE_VAL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_val();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_DECREASE_VAL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RGBLED_STEP_MODE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_step();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
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 │ │
|
||||||
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||||
|
|||||||
+19
-5
@@ -12,13 +12,27 @@
|
|||||||
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, K312, 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, K312, KC_NO, 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,60 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 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/>.
|
||||||
|
*/
|
||||||
|
#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
|
||||||
Reference in new issue
Block a user