mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3542f594d9 | ||
|
|
0511b522e0 | ||
|
|
34239edcb0 | ||
|
|
8bdbac14a3 | ||
|
|
01f4b67ef0 | ||
|
|
f05927a2f0 | ||
|
|
4cd3afc7e9 | ||
|
|
86855f4417 | ||
|
|
416eb1dee7 | ||
|
|
0a6beab224 | ||
|
|
93b7fccad6 | ||
|
|
565a7812ab | ||
|
|
838d09b0a9 |
@@ -6,7 +6,7 @@
|
||||
#define OTHER 3
|
||||
|
||||
enum custom_keycodes {
|
||||
MACRO1
|
||||
MACRO1 = SAFE_RANGE
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
@@ -53,7 +53,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* ws2812 RGB LED */
|
||||
#define RGB_DI_PIN D3
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGBLED_NUM 12 // Number of LEDs
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGBLED_NUM 54 // Number of LEDs
|
||||
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
|
||||
@@ -13,6 +13,177 @@ void led_set_kb(uint8_t usb_led) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
// Logical Layout
|
||||
// Columns
|
||||
// Left
|
||||
// 0 1 2 3 4 5
|
||||
// ROWS
|
||||
// 25 24 19 18 11 10 0
|
||||
// 03 02 01
|
||||
// 26 23 20 17 12 09 1
|
||||
// 04 05 06
|
||||
// 27 22 21 16 13 08 2
|
||||
//
|
||||
// 15 14 07 3
|
||||
//
|
||||
// Right
|
||||
// 0 1 2 3 4 5
|
||||
// ROWS
|
||||
// 25 24 19 18 11 10 4
|
||||
// 03 02 01
|
||||
// 26 23 20 17 12 09 5
|
||||
// 04 05 06
|
||||
// 27 22 21 16 13 08 6
|
||||
//
|
||||
// 15 14 07 7
|
||||
//
|
||||
// Physical Layout
|
||||
// Columns
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13
|
||||
// ROWS
|
||||
// 25 24 19 18 11 10 10 11 18 19 24 25 0
|
||||
// 03 02 01 01 02 03
|
||||
// 26 23 20 17 12 09 09 12 17 20 23 26 1
|
||||
// 04 04
|
||||
// 27 22 21 16 13 08 08 13 16 21 22 27 2
|
||||
// 05 06 06 05
|
||||
// 15 14 07 07 14 15 3
|
||||
|
||||
/* {row | col << 4} logical layout rows/cols
|
||||
* | {x=0..224, y=0..64} physical layout
|
||||
* | | | modifier
|
||||
* | | | */
|
||||
const rgb_led g_rgb_leds_left[27] = {
|
||||
//LEFT
|
||||
{ { 0xFF }, { 85, 16 }, 0 }, // 1
|
||||
{ { 0xFF }, { 50, 13 }, 0 }, // 2
|
||||
{ { 0xFF }, { 16, 20 }, 0 }, // 3
|
||||
{ { 0xFF }, { 16, 38 }, 0 }, // 4
|
||||
{ { 0xFF }, { 50, 48 }, 0 }, // 5
|
||||
{ { 0xFF }, { 85, 52 }, 0 }, // 6
|
||||
|
||||
{ { 3 | ( 5 << 4 ) }, { 95, 63 }, 1 }, // 7
|
||||
{ { 2 | ( 5 << 4 ) }, { 85, 39 }, 0 }, // 8
|
||||
{ { 1 | ( 5 << 4 ) }, { 85, 21 }, 0 }, // 9
|
||||
{ { 0 | ( 5 << 4 ) }, { 85, 4 }, 0 }, //10
|
||||
{ { 0 | ( 4 << 4 ) }, { 68, 02 }, 0 }, //11
|
||||
{ { 1 | ( 4 << 4 ) }, { 68, 19 }, 0 }, //12
|
||||
{ { 2 | ( 4 << 4 ) }, { 68, 37 }, 0 }, //13
|
||||
{ { 3 | ( 4 << 4 ) }, { 80, 58 }, 1 }, //14
|
||||
{ { 3 | ( 3 << 4 ) }, { 60, 55 }, 1 }, //15
|
||||
{ { 2 | ( 3 << 4 ) }, { 50, 35 }, 0 }, //16
|
||||
{ { 1 | ( 3 << 4 ) }, { 50, 13 }, 0 }, //17
|
||||
{ { 0 | ( 3 << 4 ) }, { 50, 0 }, 0 }, //18
|
||||
{ { 0 | ( 2 << 4 ) }, { 33, 3 }, 0 }, //19
|
||||
{ { 1 | ( 2 << 4 ) }, { 33, 20 }, 0 }, //20
|
||||
{ { 2 | ( 2 << 4 ) }, { 33, 37 }, 0 }, //21
|
||||
{ { 2 | ( 1 << 4 ) }, { 16, 42 }, 0 }, //22
|
||||
{ { 1 | ( 1 << 4 ) }, { 16, 24 }, 0 }, //23
|
||||
{ { 0 | ( 1 << 4 ) }, { 16, 7 }, 0 }, //24
|
||||
{ { 0 | ( 0 << 4 ) }, { 0, 7 }, 1 }, //25
|
||||
{ { 1 | ( 0 << 4 ) }, { 0, 24 }, 1 }, //26
|
||||
{ { 2 | ( 0 << 4 ) }, { 0, 41 }, 1 }, //27
|
||||
};
|
||||
const rgb_led g_rgb_leds_right[27] = {
|
||||
//RIGHT
|
||||
{ { 0xFF }, { 139, 16 }, 0 }, // 1
|
||||
{ { 0xFF }, { 174, 13 }, 0 }, // 2
|
||||
{ { 0xFF }, { 208, 20 }, 0 }, // 3
|
||||
{ { 0xFF }, { 208, 38 }, 0 }, // 4
|
||||
{ { 0xFF }, { 174, 48 }, 0 }, // 5
|
||||
{ { 0xFF }, { 139, 52 }, 0 }, // 6
|
||||
|
||||
{ { 7 | ( 5 << 4 ) }, { 129, 63 }, 1 }, // 7
|
||||
{ { 6 | ( 5 << 4 ) }, { 139, 39 }, 0 }, // 8
|
||||
{ { 5 | ( 5 << 4 ) }, { 139, 21 }, 0 }, // 9
|
||||
{ { 4 | ( 5 << 4 ) }, { 139, 4 }, 0 }, //10
|
||||
{ { 4 | ( 4 << 4 ) }, { 156, 02 }, 0 }, //11
|
||||
{ { 5 | ( 4 << 4 ) }, { 156, 19 }, 0 }, //12
|
||||
{ { 6 | ( 4 << 4 ) }, { 156, 37 }, 0 }, //13
|
||||
{ { 7 | ( 4 << 4 ) }, { 144, 58 }, 1 }, //14
|
||||
{ { 7 | ( 3 << 4 ) }, { 164, 55 }, 1 }, //15
|
||||
{ { 6 | ( 3 << 4 ) }, { 174, 35 }, 0 }, //16
|
||||
{ { 5 | ( 3 << 4 ) }, { 174, 13 }, 0 }, //17
|
||||
{ { 4 | ( 3 << 4 ) }, { 174, 0 }, 0 }, //18
|
||||
{ { 4 | ( 2 << 4 ) }, { 191, 3 }, 0 }, //19
|
||||
{ { 5 | ( 2 << 4 ) }, { 191, 20 }, 0 }, //20
|
||||
{ { 6 | ( 2 << 4 ) }, { 191, 37 }, 0 }, //21
|
||||
{ { 6 | ( 1 << 4 ) }, { 208, 42 }, 0 }, //22
|
||||
{ { 5 | ( 1 << 4 ) }, { 208, 24 }, 0 }, //23
|
||||
{ { 4 | ( 1 << 4 ) }, { 208, 7 }, 0 }, //24
|
||||
{ { 4 | ( 0 << 4 ) }, { 224, 7 }, 1 }, //25
|
||||
{ { 5 | ( 0 << 4 ) }, { 224, 24 }, 1 }, //26
|
||||
{ { 6 | ( 0 << 4 ) }, { 224, 41 }, 1 }, //27
|
||||
|
||||
};
|
||||
|
||||
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||
|
||||
//LEFT
|
||||
{ { 0xFF }, { 85, 16 }, 0 }, // 1
|
||||
{ { 0xFF }, { 50, 13 }, 0 }, // 2
|
||||
{ { 0xFF }, { 16, 20 }, 0 }, // 3
|
||||
{ { 0xFF }, { 16, 38 }, 0 }, // 4
|
||||
{ { 0xFF }, { 50, 48 }, 0 }, // 5
|
||||
{ { 0xFF }, { 85, 52 }, 0 }, // 6
|
||||
|
||||
{ { 3 | ( 5 << 4 ) }, { 95, 63 }, 1 }, // 7
|
||||
{ { 2 | ( 5 << 4 ) }, { 85, 39 }, 0 }, // 8
|
||||
{ { 1 | ( 5 << 4 ) }, { 85, 21 }, 0 }, // 9
|
||||
{ { 0 | ( 5 << 4 ) }, { 85, 4 }, 0 }, //10
|
||||
{ { 0 | ( 4 << 4 ) }, { 68, 02 }, 0 }, //11
|
||||
{ { 1 | ( 4 << 4 ) }, { 68, 19 }, 0 }, //12
|
||||
{ { 2 | ( 4 << 4 ) }, { 68, 37 }, 0 }, //13
|
||||
{ { 3 | ( 4 << 4 ) }, { 80, 58 }, 1 }, //14
|
||||
{ { 3 | ( 3 << 4 ) }, { 60, 55 }, 1 }, //15
|
||||
{ { 2 | ( 3 << 4 ) }, { 50, 35 }, 0 }, //16
|
||||
{ { 1 | ( 3 << 4 ) }, { 50, 13 }, 0 }, //17
|
||||
{ { 0 | ( 3 << 4 ) }, { 50, 0 }, 0 }, //18
|
||||
{ { 0 | ( 2 << 4 ) }, { 33, 3 }, 0 }, //19
|
||||
{ { 1 | ( 2 << 4 ) }, { 33, 20 }, 0 }, //20
|
||||
{ { 2 | ( 2 << 4 ) }, { 33, 37 }, 0 }, //21
|
||||
{ { 2 | ( 1 << 4 ) }, { 16, 42 }, 0 }, //22
|
||||
{ { 1 | ( 1 << 4 ) }, { 16, 24 }, 0 }, //23
|
||||
{ { 0 | ( 1 << 4 ) }, { 16, 7 }, 0 }, //24
|
||||
{ { 0 | ( 0 << 4 ) }, { 0, 7 }, 1 }, //25
|
||||
{ { 1 | ( 0 << 4 ) }, { 0, 24 }, 1 }, //26
|
||||
{ { 2 | ( 0 << 4 ) }, { 0, 41 }, 1 }, //27
|
||||
|
||||
//RIGHT
|
||||
{ { 0xFF }, { 139, 16 }, 0 }, // 1
|
||||
{ { 0xFF }, { 174, 13 }, 0 }, // 2
|
||||
{ { 0xFF }, { 208, 20 }, 0 }, // 3
|
||||
{ { 0xFF }, { 208, 38 }, 0 }, // 4
|
||||
{ { 0xFF }, { 174, 48 }, 0 }, // 5
|
||||
{ { 0xFF }, { 139, 52 }, 0 }, // 6
|
||||
|
||||
{ { 7 | ( 5 << 4 ) }, { 129, 63 }, 1 }, // 7
|
||||
{ { 6 | ( 5 << 4 ) }, { 139, 39 }, 0 }, // 8
|
||||
{ { 5 | ( 5 << 4 ) }, { 139, 21 }, 0 }, // 9
|
||||
{ { 4 | ( 5 << 4 ) }, { 139, 4 }, 0 }, //10
|
||||
{ { 4 | ( 4 << 4 ) }, { 156, 02 }, 0 }, //11
|
||||
{ { 5 | ( 4 << 4 ) }, { 156, 19 }, 0 }, //12
|
||||
{ { 6 | ( 4 << 4 ) }, { 156, 37 }, 0 }, //13
|
||||
{ { 7 | ( 4 << 4 ) }, { 144, 58 }, 1 }, //14
|
||||
{ { 7 | ( 3 << 4 ) }, { 164, 55 }, 1 }, //15
|
||||
{ { 6 | ( 3 << 4 ) }, { 174, 35 }, 0 }, //16
|
||||
{ { 5 | ( 3 << 4 ) }, { 174, 13 }, 0 }, //17
|
||||
{ { 4 | ( 3 << 4 ) }, { 174, 0 }, 0 }, //18
|
||||
{ { 4 | ( 2 << 4 ) }, { 191, 3 }, 0 }, //19
|
||||
{ { 5 | ( 2 << 4 ) }, { 191, 20 }, 0 }, //20
|
||||
{ { 6 | ( 2 << 4 ) }, { 191, 37 }, 0 }, //21
|
||||
{ { 6 | ( 1 << 4 ) }, { 208, 42 }, 0 }, //22
|
||||
{ { 5 | ( 1 << 4 ) }, { 208, 24 }, 0 }, //23
|
||||
{ { 4 | ( 1 << 4 ) }, { 208, 7 }, 0 }, //24
|
||||
{ { 4 | ( 0 << 4 ) }, { 224, 7 }, 1 }, //25
|
||||
{ { 5 | ( 0 << 4 ) }, { 224, 24 }, 1 }, //26
|
||||
{ { 6 | ( 0 << 4 ) }, { 224, 41 }, 1 }, //27
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
void matrix_init_kb(void) {
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
@@ -98,7 +98,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* 5, which is now closer to 10ms, but still plenty according to
|
||||
* manufacturer specs.
|
||||
*/
|
||||
#define DEBOUNCE 10
|
||||
|
||||
#define USB_MAX_POWER_CONSUMPTION 500
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
#define CH_CFG_ST_FREQUENCY 100000
|
||||
#define CH_CFG_ST_FREQUENCY 1000
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
@@ -58,7 +58,7 @@
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#define CH_CFG_ST_TIMEDELTA 2
|
||||
#define CH_CFG_ST_TIMEDELTA 0
|
||||
|
||||
/** @} */
|
||||
|
||||
|
||||
@@ -27,6 +27,28 @@
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#undef MATRIX_ROW_PINS
|
||||
#undef MATRIX_COL_PINS
|
||||
|
||||
#define MATRIX_ROW_PINS { C15, C14, A10, A9, A8 }
|
||||
#define MATRIX_COL_PINS { B8, B2, B10, A0, A1, A2, B0, A3, B1, A6, A7, B12, C13, B11, B9 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define NUMBER_OF_ENCODERS 1
|
||||
#define ENCODERS_PAD_A { B13 }
|
||||
#define ENCODERS_PAD_B { B14 }
|
||||
|
||||
|
||||
//Audio
|
||||
#undef AUDIO_VOICES
|
||||
#undef C6_AUDIO
|
||||
@@ -55,16 +77,6 @@
|
||||
#define micro_oled_rotate_180
|
||||
|
||||
#endif
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 6
|
||||
@@ -185,13 +197,13 @@
|
||||
#define ZC_DET_TIME 0
|
||||
#define AUTO_CAL_TIME 3
|
||||
|
||||
//#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
//#define RGBLED_NUM 10
|
||||
//#define RGB_DI_PIN B5
|
||||
//#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||
#define RGBLED_NUM 10
|
||||
#define RGB_DI_PIN B5
|
||||
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||
|
||||
//#define RGB_MATRIX_KEYPRESSES
|
||||
// #define RGB_MATRIX_KEYPRESSES
|
||||
|
||||
#define SOLENOID_PIN A14
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
* @brief Enables the PWM subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PWM FALSE
|
||||
#define HAL_USE_PWM TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
@@ -175,19 +175,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,------+------+------+------+------+------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
|
||||
* | Reset|HPT TG|HPT FB|HPT M+|HPT M-|HPT RS| | | | | |EEP RS|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+--------------------.
|
||||
* | Reset|RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | | | | Del |
|
||||
* | |RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | | | | Del |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff|AGnorm| | | |AGswap|Qwerty|Colemk| | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|Musoff| | | | | | | | BL + |BL ST |BL TG |
|
||||
* | |Voice-|Voice+|Mus on|Musoff| | | | | | |BL - | BL + |BL ST |BL TG |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |CK RS |CK - |CK + |CK TG |
|
||||
* `--------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
RESET, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST , _______, _______, _______, _______, _______, _______, \
|
||||
RESET, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST , _______, _______, _______, _______, _______, EEP_RST, \
|
||||
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, \
|
||||
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______, \
|
||||
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG, \
|
||||
|
||||
@@ -153,19 +153,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,------+------+------+------+------+------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
|
||||
* | Reset|HPT TG|HPT FB|HPT M+|HPT M-|HPT RS| | | | | |EEP RS|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+--------------------.
|
||||
* | Reset|RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | | | | Del |
|
||||
* | |RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | | | | Del |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff|AGnorm| | | |AGswap|Qwerty|Colemk| | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|Musoff| | | | | | | | BL + |BL ST |BL TG |
|
||||
* | |Voice-|Voice+|Mus on|Musoff| | | | | | |BL - | BL + |BL ST |BL TG |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |CK RS |CK - |CK + |CK TG |
|
||||
* `--------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_wrapper(
|
||||
_______, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST, _______, _______, _______, _______, _______, _______, \
|
||||
_______, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST, _______, _______, _______, _______, _______, EEP_RST, \
|
||||
RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, \
|
||||
_______, MAGIC_TOGGLE_NKRO, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______, \
|
||||
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG, \
|
||||
|
||||
@@ -17,7 +17,8 @@ When adding your keymap to this list, keep it organised alphabetically (select l
|
||||
|
||||
* **folder_name** description
|
||||
|
||||
# List of Planck keymaps
|
||||
# List of Hadron keymaps
|
||||
|
||||
* **default** default Planck layout
|
||||
* **cbbrowne** cbbrowne's Planck layout
|
||||
* **default** default Hadron layout
|
||||
* **ishtob** ishtob's Hadron layout
|
||||
* **sebaslayout** sebaslayout's Hadron layout
|
||||
@@ -1,195 +0,0 @@
|
||||
#include <string.h>
|
||||
#include "hal.h"
|
||||
#include "timer.h"
|
||||
#include "wait.h"
|
||||
#include "printf.h"
|
||||
#include "backlight.h"
|
||||
#include "matrix.h"
|
||||
#include "action.h"
|
||||
#include "keycode.h"
|
||||
|
||||
/* matrix state(1:on, 0:off) */
|
||||
static matrix_row_t matrix[MATRIX_ROWS];
|
||||
static matrix_row_t matrix_debouncing[MATRIX_COLS];
|
||||
static bool debouncing = false;
|
||||
static uint16_t debouncing_time = 0;
|
||||
|
||||
static uint8_t encoder_state = 0;
|
||||
static int8_t encoder_value = 0;
|
||||
static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 };
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
void matrix_init(void) {
|
||||
printf("matrix init\n");
|
||||
//debug_matrix = true;
|
||||
|
||||
// encoder setup
|
||||
palSetPadMode(GPIOB, 13, PAL_MODE_INPUT_PULLUP);
|
||||
palSetPadMode(GPIOB, 14, PAL_MODE_INPUT_PULLUP);
|
||||
|
||||
encoder_state = (palReadPad(GPIOB, 13) << 0) | (palReadPad(GPIOB, 14) << 1);
|
||||
|
||||
// actual matrix setup
|
||||
palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOA, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOA, 1, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOA, 2, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOA, 3, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOA, 6, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOA, 7, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOC, 13, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOB, 9, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
|
||||
palSetPadMode(GPIOC, 15, PAL_MODE_INPUT_PULLDOWN);
|
||||
palSetPadMode(GPIOC, 14, PAL_MODE_INPUT_PULLDOWN);
|
||||
palSetPadMode(GPIOA, 10, PAL_MODE_INPUT_PULLDOWN);
|
||||
palSetPadMode(GPIOA, 9, PAL_MODE_INPUT_PULLDOWN);
|
||||
palSetPadMode(GPIOA, 8, PAL_MODE_INPUT_PULLDOWN);
|
||||
|
||||
|
||||
memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t));
|
||||
memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t));
|
||||
|
||||
|
||||
matrix_init_quantum();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void encoder_update(bool clockwise) { }
|
||||
|
||||
#ifndef ENCODER_RESOLUTION
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#endif
|
||||
|
||||
uint8_t matrix_scan(void) {
|
||||
// encoder on B13 and B14
|
||||
encoder_state <<= 2;
|
||||
encoder_state |= (palReadPad(GPIOB, 13) << 0) | (palReadPad(GPIOB, 14) << 1);
|
||||
encoder_value += encoder_LUT[encoder_state & 0xF];
|
||||
if (encoder_value >= ENCODER_RESOLUTION) {
|
||||
encoder_update(0);
|
||||
}
|
||||
if (encoder_value <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise
|
||||
encoder_update(1);
|
||||
}
|
||||
encoder_value %= ENCODER_RESOLUTION;
|
||||
|
||||
// actual matrix
|
||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||
matrix_row_t data = 0;
|
||||
|
||||
// strobe col { PB8, PB2, PB10, PA0, PA1, PA2, PB0, PA3, PB1, PA6, PA7, PB1, PA6, PA7, PB12, PC3, PB11, }
|
||||
switch (col) {
|
||||
case 0: palSetPad(GPIOB, 8); break;
|
||||
case 1: palSetPad(GPIOB, 2); break;
|
||||
case 2: palSetPad(GPIOB, 10); break;
|
||||
case 3: palSetPad(GPIOA, 0); break;
|
||||
case 4: palSetPad(GPIOA, 1); break;
|
||||
case 5: palSetPad(GPIOA, 2); break;
|
||||
case 6: palSetPad(GPIOB, 0); break;
|
||||
case 7: palSetPad(GPIOA, 3); break;
|
||||
case 8: palSetPad(GPIOB, 1); break;
|
||||
case 9: palSetPad(GPIOA, 6); break;
|
||||
case 10: palSetPad(GPIOA, 7); break;
|
||||
case 11: palSetPad(GPIOB, 12); break;
|
||||
case 12: palSetPad(GPIOC, 13); break;
|
||||
case 13: palSetPad(GPIOB, 11); break;
|
||||
case 14: palSetPad(GPIOB, 9); break;
|
||||
}
|
||||
|
||||
// need wait to settle pin state
|
||||
wait_us(20);
|
||||
|
||||
// read row data { PC15, PC14, PA10, PA9, PA8 }
|
||||
data = (
|
||||
(palReadPad(GPIOC, 15) << 0 ) |
|
||||
(palReadPad(GPIOC, 14) << 1 ) |
|
||||
(palReadPad(GPIOA, 10) << 2 ) |
|
||||
(palReadPad(GPIOA, 9) << 3 ) |
|
||||
(palReadPad(GPIOA, 8) << 4 )
|
||||
);
|
||||
|
||||
// unstrobe col { PB8, PB2, PB10, PA0, PA1, PA2, PB0, PA3, PB1, PA6, PA7, PB1, PA6, PA7, PB12, PC3, PB11, }
|
||||
switch (col) {
|
||||
case 0: palClearPad(GPIOB, 8); break;
|
||||
case 1: palClearPad(GPIOB, 2); break;
|
||||
case 2: palClearPad(GPIOB, 10); break;
|
||||
case 3: palClearPad(GPIOA, 0); break;
|
||||
case 4: palClearPad(GPIOA, 1); break;
|
||||
case 5: palClearPad(GPIOA, 2); break;
|
||||
case 6: palClearPad(GPIOB, 0); break;
|
||||
case 7: palClearPad(GPIOA, 3); break;
|
||||
case 8: palClearPad(GPIOB, 1); break;
|
||||
case 9: palClearPad(GPIOA, 6); break;
|
||||
case 10: palClearPad(GPIOA, 7); break;
|
||||
case 11: palClearPad(GPIOB, 12); break;
|
||||
case 12: palClearPad(GPIOC, 13); break;
|
||||
case 13: palClearPad(GPIOB, 11); break;
|
||||
case 14: palClearPad(GPIOB, 9); break;
|
||||
}
|
||||
|
||||
if (matrix_debouncing[col] != data) {
|
||||
matrix_debouncing[col] = data;
|
||||
debouncing = true;
|
||||
debouncing_time = timer_read();
|
||||
}
|
||||
}
|
||||
|
||||
if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
matrix[row] = 0;
|
||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||
matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col);
|
||||
}
|
||||
}
|
||||
debouncing = false;
|
||||
}
|
||||
|
||||
matrix_scan_quantum();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool matrix_is_on(uint8_t row, uint8_t col) {
|
||||
return (matrix[row] & (1<<col));
|
||||
}
|
||||
|
||||
matrix_row_t matrix_get_row(uint8_t row) {
|
||||
return matrix[row];
|
||||
}
|
||||
|
||||
void matrix_print(void) {
|
||||
printf("\nr/c 01234567\n");
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||
printf("%X0: ", row);
|
||||
matrix_row_t data = matrix_get_row(row);
|
||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||
if (data & (1<<col))
|
||||
printf("1");
|
||||
else
|
||||
printf("0");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
@@ -225,7 +225,7 @@
|
||||
* ST driver system settings.
|
||||
*/
|
||||
#define STM32_ST_IRQ_PRIORITY 8
|
||||
#define STM32_ST_USE_TIMER 2
|
||||
#define STM32_ST_USE_TIMER 3
|
||||
|
||||
/*
|
||||
* UART driver system settings.
|
||||
|
||||
@@ -1,57 +1,25 @@
|
||||
# project specific files
|
||||
SRC = matrix.c
|
||||
|
||||
## chip/board settings
|
||||
# - the next two should match the directories in
|
||||
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
|
||||
MCU_FAMILY = STM32
|
||||
MCU_SERIES = STM32F3xx
|
||||
|
||||
# Linker script to use
|
||||
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
||||
# or <this_dir>/ld/
|
||||
MCU_LDSCRIPT = STM32F303xC
|
||||
|
||||
# Startup code to use
|
||||
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
|
||||
MCU_STARTUP = stm32f3xx
|
||||
|
||||
# Board: it should exist either in <chibios>/os/hal/boards/
|
||||
# or <this_dir>/boards
|
||||
BOARD = GENERIC_STM32_F303XC
|
||||
# projecct specific files
|
||||
|
||||
# Cortex version
|
||||
MCU = cortex-m4
|
||||
|
||||
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
|
||||
ARMV = 7
|
||||
|
||||
USE_FPU = yes
|
||||
|
||||
# Vector table for application
|
||||
# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
|
||||
# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
|
||||
# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
|
||||
OPT_DEFS =
|
||||
|
||||
# Options to pass to dfu-util when flashing
|
||||
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
|
||||
MCU = STM32F303
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BACKLIGHT_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
|
||||
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
CUSTOM_MATRIX = yes # Custom matrix file
|
||||
CUSTOM_MATRIX = no # Custom matrix file
|
||||
AUDIO_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
RGB_MATRIX_ENABLE = no #WS2812 once arm_rgb is implemented
|
||||
HAPTIC_ENABLE += DRV2605L
|
||||
QWIIC_ENABLE += MICRO_OLED
|
||||
ENCODER_ENABLER = yes
|
||||
# SERIAL_LINK_ENABLE = yes
|
||||
|
||||
@@ -16,9 +16,36 @@
|
||||
#include "ver3.h"
|
||||
#include "qwiic.h"
|
||||
#include "action_layer.h"
|
||||
#include "matrix.h"
|
||||
#include "haptic.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#include "rgblight.h"
|
||||
|
||||
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||
/*{row | col << 4}
|
||||
| {x=0..224, y=0..64}
|
||||
| | modifier
|
||||
| | | */
|
||||
{{1|(13<<4)}, {195, 3}, 0},
|
||||
{{4|(13<<4)}, {195, 16}, 0},
|
||||
{{4|(10<<4)}, {150, 16}, 0},
|
||||
{{4|(7<<4)}, {105, 16}, 0},
|
||||
{{4|(4<<4)}, {60, 16}, 0},
|
||||
{{4|(1<<4)}, {15, 16}, 0},
|
||||
{{1|(1<<4)}, {15, 3}, 0},
|
||||
{{1|(4<<4)}, {60, 3}, 0},
|
||||
{{1|(7<<4)}, {105, 3}, 0},
|
||||
{{1|(10<<4)}, {150, 3}, 0}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
uint8_t *o_fb;
|
||||
|
||||
uint16_t counterst = 0;
|
||||
|
||||
|
||||
|
||||
#ifdef QWIIC_MICRO_OLED_ENABLE
|
||||
|
||||
/* screen off after this many milliseconds */
|
||||
@@ -41,7 +68,7 @@ void draw_ui(void) {
|
||||
send_command(DISPLAYON);
|
||||
|
||||
/* Layer indicator is 41 x 10 pixels */
|
||||
#define LAYER_INDICATOR_X 0
|
||||
#define LAYER_INDICATOR_X 5
|
||||
#define LAYER_INDICATOR_Y 0
|
||||
|
||||
draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0);
|
||||
@@ -49,7 +76,7 @@ void draw_ui(void) {
|
||||
draw_char(LAYER_INDICATOR_X + 34, LAYER_INDICATOR_Y + 2, layer + 0x30, PIXEL_ON, XOR, 0);
|
||||
|
||||
/* Matrix display is 19 x 9 pixels */
|
||||
#define MATRIX_DISPLAY_X 0
|
||||
#define MATRIX_DISPLAY_X 5
|
||||
#define MATRIX_DISPLAY_Y 18
|
||||
|
||||
for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
|
||||
@@ -184,5 +211,10 @@ if (queue_for_send) {
|
||||
send_command(DISPLAYOFF); /* 0xAE */
|
||||
}
|
||||
#endif
|
||||
if (counterst == 0) {
|
||||
//testPatternFB(o_fb);
|
||||
}
|
||||
counterst = (counterst + 1) % 1024;
|
||||
//rgblight_task();
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
|
||||
/* Copyright 2018 ishtob
|
||||
*
|
||||
* 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
|
||||
@@ -13,9 +13,6 @@
|
||||
* 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 VER3_H
|
||||
#define VER3_H
|
||||
#pragma once
|
||||
|
||||
#include "hadron.h"
|
||||
|
||||
#endif
|
||||
#include "hadron.h"
|
||||
@@ -4,5 +4,6 @@
|
||||
#undef TAPPING_TERM
|
||||
|
||||
#define AUTO_SHIFT_TIMEOUT 150
|
||||
#define NO_AUTO_SHIFT_ALPHA
|
||||
#define TAPPING_TERM 150
|
||||
//#define BOOTMAGIC_KEY_SALT KC_LCTL
|
||||
|
||||
@@ -32,71 +32,131 @@ enum {
|
||||
TD_BSPC_DEL = 0,
|
||||
TD_LCTL_LBRC = 1,
|
||||
TD_LALT_RBRC = 2,
|
||||
TD_ESC_LAYER = 3,
|
||||
};
|
||||
|
||||
|
||||
void left_brackets(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_code(KC_9);
|
||||
if (!state->pressed) {
|
||||
register_code16(KC_LPRN);
|
||||
} else {
|
||||
register_mods(MOD_LCTL);
|
||||
register_code(KC_LCTL);
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
register_code(KC_LBRC);
|
||||
register_code16(KC_LBRC);
|
||||
} else if (state->count == 3) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_code(KC_LBRC);
|
||||
register_code16(KC_LCBR);
|
||||
}
|
||||
}
|
||||
|
||||
void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_code(KC_9);
|
||||
} else {
|
||||
unregister_mods(MOD_LCTL);
|
||||
}
|
||||
unregister_code16(KC_LPRN);
|
||||
} else if (state->count == 2) {
|
||||
unregister_code(KC_LBRC);
|
||||
unregister_code16(KC_LBRC);
|
||||
} else if (state->count == 3) {
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_code(KC_LBRC);
|
||||
unregister_code16(KC_LCBR);
|
||||
}
|
||||
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
|
||||
void right_brackets(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_code(KC_0);
|
||||
if (!state->pressed) {
|
||||
register_code16(KC_RPRN);
|
||||
} else {
|
||||
register_mods(MOD_LALT);
|
||||
register_code(KC_LALT);
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
register_code(KC_RBRC);
|
||||
register_code16(KC_RBRC);
|
||||
} else if (state->count == 3) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_code(KC_RBRC);
|
||||
register_code16(KC_RCBR);
|
||||
}
|
||||
}
|
||||
|
||||
void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_code(KC_0);
|
||||
} else {
|
||||
unregister_mods(MOD_LALT);
|
||||
}
|
||||
unregister_code16(KC_RPRN);
|
||||
} else if (state->count == 2) {
|
||||
unregister_code(KC_RBRC);
|
||||
unregister_code16(KC_RBRC);
|
||||
} else if (state->count == 3) {
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_code(KC_RBRC);
|
||||
unregister_code16(KC_RCBR);
|
||||
}
|
||||
|
||||
unregister_code(KC_LALT);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
int state;
|
||||
} tap;
|
||||
|
||||
enum {
|
||||
SINGLE_TAP = 1,
|
||||
SINGLE_HOLD = 2,
|
||||
DOUBLE_TAP = 3,
|
||||
DOUBLE_HOLD = 4,
|
||||
DOUBLE_SINGLE_TAP = 5, //send two single taps
|
||||
TRIPLE_TAP = 6,
|
||||
TRIPLE_HOLD = 7,
|
||||
TRIPLE_SINGLE_TAP = 8, //send three single taps
|
||||
};
|
||||
|
||||
int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
||||
else return SINGLE_HOLD;
|
||||
}
|
||||
else if (state->count == 2) {
|
||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
||||
else if (state->pressed) return DOUBLE_HOLD;
|
||||
else return DOUBLE_TAP;
|
||||
}
|
||||
|
||||
if (state->count == 3) {
|
||||
if (state->interrupted) return TRIPLE_SINGLE_TAP;
|
||||
else if (state->pressed) return TRIPLE_HOLD;
|
||||
else return TRIPLE_TAP;
|
||||
}
|
||||
else return 9; //magic number. At some point this method will expand to work for more presses
|
||||
}
|
||||
|
||||
static tap tap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void layer_switcher (qk_tap_dance_state_t *state, void *user_data) {
|
||||
tap_state.state = cur_dance(state);
|
||||
switch (tap_state.state) {
|
||||
case SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case SINGLE_HOLD: register_code(KC_ESC); break;
|
||||
case DOUBLE_TAP: register_code(KC_ESC); break;
|
||||
case DOUBLE_HOLD: layer_on(_COLEMAK); break;
|
||||
case DOUBLE_SINGLE_TAP: register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); break;
|
||||
case TRIPLE_TAP: register_code(KC_ESC); break;
|
||||
case TRIPLE_HOLD: layer_on(_FX); break;
|
||||
case TRIPLE_SINGLE_TAP: register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); break;
|
||||
//Last case is for fast typing. Assuming your key is `f`:
|
||||
//For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
|
||||
//In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
|
||||
}
|
||||
}
|
||||
|
||||
void layer_switcher_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (tap_state.state) {
|
||||
case SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case SINGLE_HOLD: unregister_code(KC_ESC); break;
|
||||
case DOUBLE_TAP: unregister_code(KC_ESC); break;
|
||||
case DOUBLE_HOLD: break;
|
||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TRIPLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TRIPLE_HOLD: break;
|
||||
case TRIPLE_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
}
|
||||
tap_state.state = 0;
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
@@ -106,6 +166,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LCTL_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset),
|
||||
// Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT
|
||||
[TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset),
|
||||
// Layer Switcher ESC
|
||||
[TD_ESC_LAYER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, layer_switcher, layer_switcher_reset, 100),
|
||||
};
|
||||
|
||||
|
||||
@@ -115,7 +177,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+.
|
||||
//| | | | | | | | | | | | |
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
TD(TD_ESC_LAYER), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
|
||||
//| | | | | | | | | | | | |
|
||||
@@ -131,7 +193,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
|
||||
//| | | | | | | | | | | | |
|
||||
TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), LT(_FN, KC_SPC), _______, KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), _______, LT(_FX, KC_SPC), KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+'
|
||||
),
|
||||
@@ -194,19 +256,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
|
||||
//| | | | | | | | | | | | |
|
||||
_______, BL_ON, BL_INC, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, \
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
|
||||
//| | | | | | | | | | | | |
|
||||
_______, BL_OFF, BL_DEC, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, _______, \
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
|
||||
//| | | | | | | | | | | | |
|
||||
_______, RGB_TOG, BL_STEP, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUI, RGB_TOG, \
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
|
||||
//| | | | | | | | | | | | |
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_HUD, RGB_SAD \
|
||||
//| | | | | | | | | | | | |
|
||||
//,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+'
|
||||
),
|
||||
|
||||
145
keyboards/kbdfans/kbd75/keymaps/kingwangwong/keymap.c
Normal file
145
keyboards/kbdfans/kbd75/keymaps/kingwangwong/keymap.c
Normal file
@@ -0,0 +1,145 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_QW,
|
||||
_FO,
|
||||
_FL,
|
||||
_CL,
|
||||
_DL
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// Custom macros
|
||||
#define SPC_FUN LT(_FL, KC_SPC)
|
||||
#define BSC_CON LT(_CL, KC_BSPC)
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* 0: Qwerty layer
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │ ESC │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │PRSCR│ INS │HOME │
|
||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │BSLS │ DEL │ END │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┤
|
||||
* │TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │BSPC │PGUP │
|
||||
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┼─────┤
|
||||
* │CAPS │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ENTER │PGDN │
|
||||
* ├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴───────┬─────┼─────┤
|
||||
* │LSHFT │LSHFT│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSHFT │ UP │MO_CL│
|
||||
* ├──────┼─────┴─┬───┴──┬──┴─────┴────┬┴─────┼─────┴─────┴────┬┴────┬┴────┬┴────┬─────┼─────┼─────┤
|
||||
* │LCTRL │L_GUI │L_ALT │SPC │MO(_FL│BSPC │R_ALT│R_GUI│R_CTR│LEFT │DOWN │RIGHT│
|
||||
* └──────┴───────┴──────┴─────────────┴──────┴────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*/
|
||||
|
||||
/* 0: QWERTY */
|
||||
[_QW] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_END,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
|
||||
KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_CL),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_BSPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
/* 1: forty: this layer emulates a forty percent keyboard so I can transition to a forty percent :)
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┤
|
||||
* │ESC │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ENT │ │ │ │
|
||||
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┼─────┤
|
||||
* │TAB │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ │ │
|
||||
* ├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴───────┬─────┼─────┤
|
||||
* │LSHFT │LSHFT│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSHFT │ │MO_CL│
|
||||
* ├──────┼─────┴─┬───┴──┬──┴─────┴────┬┴─────┼─────┴─────┴────┬┴────┬┴────┬┴────┬─────┼─────┼─────┤
|
||||
* │LCTRL │L_ALT │MO(DL)│SPCFUN │BSPC │MO(_CL) │R_ALT│R_GUI│R_CTR│ │ │ │
|
||||
* └──────┴───────┴──────┴─────────────┴──────┴────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*/
|
||||
|
||||
/* 1: FORTY */
|
||||
[_FO] = LAYOUT(
|
||||
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,
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, XXXXXXX,
|
||||
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, MO(_CL),
|
||||
KC_LCTL, KC_LALT, MO(_DL), SPC_FUN, KC_BSPC, MO(_CL), KC_RALT, KC_RGUI, KC_RCTL, XXXXXXX, XXXXXXX, XXXXXXX),
|
||||
|
||||
|
||||
/* 2: Function layer
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┤
|
||||
* │ │ │HOME │ UP │END │ │ │ │ │ │ │ │ │ │VOLUP│
|
||||
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┼─────┤
|
||||
* │ │ │LEFT │DOWN │RIGHT│ │ │ │ │ │ │ │ │VOLDN│
|
||||
* ├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴───────┬─────┼─────┤
|
||||
* │ │ │ │ │PGDN │PGUP │ │ │ │ │ │ │ │ │ │
|
||||
* ├──────┼─────┴─┬───┴──┬──┴─────┴────┬┴─────┼─────┴─────┴────┬┴────┬┴────┬┴────┬─────┼─────┼─────┤
|
||||
* │ │ │ │ │ │ │VOLDN│VOLUP│ │ │ │ │
|
||||
* └──────┴───────┴──────┴─────────────┴──────┴────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*/
|
||||
|
||||
/* 2: ANSI Fn layer */
|
||||
[_FL] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
|
||||
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
|
||||
_______, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______),
|
||||
|
||||
/* 3: Control layer
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │RESET│QWERT│FORTY│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┤
|
||||
* │ ` │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ DEL │ │ │ │
|
||||
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┼─────┤
|
||||
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ \ │ │ │
|
||||
* ├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴───────┬─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├──────┼─────┴─┬───┴──┬──┴─────┴────┬┴─────┼─────┴─────┴────┬┴────┬┴────┬┴────┬─────┼─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* └──────┴───────┴──────┴─────────────┴──────┴────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*/
|
||||
|
||||
/* 3: Control layer */
|
||||
[_CL] = LAYOUT(
|
||||
RESET, TO(_QW), TO(_FO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD,
|
||||
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, _______, _______, KC_VOLU,
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, KC_VOLD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||
|
||||
/* 4: Another layer for ease
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ _ │ + │ { │ } │ | │ │ │ │
|
||||
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ - │ = │ [ │ ] │ \ │ │ │
|
||||
* ├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴───────┬─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├──────┼─────┴─┬───┴──┬──┴─────┴────┬┴─────┼─────┴─────┴────┬┴────┬┴────┬┴────┬─────┼─────┼─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* └──────┴───────┴──────┴─────────────┴──────┴────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*/
|
||||
|
||||
/* 3: D control layer */
|
||||
[_DL] = LAYOUT(
|
||||
RESET, TO(_QW), TO(_FO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, KC_VOLU,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_VOLD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_SAD, RGB_HUI)
|
||||
};
|
||||
31
keyboards/keebio/quefrency/keymaps/kingwangwong/config.h
Normal file
31
keyboards/keebio/quefrency/keymaps/kingwangwong/config.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
Copyright 2018 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
|
||||
//#define USE_I2C
|
||||
#define USB_MAX_POWER_CONSUMPTION 50
|
||||
|
||||
|
||||
// #define USB_MAX_POWER_CONSUMPTION 100
|
||||
40
keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c
Normal file
40
keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1
|
||||
};
|
||||
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ = │BSLS │ DEL │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┘ ┌──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┤
|
||||
* │TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ [ │ ] │BSPC │
|
||||
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┤
|
||||
* │CAPS │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ENTER │
|
||||
* ├─────────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┐ └──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴───────┬─────┤
|
||||
* │LSHFT │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │RSHFT │ UP │
|
||||
* ├──────┬─────┴─┬───┴──┬──┴─────┴────┬┴─────┤ ├─────┴┬────┴────┬┴────┬┴────┬┴────┬─────┼─────┤
|
||||
* │LCTRL │L_GUI │L_ALT │SPC │FN1 │ │SPC │BSPC │R_ALT│R_CTR│LEFT │DOWN │RIGHT│
|
||||
* └──────┴───────┴──────┴─────────────┴──────┘ └──────┴─────────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*/
|
||||
[_BASE] = LAYOUT(
|
||||
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_BSLS, 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_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_BSPC, KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_RGHT, KC_DOWN
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT(
|
||||
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_DEL, KC_BSPC,
|
||||
_______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
|
||||
)
|
||||
};
|
||||
105
keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
Normal file
105
keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
Normal file
@@ -0,0 +1,105 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "xulkal.h"
|
||||
|
||||
enum ctrl_keycodes {
|
||||
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||
DBG_TOG, //DEBUG Toggle On / Off
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, TD_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, \
|
||||
KC_LCPO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCPC, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, RGB_RMOD, RGB_MOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, MD_BOOT, _______, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, RGB_TOG, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint32_t key_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||
}
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
1
keyboards/massdrop/ctrl/keymaps/xulkal/rules.mk
Normal file
1
keyboards/massdrop/ctrl/keymaps/xulkal/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
DISABLE_LTO = yes
|
||||
@@ -7,7 +7,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_MENU, KC_LCTL
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL
|
||||
),
|
||||
|
||||
[1] = LAYOUT_60_ansi(
|
||||
|
||||
2
keyboards/planck/keymaps/oeywil/.gitignore
vendored
2
keyboards/planck/keymaps/oeywil/.gitignore
vendored
@@ -1 +1 @@
|
||||
secret.h
|
||||
secrets.h
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "config_common.h"
|
||||
#pragma once
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(PLANCK_SOUND)
|
||||
@@ -32,7 +29,9 @@
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||
|
||||
// Most tactile encoders have detents every 4 stages
|
||||
#define ENCODER_RESOLUTION 4
|
||||
// Leader Key
|
||||
#define LEADER_TIMEOUT 250
|
||||
#define LEADER_PER_KEY_TIMING
|
||||
|
||||
#endif
|
||||
// Tap dance
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
@@ -1,112 +1,139 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "secret.h"
|
||||
#include "no_keycodes.h"
|
||||
|
||||
#if __has_include("secrets.h")
|
||||
# include "secrets.h"
|
||||
#else
|
||||
# define mail_str ""
|
||||
# define pwd_str ""
|
||||
#endif
|
||||
|
||||
// layer definitions
|
||||
enum planck_layers {
|
||||
_DEFAULT,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_FUNCTION,
|
||||
_GAME,
|
||||
_GAMERAISE
|
||||
_GLOW
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define FUNCTION MO(_FUNCTION)
|
||||
#define GAMER MO(_GAMERAISE)
|
||||
// sounds
|
||||
#ifdef AUDIO_ENABLE
|
||||
float gamesong[][2] = SONG(MARIO_MUSHROOM);
|
||||
float defsong[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
float failed[][2] = SONG(TERMINAL_SOUND);
|
||||
#endif
|
||||
|
||||
#define NO_OE KC_SCLN
|
||||
#define NO_AE KC_QUOT
|
||||
#define NO_AA KC_LBRC
|
||||
#define NO_EXCL LSFT(KC_1)
|
||||
#define NO_QEST LSFT(KC_MINS)
|
||||
#define NO_APOS KC_BSLS
|
||||
#define NO_QUOT LSFT(KC_2)
|
||||
#define NO_UMLA KC_RBRC
|
||||
#define NO_HASH LSFT(KC_3)
|
||||
#define NO_FSLS LSFT(KC_7)
|
||||
#define NO_LPAR LSFT(KC_8)
|
||||
#define NO_RPAR LSFT(KC_9)
|
||||
#define NO_ALFA ALGR(KC_2)
|
||||
#define NO_AMPE LSFT(KC_6)
|
||||
#define NO_USDO ALGR(KC_4)
|
||||
#define NO_PERC LSFT(KC_5)
|
||||
#define NO_BSLS KC_EQL
|
||||
#define NO_ASTE LSFT(KC_BSLS)
|
||||
#define NO_LBRA ALGR(KC_7)
|
||||
#define NO_RBRA ALGR(KC_0)
|
||||
#define NO_LBRC ALGR(KC_8)
|
||||
#define NO_RBRC ALGR(KC_9)
|
||||
#define NO_ANBR KC_NUBS
|
||||
#define NO_DASH KC_SLSH
|
||||
#define NO_PLUS KC_MINS
|
||||
#define NO_EQUA LSFT(KC_0)
|
||||
// leader key
|
||||
bool leader_succeed;
|
||||
bool leader_layer_game;
|
||||
bool leader_layer_def;
|
||||
LEADER_EXTERNS();
|
||||
|
||||
#define TSKMGR LCTL(LSFT(KC_ESC))
|
||||
#define STEAM LSFT(KC_F7)
|
||||
#define WKILL LALT(KC_F4)
|
||||
#define BWORD LCTL(KC_LEFT)
|
||||
#define FWORD LCTL(KC_RIGHT)
|
||||
void matrix_scan_user(void) {
|
||||
LEADER_DICTIONARY() {
|
||||
leader_succeed = leading = false;
|
||||
leader_layer_game = false;
|
||||
leader_layer_def = false;
|
||||
|
||||
float onsong[][2] = SONG(MARIO_MUSHROOM);
|
||||
float offsong[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
|
||||
enum custom_keycodes {
|
||||
PWD = SAFE_RANGE,
|
||||
MAIL,
|
||||
GAMEON,
|
||||
GAMEOFF
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case PWD:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(pwd_str);
|
||||
}
|
||||
break;
|
||||
case MAIL:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(mail_str);
|
||||
}
|
||||
break;
|
||||
case GAMEON:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(onsong);
|
||||
#endif
|
||||
layer_on(_GAME);
|
||||
}
|
||||
break;
|
||||
case GAMEOFF:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(offsong);
|
||||
#endif
|
||||
layer_off(_GAME);
|
||||
}
|
||||
break;
|
||||
SEQ_TWO_KEYS(KC_P, KC_P) {
|
||||
SEND_STRING(pwd_str);
|
||||
leader_succeed = true;
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_P, KC_M) {
|
||||
SEND_STRING(mail_str);
|
||||
leader_succeed = true;
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_B, KC_B) {
|
||||
SEND_STRING("build"SS_TAP(X_ENTER));
|
||||
leader_succeed = true;
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_B, KC_F) {
|
||||
SEND_STRING("flash"SS_TAP(X_ENTER));
|
||||
reset_keyboard();
|
||||
leader_succeed = true;
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_L, KC_G) {
|
||||
layer_on(_GAME);
|
||||
leader_layer_game = true;
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_L, KC_D) {
|
||||
layer_off(_GAME);
|
||||
leader_layer_def = true;
|
||||
}
|
||||
leader_end();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void leader_end(void) {
|
||||
if (leader_succeed) {
|
||||
// do nothing
|
||||
} else if (leader_layer_game) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(gamesong);
|
||||
#endif
|
||||
} else if (leader_layer_def) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(defsong);
|
||||
#endif
|
||||
} else {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(failed);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// tap dance definitions
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
int state;
|
||||
} tap;
|
||||
|
||||
enum {
|
||||
SINGLE_TAP = 1,
|
||||
SINGLE_HOLD = 2,
|
||||
DOUBLE_TAP = 3,
|
||||
DOUBLE_HOLD = 4,
|
||||
DOUBLE_SINGLE_TAP = 5,
|
||||
TRIPLE_TAP = 6,
|
||||
TRIPLE_HOLD = 7
|
||||
};
|
||||
|
||||
enum {
|
||||
TD_LSFT = 0,
|
||||
TD_LCTL,
|
||||
TD_RSFT,
|
||||
TD_RCTL
|
||||
};
|
||||
|
||||
int cur_dance (qk_tap_dance_state_t *state);
|
||||
void lsft_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void lsft_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||
void rsft_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void rsft_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||
void lctl_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void lctl_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||
void rctl_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void rctl_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||
|
||||
// layer declarations
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Default
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | BkSp |
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | Å | BkSp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | Ø | Æ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | Å | Shift|
|
||||
* | Shift| Z | X | C | V | B | N | M | P | , | . | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | Lower| Space | Enter | Raise| AltGr| Game | Fn |
|
||||
* | Ctrl | Lead | Win | Alt | Lower| Space| Enter| Raise| AltGr| App | Lead | Ctrl |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DEFAULT] = LAYOUT_planck_grid(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_OE, NO_AE,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, NO_AA, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_NO, KC_SPC, KC_NO, KC_ENT, RAISE, KC_RALT, GAMEON, FUNCTION
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, NO_AA, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_OE, NO_AE,
|
||||
TD(TD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_P, KC_COMM, KC_DOT, TD(TD_RSFT),
|
||||
TD(TD_LCTL), KC_LEAD, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_ENT, MO(_RAISE), KC_ALGR, KC_APP, KC_LEAD, TD(TD_RCTL)
|
||||
),
|
||||
/* Lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
@@ -116,81 +143,250 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Home | | End | | | | | F1 | F2 | F3 | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | Lower| Space | Enter | | | | |
|
||||
* | Ctrl | | Win | Alt | Lower| M_PP |M_Next| | | Mute | VolD | VolUp|
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT_planck_grid(
|
||||
KC_TRNS, BWORD, KC_UP, FWORD, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_DEL,
|
||||
KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_F4, KC_F5, KC_F6, KC_NO,
|
||||
KC_TRNS, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
KC_TRNS, LCTL(KC_LEFT), KC_UP, LCTL(KC_RIGHT), KC_PGUP, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_DEL,
|
||||
KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_F4, KC_F5, KC_F6, KC_NO,
|
||||
KC_TRNS, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU
|
||||
),
|
||||
/* Raise
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | ! | ? | ' | " | ¨ | | / | 7 | 8 | 9 | Ins |
|
||||
* | Tab | ! | ? | # | * | | | = | / | 7 | 8 | 9 | Ins |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | BkSp | @ | & | # | $ | % | <> | \ | 4 | 5 | 6 | * |
|
||||
* | BkSp | @ | & | $ | % | ~ | + | \ | 4 | 5 | 6 | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| ( | ) | { | } | [ | ] | 0 | 1 | 2 | 3 | Shift|
|
||||
* | Shift| ' | " | ¨ | | | - | 0 | 1 | 2 | 3 | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | | Space | Enter | Raise| - | + | = |
|
||||
* | Ctrl | | Win | Alt | | Space| Enter| Raise| AltGr| | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_planck_grid(
|
||||
KC_TRNS, NO_EXCL, NO_QEST, NO_APOS, NO_QUOT, NO_UMLA, KC_NO, NO_FSLS, KC_7, KC_8, KC_9, KC_INS,
|
||||
KC_BSPC, NO_ALFA, NO_AMPE, NO_HASH, NO_USDO, NO_PERC, NO_ANBR, NO_BSLS, KC_4, KC_5, KC_6, NO_ASTE,
|
||||
KC_TRNS, NO_LPAR, NO_RPAR, NO_LBRA, NO_RBRA, NO_LBRC, NO_RBRC, KC_0, KC_1, KC_2, KC_3, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, NO_DASH, NO_PLUS, NO_EQUA
|
||||
),
|
||||
/* Function
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | |TskMgr| | | | | Pwd | Vol+ |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Reset| | | | | | | | Wkill| | | Vol- |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Mail | | | | VolM |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | Play/Pause | Next | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FUNCTION] = LAYOUT_planck_grid(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TSKMGR, KC_NO, KC_NO, KC_NO, KC_NO, PWD, KC_VOLU,
|
||||
RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, WKILL, KC_NO, KC_NO, KC_VOLD,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MAIL, KC_NO, KC_NO, KC_NO, KC_MUTE,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_NO, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
KC_TRNS, NO_EXCL, NO_QEST, NO_HASH, NO_ASTE, NO_PIPE, NO_EQUA, NO_FSLS, KC_7, KC_8, KC_9, KC_INS,
|
||||
KC_BSPC, NO_ALFA, NO_AMPE, NO_USDO, NO_PERC, NO_TILD, NO_PLUS, NO_BSLS, KC_4, KC_5, KC_6, KC_NO,
|
||||
KC_TRNS, NO_APOS, NO_QUOT, NO_UMLA, KC_NO, KC_NO, NO_DASH, KC_0, KC_1, KC_2, KC_3, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
/* Game
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | BkSp |
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | | BkSp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | | | | |
|
||||
* | Shift| Z | X | C | V | B | N | M | P | , | . | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | | Alt | Raise| Space | Enter | | | | |
|
||||
* | Ctrl | Lead | | Alt | Lower| Space| Enter| Lower| | | Lead | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_GAME] = LAYOUT_planck_grid(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_NO,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_LCTL, KC_NO, KC_LALT, GAMER, KC_NO, KC_SPC, KC_NO, KC_ENT, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_NO, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_NO,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_P, KC_COMM, KC_DOT, KC_NO,
|
||||
KC_LCTL, KC_LEAD, KC_NO, KC_LALT, MO(_GLOW), KC_SPC, KC_ENT, MO(_GLOW), KC_NO, KC_NO, KC_LEAD, KC_NO
|
||||
),
|
||||
/* Game raise
|
||||
/* Game lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | 1 | 2 | 3 | 4 | 5 | | | | | | Vol+ |
|
||||
* | Tab | 1 | 2 | 3 | | | | | | | | Steam|
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | F1 | F2 | F3 | F4 | F5 | | | | | | Vol- |
|
||||
* | Esc | 4 | 5 | 6 | | | | | | | | F12 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| | | | | | | | | | | VolM |
|
||||
* | Shift| 7 | 8 | 9 | 0 | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | | Alt | | Space | Enter | | | Def | Steam|
|
||||
* | Ctrl | | | Alt | | PlyPa| Next | | | Mute | VolD | VolUp|
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_GAMERAISE] = LAYOUT_planck_grid(
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU,
|
||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
|
||||
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_NO, GAMEOFF, STEAM
|
||||
[_GLOW] = LAYOUT_planck_grid(
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_PPLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LSFT(KC_F7),
|
||||
KC_TRNS, KC_4, KC_5, KC_6, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_TRNS, KC_7, KC_8, KC_9, KC_0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_NO, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU
|
||||
)
|
||||
};
|
||||
|
||||
// tap dance declarations
|
||||
int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
||||
else return SINGLE_HOLD;
|
||||
}
|
||||
else if (state->count == 2) {
|
||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
||||
else if (state->pressed) return DOUBLE_HOLD;
|
||||
else return DOUBLE_TAP;
|
||||
}
|
||||
if (state->count == 3) {
|
||||
if (state->interrupted || !state->pressed) return TRIPLE_TAP;
|
||||
else return TRIPLE_HOLD;
|
||||
}
|
||||
else return 8;
|
||||
}
|
||||
|
||||
static tap xtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void lsft_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
register_code16(LSFT(KC_8));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_code(KC_LSFT);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
register_code(KC_NUBS);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
register_code(KC_NUBS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void lsft_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code16(LSFT(KC_8));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
unregister_code(KC_LSFT);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
unregister_code(KC_NUBS);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
unregister_code(KC_NUBS);
|
||||
break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
|
||||
void rsft_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
register_code16(LSFT(KC_9));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_code(KC_RSFT);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
register_code16(LSFT(KC_NUBS));
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
register_code16(LSFT(KC_NUBS));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void rsft_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code16(LSFT(KC_9));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
unregister_code(KC_RSFT);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
unregister_code16(LSFT(KC_NUBS));
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
unregister_code16(LSFT(KC_NUBS));
|
||||
break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
|
||||
void lctl_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
register_mods(MOD_BIT(KC_ALGR));
|
||||
register_code(KC_7);
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_code(KC_LCTL);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
register_mods(MOD_BIT(KC_ALGR));
|
||||
register_code(KC_8);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
register_mods(MOD_BIT(KC_ALGR));
|
||||
register_code(KC_8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void lctl_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code(KC_7);
|
||||
unregister_mods(MOD_BIT(KC_ALGR));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
unregister_code(KC_LCTL);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
unregister_code(KC_8);
|
||||
unregister_mods(MOD_BIT(KC_ALGR));
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
unregister_code(KC_8);
|
||||
unregister_mods(MOD_BIT(KC_ALGR));
|
||||
break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
|
||||
void rctl_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
register_mods(MOD_BIT(KC_ALGR));
|
||||
register_code(KC_0);
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_code(KC_RCTL);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
register_mods(MOD_BIT(KC_ALGR));
|
||||
register_code(KC_9);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
register_mods(MOD_BIT(KC_ALGR));
|
||||
register_code(KC_9);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void rctl_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code(KC_0);
|
||||
unregister_mods(MOD_BIT(KC_ALGR));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
unregister_code(KC_RCTL);
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
unregister_code(KC_9);
|
||||
unregister_mods(MOD_BIT(KC_ALGR));
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
unregister_code(KC_9);
|
||||
unregister_mods(MOD_BIT(KC_ALGR));
|
||||
break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LSFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lsft_finished, lsft_reset),
|
||||
[TD_RSFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rsft_finished, rsft_reset),
|
||||
[TD_LCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset),
|
||||
[TD_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset),
|
||||
};
|
||||
|
||||
28
keyboards/planck/keymaps/oeywil/no_keycodes.h
Normal file
28
keyboards/planck/keymaps/oeywil/no_keycodes.h
Normal file
@@ -0,0 +1,28 @@
|
||||
// øæå
|
||||
#define NO_OE KC_SCLN
|
||||
#define NO_AE KC_QUOT
|
||||
#define NO_AA KC_LBRC
|
||||
// rename
|
||||
#define NO_ANBR KC_NUBS
|
||||
#define NO_APOS KC_BSLS
|
||||
#define NO_BSLS KC_EQL
|
||||
#define NO_DASH KC_SLSH
|
||||
#define NO_PLUS KC_MINS
|
||||
#define NO_UMLA KC_RBRC
|
||||
#define NO_PIPE KC_GRV
|
||||
// shifted
|
||||
#define NO_EXCL LSFT(KC_1)
|
||||
#define NO_QUOT LSFT(KC_2)
|
||||
#define NO_HASH LSFT(KC_3)
|
||||
#define NO_PERC LSFT(KC_5)
|
||||
#define NO_AMPE LSFT(KC_6)
|
||||
#define NO_FSLS LSFT(KC_7)
|
||||
#define NO_LPAR LSFT(KC_8)
|
||||
#define NO_RPAR LSFT(KC_9)
|
||||
#define NO_EQUA LSFT(KC_0)
|
||||
#define NO_QEST LSFT(KC_MINS)
|
||||
#define NO_ASTE LSFT(KC_BSLS)
|
||||
// altgr
|
||||
#define NO_ALFA ALGR(KC_2)
|
||||
#define NO_USDO ALGR(KC_4)
|
||||
#define NO_TILD ALGR(KC_RBRC)
|
||||
@@ -1,9 +1,4 @@
|
||||
About
|
||||
------
|
||||
|
||||
A simple Norwegian Layout.
|
||||
|
||||
Layout
|
||||
-------
|
||||
|
||||

|
||||
A simple Norwegian grid layout using Leader Key, Space Cadet Shift and audio.
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
SRC += muse.c
|
||||
|
||||
# Build Options
|
||||
AUDIO_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
|
||||
DEFAULT_FOLDER = planck/rev6
|
||||
NKRO_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
LEADER_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
AUDIO_ENABLE = yes
|
||||
COMMAND_ENABLE = no
|
||||
CONSOLE_ENABLE = no
|
||||
MOUSEKEY_ENABLE = no
|
||||
|
||||
@@ -24,14 +24,18 @@ enum {
|
||||
// Tap dance enums
|
||||
enum {
|
||||
X_AT_FUN = 0,
|
||||
SH_M_LPAREN,
|
||||
SH_M_RPAREN
|
||||
RSHIFT,
|
||||
LSHIFT,
|
||||
TD_S
|
||||
};
|
||||
|
||||
int cur_dance (qk_tap_dance_state_t *state);
|
||||
|
||||
void x_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void x_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||
void lshift_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void lshift_reset(qk_tap_dance_state_t *state, void *user_data);
|
||||
|
||||
|
||||
bool is_alt_tab_active = false;
|
||||
uint16_t alt_tab_timer = 0;
|
||||
@@ -102,17 +106,18 @@ void matrix_scan_user(void) {
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Programmer Dvorak */
|
||||
|
||||
/* Programmer Dvorak */
|
||||
[_PDVORAK] = LAYOUT_planck_grid(
|
||||
KC_GESC, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||
KC_LAST, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLASH,
|
||||
KC_LSPO, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC,
|
||||
TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS)
|
||||
KC_GESC, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||
KC_LAST, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, TD(TD_S), KC_SLASH,
|
||||
TD(LSHIFT), KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(RSHIFT),
|
||||
TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS)
|
||||
),
|
||||
|
||||
[_UPPER] = LAYOUT_planck_grid(
|
||||
KC_GRAVE, KC_AMPR, KC_PERC, KC_LBRC, KC_LCBR, KC_EQL, KC_ASTR, KC_RCBR, KC_RBRC, KC_EXLM, KC_HASH, KC_TRNS,
|
||||
KC_PLUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINUS, KC_BSLASH,
|
||||
KC_GRAVE, KC_AMPR, KC_PERC, KC_NO, KC_NO, KC_EQL, KC_ASTR, KC_NO, KC_NO, KC_EXLM, KC_HASH, KC_TRNS,
|
||||
KC_PLUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSLASH,
|
||||
KC_TRNS, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
|
||||
),
|
||||
@@ -145,6 +150,10 @@ int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->interrupted || !state->pressed) return DOUBLE_TAP;
|
||||
else return DOUBLE_HOLD;
|
||||
}
|
||||
else if (state->count == 3) {
|
||||
if (state->interrupted || !state->pressed)return TRIPLE_TAP;
|
||||
else return TRIPLE_HOLD;
|
||||
}
|
||||
else return 8; // magic number that i dont believe works.
|
||||
}
|
||||
|
||||
@@ -164,6 +173,35 @@ void x_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
case DOUBLE_HOLD: reset_keyboard(); break;
|
||||
}
|
||||
}
|
||||
|
||||
void lshift_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP: register_code16(KC_LSFT); register_code16(KC_9); break;
|
||||
case SINGLE_HOLD: register_code16(KC_LSFT); break;
|
||||
case DOUBLE_TAP: register_code16(KC_LBRC); break;
|
||||
case TRIPLE_TAP: register_code16(KC_LSFT); register_code16(KC_LBRC); break;
|
||||
}
|
||||
}
|
||||
void s_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP: register_code16(KC_S); break;
|
||||
case DOUBLE_TAP: register_code16(KC_MINUS); break;
|
||||
case TRIPLE_TAP: register_code16(KC_LSFT); register_code16(KC_MINUS); break;
|
||||
}
|
||||
}
|
||||
|
||||
void rshift_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP: register_code16(KC_LSFT); register_code16(KC_0); break;
|
||||
case SINGLE_HOLD: register_code16(KC_RSFT); break;
|
||||
case DOUBLE_TAP: register_code16(KC_RBRC); break;
|
||||
case TRIPLE_TAP: register_code16(KC_LSFT); register_code16(KC_RBRC); break;
|
||||
}
|
||||
}
|
||||
|
||||
// forgetting keypresses
|
||||
|
||||
void x_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
@@ -175,9 +213,38 @@ void x_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
void lshift_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code16(KC_9); unregister_code16(KC_LSFT); break;
|
||||
case SINGLE_HOLD: unregister_code16(KC_LSFT); break;
|
||||
case DOUBLE_TAP: unregister_code16(KC_LBRC); break;
|
||||
case TRIPLE_TAP: unregister_code16(KC_LBRC); unregister_code16(KC_LSFT); break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
|
||||
void rshift_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code16(KC_0); unregister_code16(KC_LSFT); break;
|
||||
case SINGLE_HOLD: unregister_code16(KC_RSFT); break;
|
||||
case DOUBLE_TAP: unregister_code16(KC_RBRC); break;
|
||||
case TRIPLE_TAP: unregister_code16(KC_RBRC); unregister_code16(KC_LSFT); break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
void s_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code16(KC_S); break;
|
||||
case DOUBLE_TAP: unregister_code16(KC_MINUS); break;
|
||||
case TRIPLE_TAP: unregister_code16(KC_MINUS); unregister_code16(KC_LSFT); break;
|
||||
}
|
||||
xtap_state.state = 0;
|
||||
}
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[X_AT_FUN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset)
|
||||
[X_AT_FUN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset),
|
||||
[LSHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lshift_finished, lshift_reset),
|
||||
[RSHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rshift_finished, rshift_reset),
|
||||
[TD_S] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, s_finished, s_reset),
|
||||
};
|
||||
|
||||
void shutdown_user(void) { clear_keyboard(); }
|
||||
|
||||
148
keyboards/preonic/keymaps/xulkal/keymap.c
Normal file
148
keyboards/preonic/keymaps/xulkal/keymap.c
Normal file
@@ -0,0 +1,148 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "xulkal.h"
|
||||
|
||||
#include "muse.h"
|
||||
|
||||
#define EXPAND_LAYOUT(...) LAYOUT_preonic_grid(__VA_ARGS__)
|
||||
|
||||
// Define your non-alpha grouping in this define's LAYOUT, and all your BASE_LAYERS will share the same mod/macro columns
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty Layout
|
||||
* ,------------------------------------------------. ,------------------------------------------------.
|
||||
* | GESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | S | D | F | G | ` | | ' | H | J | K | L | ; | Enter|
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Sft[ | Z | X | C | V | B | RGB | |RGBRST| N | M | , | . | / | Sft] |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | LOWER| RAISE| Alt | Space|RGBRMOD| |RGBMOD| Space| Left | Up | Down | Right| Ctrl |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
* | Space| DEL | | Enter| Space|
|
||||
* `-------------' `-------------'
|
||||
*/
|
||||
[_QWERTY] = EXPAND_LAYOUT( \
|
||||
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________, \
|
||||
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________, \
|
||||
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________, \
|
||||
_________________QWERTY_L4_________________, _________________QWERTY_R4_________________, \
|
||||
_________________QWERTY_L5_________________, _________________QWERTY_R5_________________ \
|
||||
),
|
||||
|
||||
#ifndef GAMELAYER_DISABLE
|
||||
[_GAME] = EXPAND_LAYOUT( \
|
||||
___________________GAME_L1_________________, ___________________GAME_R1_________________, \
|
||||
___________________GAME_L2_________________, ___________________GAME_R2_________________, \
|
||||
___________________GAME_L3_________________, ___________________GAME_R3_________________, \
|
||||
___________________GAME_L4_________________, ___________________GAME_R4_________________, \
|
||||
___________________GAME_L5_________________, ___________________GAME_R5_________________ \
|
||||
),
|
||||
#endif
|
||||
|
||||
[_LOWER] = EXPAND_LAYOUT( \
|
||||
__________________LOWER_L1_________________, __________________LOWER_R1_________________, \
|
||||
__________________LOWER_L2_________________, __________________LOWER_R2_________________, \
|
||||
__________________LOWER_L3_________________, __________________LOWER_R3_________________, \
|
||||
__________________LOWER_L4_________________, __________________LOWER_R4_________________, \
|
||||
__________________LOWER_L5_________________, __________________LOWER_R5_________________ \
|
||||
),
|
||||
|
||||
[_RAISE] = EXPAND_LAYOUT( \
|
||||
__________________RAISE_L1_________________, __________________RAISE_R1_________________, \
|
||||
__________________RAISE_L2_________________, __________________RAISE_R2_________________, \
|
||||
__________________RAISE_L3_________________, __________________RAISE_R3_________________, \
|
||||
__________________RAISE_L4_________________, __________________RAISE_R4_________________, \
|
||||
__________________RAISE_L5_________________, __________________RAISE_R5_________________ \
|
||||
),
|
||||
|
||||
#ifdef TRILAYER_ENABLED
|
||||
[_ADJUST] = EXPAND_LAYOUT( \
|
||||
_________________ADJUST_L1_________________, _________________ADJUST_R1_________________, \
|
||||
_________________ADJUST_L2_________________, _________________ADJUST_R2_________________, \
|
||||
_________________ADJUST_L3_________________, _________________ADJUST_R3_________________, \
|
||||
_________________ADJUST_L4_________________, _________________ADJUST_R4_________________, \
|
||||
_________________ADJUST_L5_________________, _________________ADJUST_R5_________________ \
|
||||
),
|
||||
#endif
|
||||
};
|
||||
|
||||
bool muse_mode = false;
|
||||
uint8_t last_muse_note = 0;
|
||||
uint16_t muse_counter = 0;
|
||||
uint8_t muse_offset = 70;
|
||||
uint16_t muse_tempo = 50;
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (muse_mode) {
|
||||
if (IS_LAYER_ON(_RAISE)) {
|
||||
if (clockwise) {
|
||||
muse_offset++;
|
||||
} else {
|
||||
muse_offset--;
|
||||
}
|
||||
} else {
|
||||
if (clockwise) {
|
||||
muse_tempo+=1;
|
||||
} else {
|
||||
muse_tempo-=1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (clockwise) {
|
||||
register_code(KC_PGDN);
|
||||
unregister_code(KC_PGDN);
|
||||
} else {
|
||||
register_code(KC_PGUP);
|
||||
unregister_code(KC_PGUP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dip_update(uint8_t index, bool active) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
if (active) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (active) {
|
||||
muse_mode = true;
|
||||
} else {
|
||||
muse_mode = false;
|
||||
#ifdef AUDIO_ENABLE
|
||||
stop_all_notes();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
if (muse_mode) {
|
||||
if (muse_counter == 0) {
|
||||
uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
|
||||
if (muse_note != last_muse_note) {
|
||||
stop_note(compute_freq_for_midi_note(last_muse_note));
|
||||
play_note(compute_freq_for_midi_note(muse_note), 0xF);
|
||||
last_muse_note = muse_note;
|
||||
}
|
||||
}
|
||||
muse_counter = (muse_counter + 1) % muse_tempo;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool music_mask_user(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case RAISE:
|
||||
case LOWER:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
6
keyboards/preonic/keymaps/xulkal/rules.mk
Normal file
6
keyboards/preonic/keymaps/xulkal/rules.mk
Normal file
@@ -0,0 +1,6 @@
|
||||
SRC += muse.c
|
||||
|
||||
ENCODER_ENABLE = no
|
||||
|
||||
OPT_DEFS += -DTRILAYER_ENABLED
|
||||
OPT_DEFS += -DAUDIO_CLICKY
|
||||
155
keyboards/sol/keymaps/xulkal/keymap.c
Normal file
155
keyboards/sol/keymaps/xulkal/keymap.c
Normal file
@@ -0,0 +1,155 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "xulkal.h"
|
||||
|
||||
#ifdef PROTOCOL_LUFA
|
||||
#include "lufa.h"
|
||||
#include "split_util.h"
|
||||
#endif
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
#include "oled_driver.h"
|
||||
#endif
|
||||
|
||||
#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__)
|
||||
|
||||
// Define your non-alpha grouping in this define's LAYOUT, and all your BASE_LAYERS will share the same mod/macro columns
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty Layout
|
||||
* ,------------------------------------------------. ,------------------------------------------------.
|
||||
* | GESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | S | D | F | G | ` | | ' | H | J | K | L | ; | Enter|
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Sft[ | Z | X | C | V | B | RGB | |RGBRST| N | M | , | . | / | Sft] |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | LOWER| RAISE| Alt | Space|RGBRMOD| |RGBMOD| Space| Left | Up | Down | Right| Ctrl |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
* | Space| DEL | | Enter| Space|
|
||||
* `-------------' `-------------'
|
||||
*/
|
||||
[_QWERTY] = EXPAND_LAYOUT( \
|
||||
_________________QWERTY_L1_________________, KC_MINS, KC_EQL, _________________QWERTY_R1_________________, \
|
||||
_________________QWERTY_L2_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R2_________________, \
|
||||
_________________QWERTY_L3_________________, KC_GRV, KC_QUOT, _________________QWERTY_R3_________________, \
|
||||
_________________QWERTY_L4_________________, RGB_TOG, RGBRST, _________________QWERTY_R4_________________, \
|
||||
_________________QWERTY_L5_________________, RGB_RMOD, RGB_MOD, _________________QWERTY_R5_________________, \
|
||||
KC_VOLU, KC_VOLD, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_VOLU, KC_VOLD \
|
||||
),
|
||||
|
||||
#ifndef GAMELAYER_DISABLE
|
||||
[_GAME] = EXPAND_LAYOUT( \
|
||||
___________________GAME_L1_________________, KC_MINS, KC_EQL, ___________________GAME_R1_________________, \
|
||||
___________________GAME_L2_________________, KC_LBRC, KC_RBRC, ___________________GAME_R2_________________, \
|
||||
___________________GAME_L3_________________, KC_GRV, KC_QUOT, ___________________GAME_R3_________________, \
|
||||
___________________GAME_L4_________________, RGB_TOG, RGBRST, ___________________GAME_R4_________________, \
|
||||
___________________GAME_L5_________________, RGB_RMOD, RGB_MOD, ___________________GAME_R5_________________, \
|
||||
KC_VOLU, KC_VOLD, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_VOLU, KC_VOLD \
|
||||
),
|
||||
#endif
|
||||
|
||||
[_LOWER] = EXPAND_LAYOUT( \
|
||||
__________________LOWER_L1_________________, KC_PMNS, KC_PPLS, __________________LOWER_R1_________________, \
|
||||
__________________LOWER_L2_________________, _______, _______, __________________LOWER_R2_________________, \
|
||||
__________________LOWER_L3_________________, _______, _______, __________________LOWER_R3_________________, \
|
||||
__________________LOWER_L4_________________, _______, _______, __________________LOWER_R4_________________, \
|
||||
__________________LOWER_L5_________________, _______, _______, __________________LOWER_R5_________________, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
[_RAISE] = EXPAND_LAYOUT( \
|
||||
__________________RAISE_L1_________________, _______, _______, __________________RAISE_R1_________________, \
|
||||
__________________RAISE_L2_________________, _______, _______, __________________RAISE_R2_________________, \
|
||||
__________________RAISE_L3_________________, _______, _______, __________________RAISE_R3_________________, \
|
||||
__________________RAISE_L4_________________, _______, _______, __________________RAISE_R4_________________, \
|
||||
__________________RAISE_L5_________________, _______, _______, __________________RAISE_R5_________________, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
#ifdef TRILAYER_ENABLED
|
||||
[_RAISE] = EXPAND_LAYOUT( \
|
||||
_________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, \
|
||||
_________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, \
|
||||
_________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, \
|
||||
_________________ADJUST_L4_________________, _______, _______, _________________ADJUST_R4_________________, \
|
||||
_________________ADJUST_L5_________________, _______, _______, _________________ADJUST_R5_________________, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
#endif
|
||||
};
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM sol_logo[] = {
|
||||
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
|
||||
|
||||
oled_write_P(sol_logo, false);
|
||||
}
|
||||
|
||||
static void render_status(void) {
|
||||
// Render to mode icon
|
||||
static const char PROGMEM mode_logo[2][4] = {
|
||||
{0x97,0x98,0x0a,0},
|
||||
{0xb7,0xb8,0x0a,0} };
|
||||
|
||||
oled_write_P(mode_logo[0], false);
|
||||
oled_write_P(mode_logo[1], false);
|
||||
|
||||
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (biton32(layer_state)) {
|
||||
case _QWERTY:
|
||||
#ifndef GAMELAYER_DISABLE
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR("Default\n"), false);
|
||||
break;
|
||||
case _GAME:
|
||||
oled_write_P(PSTR("Game\n"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(PSTR("Undefined\n"), false);
|
||||
break;
|
||||
}
|
||||
#else
|
||||
oled_write_P(PSTR("Default\n"), false);
|
||||
#endif
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_P(PSTR("Lower\n"), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(PSTR("Raise\n"), false);
|
||||
break;
|
||||
#ifdef TRILAYER_ENABLED
|
||||
case _ADJUST:
|
||||
oled_write_P(PSTR("Adjust\n"), false);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
oled_write_P(PSTR("Undefined\n"), false);
|
||||
}
|
||||
|
||||
// Host Keyboard LED Status
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (has_usb()) {
|
||||
render_status();
|
||||
} else {
|
||||
render_logo();
|
||||
oled_scroll_left();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
42
keyboards/sol/keymaps/xulkal/rules.mk
Normal file
42
keyboards/sol/keymaps/xulkal/rules.mk
Normal file
@@ -0,0 +1,42 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = 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
|
||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||
RGB_MATRIX_KEYPRESSES = yes # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
ENCODER_ENABLE_CUSTOM = no # Enable rotary encoder (+90)
|
||||
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Do not edit past here
|
||||
|
||||
ifeq ($(strip $(ENCODER_ENABLE_CUSTOM)), yes)
|
||||
OPT_DEFS += -DENCODER_ENABLE_CUSTOM
|
||||
SRC += common/knob_v2.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
53
keyboards/tada68/keymaps/kbp-v60/keymap.c
Executable file
53
keyboards/tada68/keymaps/kbp-v60/keymap.c
Executable file
@@ -0,0 +1,53 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _BL 0
|
||||
#define _FL 1
|
||||
|
||||
// Tilde is shift-grave
|
||||
#define KC_TLDE S(KC_GRV)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,----------------------------------------------------------------.
|
||||
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Del |
|
||||
* |----------------------------------------------------------------|
|
||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Home|
|
||||
* |----------------------------------------------------------------|
|
||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgUp|
|
||||
* |----------------------------------------------------------------|
|
||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
|
||||
* |----------------------------------------------------------------|
|
||||
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||
* `----------------------------------------------------------------'
|
||||
*/
|
||||
[_BL] = LAYOUT_ansi(
|
||||
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_BSPC, KC_DEL, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,\
|
||||
MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,\
|
||||
KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, MO(_FL), KC_ALGR, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
/* Keymap _FL: Function Layer
|
||||
* ,----------------------------------------------------------------.
|
||||
* | ` | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins |
|
||||
* |----------------------------------------------------------------|
|
||||
* | | |Up | |Prt|Bks|PgU|Hom|End|Pau| Up| | | |end |
|
||||
* |----------------------------------------------------------------|
|
||||
* | |Lef|Dow|Rig|Scl|Del|PgD| ~ |Ins|Lef|Dow|Rig| |Prt |
|
||||
* |----------------------------------------------------------------|
|
||||
* | | | |Bl-|BL |BL+| |VU-|VU+|MUT| | McL|MsU|McR |
|
||||
* |----------------------------------------------------------------|
|
||||
* | | | | | | | |MsL|MsD|MsR |
|
||||
* `----------------------------------------------------------------'
|
||||
*/
|
||||
[_FL] = LAYOUT_ansi(
|
||||
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_DEL, KC_INS, \
|
||||
KC_CAPS, _______, KC_UP, _______, KC_BSPC, KC_PSCR, KC_PGUP, KC_HOME, KC_END, KC_PAUS, KC_UP, _______, _______, _______, KC_END, \
|
||||
_______, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_SLCK, KC_PGDN, KC_TLDE, KC_INS, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_PSCR,\
|
||||
_______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_BTN1, KC_MS_U, KC_BTN2,\
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R),
|
||||
};
|
||||
3
keyboards/tada68/keymaps/kbp-v60/readme.md
Executable file
3
keyboards/tada68/keymaps/kbp-v60/readme.md
Executable file
@@ -0,0 +1,3 @@
|
||||
# KBP V60 like TADA68 layout
|
||||
|
||||
This layout resembles the KBParadise V60 FN layer and moves around some keys.
|
||||
18
keyboards/tada68/keymaps/kbp-v60/rules.mk
Normal file
18
keyboards/tada68/keymaps/kbp-v60/rules.mk
Normal file
@@ -0,0 +1,18 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # 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.
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
@@ -78,7 +78,13 @@ void suspend_wakeup_init_kb(void) {
|
||||
*/
|
||||
void suspend_wakeup_init(void) {
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#ifdef USE_MASSDROP_CONFIGURATOR
|
||||
if (led_enabled) {
|
||||
I2C3733_Control_Set(1);
|
||||
}
|
||||
#else
|
||||
I2C3733_Control_Set(1);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
suspend_wakeup_init_kb();
|
||||
|
||||
13
users/xulkal/config.h
Normal file
13
users/xulkal/config.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef TAPPING_FORCE_HOLD
|
||||
#define TAPPING_FORCE_HOLD
|
||||
#endif // TAPPING_FORCE_HOLD
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 175
|
||||
|
||||
#define LSPO_KEYS KC_LSFT, KC_TRNS, KC_LBRC
|
||||
#define RSPC_KEYS KC_RSFT, KC_TRNS, KC_RBRC
|
||||
#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_MINS
|
||||
#define RCPO_KEYS KC_RCTL, KC_TRNS, KC_EQL
|
||||
119
users/xulkal/layouts.h
Normal file
119
users/xulkal/layouts.h
Normal file
@@ -0,0 +1,119 @@
|
||||
#pragma once
|
||||
|
||||
/* Qwerty Layout
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | GESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | S | D | F | G | | H | J | K | L | ; | Enter|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Sft[ | Z | X | C | V | B | | N | M | , | . | / | Sft] |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | Win | ADJ | FN | Alt | Space| | Space| Left | Up | Down | Right| Ctrl |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
|
||||
#define _________________QWERTY_L1_________________ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5
|
||||
#define _________________QWERTY_L2_________________ TD_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T
|
||||
#define _________________QWERTY_L3_________________ RIS_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G
|
||||
#define _________________QWERTY_L4_________________ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B
|
||||
#define _________________QWERTY_L5_________________ KC_LCPO, KC_LGUI, LOWER, RAISE, KC_LALT, KC_SPC
|
||||
|
||||
#define _________________QWERTY_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0, TD_BSPC
|
||||
#define _________________QWERTY_R2_________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
|
||||
#define _________________QWERTY_R3_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT
|
||||
#define _________________QWERTY_R4_________________ KC_N, KC_M, TD_COMM, KC_DOT, KC_SLASH, KC_RSPC
|
||||
#define _________________QWERTY_R5_________________ KC_SPC, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_RCPC
|
||||
|
||||
|
||||
#define ___________________GAME_L1_________________ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5
|
||||
#define ___________________GAME_L2_________________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T
|
||||
#define ___________________GAME_L3_________________ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G
|
||||
#define ___________________GAME_L4_________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
|
||||
#define ___________________GAME_L5_________________ KC_LCTL, KC_LGUI, LOWER, RAISE, KC_LALT, KC_SPC
|
||||
|
||||
#define ___________________GAME_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC
|
||||
#define ___________________GAME_R2_________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
|
||||
#define ___________________GAME_R3_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT
|
||||
#define ___________________GAME_R4_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH, KC_RSFT
|
||||
#define ___________________GAME_R5_________________ KC_SPC, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_RCTL
|
||||
|
||||
|
||||
/* RAISE Layout
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | F12 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | PGDN | UP | PGUP | |QWERTY| | | INS | HOME | PGUP | PRINT| |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | LEFT | DOWN | RIGHT| | GAME | | | DEL | END | PGDN |SCRLCK| |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | PREV | VOL- | VOL+ | NEXT | PLAY |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
|
||||
#define __________________RAISE_L1_________________ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
|
||||
#define __________________RAISE_L2_________________ _______, KC_PGDN, KC_UP, KC_PGUP, _______, QWERTY
|
||||
#define __________________RAISE_L3_________________ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, GAME
|
||||
#define __________________RAISE_L4_________________ _______, _______, _______, _______, _______, _______
|
||||
#define __________________RAISE_L5_________________ _______, _______, _______, _______, _______, _______
|
||||
|
||||
#define __________________RAISE_R1_________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11
|
||||
#define __________________RAISE_R2_________________ _______, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, _______
|
||||
#define __________________RAISE_R3_________________ _______, KC_DEL, KC_END, KC_PGDN, KC_SLCK, _______
|
||||
#define __________________RAISE_R4_________________ _______, _______, _______, _______, _______, _______
|
||||
#define __________________RAISE_R5_________________ _______, KC_MPRV, KC_MPRV, KC_VOLD, KC_MNXT, KC_MPLY
|
||||
|
||||
/* LOWER Layout
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | SPDI | SAI | VAI | HUI | RESET| | | | | 7 | 8 | 9 | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | SPDD | SAD | VAD | HUD |RGBRST| | | | | 4 | 5 | 6 | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | 1 | 2 | 3 | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | 0 | . | |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
|
||||
#define __________________LOWER_L1_________________ _______, RGB_RMOD, RGB_MOD, _______, _______, _______
|
||||
#define __________________LOWER_L2_________________ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, _______
|
||||
#define __________________LOWER_L3_________________ RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, _______
|
||||
#define __________________LOWER_L4_________________ _______, _______, _______, _______, _______, _______
|
||||
#define __________________LOWER_L5_________________ _______, _______, _______, _______, _______, _______
|
||||
|
||||
#define __________________LOWER_R1_________________ _______, _______, _______, _______, _______, KC_DEL
|
||||
#define __________________LOWER_R2_________________ _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, _______
|
||||
#define __________________LOWER_R3_________________ _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, _______
|
||||
#define __________________LOWER_R4_________________ _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, _______
|
||||
#define __________________LOWER_R5_________________ _______, _______, _______, KC_KP_0, KC_PDOT, _______
|
||||
|
||||
/* ADJUST Layout
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | RESET| DEBUG| | | | | |TERM_ON|TERM_OFF| | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | |MusMod|Aud on|AudOff|AGnorm| |AGswap|ClkUp |ClkDwn| | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|MusOff|MidiOn| |MidOff|ClkOn |ClkOff| | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
|
||||
#define _________________ADJUST_L1_________________ _______, _______, _______, _______, _______, _______
|
||||
#define _________________ADJUST_L2_________________ _______, RESET, DEBUG, _______, _______, _______
|
||||
#define _________________ADJUST_L3_________________ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM
|
||||
#define _________________ADJUST_L4_________________ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON
|
||||
#define _________________ADJUST_L5_________________ _______, _______, _______, _______, _______, _______
|
||||
|
||||
#define _________________ADJUST_R1_________________ _______, _______, _______, _______, _______, _______
|
||||
#define _________________ADJUST_R2_________________ _______, TERM_ON, TERM_OFF, _______, _______, _______
|
||||
#define _________________ADJUST_R3_________________ AG_SWAP, CK_UP, CK_DOWN, _______, _______, _______
|
||||
#define _________________ADJUST_R4_________________ MI_OFF, CK_ON, CK_OFF, _______, _______, _______
|
||||
#define _________________ADJUST_R5_________________ _______, _______, _______, _______, _______, _______
|
||||
85
users/xulkal/process_records.c
Normal file
85
users/xulkal/process_records.c
Normal file
@@ -0,0 +1,85 @@
|
||||
#include "process_records.h"
|
||||
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
//Tap Dance Definitions
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[COMM_QUOT] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_QUOT),
|
||||
[BACKSPACE] = ACTION_TAP_DANCE_DOUBLE (KC_BSPACE, LCTL(KC_BSPACE)),
|
||||
[TAP_TAB] = ACTION_TAP_DANCE_DOUBLE (KC_TAB, LSFT(KC_TAB)),
|
||||
[CTRL_MINUS] = ACTION_TAP_DANCE_DOUBLE (KC_LCTL, KC_MINS),
|
||||
[CTRL_PLUS] = ACTION_TAP_DANCE_DOUBLE (KC_RCTL, KC_EQL)
|
||||
};
|
||||
#endif
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case GAME:
|
||||
#ifndef GAMELAYER_DISABLE
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_GAME);
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
#ifdef TRILAYER_ENABLED
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
#endif
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
#ifdef TRILAYER_ENABLED
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
#ifdef TRILAYER_ENABLED
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
#endif
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
#ifdef TRILAYER_ENABLED
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
return process_record_keymap(keycode, record) &&
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
process_record_rgb(keycode, record) &&
|
||||
#endif // RGBLIGHT_ENABLE;
|
||||
true;
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_rgb(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
49
users/xulkal/process_records.h
Normal file
49
users/xulkal/process_records.h
Normal file
@@ -0,0 +1,49 @@
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
|
||||
#define RIS_ESC LT(_RAISE, KC_ESC)
|
||||
#define RIS_CAPS LT(_RAISE, KC_CAPS)
|
||||
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
#include "process_tap_dance.h"
|
||||
|
||||
//Tap Dance Declarations
|
||||
enum {
|
||||
COMM_QUOT = 0,
|
||||
BACKSPACE,
|
||||
TAP_TAB,
|
||||
CTRL_MINUS,
|
||||
CTRL_PLUS
|
||||
};
|
||||
|
||||
#define TD_COMM TD(COMM_QUOT)
|
||||
#define TD_BSPC TD(BACKSPACE)
|
||||
#define TD_TAB TD(TAP_TAB)
|
||||
#define TD_LCTL TD(CTRL_MINUS)
|
||||
#define TD_RCTL TD(CTRL_PLUS)
|
||||
#else
|
||||
#define TD_COMM KC_COMM
|
||||
#define TD_BSPC KC_BSPACE
|
||||
#define TD_TAB KC_TAB
|
||||
#define TD_LCTL KC_LCTL
|
||||
#define TD_RCTL KC_RCTL
|
||||
#endif
|
||||
|
||||
enum layer_number {
|
||||
_QWERTY = 0,
|
||||
_GAME,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
GAME,
|
||||
LOWER,
|
||||
RAISE,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||
bool process_record_rgb(uint16_t keycode, keyrecord_t *record);
|
||||
13
users/xulkal/rules.mk
Normal file
13
users/xulkal/rules.mk
Normal file
@@ -0,0 +1,13 @@
|
||||
SRC += xulkal.c \
|
||||
process_records.c
|
||||
|
||||
# Some usual defaults
|
||||
MOUSEKEY_ENABLE = no # Mouse keys (+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control (+450)
|
||||
TAP_DANCE_ENABLE = yes # Enable the tap dance feature. (+1100)
|
||||
|
||||
ifneq ($(strip $(DISABLE_LTO)), yes)
|
||||
EXTRAFLAGS += -flto
|
||||
OPT_DEFS += -DNO_ACTION_MACRO
|
||||
OPT_DEFS += -DNO_ACTION_FUNCTION
|
||||
endif
|
||||
1
users/xulkal/xulkal.c
Normal file
1
users/xulkal/xulkal.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "xulkal.h"
|
||||
4
users/xulkal/xulkal.h
Normal file
4
users/xulkal/xulkal.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include "process_records.h"
|
||||
#include "layouts.h"
|
||||
Reference in New Issue
Block a user