1
0
Fork 0

Keymap: Wanleg layout updates (#4550)

* config fixes (including for issue #3678)

* put back audio

* jj40 backlighting setup

* jj40 backlighting setup

* rules.mk fix

* jj40 backlighting settings

* iris setup

* iris setup

* iris setup

* iris setup

* iris setup - onehand

* remove commented-out section

* edits due to #4403

* xd75 testing

* fix 5x15 layout issues with 5x5 bluetooth & xd75

* commenting out unused placeholders

* change iris to more wanleg-like 4x12 layout

* formatting changes

* onehand layout cleanup/fix

* revert temp change
This commit is contained in:
wanleg 2018-12-05 08:42:50 -08:00 committed by Drashna Jaelre
parent 20130e010b
commit 0677e64655
13 changed files with 208 additions and 66 deletions

View file

@ -0,0 +1,33 @@
/*
Copyright 2017 Danny Nguyen <danny@keeb.io>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Use I2C or Serial, not both */
#define USE_SERIAL
#undef USE_I2C
/* Select hand configuration */
// #define MASTER_LEFT
// #define MASTER_RIGHT
#define EE_HANDS
#define QMK_ESC_OUTPUT F6 // usually COL
#define QMK_ESC_INPUT D7 // usually ROW
#define QMK_LED B0

View file

@ -0,0 +1,76 @@
#include QMK_KEYBOARD_H
#include "wanleg.h"
#define LAYOUT_iris_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \
) \
LAYOUT_wrapper( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
K31, K32, K33, K34, K35, K36, _______, _______, K37, K38, K39, K3A, K3B, K3C, \
_______, _______, _______, _______, _______, _______ \
)
#define LAYOUT_iris_base_wrapper(...) LAYOUT_iris_base(__VA_ARGS__)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_GK] = LAYOUT_iris_base_wrapper(
_______________GherkinLike_0_______________,
_______________GherkinLike_1_______________,
_______________GherkinLike_2_______________,
_______________GherkinLike_3_OneHand_______
),
[ONE] = LAYOUT_wrapper(
_______________Qwerty_Row__0_______________,
_______________Qwerty_Row__1_______________,
_______________Qwerty_Row__2_______________,
KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), _______, _______, SH_T(KC_SPC), SUPRA, KC_RGUI, KC_RALT, GHERKIN, KC_RCTL,
_______, _______, _______, _______, _______, _______
),
[SUP] = LAYOUT_iris_base_wrapper(
________________SUPRA_Row_0________________,
________________SUPRA_Row_1________________,
________________SUPRA_Row_2________________,
________________SUPRA_Row_3________________
),
[SUB] = LAYOUT_iris_base_wrapper(
_______________SUBTER_Row__0_______________,
_______________SUBTER_Row__1_______________,
_______________SUBTER_Row__2_______________,
_______________SUBTER_Row__3_______________
),
[NUM] = LAYOUT_iris_base_wrapper(
_______________NUMBERS_Row_0_______________,
_______________NUMBERS_Row_1_______________,
_______________NUMBERS_Row_2_______________,
_______________NUMBERS_Row_3_______________
),
[DIR] = LAYOUT_iris_base_wrapper(
_____________DIRECTIONS_Row__0_____________,
_____________DIRECTIONS_Row__1_____________,
_____________DIRECTIONS_Row__2_____________,
_______, _______, ONEHAND, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[ETC] = LAYOUT_iris_base_wrapper(
______________ETCETERA_Row__0______________,
______________ETCETERA_Row__1______________,
______________ETCETERA_Row__2______________,
______________ETCETERA_Row__3______________
)
};
void matrix_init_keymap(void) {
DDRD &= ~(1<<5);
PORTD &= ~(1<<5);
DDRB &= ~(1<<0);
PORTB &= ~(1<<0);
}

View file

@ -0,0 +1,5 @@
RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = no
SWAP_HANDS_ENABLE = yes
BOOTLOADER = qmk-dfu

View file

@ -1,5 +1,14 @@
#pragma once #pragma once
#if defined(KEYBOARD_jj40)
#undef BACKLIGHT_BREATHING
#undef BACKLIGHT_LEVELS
#undef BREATHING_PERIOD
#define BACKLIGHT_BREATHING
#define BACKLIGHT_LEVELS 3
#define BREATHING_PERIOD 15
#endif
//QMK DFU settings (ProMicro boards with QMK bootloader) //QMK DFU settings (ProMicro boards with QMK bootloader)
// set top left key as bootloader mode escape key on Lets Split rev2 // set top left key as bootloader mode escape key on Lets Split rev2
#if defined(KEYBOARD_lets_split_rev2) #if defined(KEYBOARD_lets_split_rev2)
@ -12,7 +21,7 @@
#endif #endif
// set top left key as bootloader mode escape key on 4x4 48key layout // set top left key as bootloader mode escape key on 4x4 48key layout
#if defined(KEYBOARD_4x4) && !defined(PRO_MICRO) #if defined(KEYBOARD_40percentclub_4x4) && !defined(PRO_MICRO)
#define QMK_LED B0 #define QMK_LED B0
#define QMK_ESC_OUTPUT C6 // usually COL #define QMK_ESC_OUTPUT C6 // usually COL
#define QMK_ESC_INPUT B2 // usually ROW #define QMK_ESC_INPUT B2 // usually ROW
@ -20,7 +29,7 @@
// use alternate settings for 4x4 board using ProMicro instead of Micro // use alternate settings for 4x4 board using ProMicro instead of Micro
// usage: make 4x4:wanleg PM=yes // usage: make 4x4:wanleg PM=yes
#if defined(KEYBOARD_4x4) && defined(PRO_MICRO) #if defined(KEYBOARD_40percentclub_4x4) && defined(PRO_MICRO)
#define QMK_ESC_OUTPUT F4 // usually COL #define QMK_ESC_OUTPUT F4 // usually COL
#define QMK_ESC_INPUT D1 // usually ROW #define QMK_ESC_INPUT D1 // usually ROW
#define QMK_LED B0 #define QMK_LED B0

View file

@ -15,8 +15,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______________Qwerty_Row__2_______________, _______________Qwerty_Row__2_______________,
KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), SH_T(KC_SPC), SUPRA, KC_RGUI, KC_RALT, GHERKIN, KC_RCTL KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), SH_T(KC_SPC), SUPRA, KC_RGUI, KC_RALT, GHERKIN, KC_RCTL
), ),
[DIR] = LAYOUT_ortho_4x12_wrapper(
#elif defined(KEYBOARD_4x4) _____________DIRECTIONS_Row__0_____________,
_____________DIRECTIONS_Row__1_____________,
_____________DIRECTIONS_Row__2_____________,
_______, _______, ONEHAND, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
#elif defined(KEYBOARD_40percentclub_4x4)
[_GK] = LAYOUT_ortho_4x12_wrapper( [_GK] = LAYOUT_ortho_4x12_wrapper(
_______________GherkinLike_0_______________, _______________GherkinLike_0_______________,
_______________GherkinLike_1_______________, _______________GherkinLike_1_______________,
@ -31,6 +36,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______________NUMPAD_Row__3_______________ _______________NUMPAD_Row__3_______________
), ),
#elif defined(KEYBOARD_jj40)
[_GK] = LAYOUT_ortho_4x12_wrapper(
_______________GherkinLike_0_______________,
_______________GherkinLike_1_______________,
_______________GherkinLike_2_______________,
TD(RST_TAP_DANCE), BL_TOGG, BL_STEP, BL_BRTG, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL
),
#else #else
[_GK] = LAYOUT_ortho_4x12_wrapper( [_GK] = LAYOUT_ortho_4x12_wrapper(
_______________GherkinLike_0_______________, _______________GherkinLike_0_______________,

View file

@ -1,14 +1,10 @@
AUDIO_ENABLE = no AUDIO_ENABLE = no
SWAP_HANDS_ENABLE = yes SWAP_HANDS_ENABLE = no
ifeq ($(strip $(KEYBOARD)), jj40) ifeq ($(strip $(KEYBOARD)), lets_split/rev2)
SWAP_HANDS_ENABLE = no SWAP_HANDS_ENABLE = yes
endif endif
ifeq ($(strip $(KEYBOARD)), 40percentclub/4x4) ifeq ($(strip $(KEYBOARD)), planck/rev6)
SWAP_HANDS_ENABLE = no AUDIO_ENABLE = yes
endif endif
ifeq ($(strip $(KEYBOARD)), zlant)
SWAP_HANDS_ENABLE = no
endif

View file

@ -1,7 +1,7 @@
#pragma once #pragma once
//5x5 powered by Adafruit Feather 32u4 Bluefruit LE //5x5 powered by Adafruit Feather 32u4 Bluefruit LE
#if defined(KEYBOARD_5x5) && defined(BLUEFRUIT) #if defined(KEYBOARD_40percentclub_5x5) && defined(BLUEFRUIT)
//need to undefine standard 5x5 array before defining alternate Bluefruit array //need to undefine standard 5x5 array before defining alternate Bluefruit array
#undef MATRIX_ROW_PINS #undef MATRIX_ROW_PINS

View file

@ -6,7 +6,7 @@
#define _________________Num_Row_75________________ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NLCK #define _________________Num_Row_75________________ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NLCK
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#if defined(KEYBOARD_5x5) #if defined(KEYBOARD_40percentclub_5x5)
[GK75] = LAYOUT_ortho_5x15_wrapper( [GK75] = LAYOUT_ortho_5x15_wrapper(
_________________Num_Row_75________________, QWERTY75, XXXXXXX, FUNCTION75, _________________Num_Row_75________________, QWERTY75, XXXXXXX, FUNCTION75,
_______________GherkinLike_0_______________, KC_KP_7, KC_KP_8, KC_KP_9, _______________GherkinLike_0_______________, KC_KP_7, KC_KP_8, KC_KP_9,
@ -23,6 +23,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TD(RST_TAP_DANCE), GHERKIN75, NUMPAD, gNUMBER, gETCETERA, KC_SPC,gDIRECTION, KC_RGUI, KC_RALT, KC_RGUI TD(RST_TAP_DANCE), GHERKIN75, NUMPAD, gNUMBER, gETCETERA, KC_SPC,gDIRECTION, KC_RGUI, KC_RALT, KC_RGUI
), ),
[gNUM] = LAYOUT_ortho_5x10_wrapper(
_________________BLANK_50__________________,
_______________Gherkin_NUM_0_______________,
_______________Gherkin_NUM_1_______________,
_______________Gherkin_NUM_2_______________,
_______, _______, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, _______, _______
),
[gDIR] = LAYOUT_ortho_5x10_wrapper(
_________________BLANK_50__________________,
_______________Gherkin_DIR_0_______________,
_______________Gherkin_DIR_1_______________,
_______________Gherkin_DIR_2_______________,
_________________BLANK_50__________________
),
[gETC] = LAYOUT_ortho_5x10_wrapper(
_________________BLANK_50__________________,
_______________Gherkin_ETC_0_______________,
_______________Gherkin_ETC_1_______________,
_______________Gherkin_ETC_2_______________,
_______, KC_CAPS, _______, _______, _______, LALT(LCTL(KC_DEL)), _______, _______, _______, _______
),
#if defined(BLUEFRUIT) #if defined(BLUEFRUIT)
[PAD] = LAYOUT_ortho_5x5_wrapper( [PAD] = LAYOUT_ortho_5x5_wrapper(
_______, _______, _______, OUT_BT, OUT_USB, _______, _______, _______, OUT_BT, OUT_USB,
@ -210,27 +234,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R _______, _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
), ),
[gNUM] = LAYOUT_ortho_5x10_wrapper(
_________________BLANK_50__________________,
_______________Gherkin_NUM_0_______________,
_______________Gherkin_NUM_1_______________,
_______________Gherkin_NUM_2_______________,
_______, _______, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, _______, _______
),
[gDIR] = LAYOUT_ortho_5x10_wrapper(
_________________BLANK_50__________________,
_______________Gherkin_DIR_0_______________,
_______________Gherkin_DIR_1_______________,
_______________Gherkin_DIR_2_______________,
_________________BLANK_50__________________
),
[gETC] = LAYOUT_ortho_5x10_wrapper(
_________________BLANK_50__________________,
_______________Gherkin_ETC_0_______________,
_______________Gherkin_ETC_1_______________,
_______________Gherkin_ETC_2_______________,
_______, KC_CAPS, _______, _______, _______, LALT(LCTL(KC_DEL)), _______, _______, _______, _______
),
}; };

View file

@ -1,8 +1,11 @@
ifeq (,$(findstring yes,$(BLUEFRUIT))) #ifeq ($(strip $(KEYBOARD)), xd75)
BLUETOOTH = AdafruitBLE #or
BLUETOOTH_ENABLE = yes #ifeq (,$(findstring xd75,$(KEYBOARD)))
F_CPU = 8000000 #something
CONSOLE_ENABLE = no # Console for debug(+400) #endif
COMMAND_ENABLE = no # Commands for debug and configuration
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow #ifeq ($(strip $(KEYBOARD)), 40percentclub/5x5)
endif #or
#ifeq (,$(findstring 40percentclub/5x5,$(KEYBOARD)))
#something
#endif

View file

@ -1,10 +1,12 @@
#ifndef USERSPACE_CONFIG_H #pragma once
#define USERSPACE_CONFIG_H
//TAPPING_TERM //TAPPING_TERM
//tapping term short (<100): on multi-purpose keys, slow taps may not register, but "holds" register easier. multi-tap keys may be difficult to activate. //tapping term short (<100): on multi-purpose keys, slow taps may not register, but "holds" register easier. multi-tap keys may be difficult to activate.
//tapping term long (>200): holds don't register as easily - noticeable when typing quickly (e.g. shift doesn't want to engage.) //tapping term long (>200): holds don't register as easily - noticeable when typing quickly (e.g. shift doesn't want to engage.)
#if defined(TAP_DANCE_ENABLE) && defined(KEYBOARD_lets_split_rev2)
//MIGHT HAVE TO SPLIT THIS INTO TWO CONDITIONS
#if defined(TAP_DANCE_ENABLE) && defined(KEYBOARD_lets_split_rev2) || defined(KEYBOARD_iris_rev2)
//Kailh Coppers activate quickly and don't need a long tapping term //Kailh Coppers activate quickly and don't need a long tapping term
#define TAPPING_TERM 100 #define TAPPING_TERM 100
@ -39,6 +41,4 @@
// Disable mod tap interrrupt // Disable mod tap interrrupt
#ifndef IGNORE_MOD_TAP_INTERRUPT #ifndef IGNORE_MOD_TAP_INTERRUPT
#define IGNORE_MOD_TAP_INTERRUPT #define IGNORE_MOD_TAP_INTERRUPT
#endif // !mod tap interrrupt #endif // !mod tap interrrupt
#endif // !USERSPACE_CONFIG_H

View file

@ -18,5 +18,13 @@ endif
#use alternate settings for boards using "Adafruit Feather 32u4 Bluefruit LE" instead of Micro #use alternate settings for boards using "Adafruit Feather 32u4 Bluefruit LE" instead of Micro
#example usage: make 5x5:wanleg BT=yes #example usage: make 5x5:wanleg BT=yes
ifeq ($(strip $(BT)), yes) ifeq ($(strip $(BT)), yes)
OPT_DEFS += -DBLUEFRUIT #opt_defs for alternate pin usage
OPT_DEFS += -DBLUEFRUIT
#Adafruit Bluefruit controller settings
BLUETOOTH = AdafruitBLE
BLUETOOTH_ENABLE = yes
F_CPU = 8000000
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
endif endif

View file

@ -73,9 +73,9 @@ void CAD_finished (qk_tap_dance_state_t *state, void *user_data) {
//register_code(KC_NO); //register_code(KC_NO);
//take a screenshot of a single window, open Paint and paste //take a screenshot of a single window, open Paint and paste
SEND_STRING(SS_LALT(SS_TAP(X_PSCREEN)) SS_LGUI("r")); SEND_STRING(SS_LALT(SS_TAP(X_PSCREEN)) SS_LGUI("r"));
_delay_ms(500); wait_ms(500);
SEND_STRING("mspaint" SS_TAP(X_ENTER)); SEND_STRING("mspaint" SS_TAP(X_ENTER));
_delay_ms(700); wait_ms(700);
SEND_STRING(SS_LCTRL("v")); SEND_STRING(SS_LCTRL("v"));
break; //register this keycode when button is held break; //register this keycode when button is held
case DOUBLE_TAP: case DOUBLE_TAP:

View file

@ -1,5 +1,4 @@
#ifndef USERSPACE #pragma once
#define USERSPACE
#include "quantum.h" #include "quantum.h"
@ -32,7 +31,6 @@ enum userspace_layers {
#elif KEYBOARD_xd75 #elif KEYBOARD_xd75
enum userspace_layers { enum userspace_layers {
GK75 = 0, GK75 = 0,
PAD,
QW75, QW75,
SUB75, SUB75,
SUP75, SUP75,
@ -43,6 +41,7 @@ enum userspace_layers {
gGK, gGK,
_GK, _GK,
_QW, _QW,
PAD,
ONE, ONE,
SUB, SUB,
SUP, SUP,
@ -54,7 +53,7 @@ enum userspace_layers {
gETC, gETC,
GK50, GK50,
}; };
#elif KEYBOARD_5x5 #elif KEYBOARD_40percentclub_5x5
enum userspace_layers { enum userspace_layers {
GK50 = 0, GK50 = 0,
gNUM, gNUM,
@ -82,8 +81,8 @@ enum userspace_layers {
#else #else
enum userspace_layers { enum userspace_layers {
_GK = 0, _GK = 0,
PAD,
_QW, _QW,
PAD,
ONE, ONE,
SUB, SUB,
SUP, SUP,
@ -156,11 +155,11 @@ enum {
#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
#define LAYOUT_ortho_3x10_wrapper(...) LAYOUT_ortho_3x10(__VA_ARGS__) #define LAYOUT_ortho_3x10_wrapper(...) LAYOUT_ortho_3x10(__VA_ARGS__)
#define LAYOUT_ortho_5x10_wrapper(...) LAYOUT_ortho_5x10(__VA_ARGS__)
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
#define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__)
#define LAYOUT_ortho_4x4_wrapper(...) LAYOUT_ortho_4x4(__VA_ARGS__) #define LAYOUT_ortho_4x4_wrapper(...) LAYOUT_ortho_4x4(__VA_ARGS__)
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
#define LAYOUT_ortho_5x5_wrapper(...) LAYOUT_ortho_5x5(__VA_ARGS__) #define LAYOUT_ortho_5x5_wrapper(...) LAYOUT_ortho_5x5(__VA_ARGS__)
#define LAYOUT_ortho_5x10_wrapper(...) LAYOUT_ortho_5x10(__VA_ARGS__)
#define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__)
// Blocks for each of the major keyboard layouts // Blocks for each of the major keyboard layouts
// Organized so we can quickly adapt and modify all of them // Organized so we can quickly adapt and modify all of them
@ -229,7 +228,7 @@ enum {
/* Gherkin-Like /* Gherkin-Like
* .-----------------------------------------------------------------------------------------------------------. * .-----------------------------------------------------------------------------------------------------------.
* | ESC | Q//ESC | W | E | R | T | Y | U | I | O | P | BSPC | * | ESC | Q//ESC | W | E | R | T | Y | U | I | O | P | BSPC |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | TAB | A | S | D | F | G | H | J | K | L | SPACE | ' | * | TAB | A | S | D | F | G | H | J | K | L | SPACE | ' |
* | | | | | | | | | | |SFThold | | * | | | | | | | | | | |SFThold | |
@ -361,4 +360,3 @@ enum {
#define _______________NUMPAD_Row__1_______________ KC_KP_4, KC_KP_5, KC_KP_6, KC_SPC #define _______________NUMPAD_Row__1_______________ KC_KP_4, KC_KP_5, KC_KP_6, KC_SPC
#define _______________NUMPAD_Row__2_______________ KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT #define _______________NUMPAD_Row__2_______________ KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT
#define _______________NUMPAD_Row__3_______________ KC_KP_0, TD(LYR_TAP_DANCE), KC_KP_DOT, KC_PMNS #define _______________NUMPAD_Row__3_______________ KC_KP_0, TD(LYR_TAP_DANCE), KC_KP_DOT, KC_PMNS
#endif // !USERSPACE