Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
194bc7a7e1 | ||
|
|
fec4283022 | ||
|
|
17af712b7c | ||
|
|
712ded1f2f | ||
|
|
c67e304593 | ||
|
|
8c80475fcc | ||
|
|
3e18bb914c | ||
|
|
4434649c2f | ||
|
|
c6c94eeabc | ||
|
|
2c201ab9ad | ||
|
|
e5b10079cf | ||
|
|
854d46f833 | ||
|
|
bdfdc506da |
No files matched your search
@@ -90,13 +90,15 @@ Unicode input in QMK works by inputting a sequence of characters to the OS, sort
|
|||||||
|
|
||||||
The following input modes are available:
|
The following input modes are available:
|
||||||
|
|
||||||
* **`UC_OSX`**: macOS built-in Unicode hex input. Supports code points up to `0xFFFF` (`0x10FFFF` with Unicode Map).
|
* **`UC_MAC`**: macOS built-in Unicode hex input. Supports code points up to `0xFFFF` (`0x10FFFF` with Unicode Map).
|
||||||
|
|
||||||
To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
|
To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
|
||||||
By default, this mode uses the left Option key (`KC_LALT`) for Unicode input, but this can be changed by defining [`UNICODE_KEY_OSX`](#input-key-configuration) with another keycode.
|
By default, this mode uses the left Option key (`KC_LALT`) for Unicode input, but this can be changed by defining [`UNICODE_KEY_MAC`](#input-key-configuration) with another keycode.
|
||||||
|
|
||||||
!> Using the _Unicode Hex Input_ input source may disable some Option based shortcuts, such as Option + Left Arrow and Option + Right Arrow.
|
!> Using the _Unicode Hex Input_ input source may disable some Option based shortcuts, such as Option + Left Arrow and Option + Right Arrow.
|
||||||
|
|
||||||
|
!> `UC_OSX` is a deprecated alias of `UC_MAC` that will be removed in a future version of QMK.
|
||||||
|
|
||||||
* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports code points up to `0x10FFFF` (all possible code points).
|
* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports code points up to `0x10FFFF` (all possible code points).
|
||||||
|
|
||||||
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
|
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
|
||||||
@@ -124,7 +126,7 @@ You can switch the input mode at any time by using one of the following keycodes
|
|||||||
|----------------------|---------|------------|--------------------------------------------------------------|
|
|----------------------|---------|------------|--------------------------------------------------------------|
|
||||||
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Next in list|[Cycle](#input-mode-cycling) through selected modes |
|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Next in list|[Cycle](#input-mode-cycling) through selected modes |
|
||||||
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Prev in list|[Cycle](#input-mode-cycling) through selected modes in reverse|
|
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Prev in list|[Cycle](#input-mode-cycling) through selected modes in reverse|
|
||||||
|`UNICODE_MODE_OSX` |`UC_M_OS`|`UC_OSX` |Switch to macOS input |
|
|`UNICODE_MODE_MAC` |`UC_M_MA`|`UC_MAC` |Switch to macOS input |
|
||||||
|`UNICODE_MODE_LNX` |`UC_M_LN`|`UC_LNX` |Switch to Linux input |
|
|`UNICODE_MODE_LNX` |`UC_M_LN`|`UC_LNX` |Switch to Linux input |
|
||||||
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input |
|
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input |
|
||||||
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input (not implemented) |
|
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input (not implemented) |
|
||||||
@@ -145,9 +147,9 @@ If you have the [Audio feature](feature_audio.md) enabled on the board, you can
|
|||||||
For instance, you can add these definitions to your `config.h` file:
|
For instance, you can add these definitions to your `config.h` file:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define UNICODE_SONG_OSX COIN_SOUND
|
#define UNICODE_SONG_MAC AUDIO_ON_SOUND
|
||||||
#define UNICODE_SONG_LNX UNICODE_LINUX
|
#define UNICODE_SONG_LNX UNICODE_LINUX
|
||||||
#define UNICODE_SONG_BSD MARIO_GAMEOVER
|
#define UNICODE_SONG_BSD TERMINAL_SOUND
|
||||||
#define UNICODE_SONG_WIN UNICODE_WINDOWS
|
#define UNICODE_SONG_WIN UNICODE_WINDOWS
|
||||||
#define UNICODE_SONG_WINC UNICODE_WINDOWS
|
#define UNICODE_SONG_WINC UNICODE_WINDOWS
|
||||||
```
|
```
|
||||||
@@ -171,7 +173,7 @@ You can customize the keys used to trigger Unicode input for macOS, Linux and Wi
|
|||||||
|
|
||||||
|Define |Type |Default |Example |
|
|Define |Type |Default |Example |
|
||||||
|------------------|----------|------------------|-------------------------------------------|
|
|------------------|----------|------------------|-------------------------------------------|
|
||||||
|`UNICODE_KEY_OSX` |`uint8_t` |`KC_LALT` |`#define UNICODE_KEY_OSX KC_RALT` |
|
|`UNICODE_KEY_MAC` |`uint8_t` |`KC_LALT` |`#define UNICODE_KEY_MAC KC_RALT` |
|
||||||
|`UNICODE_KEY_LNX` |`uint16_t`|`LCTL(LSFT(KC_U))`|`#define UNICODE_KEY_LNX LCTL(LSFT(KC_E))`|
|
|`UNICODE_KEY_LNX` |`uint16_t`|`LCTL(LSFT(KC_U))`|`#define UNICODE_KEY_LNX LCTL(LSFT(KC_E))`|
|
||||||
|`UNICODE_KEY_WINC`|`uint8_t` |`KC_RALT` |`#define UNICODE_KEY_WINC KC_RGUI` |
|
|`UNICODE_KEY_WINC`|`uint8_t` |`KC_RALT` |`#define UNICODE_KEY_WINC KC_RGUI` |
|
||||||
|
|
||||||
@@ -180,7 +182,7 @@ You can customize the keys used to trigger Unicode input for macOS, Linux and Wi
|
|||||||
You can choose which input modes are available for cycling through. By default, this is disabled. If you want to enable it, limiting it to just the modes you use makes sense. Note that the values in the list are comma-delimited.
|
You can choose which input modes are available for cycling through. By default, this is disabled. If you want to enable it, limiting it to just the modes you use makes sense. Note that the values in the list are comma-delimited.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define UNICODE_SELECTED_MODES UC_OSX, UC_LNX, UC_WIN, UC_WINC
|
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WIN, UC_WINC
|
||||||
```
|
```
|
||||||
|
|
||||||
You can cycle through the selected modes by using the `UC_MOD`/`UC_RMOD` keycodes, or by calling `cycle_unicode_input_mode(offset)` in your code (`offset` is how many modes to move forward by, so +1 corresponds to `UC_MOD`).
|
You can cycle through the selected modes by using the `UC_MOD`/`UC_RMOD` keycodes, or by calling `cycle_unicode_input_mode(offset)` in your code (`offset` is how many modes to move forward by, so +1 corresponds to `UC_MOD`).
|
||||||
|
|||||||
+1
-1
@@ -543,7 +543,7 @@ See also: [Unicode Support](feature_unicode.md)
|
|||||||
|`XP(i, j)` | |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|
|`XP(i, j)` | |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|
||||||
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes |
|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes |
|
||||||
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Cycle through selected input modes in reverse |
|
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Cycle through selected input modes in reverse |
|
||||||
|`UNICODE_MODE_OSX` |`UC_M_OS`|Switch to macOS input |
|
|`UNICODE_MODE_MAC` |`UC_M_MA`|Switch to macOS input |
|
||||||
|`UNICODE_MODE_LNX` |`UC_M_LN`|Switch to Linux input |
|
|`UNICODE_MODE_LNX` |`UC_M_LN`|Switch to Linux input |
|
||||||
|`UNICODE_MODE_WIN` |`UC_M_WI`|Switch to Windows input |
|
|`UNICODE_MODE_WIN` |`UC_M_WI`|Switch to Windows input |
|
||||||
|`UNICODE_MODE_BSD` |`UC_M_BS`|Switch to BSD input (not implemented) |
|
|`UNICODE_MODE_BSD` |`UC_M_BS`|Switch to BSD input (not implemented) |
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ You will need to install Git and Python. It's very likely that you already have
|
|||||||
|
|
||||||
* Debian / Ubuntu / Devuan: `apt-get install git python3 && python3 -m pip install qmk`
|
* Debian / Ubuntu / Devuan: `apt-get install git python3 && python3 -m pip install qmk`
|
||||||
* Fedora / Red Hat / CentOS: `yum install git python3 && python3 -m pip install qmk`
|
* Fedora / Red Hat / CentOS: `yum install git python3 && python3 -m pip install qmk`
|
||||||
* Arch: `pacman -S qmk`
|
* Arch: `yay -S qmk` (or use any other AUR Helper)
|
||||||
|
|
||||||
## 3. Run QMK Setup :id=set-up-qmk
|
## 3. Run QMK Setup :id=set-up-qmk
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
#include "analog.c"
|
#include "analog.h"
|
||||||
#include "pointing_device.h"
|
#include "pointing_device.h"
|
||||||
#include "pincontrol.h"
|
#include "pincontrol.h"
|
||||||
|
|
||||||
@@ -17,8 +17,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
// Joystick
|
// Joystick
|
||||||
// Set Pins
|
// Set Pins
|
||||||
uint8_t xPin = 8; // VRx / /B4
|
// uint8_t xPin = 8; // VRx / /B4
|
||||||
uint8_t yPin = 7; // VRy // B5
|
// uint8_t yPin = 7; // VRy // B5
|
||||||
uint8_t swPin = E6; // SW
|
uint8_t swPin = E6; // SW
|
||||||
|
|
||||||
// Set Parameters
|
// Set Parameters
|
||||||
@@ -43,7 +43,7 @@ int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
|
|||||||
int16_t distanceFromOrigin;
|
int16_t distanceFromOrigin;
|
||||||
int16_t range;
|
int16_t range;
|
||||||
|
|
||||||
int16_t position = analogRead(pin);
|
int16_t position = analogReadPin(pin);
|
||||||
|
|
||||||
if (origin == position) {
|
if (origin == position) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -88,11 +88,11 @@ void pointing_device_task(void) {
|
|||||||
// todo read as one vector
|
// todo read as one vector
|
||||||
if (timer_elapsed(lastCursor) > cursorTimeout) {
|
if (timer_elapsed(lastCursor) > cursorTimeout) {
|
||||||
lastCursor = timer_read();
|
lastCursor = timer_read();
|
||||||
report.x = axisToMouseComponent(xPin, xOrigin, maxCursorSpeed, xPolarity);
|
report.x = axisToMouseComponent(B4, xOrigin, maxCursorSpeed, xPolarity);
|
||||||
report.y = axisToMouseComponent(yPin, yOrigin, maxCursorSpeed, yPolarity);
|
report.y = axisToMouseComponent(B5, yOrigin, maxCursorSpeed, yPolarity);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (!readPin(swPin)) {
|
if (!readPin(E6)) {
|
||||||
report.buttons |= MOUSE_BTN1;
|
report.buttons |= MOUSE_BTN1;
|
||||||
} else {
|
} else {
|
||||||
report.buttons &= ~MOUSE_BTN1;
|
report.buttons &= ~MOUSE_BTN1;
|
||||||
@@ -104,8 +104,8 @@ void pointing_device_task(void) {
|
|||||||
|
|
||||||
void matrix_init_keymap(void) {
|
void matrix_init_keymap(void) {
|
||||||
// init pin? Is needed?
|
// init pin? Is needed?
|
||||||
setPinInputHigh(swPin);
|
setPinInputHigh(E6);
|
||||||
// Account for drift
|
// Account for drift
|
||||||
xOrigin = analogRead(xPin);
|
xOrigin = analogReadPin(B4);
|
||||||
yOrigin = analogRead(yPin);
|
yOrigin = analogReadPin(B5);
|
||||||
}
|
}
|
||||||
@@ -3,3 +3,5 @@ RGBLIGHT_ENABLE = no
|
|||||||
CONSOLE_ENABLE = no
|
CONSOLE_ENABLE = no
|
||||||
|
|
||||||
BOOTLOADER = qmk-dfu
|
BOOTLOADER = qmk-dfu
|
||||||
|
|
||||||
|
SRC += analog.c
|
||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = lite
|
BOOTMAGIC_ENABLE = lite
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bear_face.h"
|
||||||
|
|
||||||
|
void keyboard_pre_init_kb(void) {
|
||||||
|
//Sets LED pin as output
|
||||||
|
setPinOutput(F7);
|
||||||
|
|
||||||
|
keyboard_pre_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
// Caps Lock LED indicator toggling code here
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
if(res) {
|
||||||
|
writePin(F7, led_state.caps_lock);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_83_ansi( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||||
|
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K412, K413, K414, \
|
||||||
|
K500, K501, K502, K505, K509, K510, K511, K512, K513, K514 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||||
|
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, KC_NO, K412, K413, K414 }, \
|
||||||
|
{ K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, K514 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xCEEB
|
||||||
|
#define PRODUCT_ID 0x09f5
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER chemicalwill
|
||||||
|
#define PRODUCT bear_face
|
||||||
|
#define DESCRIPTION Vortex Race 3 programmable PCB replacement
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#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)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F5, F6, F4, F1, B0, B6 }
|
||||||
|
#define MATRIX_COL_PINS { B5, C7, C6, F0, E6, B7, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN F7
|
||||||
|
//#define BACKLIGHT_BREATHING
|
||||||
|
//#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
// #define RGB_DI_PIN E2
|
||||||
|
// #ifdef RGB_DI_PIN
|
||||||
|
// #define RGBLED_NUM 16
|
||||||
|
// #define RGBLIGHT_HUE_STEP 8
|
||||||
|
// #define RGBLIGHT_SAT_STEP 8
|
||||||
|
// #define RGBLIGHT_VAL_STEP 8
|
||||||
|
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// /*== all animations enable ==*/
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 6
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic Key Options
|
||||||
|
*
|
||||||
|
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||||
|
* the keyboard. They are best used in combination with the HID Listen program,
|
||||||
|
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||||
|
*
|
||||||
|
* The options below allow the magic key functionality to be changed. This is
|
||||||
|
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* control how magic key switches layers */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||||
|
|
||||||
|
/* override magic key keymap */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
|
//#define MAGIC_KEY_HELP1 H
|
||||||
|
//#define MAGIC_KEY_HELP2 SLASH
|
||||||
|
//#define MAGIC_KEY_DEBUG D
|
||||||
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||||
|
//#define MAGIC_KEY_VERSION V
|
||||||
|
//#define MAGIC_KEY_STATUS S
|
||||||
|
//#define MAGIC_KEY_CONSOLE C
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||||
|
//#define MAGIC_KEY_LAYER0 0
|
||||||
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
//#define MAGIC_KEY_LAYER4 4
|
||||||
|
//#define MAGIC_KEY_LAYER5 5
|
||||||
|
//#define MAGIC_KEY_LAYER6 6
|
||||||
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
|
//#define MAGIC_KEY_LAYER9 9
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||||
|
//#define MAGIC_KEY_LOCK CAPS
|
||||||
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_NKRO N
|
||||||
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "bear_face",
|
||||||
|
"url": "https://github.com/chemicalwill/bear_face_pcb",
|
||||||
|
"maintainer": "chemicalwill",
|
||||||
|
"width": 16,
|
||||||
|
"height": 28,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_83_ansi": {
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":1, "w":1.5}, {"label":"F1", "x":1.5, "y":1}, {"label":"F2", "x":2.5, "y":1}, {"label":"F3", "x":3.5, "y":1}, {"label":"F4", "x":4.5, "y":1}, {"label":"F5", "x":5.5, "y":1}, {"label":"F6", "x":6.5, "y":1}, {"label":"F7", "x":7.5, "y":1}, {"label":"F8", "x":8.5, "y":1}, {"label":"F9", "x":9.5, "y":1}, {"label":"F10", "x":10.5, "y":1}, {"label":"F11", "x":11.5, "y":1}, {"label":"F12", "x":12.5, "y":1}, {"x":13.5, "y":1}, {"label":"Delete", "x":14.5, "y":1, "w":1.5}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"{", "x":11, "y":2}, {"label":"}", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Home", "x":15, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"Pg Up", "x":15, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"\"", "x":11.75, "y":4}, {"label":"Enter", "x":12.75, "y":4, "w":2.25}, {"label":"Pg Dn", "x":15, "y":4}, {"label":"Shift", "x":0, "y":5, "w":2.25}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"\u2191", "x":14, "y":5}, {"label":"End", "x":15, "y":5}, {"label":"Ctrl", "x":0, "y":6, "w":1.25}, {"label":"Win", "x":1.25, "y":6, "w":1.25}, {"label":"Alt", "x":2.5, "y":6, "w":1.25}, {"x":3.75, "y":6, "w":6.25}, {"label":"Alt", "x":10, "y":6}, {"label":"Fn", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"\u2190", "x":13, "y":6}, {"label":"\u2193", "x":14, "y":6}, {"label":"\u2192", "x":15, "y":6}, {"label":"Esc", "x":0, "y":8, "w":1.5}, {"label":"F1", "x":1.5, "y":8}, {"label":"F2", "x":2.5, "y":8}, {"label":"F3", "x":3.5, "y":8}, {"label":"F4", "x":4.5, "y":8}, {"label":"F5", "x":5.5, "y":8}, {"label":"F6", "x":6.5, "y":8}, {"label":"F7", "x":7.5, "y":8}, {"label":"F8", "x":8.5, "y":8}, {"label":"F9", "x":9.5, "y":8}, {"label":"F10", "x":10.5, "y":8}, {"label":"F11", "x":11.5, "y":8}, {"label":"F12", "x":12.5, "y":8}, {"x":13.5, "y":8}, {"label":"Delete", "x":14.5, "y":8, "w":1.5}, {"label":"~", "x":0, "y":9}, {"label":"!", "x":1, "y":9}, {"label":"@", "x":2, "y":9}, {"label":"#", "x":3, "y":9}, {"label":"$", "x":4, "y":9}, {"label":"%", "x":5, "y":9}, {"label":"^", "x":6, "y":9}, {"label":"&", "x":7, "y":9}, {"label":"*", "x":8, "y":9}, {"label":"(", "x":9, "y":9}, {"label":")", "x":10, "y":9}, {"label":"_", "x":11, "y":9}, {"label":"+", "x":12, "y":9}, {"label":"Backspace", "x":13, "y":9, "w":2}, {"label":"Home", "x":15, "y":9}, {"label":"Tab", "x":0, "y":10, "w":1.5}, {"label":"Q", "x":1.5, "y":10}, {"label":"W", "x":2.5, "y":10}, {"label":"F", "x":3.5, "y":10}, {"label":"P", "x":4.5, "y":10}, {"label":"G", "x":5.5, "y":10}, {"label":"J", "x":6.5, "y":10}, {"label":"L", "x":7.5, "y":10}, {"label":"U", "x":8.5, "y":10}, {"label":"Y", "x":9.5, "y":10}, {"label":":", "x":10.5, "y":10}, {"label":"{", "x":11.5, "y":10}, {"label":"}", "x":12.5, "y":10}, {"label":"|", "x":13.5, "y":10, "w":1.5}, {"label":"Pg Up", "x":15, "y":10}, {"label":"Backspace", "x":0, "y":11, "w":1.75}, {"label":"A", "x":1.75, "y":11}, {"label":"R", "x":2.75, "y":11}, {"label":"S", "x":3.75, "y":11}, {"label":"T", "x":4.75, "y":11}, {"label":"D", "x":5.75, "y":11}, {"label":"H", "x":6.75, "y":11}, {"label":"N", "x":7.75, "y":11}, {"label":"E", "x":8.75, "y":11}, {"label":"I", "x":9.75, "y":11}, {"label":"O", "x":10.75, "y":11}, {"label":"\"", "x":11.75, "y":11}, {"label":"Enter", "x":12.75, "y":11, "w":2.25}, {"label":"Pg Dn", "x":15, "y":11}, {"label":"Shift", "x":0, "y":12, "w":2.25}, {"label":"Z", "x":2.25, "y":12}, {"label":"X", "x":3.25, "y":12}, {"label":"C", "x":4.25, "y":12}, {"label":"V", "x":5.25, "y":12}, {"label":"B", "x":6.25, "y":12}, {"label":"K", "x":7.25, "y":12}, {"label":"M", "x"Line truncated
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layers {
|
||||||
|
_QWER,
|
||||||
|
_COLE,
|
||||||
|
_DVOR,
|
||||||
|
_FN1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FN1_CAPS LT(_FN1, KC_CAPS)
|
||||||
|
|
||||||
|
//custom keycode enums
|
||||||
|
enum custom_keycodes {
|
||||||
|
BASE_QWER = SAFE_RANGE,
|
||||||
|
BASE_COLE,
|
||||||
|
BASE_DVOR
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_QWER] = LAYOUT_83_ansi(
|
||||||
|
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_NO, KC_DEL,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
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_PGUP,
|
||||||
|
FN1_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_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_COLE] = LAYOUT_83_ansi(
|
||||||
|
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_NO, KC_DEL,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_DVOR] = LAYOUT_83_ansi(
|
||||||
|
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_NO, KC_DEL,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP,
|
||||||
|
FN1_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_FN1] = LAYOUT_83_ansi(
|
||||||
|
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, KC_INS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, BASE_QWER,
|
||||||
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, RESET, _______, _______, _______, _______, BASE_COLE,
|
||||||
|
_______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BASE_DVOR,
|
||||||
|
_______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, KC_APP, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/*
|
||||||
|
[_BLANK] = LAYOUT_83_ansi(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
//macros to allow the user to set whatever default layer they want, even after reboot
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case BASE_QWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// when keycode BASE_QWER is pressed
|
||||||
|
set_single_persistent_default_layer(_QWER);
|
||||||
|
} else {
|
||||||
|
// when keycode BASE_QWER is released
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BASE_COLE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// when keycode BASE_COLE is pressed
|
||||||
|
set_single_persistent_default_layer(_COLE);
|
||||||
|
} else {
|
||||||
|
// when keycode BASE_COLE is released
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BASE_DVOR:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// when keycode BASE_DVOR is pressed
|
||||||
|
set_single_persistent_default_layer(_DVOR);
|
||||||
|
} else {
|
||||||
|
// when keycode BASE_DVOR is released
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# default bear_face layout
|
||||||
|
|
||||||
|
This layout replaces the stock layout on the Vortex Race 3.
|
||||||
|
|
||||||
|
- Caps Lock indicator LED is enabled by default
|
||||||
|
- Layer Tap on Caps Lock (tap for Caps Lock, hold for _FN1)
|
||||||
|
- FORCE_NKRO enabled by default
|
||||||
|
- Pn key is set to 'KC_NO' by default
|
||||||
|
* might be a good place for a macro, or to put your PC to sleep, etc.
|
||||||
|
- a combined function layer that mimics the sublegends on the stock caps (regardless of layout)
|
||||||
|
* 'Reset' will put the keyboard into DFU mode
|
||||||
|
* 'APP' sends 'KC_APP'
|
||||||
|
* set base layer toggles for QWERTY, COLEMAK, and DVORAK layouts (will persist after reboot)
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# bear_face
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Vortex Race 3 with replacement QMK-compatible PCB designed by [chemicalwill](https://github.com/chemicalwill)
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Will Hedges](https://github.com/chemicalwill)
|
||||||
|
* Hardware Supported: bear_face v1.0, atmega32u4
|
||||||
|
* Hardware Availability: [PCB files](https://github.com/chemicalwill/bear_face)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make bear_face:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = yes
|
BOOTMAGIC_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|||||||
@@ -6,34 +6,6 @@ extern uint8_t is_master;
|
|||||||
// Following line allows macro to read current RGB settings
|
// Following line allows macro to read current RGB settings
|
||||||
extern rgblight_config_t rgblight_config;
|
extern rgblight_config_t rgblight_config;
|
||||||
#endif
|
#endif
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
|
||||||
# define KEYLOGGER_LENGTH 5
|
|
||||||
static uint32_t oled_timer = 0;
|
|
||||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
|
||||||
static uint16_t log_timer = 0;
|
|
||||||
// clang-format off
|
|
||||||
static const char PROGMEM code_to_name[0xFF] = {
|
|
||||||
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
|
||||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
|
||||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
|
||||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
|
||||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
|
||||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
|
||||||
};
|
|
||||||
|
|
||||||
void add_keylog(uint16_t keycode);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
|
enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
|
||||||
|
|
||||||
@@ -139,10 +111,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
|
||||||
oled_timer = timer_read32();
|
|
||||||
add_keylog(keycode);
|
|
||||||
#endif
|
|
||||||
#ifndef SPLIT_KEYBOARD
|
#ifndef SPLIT_KEYBOARD
|
||||||
if (keycode == RESET && !is_master) {
|
if (keycode == RESET && !is_master) {
|
||||||
return false;
|
return false;
|
||||||
@@ -154,151 +122,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
|||||||
|
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
|
||||||
|
|
||||||
void add_keylog(uint16_t keycode) {
|
|
||||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
|
||||||
keycode = keycode & 0xFF;
|
|
||||||
} else if (keycode > 0xFF) {
|
|
||||||
keycode = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
|
||||||
keylog_str[i] = keylog_str[i - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
|
||||||
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
|
||||||
}
|
|
||||||
|
|
||||||
log_timer = timer_read();
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_log(void) {
|
|
||||||
if (timer_elapsed(log_timer) > 750) {
|
|
||||||
// add_keylog(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_keylogger_status(void) {
|
|
||||||
oled_write_P(PSTR("KLogr"), false);
|
|
||||||
oled_write(keylog_str, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_default_layer_state(void) {
|
|
||||||
oled_write_P(PSTR("Lyout"), false);
|
|
||||||
switch (get_highest_layer(default_layer_state)) {
|
|
||||||
case _QWERTY:
|
|
||||||
oled_write_P(PSTR(" QRTY"), false);
|
|
||||||
break;
|
|
||||||
case _COLEMAK:
|
|
||||||
oled_write_P(PSTR(" COLE"), false);
|
|
||||||
break;
|
|
||||||
case _DVORAK:
|
|
||||||
oled_write_P(PSTR(" DVRK"), false);
|
|
||||||
break;
|
|
||||||
case _WORKMAN:
|
|
||||||
oled_write_P(PSTR(" WKMN"), false);
|
|
||||||
break;
|
|
||||||
case _NORMAN:
|
|
||||||
oled_write_P(PSTR(" NORM"), false);
|
|
||||||
break;
|
|
||||||
case _MALTRON:
|
|
||||||
oled_write_P(PSTR(" MLTN"), false);
|
|
||||||
break;
|
|
||||||
case _EUCALYN:
|
|
||||||
oled_write_P(PSTR(" ECLN"), false);
|
|
||||||
break;
|
|
||||||
case _CARPLAX:
|
|
||||||
oled_write_P(PSTR(" CRPX"), false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_layer_state(void) {
|
|
||||||
oled_write_P(PSTR("LAYER"), false);
|
|
||||||
oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
|
|
||||||
oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
|
|
||||||
oled_write_P(PSTR(" Mods"), layer_state_is(_MODS));
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_keylock_status(uint8_t led_usb_state) {
|
|
||||||
oled_write_P(PSTR("Lock:"), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("N"), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
|
||||||
oled_write_P(PSTR("C"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
|
||||||
oled_write_ln_P(PSTR("S"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_mod_status(uint8_t modifiers) {
|
|
||||||
oled_write_P(PSTR("Mods:"), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
|
||||||
oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
|
||||||
oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
|
||||||
oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_bootmagic_status(void) {
|
|
||||||
/* Show Ctrl-Gui Swap options */
|
|
||||||
static const char PROGMEM logo[][2][3] = {
|
|
||||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
|
|
||||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
|
|
||||||
};
|
|
||||||
oled_write_P(PSTR("BTMGK"), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(logo[0][0], !keymap_config.swap_lctl_lgui);
|
|
||||||
oled_write_P(logo[1][0], keymap_config.swap_lctl_lgui);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(logo[0][1], !keymap_config.swap_lctl_lgui);
|
|
||||||
oled_write_P(logo[1][1], keymap_config.swap_lctl_lgui);
|
|
||||||
oled_write_P(PSTR(" NKRO"), keymap_config.nkro);
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_user_status(void) {
|
|
||||||
oled_write_P(PSTR("USER:"), false);
|
|
||||||
oled_write_P(PSTR(" Anim"), userspace_config.rgb_matrix_idle_anim);
|
|
||||||
oled_write_P(PSTR(" Layr"), userspace_config.rgb_layer_change);
|
|
||||||
oled_write_P(PSTR(" Nuke"), userspace_config.nuke_switch);
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_status_main(void) {
|
|
||||||
/* Show Keyboard Layout */
|
|
||||||
render_default_layer_state();
|
|
||||||
render_keylock_status(host_keyboard_leds());
|
|
||||||
render_bootmagic_status();
|
|
||||||
render_user_status();
|
|
||||||
|
|
||||||
render_keylogger_status();
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_status_secondary(void) {
|
|
||||||
/* Show Keyboard Layout */
|
|
||||||
render_default_layer_state();
|
|
||||||
render_layer_state();
|
|
||||||
render_mod_status(get_mods() | get_oneshot_mods());
|
|
||||||
|
|
||||||
render_keylogger_status();
|
|
||||||
}
|
|
||||||
|
|
||||||
void oled_task_user(void) {
|
|
||||||
if (timer_elapsed32(oled_timer) > 30000) {
|
|
||||||
oled_off();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
else {
|
|
||||||
oled_on();
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
|
|
||||||
update_log();
|
|
||||||
if (is_master) {
|
|
||||||
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
|
||||||
} else {
|
|
||||||
render_status_secondary();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint16_t get_tapping_term(uint16_t keycode) {
|
uint16_t get_tapping_term(uint16_t keycode) {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = full
|
BOOTMAGIC_ENABLE = full
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = no
|
COMMAND_ENABLE = no
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no # PCB has underglow LEDs, but case doesn't let them show.
|
RGBLIGHT_ENABLE = no # PCB has underglow LEDs, but case doesn't let them show.
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
KC_F1, KC_F2, KC_GESC, 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_DEL, KC_BSPC, KC_HOME,
|
||||||
|
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
|
||||||
|
KC_F5, KC_F6, 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_NUHS, KC_ENT, KC_PGUP,
|
||||||
|
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
_______, _______, KC_GESC, 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, _______,
|
||||||
|
_______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
} else if (index == 1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
CONSOLE_ENABLE = yes
|
||||||
|
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||||
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define PRODUCT_ID 0x1257
|
#define PRODUCT_ID 0x1257
|
||||||
#define DEVICE_VER 0x0100
|
#define DEVICE_VER 0x0100
|
||||||
#define MANUFACTURER Keebio
|
#define MANUFACTURER Keebio
|
||||||
#define PRODUCT Quefrency
|
#define PRODUCT Quefrency Rev. 1
|
||||||
#define DESCRIPTION Split 60/65 percent staggered keyboard
|
#define DESCRIPTION Split 60/65 percent staggered keyboard
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
|
|||||||
@@ -79,7 +79,6 @@
|
|||||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
|
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define LAYOUT_65_with_macro( \
|
#define LAYOUT_65_with_macro( \
|
||||||
LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
|
LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
|
||||||
LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||||
@@ -101,3 +100,25 @@
|
|||||||
{ RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
|
{ RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
|
||||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
|
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
|
||||||
|
LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||||
|
LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC7x,RC8, RC9, \
|
||||||
|
LD9, LD8, LD1, LD2x,LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \
|
||||||
|
LE9, LE8, LE1, LE2, LE3, LE5, LE6x,LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \
|
||||||
|
{ LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \
|
||||||
|
{ LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \
|
||||||
|
{ LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \
|
||||||
|
{ LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \
|
||||||
|
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
|
||||||
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
|
||||||
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \
|
||||||
|
{ RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \
|
||||||
|
{ RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
|
||||||
|
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
|
||||||
|
}
|
||||||
@@ -20,10 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xCB10
|
#define VENDOR_ID 0xCB10
|
||||||
#define PRODUCT_ID 0x1257
|
#define PRODUCT_ID 0x2257
|
||||||
#define DEVICE_VER 0x0200
|
#define DEVICE_VER 0x0200
|
||||||
#define MANUFACTURER Keebio
|
#define MANUFACTURER Keebio
|
||||||
#define PRODUCT Quefrency
|
#define PRODUCT Quefrency Rev. 2
|
||||||
#define DESCRIPTION Split 60/65 percent staggered keyboard
|
#define DESCRIPTION Split 60/65 percent staggered keyboard
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
@@ -38,10 +38,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define MATRIX_ROW_PINS_RIGHT { B3, B2, B6, B4, D7 }
|
#define MATRIX_ROW_PINS_RIGHT { B3, B2, B6, B4, D7 }
|
||||||
#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, D5, C7, D3, B7 }
|
#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, D5, C7, D3, B7 }
|
||||||
#define SPLIT_HAND_PIN F7
|
#define SPLIT_HAND_PIN F7
|
||||||
#define ENCODERS_PAD_A { F6 }
|
#define ENCODERS_PAD_A { F5 }
|
||||||
#define ENCODERS_PAD_B { F5 }
|
#define ENCODERS_PAD_B { F6 }
|
||||||
#define ENCODERS_PAD_A_RIGHT { D4 }
|
#define ENCODERS_PAD_A_RIGHT { D6 }
|
||||||
#define ENCODERS_PAD_B_RIGHT { D6 }
|
#define ENCODERS_PAD_B_RIGHT { D4 }
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
/* Set 0 if debouncing isn't needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
||||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
||||||
LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT LAYOUT_60 // For backwards compatibility with Rev. 1
|
#define LAYOUT LAYOUT_60 // For backwards compatibility with Rev. 1
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
|
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
|
||||||
LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_60_with_macro( \
|
#define LAYOUT_60_with_macro( \
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
||||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
||||||
LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_65_with_macro( \
|
#define LAYOUT_65_with_macro( \
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
|
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
|
||||||
LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_60_iso( \
|
#define LAYOUT_60_iso( \
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
|
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
|
||||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
|
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
|
||||||
LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_65_iso( \
|
#define LAYOUT_65_iso( \
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
|
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
|
||||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
||||||
LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_60_iso_with_macro( \
|
#define LAYOUT_60_iso_with_macro( \
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
|
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
|
||||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
|
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
|
||||||
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_65_iso_with_macro( \
|
#define LAYOUT_65_iso_with_macro( \
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
|
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
|
||||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
||||||
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_all( \
|
#define LAYOUT_all( \
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
||||||
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||||
LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||||
@@ -190,5 +190,5 @@
|
|||||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
||||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
||||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
|||||||
@@ -37,3 +37,5 @@
|
|||||||
// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
|
// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
|
||||||
#define SPLIT_USB_DETECT
|
#define SPLIT_USB_DETECT
|
||||||
#define SPLIT_USB_TIMEOUT 1000
|
#define SPLIT_USB_TIMEOUT 1000
|
||||||
|
|
||||||
|
#define KEYLOGGER_LENGTH 10
|
||||||
@@ -2,35 +2,6 @@
|
|||||||
|
|
||||||
uint8_t is_master;
|
uint8_t is_master;
|
||||||
|
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
|
||||||
# define KEYLOGGER_LENGTH 10
|
|
||||||
static uint32_t oled_timer = 0;
|
|
||||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
|
||||||
static uint16_t log_timer = 0;
|
|
||||||
// clang-format off
|
|
||||||
static const char PROGMEM code_to_name[0xFF] = {
|
|
||||||
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
|
||||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
|
||||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
|
||||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
|
||||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
|
||||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
|
||||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
|
||||||
};
|
|
||||||
|
|
||||||
void add_keylog(uint16_t keycode);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef UNICODE_ENABLE
|
#ifndef UNICODE_ENABLE
|
||||||
# define UC(x) KC_NO
|
# define UC(x) KC_NO
|
||||||
#endif
|
#endif
|
||||||
@@ -52,7 +23,7 @@ void add_keylog(uint16_t keycode);
|
|||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
||||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
||||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, KC_NO, MEH(KC_MINS), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, MEH(KC_MINS), TG(_DIABLO), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
|
KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
|
||||||
)
|
)
|
||||||
/* Re-pass though to allow templates to be used */
|
/* Re-pass though to allow templates to be used */
|
||||||
@@ -107,12 +78,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
|
_____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
|
||||||
_____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
|
_____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MODS] = LAYOUT_wrapper(
|
[_MODS] = LAYOUT_wrapper(
|
||||||
_______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
|
_______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
|
||||||
_______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
|
_______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
|
||||||
KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
|
KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
|
||||||
_______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______
|
_______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______
|
||||||
),
|
),
|
||||||
|
[_DIABLO] = LAYOUT_wrapper(
|
||||||
|
KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||||
|
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG(_DIABLO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
[_LOWER] = LAYOUT_wrapper(
|
[_LOWER] = LAYOUT_wrapper(
|
||||||
KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
|
KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
|
||||||
_______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
|
_______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
|
||||||
@@ -142,10 +120,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
|
||||||
oled_timer = timer_read32();
|
|
||||||
add_keylog(keycode);
|
|
||||||
#endif
|
|
||||||
#ifndef SPLIT_KEYBOARD
|
#ifndef SPLIT_KEYBOARD
|
||||||
if (keycode == RESET && !is_master) {
|
if (keycode == RESET && !is_master) {
|
||||||
return false;
|
return false;
|
||||||
@@ -154,133 +128,16 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_init_keymap(void) { is_master = (uint8_t)is_keyboard_master(); }
|
void matrix_init_keymap(void) { is_master = (uint8_t)is_keyboard_master(); }
|
||||||
|
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
|
||||||
|
|
||||||
void add_keylog(uint16_t keycode) {
|
|
||||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
|
||||||
keycode = keycode & 0xFF;
|
|
||||||
} else if (keycode > 0xFF) {
|
|
||||||
keycode = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
|
||||||
keylog_str[i] = keylog_str[i - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
|
||||||
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
|
||||||
}
|
|
||||||
|
|
||||||
log_timer = timer_read();
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_log(void) {
|
|
||||||
if (timer_elapsed(log_timer) > 750) {
|
|
||||||
// add_keylog(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_keylogger_status(void) {
|
|
||||||
oled_write_P(PSTR("Keylogger: "), false);
|
|
||||||
oled_write(keylog_str, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_default_layer_state(void) {
|
|
||||||
oled_write_P(PSTR("Layout: "), false);
|
|
||||||
switch (get_highest_layer(default_layer_state)) {
|
|
||||||
case _QWERTY: oled_write_ln_P(PSTR("Qwerty"), false); break;
|
|
||||||
case _COLEMAK: oled_write_ln_P(PSTR("Colemak"), false); break;
|
|
||||||
case _DVORAK: oled_write_ln_P(PSTR("Dvorak"), false); break;
|
|
||||||
case _WORKMAN: oled_write_ln_P(PSTR("Workman"), false); break;
|
|
||||||
case _NORMAN: oled_write_ln_P(PSTR("Norman"), false); break;
|
|
||||||
case _MALTRON: oled_write_ln_P(PSTR("Maltron"), false); break;
|
|
||||||
case _EUCALYN: oled_write_ln_P(PSTR("Eucalyn"), false); break;
|
|
||||||
case _CARPLAX: oled_write_ln_P(PSTR("Carplax"), false); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_layer_state(void) {
|
|
||||||
oled_write_ln_P(PSTR("Layer:"), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_ln_P(PSTR("Mods"), layer_state_is(_MODS));
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_keylock_status(uint8_t led_usb_state) {
|
|
||||||
oled_write_P(PSTR("Lock: "), false);
|
|
||||||
oled_write_P(PSTR("NUML"), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("CAPS"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_ln_P(PSTR("SCLK"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_mod_status(uint8_t modifiers) {
|
|
||||||
oled_write_P(PSTR("Mods: "), false);
|
|
||||||
oled_write_P(PSTR("Sft"), (modifiers & MOD_MASK_SHIFT));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("Ctl"), (modifiers & MOD_MASK_CTRL));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("Alt"), (modifiers & MOD_MASK_ALT));
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_bootmagic_status(void) {
|
|
||||||
/* Show Ctrl-Gui Swap options */
|
|
||||||
static const char PROGMEM logo[][2][3] = {
|
|
||||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
|
|
||||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
|
|
||||||
};
|
|
||||||
oled_write_P(PSTR("Boot "), false);
|
|
||||||
if (keymap_config.swap_lctl_lgui) {
|
|
||||||
oled_write_P(logo[1][0], false);
|
|
||||||
} else {
|
|
||||||
oled_write_P(logo[0][0], false);
|
|
||||||
}
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("NKRO"), keymap_config.nkro);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_ln_P(PSTR("GUI"), !keymap_config.no_gui);
|
|
||||||
oled_write_P(PSTR("Magic "), false);
|
|
||||||
if (keymap_config.swap_lctl_lgui) {
|
|
||||||
oled_write_P(logo[1][1], false);
|
|
||||||
} else {
|
|
||||||
oled_write_P(logo[0][1], false);
|
|
||||||
}
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("GRV"), keymap_config.swap_grave_esc);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_ln_P(PSTR("CAPS"), keymap_config.swap_control_capslock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_user_status(void) {
|
|
||||||
oled_write_P(PSTR("USER: "), false);
|
|
||||||
oled_write_P(PSTR("Anim"), userspace_config.rgb_matrix_idle_anim);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR("Layr"), userspace_config.rgb_layer_change);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_ln_P(PSTR("Nuke"), userspace_config.nuke_switch);
|
|
||||||
}
|
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
void render_logo(void) {
|
|
||||||
static const char PROGMEM qmk_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(qmk_logo, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
# ifndef SPLIT_TRANSPORT_MIRROR
|
# ifndef SPLIT_TRANSPORT_MIRROR
|
||||||
void render_kyria_logo(void) {
|
void oled_driver_render_logo(void) {
|
||||||
static const char PROGMEM kyria_logo[] = {
|
static const char PROGMEM kyria_logo[] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@@ -294,51 +151,6 @@ void render_kyria_logo(void) {
|
|||||||
oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
|
oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
void render_status_main(void) {
|
|
||||||
/* Show Keyboard Layout */
|
|
||||||
render_default_layer_state();
|
|
||||||
render_keylock_status(host_keyboard_leds());
|
|
||||||
render_bootmagic_status();
|
|
||||||
render_user_status();
|
|
||||||
|
|
||||||
render_keylogger_status();
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_status_secondary(void) {
|
|
||||||
/* Show Keyboard Layout */
|
|
||||||
render_logo();
|
|
||||||
render_default_layer_state();
|
|
||||||
render_layer_state();
|
|
||||||
render_mod_status(get_mods() | get_oneshot_mods());
|
|
||||||
|
|
||||||
render_keylogger_status();
|
|
||||||
}
|
|
||||||
|
|
||||||
void oled_task_user(void) {
|
|
||||||
if (timer_elapsed32(oled_timer) > 30000) {
|
|
||||||
oled_off();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
else {
|
|
||||||
oled_on();
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
|
|
||||||
update_log();
|
|
||||||
if (is_master) {
|
|
||||||
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
|
||||||
} else {
|
|
||||||
# ifdef SPLIT_TRANSPORT_MIRROR
|
|
||||||
render_status_secondary();
|
|
||||||
# else
|
|
||||||
render_kyria_logo();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
#ifdef ENCODER_ENABLE
|
||||||
|
|||||||
@@ -20,3 +20,5 @@ HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
|||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
SPLIT_TRANSPORT = mirror
|
SPLIT_TRANSPORT = mirror
|
||||||
|
|
||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
// Below layout is based upon /u/That-Canadian's planck layout
|
||||||
|
#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.
|
||||||
|
enum layer_names {
|
||||||
|
_QWERTY,
|
||||||
|
_FUNC,
|
||||||
|
_LAYER2,
|
||||||
|
_LAYER3
|
||||||
|
};
|
||||||
|
|
||||||
|
// Defines for task manager and such
|
||||||
|
#define CALTDEL LCTL(LALT(KC_DEL))
|
||||||
|
#define TSKMGR LCTL(LSFT(KC_ESC))
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-------------.
|
||||||
|
* | 1 | 2 |
|
||||||
|
* |------+------|
|
||||||
|
* | 3 | 4 |
|
||||||
|
* |------+------|
|
||||||
|
* | 5 | 6 |
|
||||||
|
* |------+------|
|
||||||
|
* | FUNC | 8 |
|
||||||
|
* `-------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
KC_1, KC_2,
|
||||||
|
KC_3, KC_4,
|
||||||
|
KC_5, KC_6,
|
||||||
|
MO(_FUNC), KC_8
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Function
|
||||||
|
* ,-------------.
|
||||||
|
* | Q |CALDEL|
|
||||||
|
* |------+------|
|
||||||
|
* | A |TSKMGR|
|
||||||
|
* |------+------|
|
||||||
|
* | Z | X |
|
||||||
|
* |------+------|
|
||||||
|
* | | C |
|
||||||
|
* `-------------'
|
||||||
|
*/
|
||||||
|
[_FUNC] = LAYOUT(
|
||||||
|
KC_Q, CALTDEL,
|
||||||
|
KC_A, TSKMGR,
|
||||||
|
KC_Z, KC_X,
|
||||||
|
KC_TRNS, KC_C
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Layer 2
|
||||||
|
* ,-------------.
|
||||||
|
* | | |
|
||||||
|
* |------+------|
|
||||||
|
* | | |
|
||||||
|
* |------+------|
|
||||||
|
* | | |
|
||||||
|
* |------+------|
|
||||||
|
* | | |
|
||||||
|
* `-------------'
|
||||||
|
*/
|
||||||
|
[_LAYER2] = LAYOUT(
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Layer 3
|
||||||
|
* ,-------------.
|
||||||
|
* | | |
|
||||||
|
* |------+------|
|
||||||
|
* | | |
|
||||||
|
* |------+------|
|
||||||
|
* | | |
|
||||||
|
* |------+------|
|
||||||
|
* | | |
|
||||||
|
* `-------------'
|
||||||
|
*/
|
||||||
|
[_LAYER3] = LAYOUT(
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -15,7 +15,7 @@ BOOTLOADER = atmel-dfu
|
|||||||
BOOTMAGIC_ENABLE = yes
|
BOOTMAGIC_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = no
|
COMMAND_ENABLE = no
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = full
|
BOOTMAGIC_ENABLE = full
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = full
|
BOOTMAGIC_ENABLE = full
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
#define STARTUP_SONG SONG(PLANCK_SOUND)
|
||||||
|
// #define STARTUP_SONG SONG(NO_SOUND)
|
||||||
|
|
||||||
|
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
|
||||||
|
SONG(COLEMAK_SOUND), \
|
||||||
|
SONG(DVORAK_SOUND) \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
//#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
//#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
//#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||||
|
|
||||||
|
// Most tactile encoders have detents every 4 stages
|
||||||
|
#define ENCODER_RESOLUTION 4
|
||||||
|
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* An Italian ANSI layout
|
||||||
|
* Version 0.3
|
||||||
|
*
|
||||||
|
* Created by Silvio Gulizia on the basis of the default Planck keymap.
|
||||||
|
* thanks to SomeBuddyOnReddit, gepeirl, fauxpark, BXO511, drashna, ridingqwerty ...
|
||||||
|
*
|
||||||
|
* based on the original Planck layout
|
||||||
|
* Italian accented vowels "Ã" and "à " have been moved from the QWERTY layer to the LOWER layers, while "è" and "ù" remain respectively on RAISE and LOWER.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "muse.h"
|
||||||
|
#include "keymap_italian_osx_ansi.h"
|
||||||
|
#include "sigul.h"
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* |Tab/FN| Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* |Esc/FN| A | S | D | F | G | H | J | K | L | ;: | '" |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | FN/B | N | M | ,< | .> | /! |S/Ent |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | FN | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||||
|
TABFN, IT_Q, IT_W, IT_E, IT_R, IT_T, IT_Y, IT_U, IT_I, IT_O, IT_P, KC_BSPC,
|
||||||
|
ESCFN, IT_A, IT_S, IT_D, IT_F, IT_G, IT_H, IT_J, IT_K, IT_L, IT_SCCL, IT_APDQ,
|
||||||
|
KC_LSFT, IT_Z, IT_X, IT_C, IT_V, MS_B, IT_N, IT_M, IT_CMLS, IT_DTMR, IT_SLQS, MT(MOD_RSFT, KC_ENT),
|
||||||
|
FN, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Lower
|
||||||
|
* added ò and à that were on the default Planck Querty layer when used with a device with lang set to Italian
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | | _ | = | é | ò | à |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | F6 | F7 | F8 | F9 | MOUSE|NUMPAD| § | ± | { | } | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT_ortho_4x12(
|
||||||
|
IT_TILDE, IT_EXLM, IT_AT, IT_SHRP, IT_DLR, IT_PERC, IT_CRC, IT_AMPR, IT_ASTR, IT_LPRN, IT_RPRN, KC_DEL,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, S(IT_MINS), IT_EQL, S(IT_EACC), IT_OACC, IT_AACC,
|
||||||
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, MOUSE, NUMPAD, S(IT_UACC), IT_PLMN, IT_LCBR, IT_RCBR, IT_PIPE,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Raise
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | SGCOM| DESK | | | | - | + | è | ì | ù |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Caps | | PHONE| SVIV |VIVERE|MOUSE |NUMPAD| | | [ | ] | \ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | Home | PgDn | PgUp | End |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_RAISE] = LAYOUT_ortho_4x12(
|
||||||
|
IT_GRAVE, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7, IT_8, IT_9, IT_0, _______,
|
||||||
|
_______, _______, SECRET2, SECRET1, _______, _______, _______, IT_MINS, IT_PLUS, IT_EACC, IT_IACC, IT_UACC,
|
||||||
|
KC_CAPS, _______, SECRET0, SECRET3, SECRET4, MOUSE, NUMPAD, _______, _______, IT_LBRC, IT_RBRC, IT_BSLS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Numpad
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | | | | | | | 7 | 8 | 9 | - | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | 4 | 5 | 6 | + | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | |NUMPAD| 1 | 2 | 3 | = | Ent |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | 0 | / | * | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_NUMPAD] = LAYOUT_ortho_4x12(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, IT_7, IT_8, IT_9, IT_MINS, KC_BSPC,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, IT_4, IT_5, IT_6, IT_PLUS, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, NUMPAD, IT_1, IT_2, IT_3, IT_EQL, KC_ENT,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, IT_0, IT_SLSH, IT_ASTR, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust (Lower + Raise)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | |Querty| |ResetE|Reset | | | | | | | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | |Debug | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | |Music |MusON |MusOff| | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | |Voice-|Aud On|Audoff|Voice+|
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||||
|
_______, DF(QWERTY), _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, AU_ON, AU_OFF, MUV_IN
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
|
/* Function
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | Left | Down | Up | Right| | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | F6 | F7 | F8 | F9 | F10 | F1 | F2 | F3 | F4 | F5 | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | RAISE| | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_FN] = LAYOUT_ortho_4x12(
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
|
||||||
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, TG(_RAISE), _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* MOUSE
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | MOUSE| | | |Scr Up|Scr Do| |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | |But1 | | |But2 | Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_MOUSE] = LAYOUT_ortho_4x12(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, MOUSE, _______, _______, _______, KC_MS_WH_DOWN, KC_MS_WH_UP, _______,
|
||||||
|
_______, _______, _______, _______, KC_MS_BTN1, _______, _______, KC_MS_BTN2, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float plover_song[][2] = SONG(PLOVER_SOUND);
|
||||||
|
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||||
|
#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(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) {
|
||||||
|
#ifdef MOUSEKEY_ENABLE
|
||||||
|
tap_code(KC_MS_WH_DOWN);
|
||||||
|
#else
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
#ifdef MOUSEKEY_ENABLE
|
||||||
|
tap_code(KC_MS_WH_UP);
|
||||||
|
#else
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
#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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# An ANSI Italian Planck Layout
|
||||||
|
by Silvio Gulizia
|
||||||
|
|
||||||
|
- [x] add layer _FN with F keys and VI navigation
|
||||||
|
- [x] add layer _MOUSE with mouse keys
|
||||||
|
- [x] add "MOUSEKEY_ENABLE = yes" in rules.mk to enable mouse keys
|
||||||
|
- [x] add definition to control the mouse movementes in config.h
|
||||||
|
- [x] add layer _NUMPAD to have a numpad
|
||||||
|
- [x] add keycode NUMPAD to toggle _NUMPAD
|
||||||
|
- [x] modify layer ADJUST to simplify remembering commands
|
||||||
|
- [x] add custom keycodes ESCFN and TABFN on QUERTY to add the ability to use arrows with hjkl by activating layer FN when held with the definition LT(_FN,KC_ESC) and LT(_FN, KC_TAB)
|
||||||
|
- [x] added "#define USB_MAX_POWER_CONSUMPTION 100" in config.h to use the keyboard with the iPad
|
||||||
|
- [x] add "#define TAPPING_TOGGLE 3" in config.h to enable tapping toggle with 3 taps on LOWER, RAISE and MOUSE keys
|
||||||
|
- [x] add tapping toggle to LOWER, RAISE and MOUSE keys
|
||||||
|
- [x] add "KEY_LOCK_ENABLE = yes" in rules.mk to enable caps lock
|
||||||
|
- [x] add caps lock (KC_CAPS) to RAISE layer on the shift key
|
||||||
|
- [x] Add del to a thumb layer
|
||||||
|
- [x] remove key lock because it can only be used on standard keys
|
||||||
|
- [x] Add MT(MOD_LSFT, KC_ENT) shift when pressed, enter when tapped
|
||||||
|
- [x] add home, end, pgup and pgwon on _RAISE instead of arrows
|
||||||
|
- [x] add shift enter
|
||||||
|
- [x] change LSFT to S for more legibility
|
||||||
|
- [x] MT(kc) per usare shift come tasto es: MOD_LSFT(LCAG(KC_UP)). ??? MT(MOD_LSFT,KC_CAPS)
|
||||||
|
- [x] add macros on _FN to ouput website, email, tel, address, VAT ID credentials
|
||||||
|
- [x] remap F keys upon numbers on _FN
|
||||||
|
- [x] check audio functionality
|
||||||
|
- [x] Add LT(_FN, IT_D) on D on the Querty layer
|
||||||
|
|
||||||
|
- [ ] Add Hyper on ESC or TAB to be able to use it for custom keyboard shortcuts
|
||||||
|
- [ ] consider using layer configuration to have just one keymap (see as a reference qmk_firmware/layouts/community/ortho_4x12/bredfield/)
|
||||||
|
- [ ] add brightness up (KC_BRMU or KC_BRIU) and down (KC_BRMD or KC_BRID)
|
||||||
|
|
||||||
|
- [ ] add secrets file in user space to add passwords on a password layer
|
||||||
|
- [ ] consider adding midi on the planck
|
||||||
|
- [ ] consider adding AUTO_SHIFT_ENABLE = yes in rules.mk to be able to send shifted key depressing a key for twice the time
|
||||||
|
- [ ] revert IT_ to KC_ where not required
|
||||||
|
- [ ] add swap from Mac to Win key code on Adjust layer
|
||||||
|
- [ ] evaluate to add auto shift
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
SRC += muse.c
|
||||||
@@ -397,7 +397,7 @@ qmk_dict = {
|
|||||||
"_sp_swp": "SHT(KC_SPC)",
|
"_sp_swp": "SHT(KC_SPC)",
|
||||||
# Unicode support (via X()) included implicitly
|
# Unicode support (via X()) included implicitly
|
||||||
# Switching Unicode Input Modes
|
# Switching Unicode Input Modes
|
||||||
"UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_osx": "UC_M_OS",
|
"UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_mac": "UC_M_MA",
|
||||||
|
|
||||||
# custom keys
|
# custom keys
|
||||||
"altF4": "LALT(KC_F4)",
|
"altF4": "LALT(KC_F4)",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = full
|
BOOTMAGIC_ENABLE = full
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|||||||
@@ -14,16 +14,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "keymap_jp.h"
|
|
||||||
#include "../common/oled_helper.h"
|
#include "../common/oled_helper.h"
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
//Following line allows macro to read current RGB settings
|
|
||||||
extern rgblight_config_t rgblight_config;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern uint8_t is_master;
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
@@ -43,83 +35,65 @@ enum custom_keycodes {
|
|||||||
RGBRST
|
RGBRST
|
||||||
};
|
};
|
||||||
|
|
||||||
enum tapdances{
|
|
||||||
TD_SCCL = 0,
|
|
||||||
TD_SLRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Layer Mode aliases
|
|
||||||
#define _____ KC_TRNS
|
|
||||||
#define XXXXX KC_NO
|
|
||||||
|
|
||||||
#define KC_TBSF LSFT_T(KC_TAB)
|
#define KC_TBSF LSFT_T(KC_TAB)
|
||||||
// #define KC_SPSF LSFT_T(KC_SPC)
|
|
||||||
#define KC_ALAP LALT_T(KC_APP)
|
#define KC_ALAP LALT_T(KC_APP)
|
||||||
#define KC_JEQL LSFT(KC_MINS)
|
#define KC_GRSF RSFT_T(KC_GRV)
|
||||||
|
|
||||||
#define KC_SCCL TD(TD_SCCL)
|
|
||||||
#define KC_SLRO TD(TD_SLRO)
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
|
||||||
[TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_RO),
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BASE] = LAYOUT_base( \
|
[_BASE] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,\
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT,\
|
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, \
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
KC_DEL \
|
KC_GRSF \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_LOWER] = LAYOUT_base( \
|
[_LOWER] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, XXXXX, KC_SCLN, KC_QUOT, _____,\
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, _______,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, KC_F11, KC_F12, XXXXX, KANJI, KC_ENT, XXXXX, XXXXX, KC_COMM, KC_DOT, KC_GRV, KC_PGUP, \
|
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_GRV, KC_PGUP, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END,\
|
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_RAISE] = LAYOUT_base( \
|
[_RAISE] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
_____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXX,\
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_4, KC_5, KC_6, KC_QUOT, _____,\
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXX, \
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, _____, _____, _____, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT_base( \
|
[_ADJUST] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
XXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXX, XXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXX,\
|
XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
XXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXX, XXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXX,\
|
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXX, XXXXX, XXXXX, KC_BTN1, KC_BTN2, XXXXX, KC_MS_U, \
|
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, XXXXX, XXXXX, _____, XXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,17 +19,12 @@ Layer Tapはタップで指定したキー、長押しで指定したレイヤ
|
|||||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||||
|
|
||||||
Tap Danceは指定した二つのキーをシングルタップ、ダブルタップで切り替えられます。
|
|
||||||
例:[TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT) → シングルタップでCOMM、ダブルタップでDOT
|
|
||||||
|
|
||||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||||
|
|
||||||
## 機能
|
## 機能
|
||||||
|
|
||||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||||
DOTの横、SLROと書いてあるのはシングルタップで/記号、ダブルタップで\記号が入力出来るようになっています。
|
|
||||||
Lの横、SCCLと書いてあるのはシングルタップで;記号、ダブルタップで:記号が入力出来るようになっています。
|
|
||||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||||
|
|
||||||
## 48キー目について
|
## 48キー目について
|
||||||
@@ -39,11 +34,11 @@ Tap Danceは指定した二つのキーをシングルタップ、ダブルタ
|
|||||||
各レイヤーの最下段の
|
各レイヤーの最下段の
|
||||||
|
|
||||||
```c
|
```c
|
||||||
XXXXX \
|
XXXXXXX \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
```
|
```
|
||||||
|
|
||||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
のXXXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||||
|
|
||||||
## OS切り替え方法
|
## OS切り替え方法
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
OLED_DRIVER_ENABLE = no
|
OLED_DRIVER_ENABLE = yes
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
# If you want to change the display of OLED, you need to change here
|
# If you want to change the display of OLED, you need to change here
|
||||||
|
|||||||
@@ -14,16 +14,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "keymap_jp.h"
|
|
||||||
#include "../common/oled_helper.h"
|
#include "../common/oled_helper.h"
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
//Following line allows macro to read current RGB settings
|
|
||||||
extern rgblight_config_t rgblight_config;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern uint8_t is_master;
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
@@ -43,83 +35,65 @@ enum custom_keycodes {
|
|||||||
RGBRST
|
RGBRST
|
||||||
};
|
};
|
||||||
|
|
||||||
enum tapdances{
|
|
||||||
TD_SCCL = 0,
|
|
||||||
TD_SLRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Layer Mode aliases
|
|
||||||
#define _____ KC_TRNS
|
|
||||||
#define XXXXX KC_NO
|
|
||||||
|
|
||||||
#define KC_TBSF LSFT_T(KC_TAB)
|
#define KC_TBSF LSFT_T(KC_TAB)
|
||||||
// #define KC_SPSF LSFT_T(KC_SPC)
|
|
||||||
#define KC_ALAP LALT_T(KC_APP)
|
#define KC_ALAP LALT_T(KC_APP)
|
||||||
#define KC_JEQL LSFT(KC_MINS)
|
#define KC_ROSF RSFT_T(KC_RO)
|
||||||
|
|
||||||
#define KC_SCCL TD(TD_SCCL)
|
|
||||||
#define KC_SLRO TD(TD_SLRO)
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
|
||||||
[TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_RO),
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BASE] = LAYOUT_base( \
|
[_BASE] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,\
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT,\
|
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, \
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
KC_DEL \
|
KC_ROSF \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_LOWER] = LAYOUT_base( \
|
[_LOWER] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL,\
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _____,\
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, KC_F11, KC_F12, XXXXX, KANJI, KC_ENT, XXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, \
|
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END,\
|
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_RAISE] = LAYOUT_base( \
|
[_RAISE] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
_____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXX,\
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_4, KC_5, KC_6, KC_QUOT, _____,\
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXX, \
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, _____, _____, _____, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT_base( \
|
[_ADJUST] = LAYOUT_base( \
|
||||||
//,--------------------------------------------------------------------------------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------.
|
||||||
XXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXX, XXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXX,\
|
XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||||
XXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXX, XXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXX,\
|
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXX, XXXXX, XXXXX, KC_BTN1, KC_BTN2, XXXXX, KC_MS_U, \
|
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, \
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, XXXXX, XXXXX, _____, XXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
||||||
//`-------------------------------------------------------------------------------------------------------------------'
|
//`-------------------------------------------------------------------------------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,17 +19,12 @@ Layer Tapはタップで指定したキー、長押しで指定したレイヤ
|
|||||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||||
|
|
||||||
Tap Danceは指定した二つのキーをシングルタップ、ダブルタップで切り替えられます。
|
|
||||||
例:[TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT) → シングルタップでCOMM、ダブルタップでDOT
|
|
||||||
|
|
||||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||||
|
|
||||||
## 機能
|
## 機能
|
||||||
|
|
||||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||||
DOTの横、SLROと書いてあるのはシングルタップで/記号、ダブルタップで\記号が入力出来るようになっています。
|
|
||||||
Lの横、SCCLと書いてあるのはシングルタップで;記号、ダブルタップで:記号が入力出来るようになっています。
|
|
||||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||||
|
|
||||||
## 48キー目について
|
## 48キー目について
|
||||||
@@ -39,8 +34,8 @@ Tap Danceは指定した二つのキーをシングルタップ、ダブルタ
|
|||||||
各レイヤーの最下段の
|
各レイヤーの最下段の
|
||||||
|
|
||||||
```c
|
```c
|
||||||
XXXXX \
|
XXXXXXX \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
```
|
```
|
||||||
|
|
||||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
OLED_DRIVER_ENABLE = no
|
OLED_DRIVER_ENABLE = yes
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
# If you want to change the display of OLED, you need to change here
|
# If you want to change the display of OLED, you need to change here
|
||||||
|
|||||||
@@ -14,16 +14,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "keymap_jp.h"
|
|
||||||
#include "../common/oled_helper.h"
|
#include "../common/oled_helper.h"
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
//Following line allows macro to read current RGB settings
|
|
||||||
extern rgblight_config_t rgblight_config;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern uint8_t is_master;
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
@@ -48,18 +40,9 @@ enum custom_keycodes {
|
|||||||
RGBRST
|
RGBRST
|
||||||
};
|
};
|
||||||
|
|
||||||
enum tapdances{
|
|
||||||
TD_SCCL = 0,
|
|
||||||
TD_SLRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Layer Mode aliases
|
|
||||||
#define _____ KC_TRNS
|
|
||||||
#define XXXXX KC_NO
|
|
||||||
|
|
||||||
#define KC_TBSF LSFT_T(KC_TAB)
|
#define KC_TBSF LSFT_T(KC_TAB)
|
||||||
// #define KC_SPSF LSFT_T(KC_SPC)
|
|
||||||
#define KC_ALAP LALT_T(KC_APP)
|
#define KC_ALAP LALT_T(KC_APP)
|
||||||
|
|
||||||
#define KC_JEQL LSFT(KC_MINS)
|
#define KC_JEQL LSFT(KC_MINS)
|
||||||
#define KC_SFUC LSFT(KC_RO)
|
#define KC_SFUC LSFT(KC_RO)
|
||||||
#define KC_RSBR LSFT(KC_8)
|
#define KC_RSBR LSFT(KC_8)
|
||||||
@@ -70,43 +53,35 @@ enum tapdances{
|
|||||||
#define KC_TBAL LALT_T(KC_TAB)
|
#define KC_TBAL LALT_T(KC_TAB)
|
||||||
#define KC_11SF LSFT_T(KC_F11)
|
#define KC_11SF LSFT_T(KC_F11)
|
||||||
|
|
||||||
#define KC_SCCL TD(TD_SCCL)
|
|
||||||
#define KC_SLRO TD(TD_SLRO)
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
|
||||||
[TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_RO),
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BASE] = LAYOUT_rs( \
|
[_BASE] = LAYOUT_rs( \
|
||||||
// Treadstone48 Rhymestone
|
// Treadstone48 Rhymestone
|
||||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_NLCK,\
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_NLCK,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TAB,\
|
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TAB,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PENT,\
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PENT,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, LOWER, KC_P0, KC_PDOT, KC_PPLS, KC_BSPC,\
|
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, LOWER, KC_P0, KC_PDOT, KC_PPLS, KC_BSPC,\
|
||||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||||
KC_DEL \
|
KC_DEL \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_LOWER] = LAYOUT_rs( \
|
[_LOWER] = LAYOUT_rs( \
|
||||||
// Treadstone48 Rhymestone
|
// Treadstone48 Rhymestone
|
||||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_A, KC_B, KC_C, KC_JYEN, KC_HASH,\
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_A, KC_B, KC_C, KC_JYEN, KC_HASH,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _____, KC_D, KC_E, KC_F, KC_PERC, KC_SFUC,\
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______, KC_D, KC_E, KC_F, KC_PERC, KC_SFUC,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, KC_F11, KC_F12, BASES, KANJI, KC_ENT, XXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_RSBR, KC_REBR, KC_RBRC, KC_QUOT, _____,\
|
_______, KC_F11, KC_F12, BASES, KANJI, KC_ENT, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_RSBR, KC_REBR, KC_RBRC, KC_QUOT, _______,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END, _____, XXXXX, KC_COMM, KC_JEQL, KC_DEL,\
|
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, _______, XXXXXXX, KC_COMM, KC_JEQL, KC_DEL,\
|
||||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_BASES] = LAYOUT_rs( \
|
[_BASES] = LAYOUT_rs( \
|
||||||
@@ -114,59 +89,59 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_Q, KC_W, KC_E, KC_R, KC_T,\
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_Q, KC_W, KC_E, KC_R, KC_T,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G,\
|
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, KC_ZSFT, KC_X, KC_C, KC_V, KC_B,\
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ZSFT, KC_X, KC_C, KC_V, KC_B,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, KC_ESCT, KC_TBAL, KC_LGUI, LOWRS, KC_BSPC,\
|
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, KC_ESCT, KC_TBAL, KC_LGUI, LOWRS, KC_BSPC,\
|
||||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||||
KC_DEL \
|
KC_DEL \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_LOWRS] = LAYOUT_rs( \
|
[_LOWRS] = LAYOUT_rs( \
|
||||||
// Treadstone48 Rhymestone
|
// Treadstone48 Rhymestone
|
||||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,\
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, KC_F11, KC_F12, BASE, KANJI, KC_ENT, XXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_11SF, KC_F12, BASE, KANJI, KC_ENT,\
|
_______, KC_F11, KC_F12, BASE, KANJI, KC_ENT, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_11SF, KC_F12, BASE, KANJI, KC_ENT,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END, _____, _____, _____, _____, KC_DEL,\
|
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, KC_DEL,\
|
||||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_RAISE] = LAYOUT_rs( \
|
[_RAISE] = LAYOUT_rs( \
|
||||||
// Treadstone48 Rhymestone
|
// Treadstone48 Rhymestone
|
||||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||||
_____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_4, KC_5, KC_6, KC_QUOT, _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, _____, _____, _____, KC_0, KC_DOT, KC_COMM, KC_SLSH, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
),
|
),
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT_rs( \
|
[_ADJUST] = LAYOUT_rs( \
|
||||||
// Treadstone48 Rhymestone
|
// Treadstone48 Rhymestone
|
||||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||||
XXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXX, XXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||||
XXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXX, XXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXX, XXXXX, XXXXX, KC_BTN1, KC_BTN2, XXXXX, KC_MS_U, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||||
_____, _____, _____, _____, XXXXX, XXXXX, _____, XXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||||
XXXXX \
|
_______ \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -23,17 +23,12 @@ Layer Tapはタップで指定したキー、長押しで指定したレイヤ
|
|||||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||||
|
|
||||||
Tap Danceは指定した二つのキーをシングルタップ、ダブルタップで切り替えられます。
|
|
||||||
例:[TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT) → シングルタップでCOMM、ダブルタップでDOT
|
|
||||||
|
|
||||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||||
|
|
||||||
## 機能
|
## 機能
|
||||||
|
|
||||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||||
DOTの横、SLROと書いてあるのはシングルタップで/記号、ダブルタップで\記号が入力出来るようになっています。
|
|
||||||
Lの横、SCCLと書いてあるのはシングルタップで;記号、ダブルタップで:記号が入力出来るようになっています。
|
|
||||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||||
|
|
||||||
## 48キー目について
|
## 48キー目について
|
||||||
@@ -43,8 +38,8 @@ Tap Danceは指定した二つのキーをシングルタップ、ダブルタ
|
|||||||
各レイヤーの最下段の
|
各レイヤーの最下段の
|
||||||
|
|
||||||
```c
|
```c
|
||||||
XXXXX \
|
XXXXXXX \
|
||||||
// ExtraKey: Split backspace key or it is below the enter key.
|
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||||
```
|
```
|
||||||
|
|
||||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
OLED_DRIVER_ENABLE = no
|
OLED_DRIVER_ENABLE = yes
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
# If you use connection the Rhymestone, please enable RS_EXTRA_LED
|
# If you use connection the Rhymestone, please enable RS_EXTRA_LED
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = no
|
BOOTMAGIC_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
|||||||
BOOTMAGIC_ENABLE = full
|
BOOTMAGIC_ENABLE = full
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Hybrid Monstrosity
|
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Hybrid Monstrosity
|
||||||
|
|
||||||
#undef DEBOUNCE
|
#undef DEBOUNCE
|
||||||
#define DEBOUNCE 30
|
#define DEBOUNCE 60
|
||||||
|
|
||||||
#define TAPPING_TERM_PER_KEY
|
#define TAPPING_TERM_PER_KEY
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
BOOTMAGIC_ENABLE = lite
|
BOOTMAGIC_ENABLE = lite
|
||||||
TAP_DANCE_ENABLE = no
|
TAP_DANCE_ENABLE = yes
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
CONSOLE_ENABLE = no
|
CONSOLE_ENABLE =
|
||||||
SPACE_CADET_ENABLE = no
|
SPACE_CADET_ENABLE = no
|
||||||
|
|
||||||
ifeq ($(strip $(KEYBOARD)), ergodox_ez)
|
ifeq ($(strip $(KEYBOARD)), ergodox_ez)
|
||||||
@@ -10,7 +9,7 @@ ifeq ($(strip $(KEYBOARD)), ergodox_ez)
|
|||||||
RGB_MATRIX_ENABLE = yes
|
RGB_MATRIX_ENABLE = yes
|
||||||
RGBLIGHT_TWINKLE = no
|
RGBLIGHT_TWINKLE = no
|
||||||
INDICATOR_LIGHTS = no
|
INDICATOR_LIGHTS = no
|
||||||
RGBLIGHT_STARTUP_ANIMATION = no
|
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
UNICODE_ENABLE = yes
|
UNICODE_ENABLE = yes
|
||||||
|
|||||||
@@ -62,6 +62,8 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define EEPROM_I2C_RM24C512C
|
||||||
|
|
||||||
#define ENCODER_DIRECTION_FLIP
|
#define ENCODER_DIRECTION_FLIP
|
||||||
/*
|
/*
|
||||||
* MIDI options
|
* MIDI options
|
||||||
|
|||||||
@@ -18,8 +18,10 @@ else
|
|||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = yes
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||||
RGB_MATRIX_ENABLE = no
|
RGB_MATRIX_ENABLE = no
|
||||||
AUDIO_ENABLE = yes
|
AUDIO_ENABLE = yes
|
||||||
|
EEPROM_DRIVER = i2c
|
||||||
endif
|
endif
|
||||||
ifeq ($(strip $(KEYBOARD)), planck/light)
|
ifeq ($(strip $(KEYBOARD)), planck/light)
|
||||||
RGB_MATRIX_ENABLE = yes
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
|||||||
@@ -0,0 +1,187 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LV_GRV KC_GRV // `
|
||||||
|
#define LV_1 KC_1 // 1
|
||||||
|
#define LV_2 KC_2 // 2
|
||||||
|
#define LV_3 KC_3 // 3
|
||||||
|
#define LV_4 KC_4 // 4
|
||||||
|
#define LV_5 KC_5 // 5
|
||||||
|
#define LV_6 KC_6 // 6
|
||||||
|
#define LV_7 KC_7 // 7
|
||||||
|
#define LV_8 KC_8 // 8
|
||||||
|
#define LV_9 KC_9 // 9
|
||||||
|
#define LV_0 KC_0 // 0
|
||||||
|
#define LV_MINS KC_MINS // -
|
||||||
|
#define LV_EQL KC_EQL // =
|
||||||
|
// Row 2
|
||||||
|
#define LV_Q KC_Q // Q
|
||||||
|
#define LV_W KC_W // W
|
||||||
|
#define LV_E KC_E // E
|
||||||
|
#define LV_R KC_R // R
|
||||||
|
#define LV_T KC_T // T
|
||||||
|
#define LV_Y KC_Y // Y
|
||||||
|
#define LV_U KC_U // U
|
||||||
|
#define LV_I KC_I // I
|
||||||
|
#define LV_O KC_O // O
|
||||||
|
#define LV_P KC_P // P
|
||||||
|
#define LV_LBRC KC_LBRC // [
|
||||||
|
#define LV_RBRC KC_RBRC // ]
|
||||||
|
// Row 3
|
||||||
|
#define LV_A KC_A // A
|
||||||
|
#define LV_S KC_S // S
|
||||||
|
#define LV_D KC_D // D
|
||||||
|
#define LV_F KC_F // F
|
||||||
|
#define LV_G KC_G // G
|
||||||
|
#define LV_H KC_H // H
|
||||||
|
#define LV_J KC_J // J
|
||||||
|
#define LV_K KC_K // K
|
||||||
|
#define LV_L KC_L // L
|
||||||
|
#define LV_SCLN KC_SCLN // ;
|
||||||
|
#define LV_QUOT KC_QUOT // ' (dead)
|
||||||
|
#define LV_BSLS KC_NUHS // (backslash)
|
||||||
|
// Row 4
|
||||||
|
#define LV_NUBS KC_NUBS // (backslash)
|
||||||
|
#define LV_Z KC_Z // Z
|
||||||
|
#define LV_X KC_X // X
|
||||||
|
#define LV_C KC_C // C
|
||||||
|
#define LV_V KC_V // V
|
||||||
|
#define LV_B KC_B // B
|
||||||
|
#define LV_N KC_N // N
|
||||||
|
#define LV_M KC_M // M
|
||||||
|
#define LV_COMM KC_COMM // ,
|
||||||
|
#define LV_DOT KC_DOT // .
|
||||||
|
#define LV_SLSH KC_SLSH // /
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LV_TILD S(LV_GRV) // ~
|
||||||
|
#define LV_EXLM S(LV_1) // !
|
||||||
|
#define LV_AT S(LV_2) // @
|
||||||
|
#define LV_HASH S(LV_3) // #
|
||||||
|
#define LV_DLR S(LV_4) // $
|
||||||
|
#define LV_PERC S(LV_5) // %
|
||||||
|
#define LV_CIRC S(LV_6) // ^
|
||||||
|
#define LV_AMPR S(LV_7) // &
|
||||||
|
#define LV_ASTR S(LV_8) // *
|
||||||
|
#define LV_LPRN S(LV_9) // (
|
||||||
|
#define LV_RPRN S(LV_0) // )
|
||||||
|
#define LV_UNDS S(LV_MINS) // _
|
||||||
|
#define LV_PLUS S(LV_EQL) // +
|
||||||
|
// Row 2
|
||||||
|
#define LV_LCBR S(LV_LBRC) // {
|
||||||
|
#define LV_RCBR S(LV_RBRC) // }
|
||||||
|
// Row 3
|
||||||
|
#define LV_COLN S(LV_SCLN) // :
|
||||||
|
#define LV_DQUO S(LV_QUOT) // " (dead)
|
||||||
|
#define LV_PIPE S(LV_BSLS) // |
|
||||||
|
// Row 4
|
||||||
|
#define LV_LABK S(LV_COMM) // <
|
||||||
|
#define LV_RABK S(LV_DOT) // >
|
||||||
|
#define LV_QUES S(LV_SLSH) // ?
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ - │ │ « │ » │ € │ │ ’ │ │ │ │ │ – │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ Ē │ Ŗ │ │ │ Ū │ Ī │ Ō │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ Ā │ Š │ │ │ Ģ │ │ │ Ķ │ Ļ │ │ ´ │ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ Ž │ │ Č │ │ │ Ņ │ │ │ │ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LV_SHYP ALGR(LV_GRV) // - (soft hyphen)
|
||||||
|
#define LV_NBSP ALGR(LV_1) // (non-breaking space)
|
||||||
|
#define LV_LDAQ ALGR(LV_2) // «
|
||||||
|
#define LV_RDAQ ALGR(LV_3) // »
|
||||||
|
#define LV_EURO ALGR(LV_4) // €
|
||||||
|
#define LV_RSQU ALGR(LV_6) // ’
|
||||||
|
#define LV_NDSH ALGR(LV_MINS) // –
|
||||||
|
// Row 2
|
||||||
|
#define LV_EMAC ALGR(LV_E) // Ē
|
||||||
|
#define LV_RCED ALGR(LV_R) // Ŗ
|
||||||
|
#define LV_UMAC ALGR(LV_U) // Ū
|
||||||
|
#define LV_IMAC ALGR(LV_I) // Ī
|
||||||
|
#define LV_OMAC ALGR(LV_O) // Ō
|
||||||
|
// Row 3
|
||||||
|
#define LV_AMAC ALGR(LV_A) // Ā
|
||||||
|
#define LV_SCAR ALGR(LV_S) // Š
|
||||||
|
#define LV_GCED ALGR(LV_G) // Ģ
|
||||||
|
#define LV_KCED ALGR(LV_K) // Ķ
|
||||||
|
#define LV_LCED ALGR(LV_L) // Ļ
|
||||||
|
#define LV_ACUT ALGR(LV_QUOT) // ´ (dead)
|
||||||
|
// Row 4
|
||||||
|
#define LV_ZCAR ALGR(LV_Z) // Ž
|
||||||
|
#define LV_CCAR ALGR(LV_Z) // Č
|
||||||
|
#define LV_NCED ALGR(LV_Z) // Ņ
|
||||||
|
|
||||||
|
/* Shift+AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ │ │ │ │ § │ ° │ │ ± │ × │ │ │ — │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LV_SECT S(ALGR(LV_4)) // §
|
||||||
|
#define LV_DEG S(ALGR(LV_5)) // °
|
||||||
|
#define LV_PLMN S(ALGR(LV_7)) // ±
|
||||||
|
#define LV_MUL S(ALGR(LV_8)) // ×
|
||||||
|
#define LV_MDSH S(ALGR(LV_MINS)) // —
|
||||||
|
// Row 3
|
||||||
|
#define LV_DIAE S(ALGR(LV_QUOT)) // ¨ (dead)
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ` │ ! │ - │ / │ ; │ : │ , │ . │ = │ ( │ ) │ ? │ X │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ Ą │ Ž │ E │ R │ T │ Y │ U │ I │ O │ P │ Į │ W │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ A │ S │ D │ Š │ G │ H │ J │ K │ L │ Ų │ Ė │ Q │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ < │ Z │ Ū │ C │ V │ B │ N │ M │ Č │ F │ Ę │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_GRV KC_GRV // `
|
||||||
|
#define LT_EXLM KC_1 // !
|
||||||
|
#define LT_MINS KC_2 // -
|
||||||
|
#define LT_SLSH KC_3 // /
|
||||||
|
#define LT_SCLN KC_4 // ;
|
||||||
|
#define LT_COLN KC_5 // :
|
||||||
|
#define LT_COMM KC_6 // ,
|
||||||
|
#define LT_DOT KC_7 // .
|
||||||
|
#define LT_EQL KC_8 // =
|
||||||
|
#define LT_LPRN KC_9 // (
|
||||||
|
#define LT_RPRN KC_0 // )
|
||||||
|
#define LT_QUES KC_MINS // ?
|
||||||
|
#define LT_X KC_EQL // X
|
||||||
|
// Row 2
|
||||||
|
#define LT_AOGO KC_Q // Ą
|
||||||
|
#define LT_ZCAR KC_W // Ž
|
||||||
|
#define LT_E KC_E // E
|
||||||
|
#define LT_R KC_R // R
|
||||||
|
#define LT_T KC_T // T
|
||||||
|
#define LT_Y KC_Y // Y
|
||||||
|
#define LT_U KC_U // U
|
||||||
|
#define LT_I KC_I // I
|
||||||
|
#define LT_O KC_O // O
|
||||||
|
#define LT_P KC_P // P
|
||||||
|
#define LT_IOGO KC_LBRC // Į
|
||||||
|
#define LT_W KC_RBRC // W
|
||||||
|
// Row 3
|
||||||
|
#define LT_A KC_A // A
|
||||||
|
#define LT_S KC_S // S
|
||||||
|
#define LT_D KC_D // D
|
||||||
|
#define LT_SCAR KC_F // Š
|
||||||
|
#define LT_G KC_G // G
|
||||||
|
#define LT_H KC_H // H
|
||||||
|
#define LT_J KC_J // J
|
||||||
|
#define LT_K KC_K // K
|
||||||
|
#define LT_L KC_L // L
|
||||||
|
#define LT_UOGO KC_SCLN // Ų
|
||||||
|
#define LT_EDOT KC_QUOT // Ė
|
||||||
|
#define LT_Q KC_NUHS // Q
|
||||||
|
// Row 4
|
||||||
|
#define LT_LABK KC_NUBS // <
|
||||||
|
#define LT_Z KC_Z // Z
|
||||||
|
#define LT_UMAC KC_X // Ū
|
||||||
|
#define LT_C KC_C // C
|
||||||
|
#define LT_V KC_V // V
|
||||||
|
#define LT_B KC_B // B
|
||||||
|
#define LT_N KC_N // N
|
||||||
|
#define LT_M KC_M // M
|
||||||
|
#define LT_CCAR KC_COMM // Č
|
||||||
|
#define LT_F KC_DOT // F
|
||||||
|
#define LT_EOGO KC_SLSH // Ę
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ > │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_TILD S(LT_GRV) // ~
|
||||||
|
#define LT_1 S(LT_EXLM) // 1
|
||||||
|
#define LT_2 S(LT_MINS) // 2
|
||||||
|
#define LT_3 S(LT_SLSH) // 3
|
||||||
|
#define LT_4 S(LT_SCLN) // 4
|
||||||
|
#define LT_5 S(LT_COLN) // 5
|
||||||
|
#define LT_6 S(LT_COMM) // 6
|
||||||
|
#define LT_7 S(LT_DOT) // 7
|
||||||
|
#define LT_8 S(LT_EQL) // 8
|
||||||
|
#define LT_9 S(LT_LPRN) // 9
|
||||||
|
#define LT_0 S(LT_RPRN) // 0
|
||||||
|
#define LT_PLUS S(LT_QUES) // +
|
||||||
|
// Row 4
|
||||||
|
#define LT_RABK S(LT_LABK) // >
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ´ │ @ │ _ │ # │ $ │ § │ ^ │ & │ * │ [ │ ] │ ' │ % │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ € │ │ │ │ │ │ │ │ { │ } │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ " │ | │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ – │ │ │ │ │ │ │ │ „ │ “ │ \ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_ACUT ALGR(LT_GRV) // ´
|
||||||
|
#define LT_AT ALGR(LT_EXLM) // @
|
||||||
|
#define LT_UNDS ALGR(LT_MINS) // _
|
||||||
|
#define LT_HASH ALGR(LT_SLSH) // #
|
||||||
|
#define LT_DLR ALGR(LT_SCLN) // $
|
||||||
|
#define LT_SECT ALGR(LT_COLN) // §
|
||||||
|
#define LT_CIRC ALGR(LT_COMM) // ^
|
||||||
|
#define LT_AMPR ALGR(LT_DOT) // &
|
||||||
|
#define LT_ASTR ALGR(LT_EQL) // *
|
||||||
|
#define LT_LBRC ALGR(LT_LRPN) // [
|
||||||
|
#define LT_RBRC ALGR(LT_RPRN) // ]
|
||||||
|
#define LT_QUOT ALGR(LT_QUES) // '
|
||||||
|
#define LT_PERC ALGR(LT_X) // %
|
||||||
|
// Row 2
|
||||||
|
#define LT_EURO ALGR(LT_E) // €
|
||||||
|
#define LT_LCBR ALGR(LT_IOGO) // {
|
||||||
|
#define LT_RCBR ALGR(LT_W) // }
|
||||||
|
// Row 3
|
||||||
|
#define LT_DQUO ALGR(LT_EDOT) // "
|
||||||
|
#define LT_PIPE ALGR(LT_Q) // |
|
||||||
|
// Row 4
|
||||||
|
#define LT_NDSH ALGR(LT_LABK) // –
|
||||||
|
#define LT_DLQU ALGR(LT_CCAR) // „
|
||||||
|
#define LT_LDQU ALGR(LT_F) // “
|
||||||
|
#define LT_BSLS ALGR(LT_EOGO) // (backslash)
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ` │ Ą │ Č │ Ę │ Ė │ Į │ Š │ Ų │ Ū │ 9 │ 0 │ - │ Ž │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_GRV KC_GRV // `
|
||||||
|
#define LT_AOGO KC_1 // Ą
|
||||||
|
#define LT_CCAR KC_2 // Č
|
||||||
|
#define LT_EOGO KC_3 // Ę
|
||||||
|
#define LT_EDOT KC_4 // Ė
|
||||||
|
#define LT_IOGO KC_5 // Į
|
||||||
|
#define LT_SCAR KC_6 // Š
|
||||||
|
#define LT_UOGO KC_7 // Ų
|
||||||
|
#define LT_UMAC KC_8 // Ū
|
||||||
|
#define LT_9 KC_9 // 9
|
||||||
|
#define LT_0 KC_0 // 0
|
||||||
|
#define LT_MINS KC_MINS // -
|
||||||
|
#define LT_ZCAR KC_EQL // Ž
|
||||||
|
// Row 2
|
||||||
|
#define LT_Q KC_Q // Q
|
||||||
|
#define LT_W KC_W // W
|
||||||
|
#define LT_E KC_E // E
|
||||||
|
#define LT_R KC_R // R
|
||||||
|
#define LT_T KC_T // T
|
||||||
|
#define LT_Y KC_Y // Y
|
||||||
|
#define LT_U KC_U // U
|
||||||
|
#define LT_I KC_I // I
|
||||||
|
#define LT_O KC_O // O
|
||||||
|
#define LT_P KC_P // P
|
||||||
|
#define LT_LBRC KC_LBRC // [
|
||||||
|
#define LT_RBRC KC_RBRC // ]
|
||||||
|
// Row 3
|
||||||
|
#define LT_A KC_A // A
|
||||||
|
#define LT_S KC_S // S
|
||||||
|
#define LT_D KC_D // D
|
||||||
|
#define LT_F KC_F // F
|
||||||
|
#define LT_G KC_G // G
|
||||||
|
#define LT_H KC_H // H
|
||||||
|
#define LT_J KC_J // J
|
||||||
|
#define LT_K KC_K // K
|
||||||
|
#define LT_L KC_L // L
|
||||||
|
#define LT_SCLN KC_SCLN // ;
|
||||||
|
#define LT_QUOT KC_QUOT // '
|
||||||
|
#define LT_BSLS KC_NUHS // (backslash)
|
||||||
|
// Row 4
|
||||||
|
#define LT_Z KC_Z // Z
|
||||||
|
#define LT_X KC_X // X
|
||||||
|
#define LT_C KC_C // C
|
||||||
|
#define LT_V KC_V // V
|
||||||
|
#define LT_B KC_B // B
|
||||||
|
#define LT_N KC_N // N
|
||||||
|
#define LT_M KC_M // M
|
||||||
|
#define LT_COMM KC_COMM // ,
|
||||||
|
#define LT_DOT KC_DOT // .
|
||||||
|
#define LT_SLSH KC_SLSH // /
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ~ │ │ │ │ │ │ │ │ │ ( │ ) │ _ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_TILD S(LT_GRV) // ~
|
||||||
|
#define LT_LPRN S(LT_9) // (
|
||||||
|
#define LT_RPRN S(LT_0) // )
|
||||||
|
#define LT_UNDS S(LT_MINS) // *
|
||||||
|
// Row 2
|
||||||
|
#define LT_LCBR S(LT_LBRC) // {
|
||||||
|
#define LT_RCBR S(LT_RBRC) // }
|
||||||
|
// Row 3
|
||||||
|
#define LT_COLN S(LT_SCLN) // ;
|
||||||
|
#define LT_DQUO S(LT_QUOT) // "
|
||||||
|
#define LT_PIPE S(LT_BSLS) // |
|
||||||
|
// Row 4
|
||||||
|
#define LT_LABK S(LT_COMM) // <
|
||||||
|
#define LT_RABK S(LT_DOT) // >
|
||||||
|
#define LT_QUES S(LT_SLSH) // ?
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ │ │ │ = │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_1 ALGR(LT_AOGO) // 1
|
||||||
|
#define LT_2 ALGR(LT_CCAR) // 2
|
||||||
|
#define LT_3 ALGR(LT_EOGO) // 3
|
||||||
|
#define LT_4 ALGR(LT_EDOT) // 4
|
||||||
|
#define LT_5 ALGR(LT_IOGO) // 5
|
||||||
|
#define LT_6 ALGR(LT_SCAR) // 6
|
||||||
|
#define LT_7 ALGR(LT_UOGO) // 7
|
||||||
|
#define LT_8 ALGR(LT_UMAC) // 8
|
||||||
|
#define LT_EQL ALGR(LT_PLUS) // =
|
||||||
|
// Row 2
|
||||||
|
#define LT_EURO ALGR(LT_E) // €
|
||||||
|
|
||||||
|
/* Shift+AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ │ │ │ + │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define LT_EXLM S(ALGR(LT_AOGO)) // !
|
||||||
|
#define LT_AT S(ALGR(LT_CCAR)) // @
|
||||||
|
#define LT_HASH S(ALGR(LT_EOGO)) // #
|
||||||
|
#define LT_DLR S(ALGR(LT_EDOT)) // $
|
||||||
|
#define LT_PERC S(ALGR(LT_IOGO)) // %
|
||||||
|
#define LT_CIRC S(ALGR(LT_SCAR)) // ^
|
||||||
|
#define LT_AMPR S(ALGR(LT_UOGO)) // &
|
||||||
|
#define LT_ASTR S(ALGR(LT_UMAC)) // *
|
||||||
|
#define LT_PLUS S(ALGR(LT_PLUS)) // +
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ Љ │ Њ │ Е │ Р │ Т │ З │ У │ И │ О │ П │ Ш │ Ђ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ А │ С │ Д │ Ф │ Г │ Х │ Ј │ К │ Л │ Ч │ Ћ │ Ж │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ < │ Ѕ │ Џ │ Ц │ В │ Б │ Н │ М │ , │ . │ - │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define RS_GRV KC_GRV // `
|
||||||
|
#define RS_1 KC_1 // 1
|
||||||
|
#define RS_2 KC_2 // 2
|
||||||
|
#define RS_3 KC_3 // 3
|
||||||
|
#define RS_4 KC_4 // 4
|
||||||
|
#define RS_5 KC_5 // 5
|
||||||
|
#define RS_6 KC_6 // 6
|
||||||
|
#define RS_7 KC_7 // 7
|
||||||
|
#define RS_8 KC_8 // 8
|
||||||
|
#define RS_9 KC_9 // 9
|
||||||
|
#define RS_0 KC_0 // 0
|
||||||
|
#define RS_QUOT KC_MINS // ' (dead)
|
||||||
|
#define RS_PLUS KC_EQL // +
|
||||||
|
// Row 2
|
||||||
|
#define RS_LJE KC_Q // Љ
|
||||||
|
#define RS_NJE KC_W // Њ
|
||||||
|
#define RS_IE KC_E // Е
|
||||||
|
#define RS_ER KC_R // Р
|
||||||
|
#define RS_TE KC_T // Т
|
||||||
|
#define RS_ZE KC_Y // З
|
||||||
|
#define RS_U KC_U // У
|
||||||
|
#define RS_I KC_I // И
|
||||||
|
#define RS_O KC_O // О
|
||||||
|
#define RS_PE KC_P // П
|
||||||
|
#define RS_SHA KC_LBRC // Ш
|
||||||
|
#define RS_DJE KC_RBRC // Ђ
|
||||||
|
// Row 3
|
||||||
|
#define RS_A KC_A // А
|
||||||
|
#define RS_ES KC_S // С
|
||||||
|
#define RS_DE KC_D // Д
|
||||||
|
#define RS_EF KC_F // Ф
|
||||||
|
#define RS_GHE KC_G // Г
|
||||||
|
#define RS_HA KC_H // Х
|
||||||
|
#define RS_JE KC_J // Ј
|
||||||
|
#define RS_KA KC_K // К
|
||||||
|
#define RS_EL KC_L // Л
|
||||||
|
#define RS_CHE KC_SCLN // Ч
|
||||||
|
#define RS_TSHE KC_QUOT // Ћ
|
||||||
|
#define RS_ZHE KC_NUHS // Ж
|
||||||
|
// Row 4
|
||||||
|
#define RS_LABK KC_NUBS // <
|
||||||
|
#define RS_DZE KC_Z // Ѕ
|
||||||
|
#define RS_DZHE KC_X // Џ
|
||||||
|
#define RS_TSE KC_C // Ц
|
||||||
|
#define RS_VE KC_V // В
|
||||||
|
#define RS_BE KC_B // Б
|
||||||
|
#define RS_EN KC_N // Н
|
||||||
|
#define RS_EM KC_M // М
|
||||||
|
#define RS_COMM KC_COMM // ,
|
||||||
|
#define RS_DOT KC_DOT // .
|
||||||
|
#define RS_MINS KC_SLSH // -
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define RS_TILD S(RS_GRV) // ~
|
||||||
|
#define RS_EXLM S(RS_1) // !
|
||||||
|
#define RS_DQUO S(RS_2) // "
|
||||||
|
#define RS_HASH S(RS_3) // #
|
||||||
|
#define RS_DLR S(RS_4) // $
|
||||||
|
#define RS_PERC S(RS_5) // %
|
||||||
|
#define RS_AMPR S(RS_6) // &
|
||||||
|
#define RS_SLSH S(RS_7) // /
|
||||||
|
#define RS_LPRN S(RS_8) // (
|
||||||
|
#define RS_RPRN S(RS_9) // )
|
||||||
|
#define RS_EQL S(RS_0) // =
|
||||||
|
#define RS_DEG S(RS_QUOT) // ?
|
||||||
|
#define RS_UNDS S(RS_PLUS) // *
|
||||||
|
// Row 4
|
||||||
|
#define RS_RABK S(RS_LABK) // >
|
||||||
|
#define RS_SCLN S(RS_COMM) // ;
|
||||||
|
#define RS_COLN S(RS_DOT) // :
|
||||||
|
#define RS_UNDS S(RS_MINS) // _
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 2
|
||||||
|
#define RS_EURO ALGR(RS_IE) // €
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ‚ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define RS_SLQU KC_GRV // ‚ (dead)
|
||||||
|
#define RS_1 KC_1 // 1
|
||||||
|
#define RS_2 KC_2 // 2
|
||||||
|
#define RS_3 KC_3 // 3
|
||||||
|
#define RS_4 KC_4 // 4
|
||||||
|
#define RS_5 KC_5 // 5
|
||||||
|
#define RS_6 KC_6 // 6
|
||||||
|
#define RS_7 KC_7 // 7
|
||||||
|
#define RS_8 KC_8 // 8
|
||||||
|
#define RS_9 KC_9 // 9
|
||||||
|
#define RS_0 KC_0 // 0
|
||||||
|
#define RS_QUOT KC_MINS // '
|
||||||
|
#define RS_PLUS KC_EQL // +
|
||||||
|
// Row 2
|
||||||
|
#define RS_Q KC_Q // Q
|
||||||
|
#define RS_W KC_W // W
|
||||||
|
#define RS_E KC_E // E
|
||||||
|
#define RS_R KC_R // R
|
||||||
|
#define RS_T KC_T // T
|
||||||
|
#define RS_Z KC_Y // Z
|
||||||
|
#define RS_U KC_U // U
|
||||||
|
#define RS_I KC_I // I
|
||||||
|
#define RS_O KC_O // O
|
||||||
|
#define RS_P KC_P // P
|
||||||
|
#define RS_SCAR KC_LBRC // Š
|
||||||
|
#define RS_DSTR KC_RBRC // Đ
|
||||||
|
// Row 3
|
||||||
|
#define RS_A KC_A // A
|
||||||
|
#define RS_S KC_S // S
|
||||||
|
#define RS_D KC_D // D
|
||||||
|
#define RS_F KC_F // F
|
||||||
|
#define RS_G KC_G // G
|
||||||
|
#define RS_H KC_H // H
|
||||||
|
#define RS_J KC_J // J
|
||||||
|
#define RS_K KC_K // K
|
||||||
|
#define RS_L KC_L // L
|
||||||
|
#define RS_CCAR KC_SCLN // Č
|
||||||
|
#define RS_CACU KC_QUOT // Ć
|
||||||
|
#define RS_ZCAR KC_NUHS // Ž
|
||||||
|
// Row 4
|
||||||
|
#define RS_LABK KC_NUBS // <
|
||||||
|
#define RS_Y KC_Z // Y
|
||||||
|
#define RS_X KC_X // X
|
||||||
|
#define RS_C KC_C // C
|
||||||
|
#define RS_V KC_V // V
|
||||||
|
#define RS_B KC_B // B
|
||||||
|
#define RS_N KC_N // N
|
||||||
|
#define RS_M KC_M // M
|
||||||
|
#define RS_COMM KC_COMM // ,
|
||||||
|
#define RS_DOT KC_DOT // .
|
||||||
|
#define RS_MINS KC_SLSH // -
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define RS_TILD S(RS_SLQU) // ~
|
||||||
|
#define RS_EXLM S(RS_1) // !
|
||||||
|
#define RS_DQUO S(RS_2) // "
|
||||||
|
#define RS_HASH S(RS_3) // #
|
||||||
|
#define RS_DLR S(RS_4) // $
|
||||||
|
#define RS_PERC S(RS_5) // %
|
||||||
|
#define RS_AMPR S(RS_6) // &
|
||||||
|
#define RS_SLSH S(RS_7) // /
|
||||||
|
#define RS_LPRN S(RS_8) // (
|
||||||
|
#define RS_RPRN S(RS_9) // )
|
||||||
|
#define RS_EQL S(RS_0) // =
|
||||||
|
#define RS_DEG S(RS_QUOT) // ?
|
||||||
|
#define RS_UNDS S(RS_PLUS) // *
|
||||||
|
// Row 4
|
||||||
|
#define RS_RABK S(RS_LABK) // >
|
||||||
|
#define RS_SCLN S(RS_COMM) // ;
|
||||||
|
#define RS_COLN S(RS_DOT) // :
|
||||||
|
#define RS_UNDS S(RS_MINS) // _
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ │ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define RS_CARN ALGR(RS_2) // ˇ (dead)
|
||||||
|
#define RS_CIRC ALGR(RS_3) // ^ (dead)
|
||||||
|
#define RS_BREV ALGR(RS_4) // ˘ (dead)
|
||||||
|
#define RS_RNGA ALGR(RS_5) // ° (dead)
|
||||||
|
#define RS_OGON ALGR(RS_6) // ˛ (dead)
|
||||||
|
#define RS_GRV ALGR(RS_7) // `
|
||||||
|
#define RS_DOTA ALGR(RS_8) // ˙ (dead)
|
||||||
|
#define RS_ACUT ALGR(RS_9) // ´ (dead)
|
||||||
|
#define RS_DACU ALGR(RS_0) // ˝ (dead)
|
||||||
|
#define RS_DIAE ALGR(RS_QUOT) // ¨ (dead)
|
||||||
|
#define RS_CEDL ALGR(RS_PLUS) // ¸ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define RS_BSLS ALGR(RS_Q) // (backslash)
|
||||||
|
#define RS_PIPE ALGR(RS_W) // |
|
||||||
|
#define RS_EURO ALGR(RS_E) // €
|
||||||
|
#define RS_DIV ALGR(RS_SCAR) // ÷
|
||||||
|
#define RS_MUL ALGR(RS_DSTR) // ×
|
||||||
|
// Row 3
|
||||||
|
#define RS_LBRC ALGR(RS_F) // [
|
||||||
|
#define RS_RBRC ALGR(RS_G) // ]
|
||||||
|
#define RS_LLST ALGR(RS_K) // ł
|
||||||
|
#define RS_CLST ALGR(RS_L) // Ł
|
||||||
|
#define RS_SS ALGR(RS_CACU) // ß
|
||||||
|
#define RS_CURR ALGR(RS_ZCAR) // ¤
|
||||||
|
// Row 4
|
||||||
|
#define RS_AT ALGR(RS_V) // @
|
||||||
|
#define RS_LCBR ALGR(RS_B) // {
|
||||||
|
#define RS_RCBR ALGR(RS_N) // }
|
||||||
|
#define RS_SECT ALGR(RS_M) // §
|
||||||
@@ -0,0 +1,176 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ; │ + │ ľ │ š │ č │ ť │ ž │ ý │ á │ í │ é │ = │ ´ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ä │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ô │ § │ ň │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ & │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define SK_SCLN KC_GRV // ;
|
||||||
|
#define SK_PLUS KC_1 // +
|
||||||
|
#define SK_LACU KC_2 // ľ
|
||||||
|
#define SK_SCAR KC_3 // š
|
||||||
|
#define SK_CCAR KC_4 // č
|
||||||
|
#define SK_TACU KC_5 // ť
|
||||||
|
#define SK_ZCAR KC_6 // ž
|
||||||
|
#define SK_YACU KC_7 // ý
|
||||||
|
#define SK_AACU KC_8 // á
|
||||||
|
#define SK_IACU KC_9 // í
|
||||||
|
#define SK_EACU KC_0 // é
|
||||||
|
#define SK_EQL KC_MINS // =
|
||||||
|
#define SK_ACUT KC_EQL // ´ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define SK_Q KC_Q // Q
|
||||||
|
#define SK_W KC_W // W
|
||||||
|
#define SK_E KC_E // E
|
||||||
|
#define SK_R KC_R // R
|
||||||
|
#define SK_T KC_T // T
|
||||||
|
#define SK_Z KC_Y // Z
|
||||||
|
#define SK_U KC_U // U
|
||||||
|
#define SK_I KC_I // I
|
||||||
|
#define SK_O KC_O // O
|
||||||
|
#define SK_P KC_P // P
|
||||||
|
#define SK_UACU KC_LBRC // ú
|
||||||
|
#define SK_ADIA KC_RBRC // ä
|
||||||
|
// Row 3
|
||||||
|
#define SK_A KC_A // A
|
||||||
|
#define SK_S KC_S // S
|
||||||
|
#define SK_D KC_D // D
|
||||||
|
#define SK_F KC_F // F
|
||||||
|
#define SK_G KC_G // G
|
||||||
|
#define SK_H KC_H // H
|
||||||
|
#define SK_J KC_J // J
|
||||||
|
#define SK_K KC_K // K
|
||||||
|
#define SK_L KC_L // L
|
||||||
|
#define SK_OCIR KC_SCLN // ô
|
||||||
|
#define SK_SECT KC_QUOT // §
|
||||||
|
#define SK_NCAR KC_NUHS // ň
|
||||||
|
// Row 4
|
||||||
|
#define SK_AMPR KC_NUBS // &
|
||||||
|
#define SK_Y KC_Z // Y
|
||||||
|
#define SK_X KC_X // X
|
||||||
|
#define SK_C KC_C // C
|
||||||
|
#define SK_V KC_V // V
|
||||||
|
#define SK_B KC_B // B
|
||||||
|
#define SK_N KC_N // N
|
||||||
|
#define SK_M KC_M // M
|
||||||
|
#define SK_COMM KC_COMM // ,
|
||||||
|
#define SK_DOT KC_DOT // .
|
||||||
|
#define SK_MINS KC_SLSH // -
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ) │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ * │ │ │ │ │ │ │ │ ? │ : │ _ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define SK_RNGA S(SK_SCLN) // ° (dead)
|
||||||
|
#define SK_1 S(SK_PLUS) // 1
|
||||||
|
#define SK_2 S(SK_LACU) // 2
|
||||||
|
#define SK_3 S(SK_SCAR) // 3
|
||||||
|
#define SK_4 S(SK_CCAR) // 4
|
||||||
|
#define SK_5 S(SK_TACU) // 5
|
||||||
|
#define SK_6 S(SK_ZCAR) // 6
|
||||||
|
#define SK_7 S(SK_YACU) // 7
|
||||||
|
#define SK_8 S(SK_AACU) // 8
|
||||||
|
#define SK_9 S(SK_IACU) // 9
|
||||||
|
#define SK_0 S(SK_EACU) // 0
|
||||||
|
#define SK_PERC S(SK_EQL) // %
|
||||||
|
#define SK_CARN S(SK_ACUT) // ˇ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define SK_SLSH S(SK_UACU) // /
|
||||||
|
#define SK_LPRN S(SK_ADIA) // (
|
||||||
|
// Row 3
|
||||||
|
#define SK_DQUO S(SK_OCIR) // "
|
||||||
|
#define SK_EXLM S(SK_SECT) // !
|
||||||
|
#define SK_RPRN S(SK_NCAR) // )
|
||||||
|
// Row 4
|
||||||
|
#define SK_ASTR S(SK_AMPR) // *
|
||||||
|
#define SK_QUES S(SK_COMM) // ?
|
||||||
|
#define SK_COLN S(SK_DOT) // :
|
||||||
|
#define SK_UNDS S(SK_MINS) // _
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ │ ~ │ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ │ ˝ │ ¨ │ ¸ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ \ │ | │ € │ │ │ │ │ │ │ ' │ ÷ │ × │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ < │ > │ # │ │ @ │ { │ } │ │ │ │ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define SK_TILD ALGR(SK_PLUS) // ~
|
||||||
|
#define SK_CIRC ALGR(SK_LACU) // ^ (dead)
|
||||||
|
#define SK_BREV ALGR(SK_SCAR) // ˘ (dead)
|
||||||
|
#define SK_RNGA ALGR(SK_CCAR) // ° (dead)
|
||||||
|
#define SK_OGON ALGR(SK_TACU) // ˛ (dead)
|
||||||
|
#define SK_GRV ALGR(SK_ZCAR) // `
|
||||||
|
#define SK_DOTA ALGR(SK_YACU) // ˙ (dead)
|
||||||
|
#define SK_DACU ALGR(SK_EACU) // ˝ (dead)
|
||||||
|
#define SK_DIAE ALGR(SK_EQL) // ¨ (dead)
|
||||||
|
#define SK_CEDL ALGR(SK_ACUT) // ¸ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define SK_BSLS ALGR(SK_Q) // (backslash)
|
||||||
|
#define SK_PIPE ALGR(SK_W) // |
|
||||||
|
#define SK_EURO ALGR(SK_E) // €
|
||||||
|
#define SK_QUOT ALGR(SK_P) // '
|
||||||
|
#define SK_DIV ALGR(SK_UACU) // ÷
|
||||||
|
#define SK_MUL ALGR(SK_ADIA) // ×
|
||||||
|
// Row 3
|
||||||
|
#define SK_LDST ALGR(SK_S) // đ
|
||||||
|
#define SK_CDST ALGR(SK_D) // Đ
|
||||||
|
#define SK_LBRC ALGR(SK_F) // [
|
||||||
|
#define SK_RBRC ALGR(SK_G) // ]
|
||||||
|
#define SK_LLST ALGR(SK_K) // ł
|
||||||
|
#define SK_CLST ALGR(SK_L) // Ł
|
||||||
|
#define SK_DLR ALGR(SK_OCIR) // $
|
||||||
|
#define SK_SS ALGR(SK_SECT) // ß
|
||||||
|
#define SK_CURR ALGR(SK_NCAR) // ¤
|
||||||
|
// Row 4
|
||||||
|
#define SK_LABK ALGR(SK_AMPR) // <
|
||||||
|
#define SK_RABK ALGR(SK_Y) // >
|
||||||
|
#define SK_HASH ALGR(SK_X) // #
|
||||||
|
#define SK_AT ALGR(SK_V) // @
|
||||||
|
#define SK_LCBR ALGR(SK_B) // {
|
||||||
|
#define SK_RCBR ALGR(SK_N) // }
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sendstring lookup tables for Latvian layouts
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap_latvian.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||||
|
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// BS TAB LF VT FF CR SO SI
|
||||||
|
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// CAN EM SUB ESC FS GS RS US
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
|
// ! " # $ % & '
|
||||||
|
KC_SPC, LV_1, LV_QUOT, LV_3, LV_4, LV_5, LV_7, LV_QUOT,
|
||||||
|
// ( ) * + , - . /
|
||||||
|
LV_9, LV_0, LV_8, LV_EQL, LV_COMM, LV_MINS, LV_DOT, LV_SLSH,
|
||||||
|
// 0 1 2 3 4 5 6 7
|
||||||
|
LV_0, LV_1, LV_2, LV_3, LV_4, LV_5, LV_6, LV_7,
|
||||||
|
// 8 9 : ; < = > ?
|
||||||
|
LV_8, LV_9, LV_SCLN, LV_SCLN, LV_COMM, LV_EQL, LV_DOT, LV_SLSH,
|
||||||
|
// @ A B C D E F G
|
||||||
|
LV_2, LV_A, LV_B, LV_C, LV_D, LV_E, LV_F, LV_G,
|
||||||
|
// H I J K L M N O
|
||||||
|
LV_H, LV_I, LV_J, LV_K, LV_L, LV_M, LV_N, LV_O,
|
||||||
|
// P Q R S T U V W
|
||||||
|
LV_P, LV_Q, LV_R, LV_S, LV_T, LV_U, LV_V, LV_W,
|
||||||
|
// X Y Z [ \ ] ^ _
|
||||||
|
LV_X, LV_Y, LV_Z, LV_LBRC, LV_BSLS, LV_RBRC, LV_6, LV_MINS,
|
||||||
|
// ` a b c d e f g
|
||||||
|
LV_GRV, LV_A, LV_B, LV_C, LV_D, LV_E, LV_F, LV_G,
|
||||||
|
// h i j k l m n o
|
||||||
|
LV_H, LV_I, LV_J, LV_K, LV_L, LV_M, LV_N, LV_O,
|
||||||
|
// p q r s t u v w
|
||||||
|
LV_P, LV_Q, LV_R, LV_S, LV_T, LV_U, LV_V, LV_W,
|
||||||
|
// x y z { | } ~ DEL
|
||||||
|
LV_X, LV_Y, LV_Z, LV_LBRC, LV_BSLS, LV_RBRC, LV_GRV, KC_DEL
|
||||||
|
};
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sendstring lookup tables for Lithuanian ĄŽERTY layouts
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap_lithuanian_azerty.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
const uint8_t ascii_to_shift_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 0, 0, 0, 0, 1, 0),
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 0, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||||
|
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// BS TAB LF VT FF CR SO SI
|
||||||
|
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// CAN EM SUB ESC FS GS RS US
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
|
// ! " # $ % & '
|
||||||
|
KC_SPC, LT_EXLM, LT_EDOT, LT_SLSH, LT_SCLN, LT_X, LT_DOT, LT_QUES,
|
||||||
|
// ( ) * + , - . /
|
||||||
|
LT_LRPN, LT_RPRN, LT_EQL, LT_QUES, LT_COMM, LT_MINS, LT_DOT, LT_SLSH,
|
||||||
|
// 0 1 2 3 4 5 6 7
|
||||||
|
LT_RPRN, LT_EXLM, LT_MINS, LT_SLSH, LT_SLCN, LT_COLN, LT_COMM, LT_DOT,
|
||||||
|
// 8 9 : ; < = > ?
|
||||||
|
LT_EQL, LT_LPRN, LT_COLN, LT_SCLN, LT_LABK, LT_EQL, LT_LABK, LT_QUES,
|
||||||
|
// @ A B C D E F G
|
||||||
|
LT_EXLM, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||||
|
// H I J K L M N O
|
||||||
|
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||||
|
// P Q R S T U V W
|
||||||
|
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||||
|
// X Y Z [ \ ] ^ _
|
||||||
|
LT_X, LT_Y, LT_Z, LT_LPRN, LT_EOGO, LT_RPRN, LT_COMM, LT_MINS,
|
||||||
|
// ` a b c d e f g
|
||||||
|
LT_GRV, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||||
|
// h i j k l m n o
|
||||||
|
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||||
|
// p q r s t u v w
|
||||||
|
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||||
|
// x y z { | } ~ DEL
|
||||||
|
LT_X, LT_Y, LT_Z, LT_IOGO, LT_Q, LT_W, LT_GRV, KC_DEL
|
||||||
|
};
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sendstring lookup tables for Lithuanian QWERTY layouts
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap_lithuanian_qwerty.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 1, 0, 1, 1, 1, 1, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 1, 1, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 1, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||||
|
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// BS TAB LF VT FF CR SO SI
|
||||||
|
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// CAN EM SUB ESC FS GS RS US
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
|
// ! " # $ % & '
|
||||||
|
KC_SPC, LT_1, LT_QUOT, LT_3, LT_4, LT_5, LT_7, LT_QUOT,
|
||||||
|
// ( ) * + , - . /
|
||||||
|
LT_9, LT_0, LT_8, LT_ZCAR, LT_COMM, LT_MINS, LT_DOT, LT_SLSH,
|
||||||
|
// 0 1 2 3 4 5 6 7
|
||||||
|
LT_0, LT_AOGO, LT_CCAR, LT_EOGO, LT_EDOT, LT_IOGO, LT_SCAR, LT_UOGO,
|
||||||
|
// 8 9 : ; < = > ?
|
||||||
|
LT_UMAC, LT_9, LT_SCLN, LT_SCLN, LT_COMM, LT_PLUS, LT_DOT, LT_SLSH,
|
||||||
|
// @ A B C D E F G
|
||||||
|
LT_CCAR, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||||
|
// H I J K L M N O
|
||||||
|
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||||
|
// P Q R S T U V W
|
||||||
|
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||||
|
// X Y Z [ \ ] ^ _
|
||||||
|
LT_X, LT_Y, LT_Z, LT_LBRC, LT_BSLS, LT_RBRC, LT_SCAR, LT_MINS,
|
||||||
|
// ` a b c d e f g
|
||||||
|
LT_GRV, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||||
|
// h i j k l m n o
|
||||||
|
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||||
|
// p q r s t u v w
|
||||||
|
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||||
|
// x y z { | } ~ DEL
|
||||||
|
LT_X, LT_Y, LT_Z, LT_LBRC, LT_BSLS, LT_RBRC, LT_GRV, KC_DEL
|
||||||
|
};
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sendstring lookup tables for Serbian (Latin) layouts
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap_serbian_latin.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
const uint8_t ascii_to_shift_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||||
|
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// BS TAB LF VT FF CR SO SI
|
||||||
|
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// CAN EM SUB ESC FS GS RS US
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
|
// ! " # $ % & '
|
||||||
|
KC_SPC, RS_1, RS_2, RS_3, RS_4, RS_5, RS_6, RS_QUOT,
|
||||||
|
// ( ) * + , - . /
|
||||||
|
RS_8, RS_9, RS_PLUS, RS_PLUS, RS_COMM, RS_MINS, RS_DOT, RS_7,
|
||||||
|
// 0 1 2 3 4 5 6 7
|
||||||
|
RS_0, RS_1, RS_2, RS_3, RS_4, RS_5, RS_6, RS_7,
|
||||||
|
// 8 9 : ; < = > ?
|
||||||
|
RS_8, RS_9, RS_DOT, RS_COMM, RS_LABK, RS_0, RS_LABK, RS_QUOT,
|
||||||
|
// @ A B C D E F G
|
||||||
|
RS_V, RS_A, RS_B, RS_C, RS_D, RS_E, RS_F, RS_G,
|
||||||
|
// H I J K L M N O
|
||||||
|
RS_H, RS_I, RS_J, RS_K, RS_L, RS_M, RS_N, RS_O,
|
||||||
|
// P Q R S T U V W
|
||||||
|
RS_P, RS_Q, RS_R, RS_S, RS_T, RS_U, RS_V, RS_W,
|
||||||
|
// X Y Z [ \ ] ^ _
|
||||||
|
RS_X, RS_Y, RS_Z, RS_F, RS_Q, RS_G, RS_3, RS_MINS,
|
||||||
|
// ` a b c d e f g
|
||||||
|
RS_7, RS_A, RS_B, RS_C, RS_D, RS_E, RS_F, RS_G,
|
||||||
|
// h i j k l m n o
|
||||||
|
RS_H, RS_I, RS_J, RS_K, RS_L, RS_M, RS_N, RS_O,
|
||||||
|
// p q r s t u v w
|
||||||
|
RS_P, RS_Q, RS_R, RS_S, RS_T, RS_U, RS_V, RS_W,
|
||||||
|
// x y z { | } ~ DEL
|
||||||
|
RS_X, RS_Y, RS_Z, RS_B, RS_W, RS_N, RS_1, KC_DEL
|
||||||
|
};
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/* Copyright 2020
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sendstring lookup tables for Slovak layouts
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap_slovak.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
const uint8_t ascii_to_shift_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 1),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||||
|
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// BS TAB LF VT FF CR SO SI
|
||||||
|
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// CAN EM SUB ESC FS GS RS US
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
|
// ! " # $ % & '
|
||||||
|
KC_SPC, SK_SECT, SK_OCIR, SK_X, SK_OCIR, SK_EQL, SK_AMPR, SK_P,
|
||||||
|
// ( ) * + , - . /
|
||||||
|
SK_ADIA, SK_NCAR, SK_AMPR, SK_PLUS, SK_COMM, SK_MINS, SK_DOT, SK_UACU,
|
||||||
|
// 0 1 2 3 4 5 6 7
|
||||||
|
SK_EACU, SK_PLUS, SK_LACU, SK_SCAR, SK_CCAR, SK_TACU, SK_ZCAR, SK_YACU,
|
||||||
|
// 8 9 : ; < = > ?
|
||||||
|
SK_AACU, SK_IACU, SK_DOT, SK_SCLN, SK_AMPR, SK_EQL, SK_Y, SK_COMM,
|
||||||
|
// @ A B C D E F G
|
||||||
|
SK_V, SK_A, SK_B, SK_C, SK_D, SK_E, SK_F, SK_G,
|
||||||
|
// H I J K L M N O
|
||||||
|
SK_H, SK_I, SK_J, SK_K, SK_L, SK_M, SK_N, SK_O,
|
||||||
|
// P Q R S T U V W
|
||||||
|
SK_P, SK_Q, SK_R, SK_S, SK_T, SK_U, SK_V, SK_W,
|
||||||
|
// X Y Z [ \ ] ^ _
|
||||||
|
SK_X, SK_Y, SK_Z, SK_F, SK_Q, SK_G, SK_3, SK_MINS,
|
||||||
|
// ` a b c d e f g
|
||||||
|
SK_7, SK_A, SK_B, SK_C, SK_D, SK_E, SK_F, SK_G,
|
||||||
|
// h i j k l m n o
|
||||||
|
SK_H, SK_I, SK_J, SK_K, SK_L, SK_M, SK_N, SK_O,
|
||||||
|
// p q r s t u v w
|
||||||
|
SK_P, SK_Q, SK_R, SK_S, SK_T, SK_U, SK_V, SK_W,
|
||||||
|
// x y z { | } ~ DEL
|
||||||
|
SK_X, SK_Y, SK_Z, SK_B, SK_W, SK_N, SK_1, KC_DEL
|
||||||
|
};
|
||||||
@@ -78,8 +78,8 @@ __attribute__((weak)) void unicode_input_start(void) {
|
|||||||
clear_mods(); // Unregister mods to start from a clean state
|
clear_mods(); // Unregister mods to start from a clean state
|
||||||
|
|
||||||
switch (unicode_config.input_mode) {
|
switch (unicode_config.input_mode) {
|
||||||
case UC_OSX:
|
case UC_MAC:
|
||||||
register_code(UNICODE_KEY_OSX);
|
register_code(UNICODE_KEY_MAC);
|
||||||
break;
|
break;
|
||||||
case UC_LNX:
|
case UC_LNX:
|
||||||
tap_code16(UNICODE_KEY_LNX);
|
tap_code16(UNICODE_KEY_LNX);
|
||||||
@@ -99,8 +99,8 @@ __attribute__((weak)) void unicode_input_start(void) {
|
|||||||
|
|
||||||
__attribute__((weak)) void unicode_input_finish(void) {
|
__attribute__((weak)) void unicode_input_finish(void) {
|
||||||
switch (unicode_config.input_mode) {
|
switch (unicode_config.input_mode) {
|
||||||
case UC_OSX:
|
case UC_MAC:
|
||||||
unregister_code(UNICODE_KEY_OSX);
|
unregister_code(UNICODE_KEY_MAC);
|
||||||
break;
|
break;
|
||||||
case UC_LNX:
|
case UC_LNX:
|
||||||
tap_code(KC_SPC);
|
tap_code(KC_SPC);
|
||||||
@@ -118,8 +118,8 @@ __attribute__((weak)) void unicode_input_finish(void) {
|
|||||||
|
|
||||||
__attribute__((weak)) void unicode_input_cancel(void) {
|
__attribute__((weak)) void unicode_input_cancel(void) {
|
||||||
switch (unicode_config.input_mode) {
|
switch (unicode_config.input_mode) {
|
||||||
case UC_OSX:
|
case UC_MAC:
|
||||||
unregister_code(UNICODE_KEY_OSX);
|
unregister_code(UNICODE_KEY_MAC);
|
||||||
break;
|
break;
|
||||||
case UC_LNX:
|
case UC_LNX:
|
||||||
case UC_WINC:
|
case UC_WINC:
|
||||||
@@ -253,11 +253,11 @@ bool process_unicode_common(uint16_t keycode, keyrecord_t *record) {
|
|||||||
cycle_unicode_input_mode(-1);
|
cycle_unicode_input_mode(-1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNICODE_MODE_OSX:
|
case UNICODE_MODE_MAC:
|
||||||
set_unicode_input_mode(UC_OSX);
|
set_unicode_input_mode(UC_MAC);
|
||||||
#if defined(AUDIO_ENABLE) && defined(UNICODE_SONG_OSX)
|
#if defined(AUDIO_ENABLE) && defined(UNICODE_SONG_MAC)
|
||||||
static float song_osx[][2] = UNICODE_SONG_OSX;
|
static float song_mac[][2] = UNICODE_SONG_MAC;
|
||||||
PLAY_SONG(song_osx);
|
PLAY_SONG(song_mac);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case UNICODE_MODE_LNX:
|
case UNICODE_MODE_LNX:
|
||||||
|
|||||||
@@ -23,8 +23,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Keycodes used for starting Unicode input on different platforms
|
// Keycodes used for starting Unicode input on different platforms
|
||||||
#ifndef UNICODE_KEY_OSX
|
#ifndef UNICODE_KEY_MAC
|
||||||
# define UNICODE_KEY_OSX KC_LALT
|
# define UNICODE_KEY_MAC KC_LALT
|
||||||
#endif
|
#endif
|
||||||
#ifndef UNICODE_KEY_LNX
|
#ifndef UNICODE_KEY_LNX
|
||||||
# define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
|
# define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
|
||||||
@@ -49,8 +49,17 @@
|
|||||||
# define UNICODE_TYPE_DELAY 10
|
# define UNICODE_TYPE_DELAY 10
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Deprecated aliases
|
||||||
|
#if !defined(UNICODE_KEY_MAC) && defined(UNICODE_KEY_OSX)
|
||||||
|
# define UNICODE_KEY_MAC UNICODE_KEY_OSX
|
||||||
|
#endif
|
||||||
|
#if !defined(UNICODE_SONG_MAC) && defined(UNICODE_SONG_OSX)
|
||||||
|
# define UNICODE_SONG_MAC UNICODE_SONG_OSX
|
||||||
|
#endif
|
||||||
|
#define UC_OSX UC_MAC
|
||||||
|
|
||||||
enum unicode_input_modes {
|
enum unicode_input_modes {
|
||||||
UC_OSX, // Mac OS X using Unicode Hex Input
|
UC_MAC, // macOS using Unicode Hex Input
|
||||||
UC_LNX, // Linux using IBus
|
UC_LNX, // Linux using IBus
|
||||||
UC_WIN, // Windows using EnableHexNumpad
|
UC_WIN, // Windows using EnableHexNumpad
|
||||||
UC_BSD, // BSD (not implemented)
|
UC_BSD, // BSD (not implemented)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ bool process_unicodemap(uint16_t keycode, keyrecord_t *record) {
|
|||||||
if (code > 0x10FFFF || (code > 0xFFFF && input_mode == UC_WIN)) {
|
if (code > 0x10FFFF || (code > 0xFFFF && input_mode == UC_WIN)) {
|
||||||
// Character is out of range supported by the platform
|
// Character is out of range supported by the platform
|
||||||
unicode_input_cancel();
|
unicode_input_cancel();
|
||||||
} else if (code > 0xFFFF && input_mode == UC_OSX) {
|
} else if (code > 0xFFFF && input_mode == UC_MAC) {
|
||||||
// Convert to UTF-16 surrogate pair on Mac
|
// Convert to UTF-16 surrogate pair on Mac
|
||||||
code -= 0x10000;
|
code -= 0x10000;
|
||||||
uint32_t lo = code & 0x3FF, hi = (code & 0xFFC00) >> 10;
|
uint32_t lo = code & 0x3FF, hi = (code & 0xFFC00) >> 10;
|
||||||
|
|||||||
@@ -459,7 +459,7 @@ enum quantum_keycodes {
|
|||||||
|
|
||||||
UNICODE_MODE_FORWARD,
|
UNICODE_MODE_FORWARD,
|
||||||
UNICODE_MODE_REVERSE,
|
UNICODE_MODE_REVERSE,
|
||||||
UNICODE_MODE_OSX,
|
UNICODE_MODE_MAC,
|
||||||
UNICODE_MODE_LNX,
|
UNICODE_MODE_LNX,
|
||||||
UNICODE_MODE_WIN,
|
UNICODE_MODE_WIN,
|
||||||
UNICODE_MODE_BSD,
|
UNICODE_MODE_BSD,
|
||||||
@@ -777,7 +777,9 @@ enum quantum_keycodes {
|
|||||||
#define UC_MOD UNICODE_MODE_FORWARD
|
#define UC_MOD UNICODE_MODE_FORWARD
|
||||||
#define UC_RMOD UNICODE_MODE_REVERSE
|
#define UC_RMOD UNICODE_MODE_REVERSE
|
||||||
|
|
||||||
#define UC_M_OS UNICODE_MODE_OSX
|
#define UC_M_MA UNICODE_MODE_MAC
|
||||||
|
#define UNICODE_MODE_OSX UNICODE_MODE_MAC // Deprecated alias
|
||||||
|
#define UC_M_OS UNICODE_MODE_MAC // Deprecated alias
|
||||||
#define UC_M_LN UNICODE_MODE_LNX
|
#define UC_M_LN UNICODE_MODE_LNX
|
||||||
#define UC_M_WI UNICODE_MODE_WIN
|
#define UC_M_WI UNICODE_MODE_WIN
|
||||||
#define UC_M_BS UNICODE_MODE_BSD
|
#define UC_M_BS UNICODE_MODE_BSD
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// Use custom magic number so that when switching branches, EEPROM always gets reset
|
// Use custom magic number so that when switching branches, EEPROM always gets reset
|
||||||
#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1337
|
#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1338
|
||||||
|
|
||||||
/* Set Polling rate to 1000Hz */
|
/* Set Polling rate to 1000Hz */
|
||||||
#define USB_POLLING_INTERVAL_MS 1
|
#define USB_POLLING_INTERVAL_MS 1
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
||||||
|
|
||||||
# define UNICODE_SONG_OSX SONG(RICK_ROLL)
|
# define UNICODE_SONG_MAC SONG(RICK_ROLL)
|
||||||
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
||||||
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
||||||
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
||||||
@@ -52,6 +52,7 @@
|
|||||||
# if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
|
# if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
|
||||||
# define DISABLE_RGB_MATRIX_ALPHAS_MODS
|
# define DISABLE_RGB_MATRIX_ALPHAS_MODS
|
||||||
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
|
# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||||
# define DISABLE_RGB_MATRIX_BREATHING
|
# define DISABLE_RGB_MATRIX_BREATHING
|
||||||
# define DISABLE_RGB_MATRIX_BAND_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
# define DISABLE_RGB_MATRIX_BAND_VAL
|
# define DISABLE_RGB_MATRIX_BAND_VAL
|
||||||
|
|||||||
+12
-23
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
|
|
||||||
userspace_config_t userspace_config;
|
userspace_config_t userspace_config;
|
||||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
|
||||||
# define DRASHNA_UNICODE_MODE UC_WIN
|
|
||||||
#else
|
|
||||||
// set to 2 for UC_WIN, set to 4 for UC_WINC
|
|
||||||
# define DRASHNA_UNICODE_MODE 2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
|
bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
|
||||||
static uint16_t this_timer;
|
static uint16_t this_timer;
|
||||||
@@ -93,19 +87,17 @@ void matrix_init_user(void) {
|
|||||||
DDRB &= ~(1 << 0);
|
DDRB &= ~(1 << 0);
|
||||||
PORTB &= ~(1 << 0);
|
PORTB &= ~(1 << 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
|
||||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
|
||||||
get_unicode_input_mode();
|
|
||||||
#endif // UNICODE_ENABLE
|
|
||||||
matrix_init_keymap();
|
matrix_init_keymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) void keyboard_post_init_keymap(void) {}
|
__attribute__((weak)) void keyboard_post_init_keymap(void) {}
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
void keyboard_post_init_user(void) {
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
keyboard_post_init_rgb();
|
keyboard_post_init_rgb_light();
|
||||||
|
#endif
|
||||||
|
#if defined(RGB_MATRIX_ENABLE)
|
||||||
|
keyboard_post_init_rgb_matrix();
|
||||||
#endif
|
#endif
|
||||||
keyboard_post_init_keymap();
|
keyboard_post_init_keymap();
|
||||||
}
|
}
|
||||||
@@ -155,9 +147,12 @@ void matrix_scan_user(void) {
|
|||||||
run_diablo_macro_check();
|
run_diablo_macro_check();
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
matrix_scan_rgb();
|
matrix_scan_rgb_light();
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
#if defined(RGB_MATRIX_ENABLE)
|
||||||
|
matrix_scan_rgb_matrix();
|
||||||
|
#endif
|
||||||
|
|
||||||
matrix_scan_keymap();
|
matrix_scan_keymap();
|
||||||
}
|
}
|
||||||
@@ -168,8 +163,8 @@ __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state)
|
|||||||
// Then runs keymap's layer change check
|
// Then runs keymap's layer change check
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
state = layer_state_set_rgb(state);
|
state = layer_state_set_rgb_light(state);
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
return layer_state_set_keymap(state);
|
return layer_state_set_keymap(state);
|
||||||
}
|
}
|
||||||
@@ -200,12 +195,6 @@ void eeconfig_init_user(void) {
|
|||||||
userspace_config.raw = 0;
|
userspace_config.raw = 0;
|
||||||
userspace_config.rgb_layer_change = true;
|
userspace_config.rgb_layer_change = true;
|
||||||
eeconfig_update_user(userspace_config.raw);
|
eeconfig_update_user(userspace_config.raw);
|
||||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
|
||||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
|
||||||
get_unicode_input_mode();
|
|
||||||
#else
|
|
||||||
eeprom_update_byte(EECONFIG_UNICODEMODE, DRASHNA_UNICODE_MODE);
|
|
||||||
#endif
|
|
||||||
eeconfig_init_keymap();
|
eeconfig_init_keymap();
|
||||||
keyboard_init();
|
keyboard_init();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,9 +25,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#ifdef TAP_DANCE_ENABLE
|
#ifdef TAP_DANCE_ENABLE
|
||||||
# include "tap_dances.h"
|
# include "tap_dances.h"
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
# include "rgb_stuff.h"
|
# include "rgb_stuff.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RGB_MATRIX_ENABLE)
|
||||||
|
# include "rgb_matrix_stuff.h"
|
||||||
|
#endif
|
||||||
|
#if defined(OLED_DRIVER_ENABLE)
|
||||||
|
# include "oled_stuff.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define layer names */
|
/* Define layer names */
|
||||||
enum userspace_layers {
|
enum userspace_layers {
|
||||||
@@ -70,7 +76,6 @@ typedef union {
|
|||||||
bool rgb_layer_change :1;
|
bool rgb_layer_change :1;
|
||||||
bool is_overwatch :1;
|
bool is_overwatch :1;
|
||||||
bool nuke_switch :1;
|
bool nuke_switch :1;
|
||||||
uint8_t unicode_mod :4;
|
|
||||||
bool swapped_numbers :1;
|
bool swapped_numbers :1;
|
||||||
bool rgb_matrix_idle_anim :1;
|
bool rgb_matrix_idle_anim :1;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,278 @@
|
|||||||
|
#include "drashna.h"
|
||||||
|
|
||||||
|
extern uint8_t is_master;
|
||||||
|
|
||||||
|
#ifndef KEYLOGGER_LENGTH
|
||||||
|
// # ifdef OLED_DISPLAY_128X64
|
||||||
|
# define KEYLOGGER_LENGTH ((int)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
|
||||||
|
// # else
|
||||||
|
// # define KEYLOGGER_LENGTH (uint8_t *(OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT))
|
||||||
|
// # endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static uint32_t oled_timer = 0;
|
||||||
|
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||||
|
static uint16_t log_timer = 0;
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
static const char PROGMEM code_to_name[0xFF] = {
|
||||||
|
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
||||||
|
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
||||||
|
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
||||||
|
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
||||||
|
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
||||||
|
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
||||||
|
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
void add_keylog(uint16_t keycode) {
|
||||||
|
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||||
|
keycode = keycode & 0xFF;
|
||||||
|
} else if (keycode > 0xFF) {
|
||||||
|
keycode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
||||||
|
keylog_str[i] = keylog_str[i - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
||||||
|
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
||||||
|
}
|
||||||
|
|
||||||
|
log_timer = timer_read();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
oled_timer = timer_read32();
|
||||||
|
add_keylog(keycode);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void update_log(void) {
|
||||||
|
if (timer_elapsed(log_timer) > 750) {
|
||||||
|
// add_keylog(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_keylogger_status(void) {
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false);
|
||||||
|
oled_write(keylog_str, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_default_layer_state(void) {
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false);
|
||||||
|
switch (get_highest_layer(default_layer_state)) {
|
||||||
|
case _QWERTY:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
|
||||||
|
break;
|
||||||
|
case _COLEMAK:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false);
|
||||||
|
break;
|
||||||
|
case _DVORAK:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false);
|
||||||
|
break;
|
||||||
|
case _WORKMAN:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_WORKMAN), false);
|
||||||
|
break;
|
||||||
|
case _NORMAN:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_NORMAN), false);
|
||||||
|
break;
|
||||||
|
case _MALTRON:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_MALTRON), false);
|
||||||
|
break;
|
||||||
|
case _EUCALYN:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_EUCALYN), false);
|
||||||
|
break;
|
||||||
|
case _CARPLAX:
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_CARPLAX), false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_advance_page(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_layer_state(void) {
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYER_LOWER), layer_state_is(_LOWER));
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
|
||||||
|
#if _MODS
|
||||||
|
# ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
# endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS));
|
||||||
|
#endif
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_advance_page(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_keylock_status(uint8_t led_usb_state) {
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
||||||
|
#ifndef OLED_DISPLAY_128X64
|
||||||
|
oled_advance_page(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_mod_status(uint8_t modifiers) {
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT));
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL));
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT));
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI));
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_bootmagic_status(void) {
|
||||||
|
/* Show Ctrl-Gui Swap options */
|
||||||
|
static const char PROGMEM logo[][2][3] = {
|
||||||
|
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
|
||||||
|
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NAME), false);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
if (keymap_config.swap_lctl_lgui)
|
||||||
|
#else
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
oled_write_P(logo[1][0], false);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
} else {
|
||||||
|
#endif
|
||||||
|
oled_write_P(logo[0][0], false);
|
||||||
|
}
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
|
||||||
|
oled_write_P(PSTR("Magic "), false);
|
||||||
|
if (keymap_config.swap_lctl_lgui)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
oled_write_P(logo[1][1], false);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
} else {
|
||||||
|
#endif
|
||||||
|
oled_write_P(logo[0][1], false);
|
||||||
|
}
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock);
|
||||||
|
oled_advance_page(true);
|
||||||
|
#else
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_user_status(void) {
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_advance_page(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) void oled_driver_render_logo(void) {
|
||||||
|
// clang-format off
|
||||||
|
static const char PROGMEM qmk_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};
|
||||||
|
// clang-format on
|
||||||
|
oled_write_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_status_secondary(void) {
|
||||||
|
#if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DRIVER_128x64)
|
||||||
|
oled_driver_render_logo();
|
||||||
|
#endif
|
||||||
|
#ifdef SPLIT_TRANSPORT_MIRROR
|
||||||
|
/* Show Keyboard Layout */
|
||||||
|
render_default_layer_state();
|
||||||
|
render_layer_state();
|
||||||
|
render_mod_status(get_mods() | get_oneshot_mods());
|
||||||
|
render_keylogger_status();
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
void render_status_main(void) {
|
||||||
|
/* Show Keyboard Layout */
|
||||||
|
render_default_layer_state();
|
||||||
|
render_keylock_status(host_keyboard_leds());
|
||||||
|
render_bootmagic_status();
|
||||||
|
render_user_status();
|
||||||
|
|
||||||
|
render_keylogger_status();
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
if (timer_elapsed32(oled_timer) > 30000) {
|
||||||
|
oled_off();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#ifndef SPLIT_KEYBOARD
|
||||||
|
else {
|
||||||
|
oled_on();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
update_log();
|
||||||
|
|
||||||
|
if (is_master) {
|
||||||
|
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||||
|
} else {
|
||||||
|
render_status_secondary();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
#include "oled_driver.h"
|
||||||
|
|
||||||
|
void oled_driver_render_logo(void);
|
||||||
|
bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
|
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
# define OLED_RENDER_KEYLOGGER "Keylogger: "
|
||||||
|
|
||||||
|
# define OLED_RENDER_LAYOUT_NAME "Layout: "
|
||||||
|
# define OLED_RENDER_LAYOUT_QWERTY "Qwerty"
|
||||||
|
# define OLED_RENDER_LAYOUT_COLEMAK "Colemak"
|
||||||
|
# define OLED_RENDER_LAYOUT_DVORAK "Dvorak"
|
||||||
|
# define OLED_RENDER_LAYOUT_WORKMAN "Workman"
|
||||||
|
# define OLED_RENDER_LAYOUT_NORMAN "Norman"
|
||||||
|
# define OLED_RENDER_LAYOUT_MALTRON "Matron"
|
||||||
|
# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
|
||||||
|
# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
|
||||||
|
|
||||||
|
# define OLED_RENDER_LAYER_NAME "Layer:\n"
|
||||||
|
# define OLED_RENDER_LAYER_LOWER "Lower"
|
||||||
|
# define OLED_RENDER_LAYER_RAISE "Raise"
|
||||||
|
# define OLED_RENDER_LAYER_ADJUST "Adjust"
|
||||||
|
# define OLED_RENDER_LAYER_MODS "Mods"
|
||||||
|
|
||||||
|
# define OLED_RENDER_LOCK_NAME "Lock: "
|
||||||
|
# define OLED_RENDER_LOCK_NUML "NUML"
|
||||||
|
# define OLED_RENDER_LOCK_CAPS "CAPS"
|
||||||
|
# define OLED_RENDER_LOCK_SCLK "SCLK"
|
||||||
|
|
||||||
|
# define OLED_RENDER_MODS_NAME "Mods: "
|
||||||
|
# define OLED_RENDER_MODS_SFT "Sft"
|
||||||
|
# define OLED_RENDER_MODS_CTL "Ctl"
|
||||||
|
# define OLED_RENDER_MODS_ALT "Alt"
|
||||||
|
# define OLED_RENDER_MODS_GUI "GUI"
|
||||||
|
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_NAME "Boot "
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
|
||||||
|
|
||||||
|
# define OLED_RENDER_USER_NAME "USER:"
|
||||||
|
# define OLED_RENDER_USER_ANIM "Anim"
|
||||||
|
# define OLED_RENDER_USER_LAYR "Layr"
|
||||||
|
# define OLED_RENDER_USER_NUKE "Nuke"
|
||||||
|
|
||||||
|
#else
|
||||||
|
# define OLED_RENDER_KEYLOGGER "KLogr"
|
||||||
|
|
||||||
|
# define OLED_RENDER_LAYOUT_NAME "Lyout"
|
||||||
|
# define OLED_RENDER_LAYOUT_QWERTY " QRTY"
|
||||||
|
# define OLED_RENDER_LAYOUT_COLEMAK " COLE"
|
||||||
|
# define OLED_RENDER_LAYOUT_DVORAK " DVRK"
|
||||||
|
# define OLED_RENDER_LAYOUT_WORKMAN " WKMN"
|
||||||
|
# define OLED_RENDER_LAYOUT_NORMAN " NORM"
|
||||||
|
# define OLED_RENDER_LAYOUT_MALTRON " MLTN"
|
||||||
|
# define OLED_RENDER_LAYOUT_EUCALYN " ECLN"
|
||||||
|
# define OLED_RENDER_LAYOUT_CARPLAX " CRPX"
|
||||||
|
|
||||||
|
# define OLED_RENDER_LAYER_NAME "LAYER"
|
||||||
|
# define OLED_RENDER_LAYER_LOWER "Lower"
|
||||||
|
# define OLED_RENDER_LAYER_RAISE "Raise"
|
||||||
|
# define OLED_RENDER_LAYER_ADJUST "Adjst"
|
||||||
|
# define OLED_RENDER_LAYER_MODS " Mods"
|
||||||
|
|
||||||
|
# define OLED_RENDER_LOCK_NAME "Lock:"
|
||||||
|
# define OLED_RENDER_LOCK_NUML "N"
|
||||||
|
# define OLED_RENDER_LOCK_CAPS "C"
|
||||||
|
# define OLED_RENDER_LOCK_SCLK "S"
|
||||||
|
|
||||||
|
# define OLED_RENDER_MODS_NAME "Mods: "
|
||||||
|
# define OLED_RENDER_MODS_SFT "S"
|
||||||
|
# define OLED_RENDER_MODS_CTL "C"
|
||||||
|
# define OLED_RENDER_MODS_ALT "A"
|
||||||
|
# define OLED_RENDER_MODS_GUI "G"
|
||||||
|
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
|
||||||
|
# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
|
||||||
|
|
||||||
|
# define OLED_RENDER_USER_NAME "USER:"
|
||||||
|
# define OLED_RENDER_USER_ANIM "Anim"
|
||||||
|
# define OLED_RENDER_USER_LAYR "Layr"
|
||||||
|
# define OLED_RENDER_USER_NUKE "Nuke"
|
||||||
|
|
||||||
|
#endif
|
||||||
+285
-78
@@ -17,101 +17,308 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
||||||
# endif
|
# endif
|
||||||
#endif // KEYLOGGER_ENABLE
|
#endif // KEYLOGGER_ENABLE
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
process_record_user_oled(keycode, record);
|
||||||
|
#endif // OLED
|
||||||
|
|
||||||
switch (keycode) {
|
if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
|
||||||
case KC_QWERTY ... KC_WORKMAN:
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
if (record->event.pressed) {
|
&& process_record_user_rgb_matrix(keycode, record)
|
||||||
uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
|
|
||||||
if (!mods) {
|
|
||||||
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
|
||||||
} else if (mods & MOD_MASK_SHIFT) {
|
|
||||||
set_single_persistent_default_layer(keycode - KC_QWERTY + 4);
|
|
||||||
} else if (mods & MOD_MASK_CTRL) {
|
|
||||||
set_single_persistent_default_layer(keycode - KC_QWERTY + 8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
uint8_t temp_mod = mod_config(get_mods());
|
|
||||||
uint8_t temp_osm = mod_config(get_oneshot_mods());
|
|
||||||
clear_mods();
|
|
||||||
clear_oneshot_mods();
|
|
||||||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
|
|
||||||
#ifndef MAKE_BOOTLOADER
|
|
||||||
if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
|
|
||||||
#endif
|
#endif
|
||||||
{
|
#ifdef RGBLIGHT_ENABLE
|
||||||
send_string_with_delay_P(PSTR(":flash"), TAP_CODE_DELAY);
|
&& process_record_user_rgb_light(keycode, record)
|
||||||
}
|
#endif
|
||||||
if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
|
) {
|
||||||
send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY);
|
switch (keycode) {
|
||||||
|
case KC_QWERTY ... KC_WORKMAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
|
||||||
|
if (!mods) {
|
||||||
|
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
||||||
|
} else if (mods & MOD_MASK_SHIFT) {
|
||||||
|
set_single_persistent_default_layer(keycode - KC_QWERTY + 4);
|
||||||
|
} else if (mods & MOD_MASK_CTRL) {
|
||||||
|
set_single_persistent_default_layer(keycode - KC_QWERTY + 8);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
#ifndef MAKE_BOOTLOADER
|
||||||
|
uint8_t temp_mod = mod_config(get_mods());
|
||||||
|
uint8_t temp_osm = mod_config(get_oneshot_mods());
|
||||||
|
clear_mods();
|
||||||
|
clear_oneshot_mods();
|
||||||
|
#endif
|
||||||
|
send_string_with_delay_P(PSTR("bin/qmk"), TAP_CODE_DELAY);
|
||||||
|
#ifndef MAKE_BOOTLOADER
|
||||||
|
if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY);
|
||||||
|
#ifndef MAKE_BOOTLOADER
|
||||||
|
} else {
|
||||||
|
send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY);
|
||||||
#ifdef RGB_MATRIX_SPLIT_RIGHT
|
#ifdef RGB_MATRIX_SPLIT_RIGHT
|
||||||
send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY);
|
||||||
# ifndef OLED_DRIVER_ENABLE
|
# ifndef OLED_DRIVER_ENABLE
|
||||||
send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRSN: // Prints firmware version
|
case VRSN: // Prints firmware version
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
|
case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
|
||||||
#ifdef TAP_DANCE_ENABLE
|
#ifdef TAP_DANCE_ENABLE
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
for (uint8_t index = 0; index < 4; index++) {
|
for (uint8_t index = 0; index < 4; index++) {
|
||||||
diablo_timer[index].key_interval = 0;
|
diablo_timer[index].key_interval = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KC_CCCV: // One key copy/paste
|
case KC_CCCV: // One key copy/paste
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
copy_paste_timer = timer_read();
|
copy_paste_timer = timer_read();
|
||||||
} else {
|
} else {
|
||||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||||
tap_code16(LCTL(KC_C));
|
tap_code16(LCTL(KC_C));
|
||||||
} else { // Tap, paste
|
} else { // Tap, paste
|
||||||
tap_code16(LCTL(KC_V));
|
tap_code16(LCTL(KC_V));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
|
||||||
#ifdef UNICODE_ENABLE
|
#ifdef UNICODE_ENABLE
|
||||||
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
|
send_unicode_string("┬─┬ノ( º _ ºノ)");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UC_SHRG: // ¯\_(ツ)_/¯
|
case UC_SHRG: // ¯\_(ツ)_/¯
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
|
send_unicode_string("¯\\_(ツ)_/¯");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UC_DISA: // ಠ_ಠ
|
case UC_DISA: // ಠ_ಠ
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("0CA0 005F 0CA0");
|
send_unicode_string("ಠ_ಠ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
|
||||||
return process_record_keymap(keycode, record) &&
|
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||||
process_record_user_rgb(keycode, record) &&
|
if (record->event.pressed) {
|
||||||
|
userspace_config.rgb_layer_change ^= 1;
|
||||||
|
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||||
|
eeconfig_update_user(userspace_config.raw);
|
||||||
|
if (userspace_config.rgb_layer_change) {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||||
|
rgblight_enable_noeeprom();
|
||||||
|
# endif
|
||||||
|
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||||
|
} else {
|
||||||
|
rgblight_disable_noeeprom();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
process_record_secrets(keycode, record);
|
break;
|
||||||
|
|
||||||
|
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||||
|
case RGB_TOG:
|
||||||
|
// Split keyboards need to trigger on key-up for edge-case issue
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_toggle();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_toggle();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
||||||
|
if (record->event.pressed) {
|
||||||
|
bool is_eeprom_updated;
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
// This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
|
||||||
|
if (userspace_config.rgb_layer_change) {
|
||||||
|
userspace_config.rgb_layer_change = false;
|
||||||
|
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||||
|
is_eeprom_updated = true;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
|
if (userspace_config.rgb_matrix_idle_anim) {
|
||||||
|
userspace_config.rgb_matrix_idle_anim = false;
|
||||||
|
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
||||||
|
is_eeprom_updated = true;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
if (is_eeprom_updated) {
|
||||||
|
eeconfig_update_user(userspace_config.raw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# if defined(RGBLIGHT_DISABLE_KEYCODES) || defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
if (keycode == RGB_MODE_FORWARD && record->event.pressed) {
|
||||||
|
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
||||||
|
if (shifted) {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_step_reverse();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_step_reverse();
|
||||||
|
# endif
|
||||||
|
} else {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_step();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_step();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_MODE_REVERSE && record->event.pressed) {
|
||||||
|
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
||||||
|
if (shifted) {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_step();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_step();
|
||||||
|
# endif
|
||||||
|
} else {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_step_reverse();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_step_reverse();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_HUI) {
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_increase_hue();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_increase_hue();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_HUD) {
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_decrease_hue();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_decrease_hue();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_SAI) {
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_increase_sat();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_increase_sat();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_SAD) {
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_decrease_sat();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_decrease_sat();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_VAI) {
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_increase_val();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_increase_val();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_VAD) {
|
||||||
|
# ifndef SPLIT_KEYBOARD
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# else
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_decrease_val();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_decrease_val();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_SPI) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_increase_speed();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_increase_speed();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
} else if (keycode == RGB_SPD) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||||
|
rgblight_decrease_speed();
|
||||||
|
# endif
|
||||||
|
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||||
|
rgb_matrix_decrease_speed();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
@@ -34,13 +34,13 @@ enum userspace_custom_keycodes {
|
|||||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||||
|
|
||||||
#define LOWER MO(_LOWER)
|
#define LOWER MO(_LOWER)
|
||||||
#define RAISE MO(_RAISE)
|
#define RAISE MO(_RAISE)
|
||||||
#define ADJUST MO(_ADJUST)
|
#define ADJUST MO(_ADJUST)
|
||||||
#define TG_MODS TG(_MODS)
|
#define TG_MODS TG(_MODS)
|
||||||
#define TG_GAME TG(_GAMEPAD)
|
#define TG_GAME TG(_GAMEPAD)
|
||||||
#define OS_LWR OSL(_LOWER)
|
#define OS_LWR OSL(_LOWER)
|
||||||
#define OS_RSE OSL(_RAISE)
|
#define OS_RSE OSL(_RAISE)
|
||||||
|
|
||||||
#define KC_SEC1 KC_SECRET_1
|
#define KC_SEC1 KC_SECRET_1
|
||||||
#define KC_SEC2 KC_SECRET_2
|
#define KC_SEC2 KC_SECRET_2
|
||||||
@@ -48,13 +48,13 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
|||||||
#define KC_SEC4 KC_SECRET_4
|
#define KC_SEC4 KC_SECRET_4
|
||||||
#define KC_SEC5 KC_SECRET_5
|
#define KC_SEC5 KC_SECRET_5
|
||||||
|
|
||||||
#define QWERTY KC_QWERTY
|
#define QWERTY KC_QWERTY
|
||||||
#define DVORAK KC_DVORAK
|
#define DVORAK KC_DVORAK
|
||||||
#define COLEMAK KC_COLEMAK
|
#define COLEMAK KC_COLEMAK
|
||||||
#define WORKMAN KC_WORKMAN
|
#define WORKMAN KC_WORKMAN
|
||||||
|
|
||||||
#define KC_RESET RESET
|
#define KC_RESET RESET
|
||||||
#define KC_RST KC_RESET
|
#define KC_RST KC_RESET
|
||||||
|
|
||||||
#ifdef SWAP_HANDS_ENABLE
|
#ifdef SWAP_HANDS_ENABLE
|
||||||
# define KC_C1R3 SH_T(KC_TAB)
|
# define KC_C1R3 SH_T(KC_TAB)
|
||||||
@@ -81,7 +81,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
|||||||
#define OS_RCTL OSM(MOD_RCTL)
|
#define OS_RCTL OSM(MOD_RCTL)
|
||||||
#define OS_LALT OSM(MOD_LALT)
|
#define OS_LALT OSM(MOD_LALT)
|
||||||
#define OS_RALT OSM(MOD_RALT)
|
#define OS_RALT OSM(MOD_RALT)
|
||||||
#define OS_MEH OSM(MOD_MEH)
|
#define OS_MEH OSM(MOD_MEH)
|
||||||
#define OS_HYPR OSM(MOD_HYPR)
|
#define OS_HYPR OSM(MOD_HYPR)
|
||||||
|
|
||||||
#define ALT_APP ALT_T(KC_APP)
|
#define ALT_APP ALT_T(KC_APP)
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
#include "drashna.h"
|
||||||
|
|
||||||
|
#include "lib/lib8tion/lib8tion.h"
|
||||||
|
extern led_config_t g_led_config;
|
||||||
|
|
||||||
|
static uint32_t hypno_timer;
|
||||||
|
#if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd)
|
||||||
|
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||||
|
#else
|
||||||
|
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
|
||||||
|
HSV hsv = {hue, sat, val};
|
||||||
|
if (hsv.v > rgb_matrix_config.hsv.v) {
|
||||||
|
hsv.v = rgb_matrix_config.hsv.v;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (mode) {
|
||||||
|
case 1: // breathing
|
||||||
|
{
|
||||||
|
uint16_t time = scale16by8(g_rgb_counters.tick, speed / 8);
|
||||||
|
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||||
|
RGB rgb = hsv_to_rgb(hsv);
|
||||||
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
||||||
|
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: // Solid Color
|
||||||
|
{
|
||||||
|
RGB rgb = hsv_to_rgb(hsv);
|
||||||
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
||||||
|
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) void rgb_matrix_indicator_keymap(void) {}
|
||||||
|
|
||||||
|
void matrix_scan_rgb_matrix(void) {
|
||||||
|
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
|
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) {
|
||||||
|
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
rgb_matrix_indicator_keymap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyboard_post_init_rgb_matrix(void) {
|
||||||
|
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
|
if (userspace_config.rgb_matrix_idle_anim) {
|
||||||
|
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
|
hypno_timer = timer_read32();
|
||||||
|
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
|
||||||
|
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
switch (keycode) {
|
||||||
|
case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
|
||||||
|
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
|
if (record->event.pressed) {
|
||||||
|
userspace_config.rgb_matrix_idle_anim ^= 1;
|
||||||
|
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
||||||
|
eeconfig_update_user(userspace_config.raw);
|
||||||
|
if (userspace_config.rgb_matrix_idle_anim) {
|
||||||
|
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record);
|
||||||
|
void keyboard_post_init_rgb_matrix(void);
|
||||||
|
void matrix_scan_rgb_matrix(void);
|
||||||
|
|
||||||
|
void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
|
||||||
|
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
|
||||||
+62
-342
@@ -2,89 +2,77 @@
|
|||||||
#include "rgb_stuff.h"
|
#include "rgb_stuff.h"
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE)
|
|
||||||
extern rgblight_config_t rgblight_config;
|
extern rgblight_config_t rgblight_config;
|
||||||
bool has_initialized;
|
bool has_initialized;
|
||||||
|
|
||||||
void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index); }
|
void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index); }
|
||||||
#endif // RGBLIGHT_ENABLE
|
|
||||||
|
|
||||||
#if defined(RGB_MATRIX_ENABLE)
|
|
||||||
static uint32_t hypno_timer;
|
|
||||||
# if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd)
|
|
||||||
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
|
||||||
# else
|
|
||||||
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Custom indicators for modifiers.
|
/* Custom indicators for modifiers.
|
||||||
* This allows for certain lights to be lit up, based on what mods are active, giving some visual feedback.
|
* This allows for certain lights to be lit up, based on what mods are active, giving some visual feedback.
|
||||||
* This is especially useful for One Shot Mods, since it's not always obvious if they're still lit up.
|
* This is especially useful for One Shot Mods, since it's not always obvious if they're still lit up.
|
||||||
*/
|
*/
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef INDICATOR_LIGHTS
|
||||||
# ifdef INDICATOR_LIGHTS
|
|
||||||
void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
|
void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
|
||||||
if (userspace_config.rgb_layer_change && get_highest_layer(layer_state) == 0) {
|
if (userspace_config.rgb_layer_change && get_highest_layer(layer_state) == 0) {
|
||||||
if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
|
if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
# ifdef SHFT_LED1
|
# ifdef SHFT_LED1
|
||||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
||||||
# endif // SHFT_LED1
|
# endif // SHFT_LED1
|
||||||
# ifdef SHFT_LED2
|
# ifdef SHFT_LED2
|
||||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
||||||
# endif // SHFT_LED2
|
# endif // SHFT_LED2
|
||||||
} else {
|
} else {
|
||||||
# ifdef SHFT_LED1
|
# ifdef SHFT_LED1
|
||||||
rgblight_sethsv_default_helper(SHFT_LED1);
|
rgblight_sethsv_default_helper(SHFT_LED1);
|
||||||
# endif // SHFT_LED1
|
# endif // SHFT_LED1
|
||||||
# ifdef SHFT_LED2
|
# ifdef SHFT_LED2
|
||||||
rgblight_sethsv_default_helper(SHFT_LED2);
|
rgblight_sethsv_default_helper(SHFT_LED2);
|
||||||
# endif // SHFT_LED2
|
# endif // SHFT_LED2
|
||||||
}
|
}
|
||||||
if ((this_mod | this_osm) & MOD_MASK_CTRL) {
|
if ((this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||||
# ifdef CTRL_LED1
|
# ifdef CTRL_LED1
|
||||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
|
rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
|
||||||
# endif // CTRL_LED1
|
# endif // CTRL_LED1
|
||||||
# ifdef CTRL_LED2
|
# ifdef CTRL_LED2
|
||||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
|
rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
|
||||||
# endif // CTRL_LED2
|
# endif // CTRL_LED2
|
||||||
} else {
|
} else {
|
||||||
# ifdef CTRL_LED1
|
# ifdef CTRL_LED1
|
||||||
rgblight_sethsv_default_helper(CTRL_LED1);
|
rgblight_sethsv_default_helper(CTRL_LED1);
|
||||||
# endif // CTRL_LED1
|
# endif // CTRL_LED1
|
||||||
# ifdef CTRL_LED2
|
# ifdef CTRL_LED2
|
||||||
rgblight_sethsv_default_helper(CTRL_LED2);
|
rgblight_sethsv_default_helper(CTRL_LED2);
|
||||||
# endif // CTRL_LED2
|
# endif // CTRL_LED2
|
||||||
}
|
}
|
||||||
if ((this_mod | this_osm) & MOD_MASK_GUI) {
|
if ((this_mod | this_osm) & MOD_MASK_GUI) {
|
||||||
# ifdef GUI_LED1
|
# ifdef GUI_LED1
|
||||||
rgblight_sethsv_at(51, 255, 255, GUI_LED1);
|
rgblight_sethsv_at(51, 255, 255, GUI_LED1);
|
||||||
# endif // GUI_LED1
|
# endif // GUI_LED1
|
||||||
# ifdef GUI_LED2
|
# ifdef GUI_LED2
|
||||||
rgblight_sethsv_at(51, 255, 255, GUI_LED2);
|
rgblight_sethsv_at(51, 255, 255, GUI_LED2);
|
||||||
# endif // GUI_LED2
|
# endif // GUI_LED2
|
||||||
} else {
|
} else {
|
||||||
# ifdef GUI_LED1
|
# ifdef GUI_LED1
|
||||||
rgblight_sethsv_default_helper(GUI_LED1);
|
rgblight_sethsv_default_helper(GUI_LED1);
|
||||||
# endif // GUI_LED1
|
# endif // GUI_LED1
|
||||||
# ifdef GUI_LED2
|
# ifdef GUI_LED2
|
||||||
rgblight_sethsv_default_helper(GUI_LED2);
|
rgblight_sethsv_default_helper(GUI_LED2);
|
||||||
# endif // GUI_LED2
|
# endif // GUI_LED2
|
||||||
}
|
}
|
||||||
if ((this_mod | this_osm) & MOD_MASK_ALT) {
|
if ((this_mod | this_osm) & MOD_MASK_ALT) {
|
||||||
# ifdef ALT_LED1
|
# ifdef ALT_LED1
|
||||||
rgblight_sethsv_at(240, 255, 255, ALT_LED1);
|
rgblight_sethsv_at(240, 255, 255, ALT_LED1);
|
||||||
# endif // ALT_LED1
|
# endif // ALT_LED1
|
||||||
# ifdef GUI_LED2
|
# ifdef GUI_LED2
|
||||||
rgblight_sethsv_at(240, 255, 255, ALT_LED2);
|
rgblight_sethsv_at(240, 255, 255, ALT_LED2);
|
||||||
# endif // GUI_LED2
|
# endif // GUI_LED2
|
||||||
} else {
|
} else {
|
||||||
# ifdef GUI_LED1
|
# ifdef GUI_LED1
|
||||||
rgblight_sethsv_default_helper(ALT_LED1);
|
rgblight_sethsv_default_helper(ALT_LED1);
|
||||||
# endif // GUI_LED1
|
# endif // GUI_LED1
|
||||||
# ifdef GUI_LED2
|
# ifdef GUI_LED2
|
||||||
rgblight_sethsv_default_helper(ALT_LED2);
|
rgblight_sethsv_default_helper(ALT_LED2);
|
||||||
# endif // GUI_LED2
|
# endif // GUI_LED2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,9 +83,9 @@ void matrix_scan_indicator(void) {
|
|||||||
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# endif // INDICATOR_LIGHTS
|
#endif // INDICATOR_LIGHTS
|
||||||
|
|
||||||
# ifdef RGBLIGHT_TWINKLE
|
#ifdef RGBLIGHT_TWINKLE
|
||||||
static rgblight_fadeout lights[RGBLED_NUM];
|
static rgblight_fadeout lights[RGBLED_NUM];
|
||||||
|
|
||||||
__attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
|
__attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
|
||||||
@@ -105,40 +93,40 @@ __attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) {
|
|||||||
/* This function checks for used LEDs. This way, collisions don't occur and cause weird rendering */
|
/* This function checks for used LEDs. This way, collisions don't occur and cause weird rendering */
|
||||||
bool rgblight_twinkle_is_led_used(uint8_t index) {
|
bool rgblight_twinkle_is_led_used(uint8_t index) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
# ifdef INDICATOR_LIGHTS
|
# ifdef INDICATOR_LIGHTS
|
||||||
# ifdef SHFT_LED1
|
# ifdef SHFT_LED1
|
||||||
case SHFT_LED1:
|
case SHFT_LED1:
|
||||||
return true;
|
return true;
|
||||||
# endif // SHFT_LED1
|
# endif // SHFT_LED1
|
||||||
# ifdef SHFT_LED2
|
# ifdef SHFT_LED2
|
||||||
case SHFT_LED2:
|
case SHFT_LED2:
|
||||||
return true;
|
return true;
|
||||||
# endif // SHFT_LED2
|
# endif // SHFT_LED2
|
||||||
# ifdef CTRL_LED1
|
# ifdef CTRL_LED1
|
||||||
case CTRL_LED1:
|
case CTRL_LED1:
|
||||||
return true;
|
return true;
|
||||||
# endif // CTRL_LED1
|
# endif // CTRL_LED1
|
||||||
# ifdef CTRL_LED2
|
# ifdef CTRL_LED2
|
||||||
case CTRL_LED2:
|
case CTRL_LED2:
|
||||||
return true;
|
return true;
|
||||||
# endif // CTRL_LED2
|
# endif // CTRL_LED2
|
||||||
# ifdef GUI_LED1
|
# ifdef GUI_LED1
|
||||||
case GUI_LED1:
|
case GUI_LED1:
|
||||||
return true;
|
return true;
|
||||||
# endif // GUI_LED1
|
# endif // GUI_LED1
|
||||||
# ifdef GUI_LED2
|
# ifdef GUI_LED2
|
||||||
case GUI_LED2:
|
case GUI_LED2:
|
||||||
return true;
|
return true;
|
||||||
# endif // GUI_LED2
|
# endif // GUI_LED2
|
||||||
# ifdef ALT_LED1
|
# ifdef ALT_LED1
|
||||||
case ALT_LED1:
|
case ALT_LED1:
|
||||||
return true;
|
return true;
|
||||||
# endif // ALT_LED1
|
# endif // ALT_LED1
|
||||||
# ifdef ALT_LED2
|
# ifdef ALT_LED2
|
||||||
case ALT_LED2:
|
case ALT_LED2:
|
||||||
return true;
|
return true;
|
||||||
# endif // ALT_LED2
|
# endif // ALT_LED2
|
||||||
# endif // INDICATOR_LIGHTS
|
# endif // INDICATOR_LIGHTS
|
||||||
default:
|
default:
|
||||||
return rgblight_twinkle_is_led_used_keymap(index);
|
return rgblight_twinkle_is_led_used_keymap(index);
|
||||||
}
|
}
|
||||||
@@ -213,23 +201,15 @@ void start_rgb_light(void) {
|
|||||||
|
|
||||||
rgblight_sethsv_at(light->hue, 255, light->life, light_index);
|
rgblight_sethsv_at(light->hue, 255, light->life, light_index);
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
#endif // RGBLIGHT_ENABLE
|
|
||||||
|
|
||||||
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
|
||||||
uint16_t temp_keycode = keycode;
|
uint16_t temp_keycode = keycode;
|
||||||
// Filter out the actual keycode from MT and LT keys.
|
// Filter out the actual keycode from MT and LT keys.
|
||||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||||
temp_keycode &= 0xFF;
|
temp_keycode &= 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
|
||||||
hypno_timer = timer_read32();
|
|
||||||
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
|
|
||||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
switch (temp_keycode) {
|
switch (temp_keycode) {
|
||||||
#ifdef RGBLIGHT_TWINKLE
|
#ifdef RGBLIGHT_TWINKLE
|
||||||
case KC_A ... KC_SLASH:
|
case KC_A ... KC_SLASH:
|
||||||
@@ -242,228 +222,19 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
|||||||
start_rgb_light();
|
start_rgb_light();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif // RGBLIGHT_TWINKLE
|
#endif // RGBLIGHT_TWINKLE
|
||||||
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
|
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
userspace_config.rgb_layer_change ^= 1;
|
|
||||||
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
|
||||||
eeconfig_update_user(userspace_config.raw);
|
|
||||||
if (userspace_config.rgb_layer_change) {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
|
||||||
rgblight_enable_noeeprom();
|
|
||||||
# endif
|
|
||||||
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
|
||||||
} else {
|
|
||||||
rgblight_disable_noeeprom();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // RGBLIGHT_ENABLE
|
|
||||||
break;
|
|
||||||
case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
|
|
||||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
userspace_config.rgb_matrix_idle_anim ^= 1;
|
|
||||||
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
|
||||||
eeconfig_update_user(userspace_config.raw);
|
|
||||||
if (userspace_config.rgb_matrix_idle_anim) {
|
|
||||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
|
||||||
case RGB_TOG:
|
|
||||||
// Split keyboards need to trigger on key-up for edge-case issue
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_toggle();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_toggle();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
|
||||||
if (record->event.pressed) {
|
|
||||||
bool is_eeprom_updated;
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
// This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
|
|
||||||
if (userspace_config.rgb_layer_change) {
|
|
||||||
userspace_config.rgb_layer_change = false;
|
|
||||||
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
|
||||||
is_eeprom_updated = true;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
|
||||||
if (userspace_config.rgb_matrix_idle_anim) {
|
|
||||||
userspace_config.rgb_matrix_idle_anim = false;
|
|
||||||
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
|
||||||
is_eeprom_updated = true;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
if (is_eeprom_updated) {
|
|
||||||
eeconfig_update_user(userspace_config.raw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# if defined(RGBLIGHT_DISABLE_KEYCODES) || defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
if (keycode == RGB_MODE_FORWARD && record->event.pressed) {
|
|
||||||
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
|
||||||
if (shifted) {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_step_reverse();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_step_reverse();
|
|
||||||
# endif
|
|
||||||
} else {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_step();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_step();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_MODE_REVERSE && record->event.pressed) {
|
|
||||||
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
|
||||||
if (shifted) {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_step();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_step();
|
|
||||||
# endif
|
|
||||||
} else {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_step_reverse();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_step_reverse();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_HUI) {
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_increase_hue();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_increase_hue();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_HUD) {
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_decrease_hue();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_decrease_hue();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_SAI) {
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_increase_sat();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_increase_sat();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_SAD) {
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_decrease_sat();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_decrease_sat();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_VAI) {
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_increase_val();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_increase_val();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_VAD) {
|
|
||||||
# ifndef SPLIT_KEYBOARD
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# else
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
# endif
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_decrease_val();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_decrease_val();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_SPI) {
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_increase_speed();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_increase_speed();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
} else if (keycode == RGB_SPD) {
|
|
||||||
if (record->event.pressed) {
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
|
||||||
rgblight_decrease_speed();
|
|
||||||
# endif
|
|
||||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
|
||||||
rgb_matrix_decrease_speed();
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void keyboard_post_init_rgb(void) {
|
void keyboard_post_init_rgb_light(void) {
|
||||||
#if defined(RGBLIGHT_ENABLE)
|
#if defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||||
# if defined(RGBLIGHT_STARTUP_ANIMATION)
|
|
||||||
bool is_enabled = rgblight_config.enable;
|
bool is_enabled = rgblight_config.enable;
|
||||||
if (userspace_config.rgb_layer_change) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
rgblight_enable_noeeprom();
|
rgblight_enable_noeeprom();
|
||||||
}
|
}
|
||||||
if (rgblight_config.enable) {
|
if (rgblight_config.enable) {
|
||||||
layer_state_set_user(layer_state);
|
layer_state_set_rgb_light(layer_state);
|
||||||
uint16_t old_hue = rgblight_config.hue;
|
uint16_t old_hue = rgblight_config.hue;
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||||
for (uint16_t i = 255; i > 0; i--) {
|
for (uint16_t i = 255; i > 0; i--) {
|
||||||
@@ -476,17 +247,11 @@ void keyboard_post_init_rgb(void) {
|
|||||||
rgblight_disable_noeeprom();
|
rgblight_disable_noeeprom();
|
||||||
}
|
}
|
||||||
|
|
||||||
# endif
|
|
||||||
layer_state_set_user(layer_state);
|
|
||||||
#endif
|
|
||||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
|
||||||
if (userspace_config.rgb_matrix_idle_anim) {
|
|
||||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
layer_state_set_rgb_light(layer_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_rgb(void) {
|
void matrix_scan_rgb_light(void) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
# ifdef RGBLIGHT_TWINKLE
|
# ifdef RGBLIGHT_TWINKLE
|
||||||
scan_rgblight_fadeout();
|
scan_rgblight_fadeout();
|
||||||
@@ -496,23 +261,15 @@ void matrix_scan_rgb(void) {
|
|||||||
matrix_scan_indicator();
|
matrix_scan_indicator();
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
|
||||||
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) {
|
|
||||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
|
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
|
||||||
rgblight_sethsv_noeeprom(hue, sat, val);
|
rgblight_sethsv_noeeprom(hue, sat, val);
|
||||||
wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly
|
wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly
|
||||||
rgblight_mode_noeeprom(mode);
|
rgblight_mode_noeeprom(mode);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_rgb(layer_state_t state) {
|
layer_state_t layer_state_set_rgb_light(layer_state_t state) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
if (userspace_config.rgb_layer_change) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
switch (get_highest_layer(state)) {
|
switch (get_highest_layer(state)) {
|
||||||
@@ -574,40 +331,3 @@ layer_state_t layer_state_set_rgb(layer_state_t state) {
|
|||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
# include "lib/lib8tion/lib8tion.h"
|
|
||||||
extern led_config_t g_led_config;
|
|
||||||
|
|
||||||
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
|
|
||||||
HSV hsv = {hue, sat, val};
|
|
||||||
if (hsv.v > rgb_matrix_config.hsv.v) {
|
|
||||||
hsv.v = rgb_matrix_config.hsv.v;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (mode) {
|
|
||||||
case 1: // breathing
|
|
||||||
{
|
|
||||||
uint16_t time = scale16by8(g_rgb_counters.tick, speed / 8);
|
|
||||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
|
||||||
RGB rgb = hsv_to_rgb(hsv);
|
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
|
||||||
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
|
||||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: // Solid Color
|
|
||||||
{
|
|
||||||
RGB rgb = hsv_to_rgb(hsv);
|
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
|
||||||
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
|
||||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
# include "rgb_matrix.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_TWINKLE)
|
#if defined(RGBLIGHT_TWINKLE)
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
uint8_t hue;
|
uint8_t hue;
|
||||||
@@ -13,20 +10,13 @@ typedef struct {
|
|||||||
} rgblight_fadeout;
|
} rgblight_fadeout;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
|
bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record);
|
||||||
void keyboard_post_init_rgb(void);
|
void keyboard_post_init_rgb_light(void);
|
||||||
void matrix_scan_rgb(void);
|
void matrix_scan_rgb_light(void);
|
||||||
layer_state_t layer_state_set_rgb(layer_state_t state);
|
layer_state_t layer_state_set_rgb_light(layer_state_t state);
|
||||||
layer_state_t default_layer_state_set_rgb(layer_state_t state);
|
layer_state_t default_layer_state_set_rgb_light(layer_state_t state);
|
||||||
|
void rgblight_sethsv_default_helper(uint8_t index);
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_TWINKLE)
|
#if defined(RGBLIGHT_TWINKLE)
|
||||||
void scan_rgblight_fadeout(void);
|
void scan_rgblight_fadeout(void);
|
||||||
#endif
|
#endif
|
||||||
#if defined(RGBLIGHT_ENABLE)
|
|
||||||
void rgblight_sethsv_default_helper(uint8_t index);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
|
|
||||||
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
|
|
||||||
#endif
|
|
||||||
@@ -2,9 +2,10 @@ SRC += drashna.c \
|
|||||||
process_records.c
|
process_records.c
|
||||||
|
|
||||||
ifneq ($(PLATFORM),CHIBIOS)
|
ifneq ($(PLATFORM),CHIBIOS)
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
endif
|
endif
|
||||||
SPACE_CADET_ENABLE = no
|
SPACE_CADET_ENABLE = no
|
||||||
|
GRAVE_ESC_ENABLE = no
|
||||||
|
|
||||||
ifneq ($(strip $(NO_SECRETS)), yes)
|
ifneq ($(strip $(NO_SECRETS)), yes)
|
||||||
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
||||||
@@ -19,10 +20,6 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
|||||||
SRC += tap_dances.c
|
SRC += tap_dances.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||||
SRC += rgb_stuff.c
|
SRC += rgb_stuff.c
|
||||||
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
||||||
@@ -41,7 +38,7 @@ endif
|
|||||||
|
|
||||||
RGB_MATRIX_ENABLE ?= no
|
RGB_MATRIX_ENABLE ?= no
|
||||||
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
||||||
SRC += rgb_stuff.c
|
SRC += rgb_matrix_stuff.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@@ -61,3 +58,7 @@ endif
|
|||||||
ifeq ($(strip $(PROTOCOL)), VUSB)
|
ifeq ($(strip $(PROTOCOL)), VUSB)
|
||||||
NKRO_ENABLE = no
|
NKRO_ENABLE = no
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||||
|
SRC += oled_stuff.c
|
||||||
|
endif
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# undef NOTE_REST
|
# undef NOTE_REST
|
||||||
# define NOTE_REST 1.00f
|
# define NOTE_REST 1.00f
|
||||||
# endif // !__arm__
|
# endif // !__arm__
|
||||||
# define UNICODE_SONG_OSX SONG(RICK_ROLL)
|
# define UNICODE_SONG_MAC SONG(RICK_ROLL)
|
||||||
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
||||||
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
||||||
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
secrets.h
|
||||||
|
secrets.c
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
Copyright 2020 Silvio Gulizia desk@silviogulizia.com @sigul
|
||||||
|
|
||||||
|
Userspace by Silvio Gulizia
|
||||||
|
Contains code for ANSI / Italian layouts.
|
||||||
|
|
||||||
|
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/>.
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// My custom configurations
|
||||||
|
#define TAPPING_TOGGLE 3 // enable tapping toggle, used to lock level with a custom keycode defined by TT (in my case RAISE, LOWER and MOUSE)
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 100 // required to be able to use the keyboard with iPad
|
||||||
|
|
||||||
|
// Settings for using the keybaord as a mouse
|
||||||
|
#define MOUSEKEY_DELAY 30
|
||||||
|
// Delay between pressing a movement key and cursor movement
|
||||||
|
#define MOUSEKEY_INTERVAL 16
|
||||||
|
// Time between cursor movements
|
||||||
|
#define MOUSEKEY_MAX_SPEED 3
|
||||||
|
// Maximum cursor speed at which acceleration stops
|
||||||
|
#define MOUSEKEY_TIME_TO_MAX 40
|
||||||
|
// Time until maximum cursor speed is reached
|
||||||
|
#define MOUSEKEY_WHEEL_MAX_SPEED 0
|
||||||
|
// Maximum number of scroll steps per scroll action
|
||||||
|
#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
|
||||||
|
// Time until maximum scroll speed is reached
|
||||||
|
|
||||||
|
#define MACRO_TIMER 5
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
SRC += sigul.c
|
||||||
|
MOUSEKEY_ENABLE = yes
|
||||||
|
|
||||||
|
ifneq ($(strip $(NO_SECRETS)), yes)
|
||||||
|
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
||||||
|
SRC += secrets.c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
#include "keymap_italian_osx_ansi.h"
|
||||||
|
#include "sigul.h"
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
layer_state_t layer_state_set_keymap (layer_state_t state) {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
|
||||||
|
case IT_SCCL:
|
||||||
|
if (record->event.pressed){
|
||||||
|
if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
|
||||||
|
register_code16(IT_COLN);
|
||||||
|
} else {
|
||||||
|
register_code16(IT_SCLN);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code16(IT_COLN);
|
||||||
|
unregister_code16(IT_SCLN);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IT_APDQ:
|
||||||
|
if (record->event.pressed){
|
||||||
|
if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
|
||||||
|
register_code16(IT_DQOT);
|
||||||
|
} else {
|
||||||
|
register_code16(IT_APOS);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code16(IT_DQOT);
|
||||||
|
unregister_code16(IT_APOS);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IT_CMLS:
|
||||||
|
if (record->event.pressed){
|
||||||
|
if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
|
||||||
|
unregister_code16(KC_LSFT);
|
||||||
|
register_code16(IT_LESS);
|
||||||
|
register_code16(KC_LSFT);
|
||||||
|
} else {
|
||||||
|
register_code16(IT_COMM);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code16(IT_LESS);
|
||||||
|
unregister_code16(IT_COMM);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IT_DTMR:
|
||||||
|
if (record->event.pressed){
|
||||||
|
if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
|
||||||
|
register_code16(IT_MORE);
|
||||||
|
} else {
|
||||||
|
register_code16(IT_DOT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code16(IT_MORE);
|
||||||
|
unregister_code16(IT_DOT);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IT_SLQS:
|
||||||
|
if (record->event.pressed){
|
||||||
|
if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
|
||||||
|
register_code16(IT_QST);
|
||||||
|
} else {
|
||||||
|
register_code16(IT_SLSH);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code16(IT_QST);
|
||||||
|
unregister_code16(IT_SLSH);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
enum userspace_layers {
|
||||||
|
_QWERTY,
|
||||||
|
_LOWER, //symbols
|
||||||
|
_RAISE, //numbers
|
||||||
|
_ADJUST, //system
|
||||||
|
_NUMPAD,
|
||||||
|
_FN,
|
||||||
|
_MOUSE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum userspace_custom_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
// custom keycodes for an Italian ANSI layout with accented vowels
|
||||||
|
IT_CMLS, // IT_COMM and IT_LESS when combined with shift
|
||||||
|
IT_DTMR, // IT_DOT and IT_MORE when combined with shift
|
||||||
|
IT_SLQS, // IT_SLSH and IT_QST when combined with shift
|
||||||
|
IT_APDQ, // IT_APO and IT_DQOT when combined with shift
|
||||||
|
IT_SCCL, // IT_SMCL and IT_COLN when combined with shift
|
||||||
|
SECRET0,
|
||||||
|
SECRET1,
|
||||||
|
SECRET2,
|
||||||
|
SECRET3,
|
||||||
|
SECRET4,
|
||||||
|
NEW_SAFE_RANGE // start new keyboard-level declarations with NEW_SAFE_RANGE
|
||||||
|
};
|
||||||
|
|
||||||
|
// Defining Layer Keycodes
|
||||||
|
#define QWERTY DF(_QWERTY)
|
||||||
|
// For LOWER and RAISE I use TT instead of MO to be able to lock those layer tapping three times the key (TAPPING_TOGGLE 3 has been added in sigul.h)
|
||||||
|
#define LOWER TT(_LOWER)
|
||||||
|
#define RAISE TT(_RAISE)
|
||||||
|
#define NUMPAD TG(_NUMPAD)
|
||||||
|
#define FN MO(_FN)
|
||||||
|
#define MOUSE TT(_MOUSE)
|
||||||
|
#define TABFN LT(_FN, KC_TAB)
|
||||||
|
#define ESCFN LT(_FN, KC_ESC)
|
||||||
|
#define MS_B LT(_MOUSE, IT_B)
|
||||||
|
|
||||||
Reference in new issue
Block a user