Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7c4937eef | ||
|
|
cdfcbfc92d | ||
|
|
7bfe0879bf | ||
|
|
043ef40b92 | ||
|
|
3305df8e79 | ||
|
|
a2a2ba0eec | ||
|
|
9b0a548687 | ||
|
|
be497126e8 | ||
|
|
3380694740 | ||
|
|
f9f04ff2a4 | ||
|
|
98b87e6357 | ||
|
|
b5d85ddc90 | ||
|
|
6aba3ce9d2 | ||
|
|
79e0964d21 | ||
|
|
6e48ea082d | ||
|
|
681db534f3 | ||
|
|
d8ccabeeef | ||
|
|
d5f01ad2f9 | ||
|
|
f4a2e58182 | ||
|
|
7abf507cb6 | ||
|
|
5c491da0e7 | ||
|
|
41d8be7e75 | ||
|
|
a1de199aa9 | ||
|
|
f6a0ee85fd | ||
|
|
beb292e7f0 | ||
|
|
8dd1dab7cb | ||
|
|
7470317d95 | ||
|
|
9b82a9295f | ||
|
|
220551ed5f | ||
|
|
32b63d676f | ||
|
|
a872faa53e | ||
|
|
3ac3bb9b5e | ||
|
|
95d2a11c44 | ||
|
|
a120a000d4 | ||
|
|
a0c36ed253 | ||
|
|
dcf4877fac | ||
|
|
659e5d6316 | ||
|
|
168b0cf64d | ||
|
|
bcaf66bd32 | ||
|
|
11bdf28001 | ||
|
|
0d936b2fe6 | ||
|
|
7ba2bc765b | ||
|
|
80ddb34415 | ||
|
|
7a89b39aad | ||
|
|
5838c458d7 | ||
|
|
f019cd12a5 | ||
|
|
36fce12d08 | ||
|
|
303859ea28 | ||
|
|
65db404260 | ||
|
|
d7e3d718d0 | ||
|
|
da5e904306 | ||
|
|
7276cc24d0 | ||
|
|
2c1963d583 | ||
|
|
c4451f4505 | ||
|
|
79acf1e660 | ||
|
|
d5dcf54e23 | ||
|
|
c8de0f78bf | ||
|
|
6f30a6b407 |
No files matched your search
+3
-11
@@ -298,19 +298,11 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
|
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
|
||||||
# Debounce Modules. If implemented in matrix.c, don't use these.
|
# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
|
||||||
DEBOUNCE_TYPE?= sym_g
|
DEBOUNCE_TYPE?= sym_g
|
||||||
VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
|
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
|
||||||
ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),)
|
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
|
||||||
$(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
|
|
||||||
endif
|
endif
|
||||||
ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
|
|
||||||
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
|
|
||||||
else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
|
|
||||||
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
||||||
OPT_DEFS += -DSPLIT_KEYBOARD
|
OPT_DEFS += -DSPLIT_KEYBOARD
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
* [Key Lock](feature_key_lock.md)
|
* [Key Lock](feature_key_lock.md)
|
||||||
* [Layouts](feature_layouts.md)
|
* [Layouts](feature_layouts.md)
|
||||||
* [Leader Key](feature_leader_key.md)
|
* [Leader Key](feature_leader_key.md)
|
||||||
|
* [LED Matrix](feature_led_matrix.md)
|
||||||
* [Macros](feature_macros.md)
|
* [Macros](feature_macros.md)
|
||||||
* [Mouse Keys](feature_mouse_keys.md)
|
* [Mouse Keys](feature_mouse_keys.md)
|
||||||
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
|
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
|
||||||
|
|||||||
@@ -307,8 +307,8 @@ Use these to enable or disable building certain features. The more you have enab
|
|||||||
* Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
|
* Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
|
||||||
* `CUSTOM_MATRIX`
|
* `CUSTOM_MATRIX`
|
||||||
* Allows replacing the standard matrix scanning routine with a custom one.
|
* Allows replacing the standard matrix scanning routine with a custom one.
|
||||||
* `CUSTOM_DEBOUNCE`
|
* `DEBOUNCE_TYPE`
|
||||||
* Allows replacing the standard key debouncing routine with a custom one.
|
* Allows replacing the standard key debouncing routine with an alternative or custom one.
|
||||||
* `WAIT_FOR_USB`
|
* `WAIT_FOR_USB`
|
||||||
* Forces the keyboard to wait for a USB connection to be established before it starts up
|
* Forces the keyboard to wait for a USB connection to be established before it starts up
|
||||||
* `NO_USB_STARTUP_CHECK`
|
* `NO_USB_STARTUP_CHECK`
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ Most first-time QMK contributors start with their personal keymaps. We try to ke
|
|||||||
* All Keymap PR's are squashed, so if you care about how your commits are squashed you should do it yourself
|
* All Keymap PR's are squashed, so if you care about how your commits are squashed you should do it yourself
|
||||||
* Do not lump features in with keymap PR's. Submit the feature first and then a second PR for the keymap.
|
* Do not lump features in with keymap PR's. Submit the feature first and then a second PR for the keymap.
|
||||||
* Do not include `Makefile`s in your keymap folder (they're no longer used)
|
* Do not include `Makefile`s in your keymap folder (they're no longer used)
|
||||||
* Update copyrights in file headers (look for `REPLACE_WITH_YOUR_NAME `)
|
* Update copyrights in file headers (look for `%YOUR_NAME%`)
|
||||||
|
|
||||||
## Keyboards
|
## Keyboards
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ We also ask that you follow these guidelines:
|
|||||||
* Do not lump core features in with new keyboards. Submit the feature first and then submit a separate PR for the keyboard.
|
* Do not lump core features in with new keyboards. Submit the feature first and then submit a separate PR for the keyboard.
|
||||||
* Name `.c`/`.h` file after the immediate parent folder, eg `/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
|
* Name `.c`/`.h` file after the immediate parent folder, eg `/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
|
||||||
* Do not include `Makefile`s in your keyboard folder (they're no longer used)
|
* Do not include `Makefile`s in your keyboard folder (they're no longer used)
|
||||||
* Update copyrights in file headers (look for `REPLACE_WITH_YOUR_NAME `)
|
* Update copyrights in file headers (look for `%YOUR_NAME%`)
|
||||||
|
|
||||||
## Quantum/TMK Core
|
## Quantum/TMK Core
|
||||||
|
|
||||||
|
|||||||
@@ -2,45 +2,38 @@
|
|||||||
|
|
||||||
QMK supports multiple debounce algorithms through its debounce API.
|
QMK supports multiple debounce algorithms through its debounce API.
|
||||||
|
|
||||||
The underlying debounce algorithm is determined by which matrix.c file you are using.
|
|
||||||
|
|
||||||
The logic for which debounce method called is below. It checks various defines that you have set in rules.mk
|
The logic for which debounce method called is below. It checks various defines that you have set in rules.mk
|
||||||
|
|
||||||
```
|
```
|
||||||
|
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
|
||||||
DEBOUNCE_TYPE?= sym_g
|
DEBOUNCE_TYPE?= sym_g
|
||||||
VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
|
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
|
||||||
ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),)
|
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
|
||||||
$(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
|
|
||||||
endif
|
|
||||||
ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
|
|
||||||
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
|
|
||||||
else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
|
|
||||||
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
|
|
||||||
endif
|
endif
|
||||||
```
|
```
|
||||||
|
|
||||||
# Debounce selection
|
# Debounce selection
|
||||||
|
|
||||||
| DEBOUNCE_ALGO | Description | What to do |
|
| DEBOUNCE_TYPE | Description | What else is needed |
|
||||||
| ------------- | --------------------------------------------------- | ----------------------------- |
|
| ------------- | --------------------------------------------------- | ----------------------------- |
|
||||||
| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary |
|
| Not defined | Use the default algorithm, currently sym_g | Nothing |
|
||||||
| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
|
| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
|
||||||
| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm |
|
| anything_else | Use another algorithm from quantum/debounce/* | Nothing |
|
||||||
|
|
||||||
**Regarding split keyboards**:
|
**Regarding split keyboards**:
|
||||||
The debounce code is compatible with split keyboards.
|
The debounce code is compatible with split keyboards.
|
||||||
|
|
||||||
# Use your own debouncing code
|
# Use your own debouncing code
|
||||||
* Set ```DEBOUNCE_TYPE = custom ```.
|
* Set ```DEBOUNCE_TYPE = custom ```.
|
||||||
* Add ```SRC += debounce.c```
|
* Add ```SRC += debounce.c```
|
||||||
* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations.
|
* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples.
|
||||||
* Debouncing occurs after every raw matrix scan.
|
* Debouncing occurs after every raw matrix scan.
|
||||||
* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
|
* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
|
||||||
|
|
||||||
# Changing between included debouncing methods
|
# Changing between included debouncing methods
|
||||||
You can either use your own code, by including your own debounce.c, or switch to another included one.
|
You can either use your own code, by including your own debounce.c, or switch to another included one.
|
||||||
Included debounce methods are:
|
Included debounce methods are:
|
||||||
* debounce_eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key
|
* eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key
|
||||||
* debounce_sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed.
|
* sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed.
|
||||||
|
|
||||||
|
|
||||||
@@ -65,6 +65,8 @@ The following input modes are available:
|
|||||||
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`), but this can be changed by defining [`UNICODE_OSX_KEY`](#input-key-configuration) with another keycode.
|
By default, this mode uses the left Option key (`KC_LALT`), but this can be changed by defining [`UNICODE_OSX_KEY`](#input-key-configuration) with another keycode.
|
||||||
|
|
||||||
|
**Note:** Using the _Unicode Hex Input_ input source may disable some Option based shortcuts, such as: Option + Left Arrow (`moveWordLeftAndModifySelection`) and Option + Right Arrow (`moveWordRightAndModifySelection`).
|
||||||
|
|
||||||
* **`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.
|
||||||
@@ -121,7 +123,7 @@ For instance, you can add these definitions to your `config.h` file:
|
|||||||
|
|
||||||
### Additional Customization
|
### Additional Customization
|
||||||
|
|
||||||
Because Unicode is such a large and variable feature, there are a number of options that you can customize to work better on your system.
|
Because Unicode is such a large and variable feature, there are a number of options that you can customize to work better on your system.
|
||||||
|
|
||||||
#### Start and Finish input functions
|
#### Start and Finish input functions
|
||||||
|
|
||||||
@@ -183,7 +185,7 @@ AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
|
|||||||
|
|
||||||
### US International
|
### US International
|
||||||
|
|
||||||
If you enable the US International layout on the system, it will use punctuation to accent the characters.
|
If you enable the US International layout on the system, it will use punctuation to accent the characters.
|
||||||
|
|
||||||
For instance, typing "`a" will result in à.
|
For instance, typing "`a" will result in à.
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ QMK has a staggering number of features for building your keyboard. It can take
|
|||||||
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
|
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
|
||||||
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
|
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
|
||||||
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
|
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
|
||||||
|
* [LED Matrix](feature_led_matrix.md) - LED Matrix single color lights for per key lighting (Single Color, not RGB).
|
||||||
* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
|
* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
|
||||||
* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
|
* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
|
||||||
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) - Sticky Keys, lets hit a key rather than holding it.
|
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) - Sticky Keys, lets hit a key rather than holding it.
|
||||||
|
|||||||
@@ -143,9 +143,9 @@ As there is no standard split communication driver for ARM-based split keyboards
|
|||||||
|
|
||||||
Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan().
|
Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan().
|
||||||
|
|
||||||
`CUSTOM_DEBOUNCE`
|
`DEBOUNCE_TYPE`
|
||||||
|
|
||||||
Lets you replace the default key debouncing routine with your own code. You will need to provide your own implementation of debounce().
|
Lets you replace the default key debouncing routine with an alternative one. If `custom` you will need to provide your own implementation.
|
||||||
|
|
||||||
## Customizing Makefile Options on a Per-Keymap Basis
|
## Customizing Makefile Options on a Per-Keymap Basis
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef KB_H
|
#pragma once
|
||||||
#define KB_H
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
@@ -36,4 +35,3 @@
|
|||||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D }, \
|
||||||
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D } \
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D } \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
@@ -68,5 +68,6 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||||
|
EXTRAFLAGS += -flto
|
||||||
|
|
||||||
LAYOUTS = 60_ansi
|
LAYOUTS = 60_ansi
|
||||||
@@ -46,35 +46,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
||||||
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
|
||||||
writePinLow(B6);
|
writePinLow(B6);
|
||||||
} else {
|
} else {
|
||||||
writePinHigh(B6);
|
writePinHigh(B6);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_KANA)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -54,5 +54,6 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/
|
|||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
EXTRAFLAGS += -flto
|
||||||
|
|
||||||
LAYOUTS = 60_hhkb
|
LAYOUTS = 60_hhkb
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
#ifndef KB_H
|
#pragma once
|
||||||
#define KB_H
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
@@ -77,5 +76,3 @@
|
|||||||
K300, KC_NO,K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
K300, KC_NO,K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||||
KC_NO,K401, K403, K406, KC_NO,K411, K413, KC_NO \
|
KC_NO,K401, K403, K406, KC_NO,K411, K413, KC_NO \
|
||||||
)
|
)
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
@@ -46,5 +45,3 @@
|
|||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# 1upkeyboards 60% RGB
|
# 1up60rgb 60% RGB
|
||||||
|
|
||||||
Firmware for custom keyboard PCB with 60% key layout.
|
Firmware for custom keyboard PCB with 60% key layout.
|
||||||
|
|
||||||
|
|||||||
@@ -44,15 +44,15 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
AUDIO_ENABLE ?= no
|
AUDIO_ENABLE = no
|
||||||
RGBLIGHT_ENABLE ?= yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|
||||||
LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift 60_hhkb
|
LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift 60_hhkb
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
# 1UP Keyboards
|
# 1UP Keyboards
|
||||||
|
|
||||||
|
1UP Keyboards is an online mechanical keyboard retailer located in New York, USA.
|
||||||
|
|
||||||
Website: [1UP Keyboards](https://www.1upkeyboards.com/)
|
Website: [1UP Keyboards](https://www.1upkeyboards.com/)
|
||||||
Discord: [Server Invite](https://discordapp.com/invite/c6SYn8)
|
Discord: [Server Invite](https://discordapp.com/invite/c6SYn8)
|
||||||
YouTube: [skiwithpete](https://www.youtube.com/user/skiwithpete)
|
YouTube: [skiwithpete](https://www.youtube.com/user/skiwithpete)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2019 'mechmerlin'
|
/* Copyright 2019 MechMerlin
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -80,4 +80,4 @@ AUDIO_ENABLE = no # Audio output on port C6
|
|||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||||
|
|
||||||
LAYOUTS = ortho_4x4
|
LAYOUTS = ortho_4x4
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
@@ -47,4 +46,3 @@
|
|||||||
#define RGBLIGHT_VAL_STEP 8
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
Sweet16
|
# Sweet 16 Macropad
|
||||||
===
|
|
||||||
|
|
||||||
A 4x4 numpad/macro pad sold by 1up Keyboards - designed by Bishop Keyboards
|
A 4x4 numpad/macro pad sold by 1up Keyboards - designed by Bishop Keyboards
|
||||||
|
|
||||||
|
|||||||
@@ -53,4 +53,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
EXTRAFLAGS += -flto
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
#ifndef KB_H
|
#pragma once
|
||||||
#define KB_H
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
@@ -29,4 +28,3 @@
|
|||||||
{ KC_NO, K31, K32, KC_NO } \
|
{ KC_NO, K31, K32, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
#define ___ KC_NO
|
||||||
|
|
||||||
/* This a shortcut to help you visually see your layout.
|
/* This a shortcut to help you visually see your layout.
|
||||||
*
|
*
|
||||||
@@ -26,18 +27,18 @@
|
|||||||
* represents the switch matrix.
|
* represents the switch matrix.
|
||||||
*/
|
*/
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K50, K51, K52, K53, K54, K55, K56, \
|
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K60, K61, K62, K63, K64, K65, K66, \
|
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K70, K71, K72, K73, K74, K75, K76, \
|
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
|
||||||
K34, K82 \
|
L34, R32 \
|
||||||
) { \
|
) { \
|
||||||
{ K00, K01, K02, K03, K04, K05, K06 }, \
|
{ L00, L01, L02, L03, L04, L05, L06 }, \
|
||||||
{ K10, K11, K12, K13, K14, K15, K16 }, \
|
{ L10, L11, L12, L13, L14, L15, L16 }, \
|
||||||
{ K20, K21, K22, K23, K24, K25, K26 }, \
|
{ L20, L21, L22, L23, L24, L25, L26 }, \
|
||||||
{ KC_NO, KC_NO, KC_NO, KC_NO, K34, KC_NO, KC_NO }, \
|
{ ___, ___, ___, ___, L34, ___, ___ }, \
|
||||||
\
|
\
|
||||||
{ K56, K55, K54, K53, K52, K51, K50 }, \
|
{ R06, R05, R04, R03, R02, R01, R00 }, \
|
||||||
{ K66, K65, K64, K63, K62, K61, K60 }, \
|
{ R16, R15, R14, R13, R12, R11, R10 }, \
|
||||||
{ K76, K75, K74, K73, K72, K71, K70 }, \
|
{ R26, R25, R24, R23, R22, R21, R20 }, \
|
||||||
{ KC_NO, KC_NO, KC_NO, KC_NO, K82, KC_NO, KC_NO } \
|
{ ___, ___, ___, ___, R32, ___, ___ } \
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "half_n_half",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 14,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"key_count": 44,
|
||||||
|
"layout": [
|
||||||
|
{"label":"L00", "x":0, "y":0},
|
||||||
|
{"label":"L01", "x":1, "y":0},
|
||||||
|
{"label":"L02", "x":2, "y":0},
|
||||||
|
{"label":"L03", "x":3, "y":0},
|
||||||
|
{"label":"L04", "x":4, "y":0},
|
||||||
|
{"label":"L05", "x":5, "y":0},
|
||||||
|
{"label":"L06", "x":6, "y":0},
|
||||||
|
{"label":"R00", "x":7, "y":0},
|
||||||
|
{"label":"R01", "x":8, "y":0},
|
||||||
|
{"label":"R02", "x":9, "y":0},
|
||||||
|
{"label":"R03", "x":10, "y":0},
|
||||||
|
{"label":"R04", "x":11, "y":0},
|
||||||
|
{"label":"R05", "x":12, "y":0},
|
||||||
|
{"label":"R06", "x":13, "y":0},
|
||||||
|
|
||||||
|
{"label":"L10", "x":0, "y":1},
|
||||||
|
{"label":"L11", "x":1, "y":1},
|
||||||
|
{"label":"L12", "x":2, "y":1},
|
||||||
|
{"label":"L13", "x":3, "y":1},
|
||||||
|
{"label":"L14", "x":4, "y":1},
|
||||||
|
{"label":"L15", "x":5, "y":1},
|
||||||
|
{"label":"L16", "x":6, "y":1},
|
||||||
|
{"label":"R10", "x":7, "y":1},
|
||||||
|
{"label":"R11", "x":8, "y":1},
|
||||||
|
{"label":"R12", "x":9, "y":1},
|
||||||
|
{"label":"R13", "x":10, "y":1},
|
||||||
|
{"label":"R14", "x":11, "y":1},
|
||||||
|
{"label":"R15", "x":12, "y":1},
|
||||||
|
{"label":"R16", "x":13, "y":1},
|
||||||
|
|
||||||
|
{"label":"L20", "x":0, "y":2},
|
||||||
|
{"label":"L21", "x":1, "y":2},
|
||||||
|
{"label":"L22", "x":2, "y":2},
|
||||||
|
{"label":"L23", "x":3, "y":2},
|
||||||
|
{"label":"L24", "x":4, "y":2},
|
||||||
|
{"label":"L25", "x":5, "y":2},
|
||||||
|
{"label":"L26", "x":6, "y":2},
|
||||||
|
{"label":"R20", "x":7, "y":2},
|
||||||
|
{"label":"R21", "x":8, "y":2},
|
||||||
|
{"label":"R22", "x":9, "y":2},
|
||||||
|
{"label":"R23", "x":10, "y":2},
|
||||||
|
{"label":"R24", "x":11, "y":2},
|
||||||
|
{"label":"R25", "x":12, "y":2},
|
||||||
|
{"label":"R26", "x":13, "y":2},
|
||||||
|
|
||||||
|
{"label":"L34", "x":4, "y":3, "w":2},
|
||||||
|
{"label":"R32", "x":8, "y":3, "w":2}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -52,6 +52,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define BACKLIGHT_BREATHING
|
#define BACKLIGHT_BREATHING
|
||||||
#define BACKLIGHT_LEVELS 3
|
#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 */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCING_DELAY 5
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* Overrides for Feather 32u4 Bluefruit */
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#undef DESCRIPTION
|
||||||
|
#define DESCRIPTION Magicforce 68 BLE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#undef MATRIX_ROW_PINS
|
||||||
|
#undef MATRIX_COL_PINS
|
||||||
|
#undef UNUSED_PINS
|
||||||
|
#define MATRIX_ROW_PINS { D1, D0, C6, D7, B5, B6, B7, D6 }
|
||||||
|
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, D2, D3 }
|
||||||
|
#define UNUSED_PINS {B5}
|
||||||
File renamed without changes.
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
# mf68_ble
|
# mf68_ble
|
||||||
|
|
||||||

|

|
||||||
===
|
===
|
||||||
|
|
||||||
Magicforce 68 with [replacement PCB](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/mf68) designed by [di0ib](https://github.com/di0ib).
|
Magicforce 68 with [replacement PCB](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/mf68) designed by [di0ib](https://github.com/di0ib).
|
||||||
@@ -24,6 +24,6 @@ Below is how you wire the Feather to PCB
|
|||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make 40percentclub/mf68_ble:default
|
make 40percentclub/mf68:mf68_ble
|
||||||
|
|
||||||
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).
|
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,66 @@
|
|||||||
|
# Overrides for Feather 32u4 Bluefruit
|
||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 8000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# atmega32a bootloadHID
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
|
||||||
|
# If you don't know the bootloader type, then you can specify the
|
||||||
|
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BLUETOOTH = AdafruitBLE
|
||||||
|
BACKLIGHT_ENABLE = no
|
||||||
@@ -63,13 +63,14 @@ BOOTLOADER = caterina
|
|||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
MIDI_ENABLE = no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"keyboard_name": "MF68 BLE",
|
|
||||||
"url": "",
|
|
||||||
"maintainer": "qmk",
|
|
||||||
"width": 17.25,
|
|
||||||
"height": 5,
|
|
||||||
"layouts": {
|
|
||||||
"LAYOUT_68_ansi": {
|
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15.25, "y":1}, {"x":16.25, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"x":15.25, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#include "mf68_ble.h"
|
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
// put your keyboard start-up code here
|
|
||||||
// runs once when the firmware starts up
|
|
||||||
|
|
||||||
matrix_init_user();
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "quantum.h"
|
|
||||||
|
|
||||||
#define LAYOUT_68_ansi( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K10, K11, K12, K13, K14, K15, K16, \
|
|
||||||
K17, K18, K20, K21, K22, K23, K24, K25, K26, K27, K28, K30, K31, K32, K33, K34, \
|
|
||||||
K35, K36, K37, K38, K40, K41, K42, K43, K44, K45, K46, K47, K48, \
|
|
||||||
K50, K51, K52, K53, K54, K55, K56, K57, K58, K60, K61, K62, K63, \
|
|
||||||
K64, K65, K66, K67, K68, K70, K71, K72, K73, K74 \
|
|
||||||
) { \
|
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \
|
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \
|
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
|
|
||||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
|
|
||||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \
|
|
||||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \
|
|
||||||
{ K60, K61, K62, K63, K64, K65, K66, K67, K68 }, \
|
|
||||||
{ K70, K71, K72, K73, K74 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_kc( \
|
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K10, K11, K12, K13, K14, K15, K16, \
|
|
||||||
K17, K18, K20, K21, K22, K23, K24, K25, K26, K27, K28, K30, K31, K32, K33, K34, \
|
|
||||||
K35, K36, K37, K38, K40, K41, K42, K43, K44, K45, K46, K47, K48, \
|
|
||||||
K50, K51, K52, K53, K54, K55, K56, K57, K58, K60, K61, K62, K63, \
|
|
||||||
K64, K65, K66, K67, K68, K70, K71, K72, K73, K74 \
|
|
||||||
) LAYOUT_68_ansi( \
|
|
||||||
KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, \
|
|
||||||
KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, \
|
|
||||||
KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, \
|
|
||||||
KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, \
|
|
||||||
KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_##K48, \
|
|
||||||
KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, KC_##K58, \
|
|
||||||
KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, KC_##K68, \
|
|
||||||
KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74 \
|
|
||||||
)
|
|
||||||
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
*/
|
*/
|
||||||
[_LW] = LAYOUT( /* [> LOWER <] */
|
[_LW] = LAYOUT( /* [> LOWER <] */
|
||||||
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
|
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
|
||||||
KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 ,
|
KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 ,
|
||||||
KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,
|
KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,
|
||||||
KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS )
|
KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS )
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,77 +1,103 @@
|
|||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
A Balance 12 layout for the Atreus keyboard.
|
This layout is based on Balance Twelve (mirror variant) by Sasha Viminitz. Please see [this page](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/)
|
||||||
|
for more information. It's designed for left-handers who use their right hand for the mouse.
|
||||||
|
|
||||||
Balance 12 was created by Sasha Viminitz. Please see [this page](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/)
|
## To build
|
||||||
for some background on the design of the layout.
|
|
||||||
|
|
||||||
* The variant used here is a mirror of the original for left-handers
|
```
|
||||||
* The central column of punctuation keys has been moved elsewhere
|
sudo make atreus:yttyx
|
||||||
* Home positions for the left and right forefingers are *T* and *A* respectively
|
```
|
||||||
|
|
||||||
## To build/flash
|
## To flash (example)
|
||||||
|
|
||||||
> make atreus:yttyx:avrdude
|
```
|
||||||
|
sudo avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_yttyx.hex -P /dev/ttyACM0
|
||||||
|
```
|
||||||
|
|
||||||
## Layers
|
## Layers
|
||||||
|
|
||||||
### Base:
|
### Base:
|
||||||
|
|
||||||
.----------------------------------. .------------------------------.
|
.--------.-------.-------.-------.--------. .-------.-------.-------.-------.------.
|
||||||
| P | L | C | D | W | | U | O | Y | K | Q |
|
| P | L | C | D | W | | U | O | Y | K | Q |
|
||||||
+------+------+------+-----+-------| |------+-----+-----+-----+-----|
|
|--------+-------+-------+-------+--------| |-------+-------+-------+-------+------|
|
||||||
| N | R | S | T | M | | A | E | I | H | V |
|
| N | R | S | T | M | | A | E | I | H | V |
|
||||||
+------+------+------+-----+-------| |------+-----+-----+-----+-----|
|
|--------+-------+-------+-------+--------| |-------+-------+-------+-------+------|
|
||||||
| Z | J | F | G | B | | , | . | ; | X | - |
|
| Z Sft | J Ctl | F Alt | G | B | | , | . Alt | ; Ctl | X Sft | Sup |
|
||||||
+------+------+------+-----+-------+---------+------+-----+-----+-----+-----|
|
'--------'-------'-------+-------+--------+-----. .-----+-------+-------+-------'-------'------'
|
||||||
| Shft | Ctl | Alt | BS | Space | L1 | R1 | Shft | R2 | Win | Ctl | Alt |
|
| BS P1 | Spc P2 | P3 | | | Sft | |
|
||||||
'---------------------------------------------------------------------------'
|
'-------'--------'-----' '-----'-------'-------'
|
||||||
|
|
||||||
### L1:
|
### P1: Punctuation (1)
|
||||||
|
|
||||||
.---------------------------------. .--------------------------------.
|
|
||||||
| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
|
||||||
|------+------+------+----+-------| |------+----+-----+------+-------|
|
|
||||||
| Tab | ? | = | - | _ | | ' | " | + | * | Enter |
|
|
||||||
|------+------+------+----+-------| |------+----+-----+------+-------|
|
|
||||||
| Esc | ! | & | | | | , | . | ; | | - |
|
|
||||||
|------+------+------+----+-------+---------+------+----+-----+------+-------|
|
|
||||||
| Shft | Ctrl | Alt | Bk | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt |
|
|
||||||
'----------------------------------------------------------------------------'
|
|
||||||
|
|
||||||
### R1:
|
.--------.-------.-------.-------.-------. .------.-------.-------.-------.------.
|
||||||
|
| Esc | | | | RS | | | | / | ^ | £ | ~ |
|
||||||
|
|--------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
|
| Tab | | | | | | & | \ | ` | $ | Ent |
|
||||||
|
|--------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
|
| Sft | Ctl | Alt | Del | | | % | Alt | Ctl | Sft | Sup |
|
||||||
|
'--------'-------'-------+-------+-------+-----. .-----+------+-------+-------'-------'------'
|
||||||
|
| P1 | | | | | Sft | |
|
||||||
|
'-------'-------'-----' '-----'------'-------'
|
||||||
|
|
||||||
.---------------------------------. .-------------------------------.
|
### P2: Punctuation (2)
|
||||||
| < | > | { | } | @ | | $ | £ | | | R3 |
|
|
||||||
+------+------+-----+-----|-------| |------+----+-----+------+------|
|
|
||||||
| [ | ] | ( | ) | # | | ' | " | ~ | ` | Caps |
|
|
||||||
|------+------+-----+-----+-------| |------+----+-----+------+------|
|
|
||||||
| / | \ | ^ | | | % | | , | . | ; | | PScn |
|
|
||||||
|------+------+-----+-----+-------+---------+------+----+-----+------+------|
|
|
||||||
| Shft | Ctrl | Alt | Del | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt |
|
|
||||||
'---------------------------------------------------------------------------'
|
|
||||||
|
|
||||||
### R2:
|
.-------.-------.-------.-------.-------. .-------.-------.-------.-------.------.
|
||||||
|
| Esc | | NC | FV | | | ( | ) | " | ? | |
|
||||||
|
|-------+-------+-------+-------+-------| |-------+-------+-------+-------+------|
|
||||||
|
| Tab | Ctl-X | Ctl-C | Ctl-V | Ctl-Z | | { | } | ' | ! | Ent |
|
||||||
|
|-------+-------+-------+-------+-------| |-------+-------+-------+-------+------|
|
||||||
|
| Sft | Ctl | Alt | Del | Ent | | # | Alt | Ctl | Sft | Sup |
|
||||||
|
'-------'-------'-------+-------+-------+-----. .-----+-------+-------+-------'-------'------'
|
||||||
|
| BS | P2 | | | | Sft | |
|
||||||
|
'-------'-------'-----' '-----'-------'-------'
|
||||||
|
|
||||||
.-----------------------------------. .--------------------.-----------------.
|
### P3: Punctuation (3)
|
||||||
| F12 | F11 | F10 | F9 | Copy | | Home | Up | End | PgUp | Insert |
|
|
||||||
|------+------+------+------+-------| |------+------+------+------+----------|
|
|
||||||
| F8 | F7 | F6 | F5 | Paste | | Left | Down | Right| PgDn | Enter |
|
|
||||||
|------+------+------+------+-------| |------+------+------+------+----------|
|
|
||||||
| F4 | F3 | F2 | F1 | Cut | | ^Tab | | Tab | | |
|
|
||||||
|------+------+------+------+-------+---------+------+------+------+------+----------|
|
|
||||||
| Shft | Ctrl | Alt | Del | Undo | L1 | R1 | Shft | R2 | Sup | Ctrl | WinRight |
|
|
||||||
'------------------------------------------------------------------------------------'
|
|
||||||
|
|
||||||
### R3:
|
.-------.-------.-------.-------.-------. .------.-------.-------.-------.------.
|
||||||
|
| Esc | | Break | Pscr | ScLk | | < | > | + | _ | = |
|
||||||
|
|-------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
|
| Tab | | | Caps | | | [ | ] | * | - | Ent |
|
||||||
|
|-------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
|
| Sft | Ctl | Alt | Del | | | @ | Alt | Ctl | Sft | Sup |
|
||||||
|
'-------'-------'-------+-------+-------+-----. .-----+------+-------+-------'-------'------'
|
||||||
|
| BS | | P3 | | | Sft | |
|
||||||
|
'-------'-------'-----' '-----'------'-------'
|
||||||
|
|
||||||
.----------------------------. .------------------------.
|
### Numerals / Cursor control
|
||||||
| RESET | | | | | | | | | | R3 |
|
|
||||||
|-------+----+-----+----+----| |----+----+----+----+----|
|
|
||||||
| | | | | | | | | | | |
|
|
||||||
|-------+----+-----+----+----| |----+----+----+----+----|
|
|
||||||
| | | | | | | | | | | |
|
|
||||||
|-------+----+-----+----+----+---------+----+----+----+----+----|
|
|
||||||
| | | | | | | | | | | | |
|
|
||||||
'---------------------------------------------------------------'
|
|
||||||
|
|
||||||
|
.-------.-------.-------.------.-------. .------.-------.-------.------.------.
|
||||||
|
| 1 | 2 | 3 | 4 | 5 | | Home | Up | End | PgUp | |
|
||||||
|
|-------+-------+-------+------+-------| |------+-------+-------+------+------|
|
||||||
|
| 6 | 7 | 8 | 9 | 0 | | Left | Down | Right | PgDn | |
|
||||||
|
|-------+-------+-------+------+-------| |------+-------+-------+------+------|
|
||||||
|
| Sft | Ctl | Alt | Del | . | | Ins | Alt | Ctl | Sft | Sup |
|
||||||
|
'-------'-------'-------+------+-------+-----. .-----+------+-------+-------'------'------'
|
||||||
|
| BS | BA | | | | Sft | |
|
||||||
|
'------'-------'-----' '-----'------'-------'
|
||||||
|
|
||||||
|
### FV: Function keys / Cursor control (Vim)
|
||||||
|
|
||||||
|
.-------.------.-------.-----.-------. .------.-------.-----.-------.------.
|
||||||
|
| F1 | F2 | F3 | F4 | F5 | | 0 | K | $ | Ctl-B | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| F6 | F7 | F8 | F9 | F10 | | H | J | L | Ctl-F | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| Sft | Ctl | Alt | F11 | F12 | | | Alt | Ctl | Sft | Sup |
|
||||||
|
'-------'------'-------+-----+-------+-----. .-----+------+-------+-----'-------'------'
|
||||||
|
| BS | BA | | | | Sft | |
|
||||||
|
'-----'-------'-----' '-----'------'-------'
|
||||||
|
|
||||||
|
### RS: Reset
|
||||||
|
|
||||||
|
.-------.------.-------.-----.-------. .------.-------.-----.-------.------.
|
||||||
|
| RESET | | | | | | | | | | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| | | | | | | | | | | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| | | | | | | | | | | |
|
||||||
|
'-------'------'-------+-----+-------+-----. .-----+------+-------+-----'-------'------'
|
||||||
|
| | BA | | | | | |
|
||||||
|
'-----'-------'-----' '-----'------'-------'
|
||||||
@@ -1,12 +1,4 @@
|
|||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
#define ONESHOT_TIMEOUT 500 // Time (in ms) before the one shot key is released
|
|
||||||
|
|
||||||
// Disable some options to reduce firmware size
|
|
||||||
#define NO_PRINT
|
|
||||||
#define NO_ACTION_TAPPING
|
|
||||||
#define NO_ACTION_MACRO
|
#define NO_ACTION_MACRO
|
||||||
#define NO_ACTION_FUNCTION
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -2,115 +2,158 @@
|
|||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
enum layers {
|
enum layers {
|
||||||
BASE, // Balance Twelve
|
BA, // Base (Balance Twelve mirror variant)
|
||||||
L1, // (momentary)
|
P1, // Punctuation (1)
|
||||||
R1, // (momentary)
|
P2, // Punctuation (2)
|
||||||
R2, // (momentary)
|
P3, // Punctuation (2)
|
||||||
R3 // (momentary)
|
NC, // Numerals / Cursor control
|
||||||
|
FV, // Function keys / Cursor control (Vim)
|
||||||
|
RS // Reset
|
||||||
};
|
};
|
||||||
|
|
||||||
// Aliases from replicaJunction's atreus layout
|
// Abbreviations - base
|
||||||
#define KCX_LST LSFT(KC_TAB)
|
#define KX_P1_BSPC LT(P1, KC_BSPC)
|
||||||
#define KX_COPY LCTL(KC_C)
|
#define KX_P2_SPC LT(P2, KC_SPC)
|
||||||
#define KX_CUT LCTL(KC_X)
|
|
||||||
#define KX_PAST LCTL(KC_V)
|
|
||||||
#define KX_UNDO LCTL(KC_Z)
|
|
||||||
|
|
||||||
#define KX_AT LSFT(KC_QUOT)
|
#define KX_SFT_Z MT(MOD_LSFT, KC_Z)
|
||||||
#define KX_PIPE LSFT(KC_NUBS)
|
#define KX_CTL_J MT(MOD_LCTL, KC_J)
|
||||||
#define KX_WINR LSFT(LGUI(KC_RGHT)) // Move window to next monitor (Windows)
|
#define KX_ALT_F MT(MOD_LALT, KC_F)
|
||||||
|
|
||||||
|
#define KX_ALT_DOT MT(MOD_LALT, KC_DOT)
|
||||||
|
#define KX_CTL_SCLN MT(MOD_LCTL, KC_SCLN)
|
||||||
|
#define KX_SFT_X MT(MOD_LSFT, KC_X)
|
||||||
|
|
||||||
|
#define KX_AT LSFT(KC_QUOT)
|
||||||
|
#define KX_DQUOT LSFT(KC_2)
|
||||||
|
#define KX_PIPE LSFT(KC_NUBS)
|
||||||
|
#define KX_TILDA LSFT(KC_NUHS)
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][ MATRIX_ROWS ][ MATRIX_COLS ] = {
|
const uint16_t PROGMEM keymaps[][ MATRIX_ROWS ][ MATRIX_COLS ] = {
|
||||||
|
/*
|
||||||
/* Balance Twelve mirror variant (left-handed)
|
.--------.-------.-------.-------.--------. .-------.-------.-------.-------.------.
|
||||||
.--------------------------------. .------------------------------.
|
| P | L | C | D | W | | U | O | Y | K | Q |
|
||||||
| P | L | C | D | W | | U | O | Y | K | Q |
|
|--------+-------+-------+-------+--------| |-------+-------+-------+-------+------|
|
||||||
+------+------+-----+----+-------| |------+----+-----+------+-----|
|
| N | R | S | T | M | | A | E | I | H | V |
|
||||||
| N | R | S | T | M | | A | E | I | H | V |
|
|--------+-------+-------+-------+--------| |-------+-------+-------+-------+------|
|
||||||
+------+------+-----+----+-------| |------+----+-----+------+-----|
|
| Z Sft | J Ctl | F Alt | G | B | | , | . Alt | ; Ctl | X Sft | Sup |
|
||||||
| Z | J | F | G | B | | , | . | ; | X | - |
|
'--------'-------'-------+-------+--------+-----. .-----+-------+-------+-------'-------'------'
|
||||||
+------+------+-----+----+-------+---------+------+----+-----+------+-----|
|
| BS P1 | Spc P2 | P3 | | | Sft | |
|
||||||
| Shft | Ctrl | Alt | Bk | Space | L1 | R1 | Shft | R2 | Win | Ctrl | Alt |
|
'-------'--------'-----' '-----'-------'-------'
|
||||||
'-------------------------------------------------------------------------'
|
*/
|
||||||
*/
|
[BA] = LAYOUT(
|
||||||
[BASE] = LAYOUT(
|
KC_P, KC_L, KC_C, KC_D, KC_W, KC_U, KC_O, KC_Y, KC_K, KC_Q,
|
||||||
KC_P, KC_L, KC_C, KC_D, KC_W, KC_U, KC_O, KC_Y, KC_K, KC_Q,
|
KC_N, KC_R, KC_S, KC_T, KC_M, KC_A, KC_E, KC_I, KC_H, KC_V,
|
||||||
KC_N, KC_R, KC_S, KC_T, KC_M, KC_A, KC_E, KC_I, KC_H, KC_V,
|
KX_SFT_Z, KX_CTL_J, KX_ALT_F, KC_G, KC_B, KC_COMM, KX_ALT_DOT, KX_CTL_SCLN, KX_SFT_X, KC_LGUI,
|
||||||
KC_Z, KC_J, KC_F, KC_G, KC_B, KC_COMM, KC_DOT, KC_SCLN, KC_X, KC_MINS,
|
XXXXXXX, XXXXXXX, XXXXXXX, KX_P1_BSPC, KX_P2_SPC, MO(P3), XXXXXXX, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
KC_LSFT, KC_LCTL, KC_LALT, KC_BSPC, KC_SPC, MO(L1), MO(R1), OSM(MOD_LSFT), MO(R2), KC_LWIN, KC_RCTL, KC_RALT
|
|
||||||
),
|
),
|
||||||
|
|
||||||
/* L1
|
/* P1: Punctuation (1)
|
||||||
.---------------------------------. .--------------------------------.
|
.--------.-------.-------.-------.-------. .------.-------.-------.-------.------.
|
||||||
| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
| Esc | | | | RS | | | | / | ^ | £ | ~ |
|
||||||
|------+------+------+----+-------| |------+----+-----+------+-------|
|
|--------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
| Tab | ? | = | - | _ | | ' | " | + | * | Enter |
|
| Tab | | | | | | & | \ | ` | $ | Ent |
|
||||||
|------+------+------+----+-------| |------+----+-----+------+-------|
|
|--------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
| Esc | ! | & | | | | , | . | ; | | - |
|
| Sft | Ctl | Alt | Del | | | % | Alt | Ctl | Sft | Sup |
|
||||||
|------+------+------+----+-------+---------+------+----+-----+------+-------|
|
'--------'-------'-------+-------+-------+-----. .-----+------+-------+-------'-------'------'
|
||||||
| Shft | Ctrl | Alt | Bk | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt |
|
| P1 | | | | | Sft | |
|
||||||
'----------------------------------------------------------------------------'
|
'-------'-------'-----' '-----'------'-------'
|
||||||
*/
|
*/
|
||||||
[L1] = LAYOUT(
|
[P1] = LAYOUT(
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, TO(RS), KX_PIPE, KC_SLSH, KC_CIRC, KC_HASH, KX_TILDA,
|
||||||
KC_TAB, KC_QUES, KC_EQL, KC_MINS, KC_UNDS, KC_QUOT, LSFT(KC_2), KC_PLUS, KC_ASTR, KC_ENT,
|
KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_AMPR, KC_NUBS, KC_GRV, KC_DLR, KC_ENT,
|
||||||
KC_ESC, KC_EXLM, KC_AMPR, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______,
|
KC_LSFT, KC_LCTL, KC_LALT, KC_DEL, XXXXXXX, KC_PERC, KC_LALT, KC_LCTL, KC_LSFT, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
),
|
),
|
||||||
|
|
||||||
/* R1
|
/* P2: Punctuation (2)
|
||||||
.---------------------------------. .-------------------------------.
|
.-------.-------.-------.-------.-------. .-------.-------.-------.-------.------.
|
||||||
| < | > | { | } | @ | | $ | £ | | | R3 |
|
| Esc | | NC | FV | | | ( | ) | " | ? | |
|
||||||
+------+------+-----+-----|-------| |------+----+-----+------+------|
|
|-------+-------+-------+-------+-------| |-------+-------+-------+-------+------|
|
||||||
| [ | ] | ( | ) | # | | ' | " | ~ | ` | Caps |
|
| Tab | Ctl-X | Ctl-C | Ctl-V | Ctl-Z | | { | } | ' | ! | Ent |
|
||||||
|------+------+-----+-----+-------| |------+----+-----+------+------|
|
|-------+-------+-------+-------+-------| |-------+-------+-------+-------+------|
|
||||||
| / | \ | ^ | | | % | | , | . | ; | | PScn |
|
| Sft | Ctl | Alt | Del | Ent | | # | Alt | Ctl | Sft | Sup |
|
||||||
|------+------+-----+-----+-------+---------+------+----+-----+------+------|
|
'-------'-------'-------+-------+-------+-----. .-----+-------+-------+-------'-------'------'
|
||||||
| Shft | Ctrl | Alt | Del | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt |
|
| BS | P2 | | | | Sft | |
|
||||||
'---------------------------------------------------------------------------'
|
'-------'-------'-----' '-----'-------'-------'
|
||||||
*/
|
*/
|
||||||
[R1] = LAYOUT(
|
[P2] = LAYOUT(
|
||||||
KC_LABK, KC_RABK, KC_LCBR, KC_RCBR, KX_AT, KC_DLR, KC_HASH, XXXXXXX, XXXXXXX, MO(R3),
|
KC_ESC, XXXXXXX, TO(NC), TO(FV), XXXXXXX, KC_LPRN, KC_RPRN, KX_DQUOT, KC_QUES, XXXXXXX,
|
||||||
KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_NUHS, KC_QUOT, LSFT(KC_2), LSFT(KC_NUHS), KC_GRV, KC_CAPS,
|
KC_TAB, LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), LCTL(KC_Z), KC_LCBR, KC_RCBR, KC_QUOT, KC_EXLM, KC_ENT,
|
||||||
KC_SLSH, KC_NUBS, KC_CIRC, KX_PIPE, KC_PERC, _______, _______, _______, XXXXXXX, KC_PSCR,
|
KC_LSFT, KC_LCTL, KC_LALT, KC_DEL, KC_ENT, KC_NUHS, KC_LALT, KC_LCTL, KC_LSFT, _______,
|
||||||
_______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
),
|
),
|
||||||
|
|
||||||
/* R2
|
/* P3: Punctuation (3)
|
||||||
.-----------------------------------. .--------------------.-----------------.
|
.-------.-------.-------.-------.-------. .------.-------.-------.-------.------.
|
||||||
| F12 | F11 | F10 | F9 | Copy | | Home | Up | End | PgUp | Insert |
|
| Esc | | Break | Pscr | ScLk | | < | > | + | _ | = |
|
||||||
|------+------+------+------+-------| |------+------+------+------+----------|
|
|-------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
| F8 | F7 | F6 | F5 | Paste | | Left | Down | Right| PgDn | Enter |
|
| Tab | | | Caps | | | [ | ] | * | - | Ent |
|
||||||
|------+------+------+------+-------| |------+------+------+------+----------|
|
|-------+-------+-------+-------+-------| |------+-------+-------+-------+------|
|
||||||
| F4 | F3 | F2 | F1 | Cut | | ^Tab | | Tab | | |
|
| Sft | Ctl | Alt | Del | | | @ | Alt | Ctl | Sft | Sup |
|
||||||
|------+------+------+------+-------+---------+------+------+------+------+----------|
|
'-------'-------'-------+-------+-------+-----. .-----+------+-------+-------'-------'------'
|
||||||
| Shft | Ctrl | Alt | Del | Undo | L1 | R1 | Shft | R2 | Sup | Ctrl | WinRight |
|
| BS | | P3 | | | Sft | |
|
||||||
'------------------------------------------------------------------------------------'
|
'-------'-------'-----' '-----'------'-------'
|
||||||
*/
|
*/
|
||||||
[R2] = LAYOUT(
|
[P3] = LAYOUT(
|
||||||
KC_F12, KC_F11, KC_F10, KC_F9, KX_COPY, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_INS,
|
KC_ESC, XXXXXXX, KC_BRK, KC_PSCR, KC_SLCK, KC_LABK, KC_RABK, KC_PLUS, KC_UNDS, KC_EQL,
|
||||||
KC_F8, KC_F7, KC_F6, KC_F5, KX_PAST, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_ENT,
|
KC_TAB, XXXXXXX, XXXXXXX, KC_CAPS, XXXXXXX, KC_LBRC, KC_RBRC, KC_ASTR, KC_MINS, KC_ENT,
|
||||||
KC_F4, KC_F3, KC_F2, KC_F1, KX_CUT, KCX_LST, XXXXXXX, KC_TAB, XXXXXXX, XXXXXXX,
|
KC_LSFT, KC_LCTL, KC_LALT, KC_DEL, XXXXXXX, KX_AT, KC_LALT, KC_LCTL, KC_LSFT, _______,
|
||||||
_______, _______, _______, KC_DEL, KX_UNDO, _______, _______, _______, _______, _______, _______, KX_WINR
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
),
|
),
|
||||||
|
|
||||||
/* R3
|
/* NC: Numerals / Cursor control
|
||||||
.----------------------------. .------------------------.
|
.-------.-------.-------.------.-------. .------.-------.-------.------.------.
|
||||||
| RESET | | | | | | | | | | R3 |
|
| 1 | 2 | 3 | 4 | 5 | | Home | Up | End | PgUp | |
|
||||||
|-------+----+-----+----+----| |----+----+----+----+----|
|
|-------+-------+-------+------+-------| |------+-------+-------+------+------|
|
||||||
| | | | | | | | | | | |
|
| 6 | 7 | 8 | 9 | 0 | | Left | Down | Right | PgDn | |
|
||||||
|-------+----+-----+----+----| |----+----+----+----+----|
|
|-------+-------+-------+------+-------| |------+-------+-------+------+------|
|
||||||
| | | | | | | | | | | |
|
| Sft | Ctl | Alt | Del | . | | Ins | Alt | Ctl | Sft | Sup |
|
||||||
|-------+----+-----+----+----+---------+----+----+----+----+----|
|
'-------'-------'-------+------+-------+-----. .-----+------+-------+-------'------'------'
|
||||||
| | | | | | | | | | | | |
|
| BS | BA | | | | Sft | |
|
||||||
'---------------------------------------------------------------'
|
'------'-------'-----' '-----'------'-------'
|
||||||
*/
|
*/
|
||||||
[R3] = LAYOUT(
|
[NC] = LAYOUT(
|
||||||
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
KC_6, KC_7, KC_8, KC_9, KC_0, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
KC_LSFT, KC_LCTL, KC_LALT, KC_DEL, KC_DOT, KC_INS, KC_LALT, KC_LCTL, KC_LSFT, _______,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, TO(BA), XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FV: Function keys / Cursor control (Vim)
|
||||||
|
.-------.------.-------.-----.-------. .------.-------.-----.-------.------.
|
||||||
|
| F1 | F2 | F3 | F4 | F5 | | 0 | K | $ | Ctl-B | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| F6 | F7 | F8 | F9 | F10 | | H | J | L | Ctl-F | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| Sft | Ctl | Alt | F11 | F12 | | | Alt | Ctl | Sft | Sup |
|
||||||
|
'-------'------'-------+-----+-------+-----. .-----+------+-------+-----'-------'------'
|
||||||
|
| BS | BA | | | | Sft | |
|
||||||
|
'-----'-------'-----' '-----'------'-------'
|
||||||
|
*/
|
||||||
|
[FV] = LAYOUT(
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_0, KC_K, KC_DLR, LCTL(KC_B), XXXXXXX,
|
||||||
|
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_H, KC_J, KC_L, LCTL(KC_F), XXXXXXX,
|
||||||
|
KC_LSFT, KC_LCTL, KC_LALT, KC_F11, KC_F12, XXXXXXX, KC_LALT, KC_LCTL, KC_LSFT, _______,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, TO(BA), XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
),
|
||||||
|
|
||||||
|
/* RS: Reset
|
||||||
|
.-------.------.-------.-----.-------. .------.-------.-----.-------.------.
|
||||||
|
| RESET | | | | | | | | | | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| | | | | | | | | | | |
|
||||||
|
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
|
||||||
|
| | | | | | | | | | | |
|
||||||
|
'-------'------'-------+-----+-------+-----. .-----+------+-------+-----'-------'------'
|
||||||
|
| | BA | | | | | |
|
||||||
|
'-----'-------'-----' '-----'------'-------'
|
||||||
|
*/
|
||||||
|
[RS] = LAYOUT(
|
||||||
|
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(BA), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_ortho_5x14( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213 }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313 }, \
|
||||||
|
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k410, k411, k412, k413 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_ortho_hhkb( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, \
|
||||||
|
k41, k42, k43, k44, k45, k47, k49, k410, k411, k412 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213 }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313 }, \
|
||||||
|
{ KC_NO, k41, k42, k43, k44, k45, KC_NO, k47, KC_NO, k49, k410, k411, k412, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_ortho_7u( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, \
|
||||||
|
k41, k42, k46, k411, k412 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213 }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313 }, \
|
||||||
|
{ KC_NO, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k411, k412, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_2u_arrow( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, \
|
||||||
|
k40, k41, k42, k43, k44, k46, k48, k49, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213 }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313 }, \
|
||||||
|
{ k40, k41, k42, k43, k44, KC_NO, k46, KC_NO, k48, k49, k410, k411, k412, k413 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_625u_arrow( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, \
|
||||||
|
k40, k41, k42, k45, k49, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213 }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313 }, \
|
||||||
|
{ k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, k49, k410, k411, k412, k413 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
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 0xCDCD
|
||||||
|
#define PRODUCT_ID 0x5337
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER shens
|
||||||
|
#define PRODUCT Boardwalk
|
||||||
|
#define DESCRIPTION QMK keyboard firmware for Boardwalk
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { F0, F1, F4, F5, F6 }
|
||||||
|
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
// #define BACKLIGHT_PIN F5
|
||||||
|
// #define BACKLIGHT_LEVELS 6
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// ws2812 options
|
||||||
|
#define RGB_DI_PIN B7 // pin the DI on the ws2812 is hooked-up to
|
||||||
|
#define RGBLIGHT_ANIMATIONS // run RGB animations
|
||||||
|
#define RGBLED_NUM 14 // number of LEDs
|
||||||
|
#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue
|
||||||
|
#define RGBLIGHT_SAT_STEP 25 // units to step when in/decresing saturation
|
||||||
|
#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness)
|
||||||
@@ -0,0 +1,359 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Boardwalk",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_5x14": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"k00", "x":0, "y":0, "w":1.5},
|
||||||
|
{"label":"k01", "x":1.5, "y":0},
|
||||||
|
{"label":"k02", "x":2.5, "y":0},
|
||||||
|
{"label":"k03", "x":3.5, "y":0},
|
||||||
|
{"label":"k04", "x":4.5, "y":0},
|
||||||
|
{"label":"k05", "x":5.5, "y":0},
|
||||||
|
{"label":"k06", "x":6.5, "y":0},
|
||||||
|
{"label":"k07", "x":7.5, "y":0},
|
||||||
|
{"label":"k08", "x":8.5, "y":0},
|
||||||
|
{"label":"k09", "x":9.5, "y":0},
|
||||||
|
{"label":"k010", "x":10.5, "y":0},
|
||||||
|
{"label":"k011", "x":11.5, "y":0},
|
||||||
|
{"label":"k012", "x":12.5, "y":0},
|
||||||
|
{"label":"k013", "x":13.5, "y":0, "w":1.5},
|
||||||
|
{"label":"k10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"k11", "x":1.5, "y":1},
|
||||||
|
{"label":"k12", "x":2.5, "y":1},
|
||||||
|
{"label":"k13", "x":3.5, "y":1},
|
||||||
|
{"label":"k14", "x":4.5, "y":1},
|
||||||
|
{"label":"k15", "x":5.5, "y":1},
|
||||||
|
{"label":"k16", "x":6.5, "y":1},
|
||||||
|
{"label":"k17", "x":7.5, "y":1},
|
||||||
|
{"label":"k18", "x":8.5, "y":1},
|
||||||
|
{"label":"k19", "x":9.5, "y":1},
|
||||||
|
{"label":"k110", "x":10.5, "y":1},
|
||||||
|
{"label":"k111", "x":11.5, "y":1},
|
||||||
|
{"label":"k112", "x":12.5, "y":1},
|
||||||
|
{"label":"k113", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"k20", "x":0, "y":2, "w":1.5},
|
||||||
|
{"label":"k21", "x":1.5, "y":2},
|
||||||
|
{"label":"k22", "x":2.5, "y":2},
|
||||||
|
{"label":"k23", "x":3.5, "y":2},
|
||||||
|
{"label":"k24", "x":4.5, "y":2},
|
||||||
|
{"label":"k25", "x":5.5, "y":2},
|
||||||
|
{"label":"k26", "x":6.5, "y":2},
|
||||||
|
{"label":"k27", "x":7.5, "y":2},
|
||||||
|
{"label":"k28", "x":8.5, "y":2},
|
||||||
|
{"label":"k29", "x":9.5, "y":2},
|
||||||
|
{"label":"k210", "x":10.5, "y":2},
|
||||||
|
{"label":"k211", "x":11.5, "y":2},
|
||||||
|
{"label":"k212", "x":12.5, "y":2},
|
||||||
|
{"label":"k213", "x":13.5, "y":2, "w":1.5},
|
||||||
|
{"label":"k30", "x":0, "y":3, "w":1.5},
|
||||||
|
{"label":"k31", "x":1.5, "y":3},
|
||||||
|
{"label":"k32", "x":2.5, "y":3},
|
||||||
|
{"label":"k33", "x":3.5, "y":3},
|
||||||
|
{"label":"k34", "x":4.5, "y":3},
|
||||||
|
{"label":"k35", "x":5.5, "y":3},
|
||||||
|
{"label":"k36", "x":6.5, "y":3},
|
||||||
|
{"label":"k37", "x":7.5, "y":3},
|
||||||
|
{"label":"k38", "x":8.5, "y":3},
|
||||||
|
{"label":"k39", "x":9.5, "y":3},
|
||||||
|
{"label":"k310", "x":10.5, "y":3},
|
||||||
|
{"label":"k311", "x":11.5, "y":3},
|
||||||
|
{"label":"k312", "x":12.5, "y":3},
|
||||||
|
{"label":"k313", "x":13.5, "y":3, "w":1.5},
|
||||||
|
{"label":"k40", "x":0, "y":4, "w":1.5},
|
||||||
|
{"label":"k41", "x":1.5, "y":4},
|
||||||
|
{"label":"k42", "x":2.5, "y":4},
|
||||||
|
{"label":"k43", "x":3.5, "y":4},
|
||||||
|
{"label":"k44", "x":4.5, "y":4},
|
||||||
|
{"label":"k45", "x":5.5, "y":4},
|
||||||
|
{"label":"k46", "x":6.5, "y":4},
|
||||||
|
{"label":"k47", "x":7.5, "y":4},
|
||||||
|
{"label":"k48", "x":8.5, "y":4},
|
||||||
|
{"label":"k49", "x":9.5, "y":4},
|
||||||
|
{"label":"k410", "x":10.5, "y":4},
|
||||||
|
{"label":"k411", "x":11.5, "y":4},
|
||||||
|
{"label":"k412", "x":12.5, "y":4},
|
||||||
|
{"label":"k413", "x":13.5, "y":4, "w":1.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_hhkb": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"k00", "x":0, "y":0, "w":1.5},
|
||||||
|
{"label":"k01", "x":1.5, "y":0},
|
||||||
|
{"label":"k02", "x":2.5, "y":0},
|
||||||
|
{"label":"k03", "x":3.5, "y":0},
|
||||||
|
{"label":"k04", "x":4.5, "y":0},
|
||||||
|
{"label":"k05", "x":5.5, "y":0},
|
||||||
|
{"label":"k06", "x":6.5, "y":0},
|
||||||
|
{"label":"k07", "x":7.5, "y":0},
|
||||||
|
{"label":"k08", "x":8.5, "y":0},
|
||||||
|
{"label":"k09", "x":9.5, "y":0},
|
||||||
|
{"label":"k010", "x":10.5, "y":0},
|
||||||
|
{"label":"k011", "x":11.5, "y":0},
|
||||||
|
{"label":"k012", "x":12.5, "y":0},
|
||||||
|
{"label":"k013", "x":13.5, "y":0, "w":1.5},
|
||||||
|
{"label":"k10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"k11", "x":1.5, "y":1},
|
||||||
|
{"label":"k12", "x":2.5, "y":1},
|
||||||
|
{"label":"k13", "x":3.5, "y":1},
|
||||||
|
{"label":"k14", "x":4.5, "y":1},
|
||||||
|
{"label":"k15", "x":5.5, "y":1},
|
||||||
|
{"label":"k16", "x":6.5, "y":1},
|
||||||
|
{"label":"k17", "x":7.5, "y":1},
|
||||||
|
{"label":"k18", "x":8.5, "y":1},
|
||||||
|
{"label":"k19", "x":9.5, "y":1},
|
||||||
|
{"label":"k110", "x":10.5, "y":1},
|
||||||
|
{"label":"k111", "x":11.5, "y":1},
|
||||||
|
{"label":"k112", "x":12.5, "y":1},
|
||||||
|
{"label":"k113", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"k20", "x":0, "y":2, "w":1.5},
|
||||||
|
{"label":"k21", "x":1.5, "y":2},
|
||||||
|
{"label":"k22", "x":2.5, "y":2},
|
||||||
|
{"label":"k23", "x":3.5, "y":2},
|
||||||
|
{"label":"k24", "x":4.5, "y":2},
|
||||||
|
{"label":"k25", "x":5.5, "y":2},
|
||||||
|
{"label":"k26", "x":6.5, "y":2},
|
||||||
|
{"label":"k27", "x":7.5, "y":2},
|
||||||
|
{"label":"k28", "x":8.5, "y":2},
|
||||||
|
{"label":"k29", "x":9.5, "y":2},
|
||||||
|
{"label":"k210", "x":10.5, "y":2},
|
||||||
|
{"label":"k211", "x":11.5, "y":2},
|
||||||
|
{"label":"k212", "x":12.5, "y":2},
|
||||||
|
{"label":"k213", "x":13.5, "y":2, "w":1.5},
|
||||||
|
{"label":"k30", "x":0, "y":3, "w":1.5},
|
||||||
|
{"label":"k31", "x":1.5, "y":3},
|
||||||
|
{"label":"k32", "x":2.5, "y":3},
|
||||||
|
{"label":"k33", "x":3.5, "y":3},
|
||||||
|
{"label":"k34", "x":4.5, "y":3},
|
||||||
|
{"label":"k35", "x":5.5, "y":3},
|
||||||
|
{"label":"k36", "x":6.5, "y":3},
|
||||||
|
{"label":"k37", "x":7.5, "y":3},
|
||||||
|
{"label":"k38", "x":8.5, "y":3},
|
||||||
|
{"label":"k39", "x":9.5, "y":3},
|
||||||
|
{"label":"k310", "x":10.5, "y":3},
|
||||||
|
{"label":"k311", "x":11.5, "y":3},
|
||||||
|
{"label":"k312", "x":12.5, "y":3},
|
||||||
|
{"label":"k313", "x":13.5, "y":3, "w":1.5},
|
||||||
|
{"label":"k41", "x":1.5, "y":4},
|
||||||
|
{"label":"k42", "x":2.5, "y":4},
|
||||||
|
{"label":"k43", "x":3.5, "y":4},
|
||||||
|
{"label":"k44", "x":4.5, "y":4},
|
||||||
|
{"label":"k45", "x":5.5, "y":4, "w":2},
|
||||||
|
{"label":"k47", "x":7.5, "y":4, "w":2},
|
||||||
|
{"label":"k49", "x":9.5, "y":4},
|
||||||
|
{"label":"k410", "x":10.5, "y":4},
|
||||||
|
{"label":"k411", "x":11.5, "y":4},
|
||||||
|
{"label":"k412", "x":12.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_7u": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"k00", "x":0, "y":0, "w":1.5},
|
||||||
|
{"label":"k01", "x":1.5, "y":0},
|
||||||
|
{"label":"k02", "x":2.5, "y":0},
|
||||||
|
{"label":"k03", "x":3.5, "y":0},
|
||||||
|
{"label":"k04", "x":4.5, "y":0},
|
||||||
|
{"label":"k05", "x":5.5, "y":0},
|
||||||
|
{"label":"k06", "x":6.5, "y":0},
|
||||||
|
{"label":"k07", "x":7.5, "y":0},
|
||||||
|
{"label":"k08", "x":8.5, "y":0},
|
||||||
|
{"label":"k09", "x":9.5, "y":0},
|
||||||
|
{"label":"k010", "x":10.5, "y":0},
|
||||||
|
{"label":"k011", "x":11.5, "y":0},
|
||||||
|
{"label":"k012", "x":12.5, "y":0},
|
||||||
|
{"label":"k013", "x":13.5, "y":0, "w":1.5},
|
||||||
|
{"label":"k10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"k11", "x":1.5, "y":1},
|
||||||
|
{"label":"k12", "x":2.5, "y":1},
|
||||||
|
{"label":"k13", "x":3.5, "y":1},
|
||||||
|
{"label":"k14", "x":4.5, "y":1},
|
||||||
|
{"label":"k15", "x":5.5, "y":1},
|
||||||
|
{"label":"k16", "x":6.5, "y":1},
|
||||||
|
{"label":"k17", "x":7.5, "y":1},
|
||||||
|
{"label":"k18", "x":8.5, "y":1},
|
||||||
|
{"label":"k19", "x":9.5, "y":1},
|
||||||
|
{"label":"k110", "x":10.5, "y":1},
|
||||||
|
{"label":"k111", "x":11.5, "y":1},
|
||||||
|
{"label":"k112", "x":12.5, "y":1},
|
||||||
|
{"label":"k113", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"k20", "x":0, "y":2, "w":1.5},
|
||||||
|
{"label":"k21", "x":1.5, "y":2},
|
||||||
|
{"label":"k22", "x":2.5, "y":2},
|
||||||
|
{"label":"k23", "x":3.5, "y":2},
|
||||||
|
{"label":"k24", "x":4.5, "y":2},
|
||||||
|
{"label":"k25", "x":5.5, "y":2},
|
||||||
|
{"label":"k26", "x":6.5, "y":2},
|
||||||
|
{"label":"k27", "x":7.5, "y":2},
|
||||||
|
{"label":"k28", "x":8.5, "y":2},
|
||||||
|
{"label":"k29", "x":9.5, "y":2},
|
||||||
|
{"label":"k210", "x":10.5, "y":2},
|
||||||
|
{"label":"k211", "x":11.5, "y":2},
|
||||||
|
{"label":"k212", "x":12.5, "y":2},
|
||||||
|
{"label":"k213", "x":13.5, "y":2, "w":1.5},
|
||||||
|
{"label":"k30", "x":0, "y":3, "w":1.5},
|
||||||
|
{"label":"k31", "x":1.5, "y":3},
|
||||||
|
{"label":"k32", "x":2.5, "y":3},
|
||||||
|
{"label":"k33", "x":3.5, "y":3},
|
||||||
|
{"label":"k34", "x":4.5, "y":3},
|
||||||
|
{"label":"k35", "x":5.5, "y":3},
|
||||||
|
{"label":"k36", "x":6.5, "y":3},
|
||||||
|
{"label":"k37", "x":7.5, "y":3},
|
||||||
|
{"label":"k38", "x":8.5, "y":3},
|
||||||
|
{"label":"k39", "x":9.5, "y":3},
|
||||||
|
{"label":"k310", "x":10.5, "y":3},
|
||||||
|
{"label":"k311", "x":11.5, "y":3},
|
||||||
|
{"label":"k312", "x":12.5, "y":3},
|
||||||
|
{"label":"k313", "x":13.5, "y":3, "w":1.5},
|
||||||
|
{"label":"k41", "x":1.5, "y":4},
|
||||||
|
{"label":"k42", "x":2.5, "y":4, "w":1.5},
|
||||||
|
{"label":"k46", "x":4, "y":4, "w":7},
|
||||||
|
{"label":"k411", "x":11, "y":4, "w":1.5},
|
||||||
|
{"label":"k412", "x":12.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_2u_arrow": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"k00", "x":0, "y":0, "w":1.5},
|
||||||
|
{"label":"k01", "x":1.5, "y":0},
|
||||||
|
{"label":"k02", "x":2.5, "y":0},
|
||||||
|
{"label":"k03", "x":3.5, "y":0},
|
||||||
|
{"label":"k04", "x":4.5, "y":0},
|
||||||
|
{"label":"k05", "x":5.5, "y":0},
|
||||||
|
{"label":"k06", "x":6.5, "y":0},
|
||||||
|
{"label":"k07", "x":7.5, "y":0},
|
||||||
|
{"label":"k08", "x":8.5, "y":0},
|
||||||
|
{"label":"k09", "x":9.5, "y":0},
|
||||||
|
{"label":"k010", "x":10.5, "y":0},
|
||||||
|
{"label":"k011", "x":11.5, "y":0},
|
||||||
|
{"label":"k012", "x":12.5, "y":0},
|
||||||
|
{"label":"k013", "x":13.5, "y":0, "w":1.5},
|
||||||
|
{"label":"k10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"k11", "x":1.5, "y":1},
|
||||||
|
{"label":"k12", "x":2.5, "y":1},
|
||||||
|
{"label":"k13", "x":3.5, "y":1},
|
||||||
|
{"label":"k14", "x":4.5, "y":1},
|
||||||
|
{"label":"k15", "x":5.5, "y":1},
|
||||||
|
{"label":"k16", "x":6.5, "y":1},
|
||||||
|
{"label":"k17", "x":7.5, "y":1},
|
||||||
|
{"label":"k18", "x":8.5, "y":1},
|
||||||
|
{"label":"k19", "x":9.5, "y":1},
|
||||||
|
{"label":"k110", "x":10.5, "y":1},
|
||||||
|
{"label":"k111", "x":11.5, "y":1},
|
||||||
|
{"label":"k112", "x":12.5, "y":1},
|
||||||
|
{"label":"k113", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"k20", "x":0, "y":2, "w":1.5},
|
||||||
|
{"label":"k21", "x":1.5, "y":2},
|
||||||
|
{"label":"k22", "x":2.5, "y":2},
|
||||||
|
{"label":"k23", "x":3.5, "y":2},
|
||||||
|
{"label":"k24", "x":4.5, "y":2},
|
||||||
|
{"label":"k25", "x":5.5, "y":2},
|
||||||
|
{"label":"k26", "x":6.5, "y":2},
|
||||||
|
{"label":"k27", "x":7.5, "y":2},
|
||||||
|
{"label":"k28", "x":8.5, "y":2},
|
||||||
|
{"label":"k29", "x":9.5, "y":2},
|
||||||
|
{"label":"k210", "x":10.5, "y":2},
|
||||||
|
{"label":"k211", "x":11.5, "y":2},
|
||||||
|
{"label":"k212", "x":12.5, "y":2, "w":1.5},
|
||||||
|
{"label":"k213", "x":14, "y":2},
|
||||||
|
{"label":"k30", "x":0, "y":3, "w":1.5},
|
||||||
|
{"label":"k31", "x":1.5, "y":3},
|
||||||
|
{"label":"k32", "x":2.5, "y":3},
|
||||||
|
{"label":"k33", "x":3.5, "y":3},
|
||||||
|
{"label":"k34", "x":4.5, "y":3},
|
||||||
|
{"label":"k35", "x":5.5, "y":3},
|
||||||
|
{"label":"k36", "x":6.5, "y":3},
|
||||||
|
{"label":"k37", "x":7.5, "y":3},
|
||||||
|
{"label":"k38", "x":8.5, "y":3},
|
||||||
|
{"label":"k39", "x":9.5, "y":3},
|
||||||
|
{"label":"k310", "x":10.5, "y":3},
|
||||||
|
{"label":"k311", "x":11.5, "y":3, "w":1.5},
|
||||||
|
{"label":"k312", "x":13, "y":3},
|
||||||
|
{"label":"k313", "x":14, "y":3},
|
||||||
|
{"label":"k40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"k41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"k42", "x":2.5, "y":4},
|
||||||
|
{"label":"k43", "x":3.5, "y":4},
|
||||||
|
{"label":"k44", "x":4.5, "y":4, "w":2},
|
||||||
|
{"label":"k46", "x":6.5, "y":4, "w":2},
|
||||||
|
{"label":"k48", "x":8.5, "y":4},
|
||||||
|
{"label":"k49", "x":9.5, "y":4, "w":1.25},
|
||||||
|
{"label":"k410", "x":10.75, "y":4, "w":1.25},
|
||||||
|
{"label":"k411", "x":12, "y":4},
|
||||||
|
{"label":"k412", "x":13, "y":4},
|
||||||
|
{"label":"k413", "x":14, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_625u_arrow": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"k00", "x":0, "y":0, "w":1.5},
|
||||||
|
{"label":"k01", "x":1.5, "y":0},
|
||||||
|
{"label":"k02", "x":2.5, "y":0},
|
||||||
|
{"label":"k03", "x":3.5, "y":0},
|
||||||
|
{"label":"k04", "x":4.5, "y":0},
|
||||||
|
{"label":"k05", "x":5.5, "y":0},
|
||||||
|
{"label":"k06", "x":6.5, "y":0},
|
||||||
|
{"label":"k07", "x":7.5, "y":0},
|
||||||
|
{"label":"k08", "x":8.5, "y":0},
|
||||||
|
{"label":"k09", "x":9.5, "y":0},
|
||||||
|
{"label":"k010", "x":10.5, "y":0},
|
||||||
|
{"label":"k011", "x":11.5, "y":0},
|
||||||
|
{"label":"k012", "x":12.5, "y":0},
|
||||||
|
{"label":"k013", "x":13.5, "y":0, "w":1.5},
|
||||||
|
{"label":"k10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"k11", "x":1.5, "y":1},
|
||||||
|
{"label":"k12", "x":2.5, "y":1},
|
||||||
|
{"label":"k13", "x":3.5, "y":1},
|
||||||
|
{"label":"k14", "x":4.5, "y":1},
|
||||||
|
{"label":"k15", "x":5.5, "y":1},
|
||||||
|
{"label":"k16", "x":6.5, "y":1},
|
||||||
|
{"label":"k17", "x":7.5, "y":1},
|
||||||
|
{"label":"k18", "x":8.5, "y":1},
|
||||||
|
{"label":"k19", "x":9.5, "y":1},
|
||||||
|
{"label":"k110", "x":10.5, "y":1},
|
||||||
|
{"label":"k111", "x":11.5, "y":1},
|
||||||
|
{"label":"k112", "x":12.5, "y":1},
|
||||||
|
{"label":"k113", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"k20", "x":0, "y":2, "w":1.5},
|
||||||
|
{"label":"k21", "x":1.5, "y":2},
|
||||||
|
{"label":"k22", "x":2.5, "y":2},
|
||||||
|
{"label":"k23", "x":3.5, "y":2},
|
||||||
|
{"label":"k24", "x":4.5, "y":2},
|
||||||
|
{"label":"k25", "x":5.5, "y":2},
|
||||||
|
{"label":"k26", "x":6.5, "y":2},
|
||||||
|
{"label":"k27", "x":7.5, "y":2},
|
||||||
|
{"label":"k28", "x":8.5, "y":2},
|
||||||
|
{"label":"k29", "x":9.5, "y":2},
|
||||||
|
{"label":"k210", "x":10.5, "y":2},
|
||||||
|
{"label":"k211", "x":11.5, "y":2},
|
||||||
|
{"label":"k212", "x":12.5, "y":2, "w":1.5},
|
||||||
|
{"label":"k213", "x":14, "y":2},
|
||||||
|
{"label":"k30", "x":0, "y":3, "w":1.5},
|
||||||
|
{"label":"k31", "x":1.5, "y":3},
|
||||||
|
{"label":"k32", "x":2.5, "y":3},
|
||||||
|
{"label":"k33", "x":3.5, "y":3},
|
||||||
|
{"label":"k34", "x":4.5, "y":3},
|
||||||
|
{"label":"k35", "x":5.5, "y":3},
|
||||||
|
{"label":"k36", "x":6.5, "y":3},
|
||||||
|
{"label":"k37", "x":7.5, "y":3},
|
||||||
|
{"label":"k38", "x":8.5, "y":3},
|
||||||
|
{"label":"k39", "x":9.5, "y":3},
|
||||||
|
{"label":"k310", "x":10.5, "y":3},
|
||||||
|
{"label":"k311", "x":11.5, "y":3, "w":1.5},
|
||||||
|
{"label":"k312", "x":13, "y":3},
|
||||||
|
{"label":"k313", "x":14, "y":3},
|
||||||
|
{"label":"k40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"k41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"k42", "x":2.5, "y":4},
|
||||||
|
{"label":"k45", "x":3.5, "y":4, "w":6.25},
|
||||||
|
{"label":"k49", "x":9.75, "y":4},
|
||||||
|
{"label":"k410", "x":10.75, "y":4, "w":1.25},
|
||||||
|
{"label":"k411", "x":12, "y":4},
|
||||||
|
{"label":"k412", "x":13, "y":4},
|
||||||
|
{"label":"k413", "x":14, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// Layer shorthand
|
||||||
|
enum layer {
|
||||||
|
_1U,
|
||||||
|
_FN,
|
||||||
|
_HHKB,
|
||||||
|
_7U,
|
||||||
|
_2UARROW,
|
||||||
|
_625UARROW,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* 1uGrid
|
||||||
|
* .-----------------------------------------------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 1 | 2 | 3 | 4 | 5 | - | = | 6 | 7 | 8 | 9 | 0 | BACKSP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||||
|
* | TAB | Q | W | E | R | T | [ | ] | Y | U | I | O | P | ' |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
|
||||||
|
* | CAP LK | A | S | D | F | G | HOME | PG UP | H | J | K | L | ; | ENTER |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
|
||||||
|
* | LSHIFT | Z | X | C | V | B | END | PG DN | N | M | , | . | / | RSHIFT |
|
||||||
|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
|
||||||
|
* | LCTRL | LGUI | FN | LALT | SPACE | SPACE | SPACE | SPACE | SPACE | SPACE | RIGHT | DOWN | UP | RIGHT |
|
||||||
|
* '-----------------------------------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_1U] = LAYOUT_ortho_5x14(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, \
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_PGUP, 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_END, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LGUI, MO(1), KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* HHKB
|
||||||
|
* .-----------------------------------------------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 1 | 2 | 3 | 4 | 5 | - | = | 6 | 7 | 8 | 9 | 0 | BACKSP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||||
|
* | TAB | Q | W | E | R | T | [ | ] | Y | U | I | O | P | ' |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
|
||||||
|
* | CAP LK | A | S | D | F | G | HOME | PG UP | H | J | K | L | ; | ENTER |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
|
||||||
|
* | LSHIFT | Z | X | C | V | B | END | PG DN | N | M | , | . | / | RSHIFT |
|
||||||
|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
|
||||||
|
* | | LCTRL | FN | LALT | LGUI | SPACE | SPACE | LEFT | DOWN | UP | RIGHT | |
|
||||||
|
* '-----------------------------------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_HHKB] = LAYOUT_ortho_hhkb(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, MO(1), KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 7u HHKB
|
||||||
|
* .-----------------------------------------------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 1 | 2 | 3 | 4 | 5 | - | = | 6 | 7 | 8 | 9 | 0 | BACKSP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||||
|
* | TAB | Q | W | E | R | T | [ | ] | Y | U | I | O | P | ' |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
|
||||||
|
* | CAP LK | A | S | D | F | G | HOME | PG UP | H | J | K | L | ; | ENTER |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
|
||||||
|
* | LSHIFT | Z | X | C | V | B | END | PG DN | N | M | , | . | / | RSHIFT |
|
||||||
|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
|
||||||
|
* | | LCTRL | LALT | SPACE | RALT | FN | |
|
||||||
|
* '-----------------------------------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_7U] = LAYOUT_ortho_7u(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1) \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 2x2u Space with Arrows
|
||||||
|
* .-----------------------------------------------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||||
|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
|
||||||
|
* | CAP LK | A | S | D | F | G | H | J | K | L | ; | " | ENTER | PG UP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
|
||||||
|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | PG DN |
|
||||||
|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
|
||||||
|
* | LCTRL | LGUI | FN | LALT | SPACE | SPACE | RALT | RGUI | RCTRL | LEFT | DOWN | RIGHT |
|
||||||
|
* '-----------------------------------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_2UARROW] = LAYOUT_2u_arrow(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||||
|
KC_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_QUOT, \
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSLS, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, MO(1), KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* 6.25u Space with Arrows
|
||||||
|
* .-----------------------------------------------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||||
|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
|
||||||
|
* | CAP LK | A | S | D | F | G | H | J | K | L | ; | " | ENTER | PG UP |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
|
||||||
|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | PG DN |
|
||||||
|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
|
||||||
|
* | LCTRL | LGUI | LALT | SPACE | FN | RCTRL | LEFT | DOWN | RIGHT |
|
||||||
|
* '-----------------------------------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_625UARROW] = LAYOUT_625u_arrow(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||||
|
KC_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_QUOT, \
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSLS, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FUNCTION
|
||||||
|
* .-----------------------------------------------------------------------------------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* '-----------------------------------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
[_FN] = LAYOUT_ortho_5x14(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for Boardwalk
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Layer shorthand
|
||||||
|
enum layer {
|
||||||
|
_BASE,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(1)
|
||||||
|
#define RAISE MO(2)
|
||||||
|
#define FN MO(3)
|
||||||
|
|
||||||
|
// Mac sleep
|
||||||
|
#define __SLEEP S(LCTL(KC_POWER))
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_ortho_hhkb(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_SLCK, KC_PSCR, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_END, KC_PGDN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_INS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
|
||||||
|
KC_CAPS, KC_LALT, KC_LGUI, RAISE, KC_SPC, KC_SPC, LOWER, KC_RGUI, KC_RALT, KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT_ortho_hhkb(
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PAUS, KC_NLCK, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, \
|
||||||
|
_______, 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_LBRC, KC_RBRC, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_BSLS, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT_ortho_hhkb(
|
||||||
|
_______, KC_F11, KC_F12, _______, _______, _______, KC_PAUS, KC_NLCK, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_PIPE, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_FN] = LAYOUT_ortho_hhkb(
|
||||||
|
__SLEEP, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, RESET, _______, KC_MPRV, KC_MNXT, _______, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, RGB_SAD, RGB_HUD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
|
return update_tri_layer_state(state, _LOWER, _RAISE, _FN);
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// Layer shorthand
|
||||||
|
#define _QW 0
|
||||||
|
|
||||||
|
#define LOWER LT(1, KC_SPC)
|
||||||
|
#define RAISE LT(2, KC_ENT)
|
||||||
|
|
||||||
|
#define CTRLESC CTL_T(KC_ESC)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap _QWE: Base Layer (Default Layer) */
|
||||||
|
[_QW] = LAYOUT_ortho_hhkb(
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
||||||
|
CTRLESC, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
MO(3), KC_LCTL, KC_LALT, KC_LGUI, RAISE, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Keymap LOWER: Lower Layer */
|
||||||
|
[1] = LAYOUT_ortho_hhkb(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Keymap RAISE: Raise Layer */
|
||||||
|
[2] = LAYOUT_ortho_hhkb(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Keymap _FL: Function Layer */
|
||||||
|
[3] = LAYOUT_ortho_hhkb(
|
||||||
|
RESET, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for Boardwalk
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Boardwalk
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The Boardwalk is a 60% ortholinear keyboard, designed around Ergodox keycap sets and to fit into many standard 60% cases. The project was inspired by OLKB’s Atomic keyboard, which used larger 2u mods, but u/shensmobile
|
||||||
|
decided to switch to 1.5u keys so that Ergodox sets would provide excellent compatibility. The rest of the board can be covered using standard key sizes from 60% sets.
|
||||||
|
|
||||||
|
Keyboard Maintainer: QMK Community
|
||||||
|
Hardware Supported: Boardwalk Ortholinear PCB
|
||||||
|
Hardware Availability: [panc.co](https://www.panc.co/boardwalk-group-buy.html)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make boardwalk: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,66 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
# Boot Section Size in *bytes*
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# QMK Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = yes # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
LAYOUTS = ortho_5x14
|
||||||
+4
-4
@@ -34,10 +34,10 @@ merge with those in the keyboard folder_
|
|||||||
|
|
||||||
## Relevant Links
|
## Relevant Links
|
||||||
|
|
||||||
- 
|
- [Online Dvorak Layout Trainer](https://learn.dvorak.nl/)
|
||||||
- 
|
- [Dvorak Wikipedia Page](https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard)
|
||||||
- 
|
- [QMK Docs](https://docs.qmk.fm/#/)
|
||||||
- 
|
- [QMK KeyCode Reference](https://docs.qmk.fm/#/keycodes)
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
|
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 Adam Newbold <[email protected]>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x0000
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Apple Inc.
|
||||||
|
#define PRODUCT Numeric Keypad IIe
|
||||||
|
#define DESCRIPTION "Numeric Keypad IIe, A2M2003"
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Pin Mappings
|
||||||
|
============
|
||||||
|
|
||||||
|
Dsub-15 Connection
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Dsub-15 (female)
|
||||||
|
,-------------------------.
|
||||||
|
\ 08 07 06 05 04 03 02 01 /
|
||||||
|
\ 15 14 13 12 11 10 09 /
|
||||||
|
`---------------------'
|
||||||
|
|
||||||
|
Header Pins
|
||||||
|
-----------
|
||||||
|
_____________________________________
|
||||||
|
| |
|
||||||
|
| 11 10 9 8 7 6 5 4 3 2 1 |
|
||||||
|
|_____________________________________|
|
||||||
|
|
||||||
|
|
||||||
|
Header / Matrix
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Pin Name Description
|
||||||
|
--------------------------------------------------------------
|
||||||
|
1,2,5,3,4,6 Y0-Y5 Y-direction key-matrix connections
|
||||||
|
7 NC
|
||||||
|
9,11,10,8 X4-X7 X-direction key-matrix connections
|
||||||
|
|
||||||
|
|
||||||
|
Microcontroller Configuration
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
(Pins are for an Arduino Micro)
|
||||||
|
|
||||||
|
+-----------------------------------+
|
||||||
|
| Dsub-15 | Header | Matrix | Micro |
|
||||||
|
|---------+--------+--------+-------|
|
||||||
|
| 12 | 11 | X5 | B0 |
|
||||||
|
| 11 | 10 | X6 | D3 |
|
||||||
|
| 10 | 9 | X4 | B2 |
|
||||||
|
| 9 | 8 | X7 | D2 |
|
||||||
|
| NC | 7 | NC | -- |
|
||||||
|
| 7 | 6 | Y5 | E6 |
|
||||||
|
| 6 | 5 | Y2 | D4 |
|
||||||
|
| 5 | 4 | Y4 | D7 |
|
||||||
|
| 3 | 3 | Y3 | C6 |
|
||||||
|
| 2 | 2 | Y1 | D0 |
|
||||||
|
| 1 | 1 | Y0 | D1 |
|
||||||
|
+-----------------------------------+
|
||||||
|
|
||||||
|
Note: Dsub-15 pins 4, 8, 13, 14, and 15 are unused
|
||||||
|
|
||||||
|
Reference
|
||||||
|
---------
|
||||||
|
|
||||||
|
https://deskthority.net/wiki/Apple_Numeric_Keypad_IIe
|
||||||
|
https://geekhack.org/index.php?topic=78048.0
|
||||||
|
http://wiki.apple2.org/index.php?title=Pinouts#Apple_.2F.2Fe_Numeric_Keypad_connector
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 6
|
||||||
|
#define MATRIX_ROW_PINS { B0, B2, D2, D3 }
|
||||||
|
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Numeric Keypad IIe",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 7.5,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"7", "x":2, "y":0}, {"label":"8", "x":3, "y":0}, {"label":"9", "x":4, "y":0}, {"label":"(", "x":5.5, "y":0}, {"label":")", "x":6.5, "y":0}, {"label":"\u2190", "x":0, "y":1}, {"label":"4", "x":2, "y":1}, {"label":"5", "x":3, "y":1}, {"label":"6", "x":4, "y":1}, {"label":"\u2212", "x":5.5, "y":1}, {"label":"\u00f7", "x":6.5, "y":1}, {"label":"\u2192", "x":0, "y":2}, {"label":"1", "x":2, "y":2}, {"label":"2", "x":3, "y":2}, {"label":"3", "x":4, "y":2}, {"label":"+", "x":5.5, "y":2}, {"label":"\u00d7", "x":6.5, "y":2}, {"label":"Space", "x":0, "y":3}, {"label":"0", "x":1.5, "y":3, "w":1.5}, {"label":",", "x":3, "y":3}, {"label":".", "x":4, "y":3}, {"label":"Ret", "x":5.5, "y":3}, {"label":"Print", "x":6.5, "y":3}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2019 Adam Newbold <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/* Copyright 2019 Adam Newbold <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines the keycodes used by our macros in process_record_user
|
||||||
|
enum custom_keycodes {
|
||||||
|
QMKBEST = SAFE_RANGE,
|
||||||
|
QMKURL
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
+-------+ +-------+-------+-------+ +-------+-------+
|
||||||
|
| Esc | | 7 | 8 | 9 | | ( | ) |
|
||||||
|
+-------+ +-------+-------+-------+ +-------+-------+
|
||||||
|
| <-- | | 4 | 5 | 6 | | - | / |
|
||||||
|
+-------+ +-------+-------+-------+ +-------+-------+
|
||||||
|
| --> | | 1 | 2 | 3 | | + | * |
|
||||||
|
+-------+ +--+-------+-------+-------+ +-------+-------+
|
||||||
|
| Space | | 0 | , | . | | Ret | Print |
|
||||||
|
+-------+ +----------+-------+-------+ +-------+-------+
|
||||||
|
*/
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_ESCAPE, KC_KP_7, KC_KP_8, KC_KP_9, KC_LEFT_PAREN, KC_RIGHT_PAREN, \
|
||||||
|
KC_LEFT, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_KP_SLASH, \
|
||||||
|
KC_RIGHT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, KC_KP_ASTERISK, \
|
||||||
|
KC_SPACE, KC_KP_0, KC_KP_COMMA, KC_KP_DOT, KC_RETURN, KC_QUESTION \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Numeric Keypad //e Default Keymap
|
||||||
|
|
||||||
|
All keys perform their default functions displayed on the stock keycaps. Note that the "Print" key presses a question mark (?), which was the default behavior on the Apple //e (with ? the shorthand for the AppleSoft BASIC PRINT command).
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2019 Adam Newbold <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
/* Copyright 2019 Adam Newbold <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines the keycodes used by our macros in process_record_user
|
||||||
|
enum custom_keycodes {
|
||||||
|
QMKBEST = SAFE_RANGE,
|
||||||
|
QMKURL
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
+-------+ +-------+-------+-------+ +-------+-------+
|
||||||
|
| Esc | | 7 | 8 | 9 | | ( | ) |
|
||||||
|
+-------+ +-------+-------+-------+ +-------+-------+
|
||||||
|
| <-- | | 4 | 5 | 6 | | - | / |
|
||||||
|
+-------+ +-------+-------+-------+ +-------+-------+
|
||||||
|
| --> | | 1 | 2 | 3 | | + | * |
|
||||||
|
+-------+ +--+-------+-------+-------+ +-------+-------+
|
||||||
|
| Space | | 0 | , | . | | Ret | Print |
|
||||||
|
+-------+ +----------+-------+-------+ +-------+-------+
|
||||||
|
*/
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC__MUTE, KC_KP_7, KC_KP_8, KC_KP_9, KC_LEFT_PAREN, KC_RIGHT_PAREN, \
|
||||||
|
KC__VOLDOWN, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_KP_SLASH, \
|
||||||
|
KC__VOLUP, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, KC_KP_ASTERISK, \
|
||||||
|
MO(1), KC_KP_0, KC_KP_COMMA, KC_KP_DOT, KC_RETURN, KC_QUESTION \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_BRMD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_BRMU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# @newbold's layout for the Numeric Keypad IIe
|
||||||
|
|
||||||
|
Includes the standard layout for all keys except for the left-most column, which is remapped to these keys:
|
||||||
|
|
||||||
|
+-----------------+
|
||||||
|
| Mute |
|
||||||
|
+-----------------+
|
||||||
|
| Volume Down |
|
||||||
|
+-----------------+
|
||||||
|
| Volume Up |
|
||||||
|
+-----------------+
|
||||||
|
| Function |
|
||||||
|
+-----------------+
|
||||||
|
|
||||||
|
With Function held down:
|
||||||
|
|
||||||
|
+-----------------+
|
||||||
|
| Mute |
|
||||||
|
+-----------------+
|
||||||
|
| Brightness Down |
|
||||||
|
+-----------------+
|
||||||
|
| Brightness Up |
|
||||||
|
+-----------------+
|
||||||
|
| Function |
|
||||||
|
+-----------------+
|
||||||
|
|
||||||
|
And also with Function held down, "Print" (the lower right key) will trigger RESET (putting the controller into bootloader mode so it can be flashed).
|
||||||
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright 2019 Adam Newbold <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include "numeric_keypad_IIe.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
// put your looping keyboard code here
|
||||||
|
// runs every cycle (a lot)
|
||||||
|
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
// put your per-action keyboard code here
|
||||||
|
// runs for every action, just before processing by the firmware
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_kb(uint8_t usb_led) {
|
||||||
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
|
|
||||||
|
led_set_user(usb_led);
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright Adam Newbold <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
K_ESC, K_7, K_8, K_9, K_LEFT_PARENS, K_RIGHT_PARENS, \
|
||||||
|
K_LEFT, K_4, K_5, K_6, K_MINUS, K_DIVIDE, \
|
||||||
|
K_RIGHT, K_1, K_2, K_3, K_PLUS, K_MULTIPLY, \
|
||||||
|
K_SPACE, K_0, K_COMMA, K_DOT, K_RETURN, K_PRINT \
|
||||||
|
){ \
|
||||||
|
{ K_RIGHT_PARENS, K_ESC, K_4, K_5, K_6, K_7 },\
|
||||||
|
{ K_DIVIDE, K_LEFT, K_0, K_1, K_2, K_3 },\
|
||||||
|
{ K_PRINT, K_SPACE, K_LEFT_PARENS, K_MINUS, K_RETURN, K_COMMA },\
|
||||||
|
{ K_MULTIPLY, K_RIGHT, K_8, K_9, K_DOT, K_PLUS },\
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Numeric Keypad IIe
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is a conversion project for the Numeric Keypad IIe, model A2M2003. This was an external keypad that connected to the Apple //e's motherboard (and as such, it lacked any kind of onboard controller).
|
||||||
|
|
||||||
|
The reference conversion setup uses the keyboard's DB15 (VGA) fixed cable connected to a DB15 wiring terminal with breakout board ([this one](https://www.amazon.com/gp/product/B07437293Y/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1), specifically) and wired to an [Arduino Micro](https://store.arduino.cc/usa/arduino-micro).
|
||||||
|
|
||||||
|
Keyboard Maintainer: [Adam Newbold](https://github.com/newbold)
|
||||||
|
Hardware Supported: Internal Numeric Keypad IIe PCB (Apple part 820.0081.c), ATmega32U4 microcontroller
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make converter/numeric_keypad_IIe: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).
|
||||||
+6
-9
@@ -12,8 +12,7 @@ MCU = atmega32u4
|
|||||||
# does not *change* the processor frequency - it should merely be updated to
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
# reflect the processor speed set externally so that the code can use accurate
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
# software delays.
|
# software delays.
|
||||||
F_CPU = 8000000
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# LUFA specific
|
# LUFA specific
|
||||||
@@ -37,7 +36,6 @@ F_USB = $(F_CPU)
|
|||||||
# Interrupt driven control endpoint task(+60)
|
# Interrupt driven control endpoint task(+60)
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
# Bootloader selection
|
# Bootloader selection
|
||||||
# Teensy halfkay
|
# Teensy halfkay
|
||||||
# Pro Micro caterina
|
# Pro Micro caterina
|
||||||
@@ -47,7 +45,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
|||||||
# atmega32a bootloadHID
|
# atmega32a bootloadHID
|
||||||
BOOTLOADER = caterina
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
|
||||||
# If you don't know the bootloader type, then you can specify the
|
# If you don't know the bootloader type, then you can specify the
|
||||||
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
||||||
# Teensy halfKay 512
|
# Teensy halfKay 512
|
||||||
@@ -57,11 +54,10 @@ BOOTLOADER = caterina
|
|||||||
# USBaspLoader 2048
|
# USBaspLoader 2048
|
||||||
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
@@ -71,9 +67,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE = no # MIDI controls
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
BLUETOOTH = AdafruitBLE
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||||
@@ -98,6 +98,7 @@ extern "C"
|
|||||||
kbd2.SetReportParser(0, (HIDReportParser*)&kbd_parser2);
|
kbd2.SetReportParser(0, (HIDReportParser*)&kbd_parser2);
|
||||||
kbd3.SetReportParser(0, (HIDReportParser*)&kbd_parser3);
|
kbd3.SetReportParser(0, (HIDReportParser*)&kbd_parser3);
|
||||||
kbd4.SetReportParser(0, (HIDReportParser*)&kbd_parser4);
|
kbd4.SetReportParser(0, (HIDReportParser*)&kbd_parser4);
|
||||||
|
matrix_init_quantum();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void or_report(report_keyboard_t report) {
|
static void or_report(report_keyboard_t report) {
|
||||||
@@ -115,6 +116,24 @@ extern "C"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void) {
|
uint8_t matrix_scan(void) {
|
||||||
static uint16_t last_time_stamp1 = 0;
|
static uint16_t last_time_stamp1 = 0;
|
||||||
static uint16_t last_time_stamp2 = 0;
|
static uint16_t last_time_stamp2 = 0;
|
||||||
@@ -169,6 +188,7 @@ extern "C"
|
|||||||
keyboard_set_leds(host_keyboard_leds());
|
keyboard_set_leds(host_keyboard_leds());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
matrix_scan_quantum();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
Copyright 2019 yynmt
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -20,16 +20,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xCEEB
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x0510
|
#define PRODUCT_ID 0x0000
|
||||||
#define DEVICE_VER 0x0101
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER di0ib
|
#define MANUFACTURER yynmt
|
||||||
#define PRODUCT MF68
|
#define PRODUCT Dozen0
|
||||||
#define DESCRIPTION Magicforce 68 BLE
|
#define DESCRIPTION 12 keys macropad
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 8
|
#define MATRIX_ROWS 1
|
||||||
#define MATRIX_COLS 9
|
#define MATRIX_COLS 12
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Keyboard Matrix Assignments
|
* Keyboard Matrix Assignments
|
||||||
@@ -41,17 +41,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define MATRIX_ROW_PINS { D1, D0, C6, D7, B5, B6, B7, D6 }
|
#define MATRIX_ROW_PINS { F4 }
|
||||||
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, D2, D3 }
|
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, B5, B4, E6, D7, C6, D4 }
|
||||||
#define UNUSED_PINS {B5}
|
#define UNUSED_PINS
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
/*
|
|
||||||
#define BACKLIGHT_PIN B5
|
// #define BACKLIGHT_PIN B7
|
||||||
#define BACKLIGHT_BREATHING
|
// #define BACKLIGHT_BREATHING
|
||||||
#define BACKLIGHT_LEVELS 3
|
// #define BACKLIGHT_LEVELS 3
|
||||||
*/
|
|
||||||
|
// #define RGB_DI_PIN E2
|
||||||
|
// #ifdef RGB_DI_PIN
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
// #define RGBLED_NUM 16
|
||||||
|
// #define RGBLIGHT_HUE_STEP 8
|
||||||
|
// #define RGBLIGHT_SAT_STEP 8
|
||||||
|
// #define RGBLIGHT_VAL_STEP 8
|
||||||
|
// #endif
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCING_DELAY 5
|
#define DEBOUNCING_DELAY 5
|
||||||
@@ -66,6 +74,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Force NKRO
|
* Force NKRO
|
||||||
*
|
*
|
||||||
@@ -99,6 +112,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* key combination for magic key command */
|
||||||
|
/*#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)*/
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
/* control how magic key switches layers */
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
@@ -152,3 +170,58 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
//#define NO_ACTION_ONESHOT
|
//#define NO_ACTION_ONESHOT
|
||||||
//#define NO_ACTION_MACRO
|
//#define NO_ACTION_MACRO
|
||||||
//#define NO_ACTION_FUNCTION
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HD44780 LCD Display Configuration
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
#define LCD_LINES 2 //< number of visible lines of the display
|
||||||
|
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||||
|
|
||||||
|
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||||
|
|
||||||
|
#if LCD_IO_MODE
|
||||||
|
#define LCD_PORT PORTB //< port for the LCD lines
|
||||||
|
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||||
|
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||||
|
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||||
|
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||||
|
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||||
|
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||||
|
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||||
|
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||||
|
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||||
|
#define LCD_RS_PIN 3 //< pin for RS line
|
||||||
|
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||||
|
#define LCD_RW_PIN 2 //< pin for RW line
|
||||||
|
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||||
|
#define LCD_E_PIN 1 //< pin for Enable line
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
// #define BOOTMAGIC_LITE_ROW 0
|
||||||
|
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright 2019 yynmt
|
||||||
|
*
|
||||||
|
* 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 "dozen0.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
// put your looping keyboard code here
|
||||||
|
// runs every cycle (a lot)
|
||||||
|
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
// put your per-action keyboard code here
|
||||||
|
// runs for every action, just before processing by the firmware
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_kb(uint8_t usb_led) {
|
||||||
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
|
|
||||||
|
led_set_user(usb_led);
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/* Copyright 2019 yynmt
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
/* This a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
#define LAYOUT( \
|
||||||
|
K00, K01, K02, K03, K04, K05, \
|
||||||
|
K06, K07, K08, K09, K10, K11 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11 }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Dozen0",
|
||||||
|
"url": "http://yynmt.com",
|
||||||
|
"maintainer": "yynmt",
|
||||||
|
"width": 6,
|
||||||
|
"height": 2,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"key_count": 12,
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0},
|
||||||
|
{"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2019 yynmt
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2019 yynmt
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_UP, KC_DEL, KC_BSPC, \
|
||||||
|
KC_LCTRL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# The default keymap for Dozen0
|
||||||
|
|
||||||
|
```
|
||||||
|
,-------------------------------------------------.
|
||||||
|
| Ctrl+X | Ctrl+C | Ctrl+V | Up | Delete | Bksp |
|
||||||
|
| Ctrl | Shift | Left | Down | Right | Enter |
|
||||||
|
`--------------------------------------------------'
|
||||||
|
```
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2019 yynmt
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2019 yynmt
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
|
||||||
|
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Dozen0
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Dozen0 is 12 keys macropad.
|
||||||
|
|
||||||
|
Keyboard Maintainer: [yynmt](https://github.com/yynmt)
|
||||||
|
Hardware Supported: Dozen0 PCBs, ProMicro supported
|
||||||
|
Hardware Availability: links to where you can find this hardware
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make dozen0: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,81 @@
|
|||||||
|
# MCU name
|
||||||
|
#MCU = at90usb1286
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# atmega32a bootloadHID
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
|
||||||
|
# If you don't know the bootloader type, then you can specify the
|
||||||
|
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # 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 = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
/* Address for jumping to bootloader on STM32 chips. */
|
||||||
|
/* It is chip dependent, the correct number can be looked up here:
|
||||||
|
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||||
|
* This also requires a patch to chibios:
|
||||||
|
* <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||||
|
*/
|
||||||
|
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||||
@@ -0,0 +1,520 @@
|
|||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/chconf.h
|
||||||
|
* @brief Configuration file template.
|
||||||
|
* @details A copy of this file must be placed in each project directory, it
|
||||||
|
* contains the application specific kernel settings.
|
||||||
|
*
|
||||||
|
* @addtogroup config
|
||||||
|
* @details Kernel related settings and hooks.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CHCONF_H
|
||||||
|
#define CHCONF_H
|
||||||
|
|
||||||
|
#define _CHIBIOS_RT_CONF_
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/**
|
||||||
|
* @name System timers settings
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief System time counter resolution.
|
||||||
|
* @note Allowed values are 16 or 32 bits.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_ST_RESOLUTION 32
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief System tick frequency.
|
||||||
|
* @details Frequency of the system timer that drives the system ticks. This
|
||||||
|
* setting also defines the system tick time unit.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_ST_FREQUENCY 100000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Time delta constant for the tick-less mode.
|
||||||
|
* @note If this value is zero then the system uses the classic
|
||||||
|
* periodic tick. This value represents the minimum number
|
||||||
|
* of ticks that is safe to specify in a timeout directive.
|
||||||
|
* The value one is not valid, timeouts are rounded up to
|
||||||
|
* this value.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_ST_TIMEDELTA 2
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/**
|
||||||
|
* @name Kernel parameters and options
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Round robin interval.
|
||||||
|
* @details This constant is the number of system ticks allowed for the
|
||||||
|
* threads before preemption occurs. Setting this value to zero
|
||||||
|
* disables the preemption for threads with equal priority and the
|
||||||
|
* round robin becomes cooperative. Note that higher priority
|
||||||
|
* threads can still preempt, the kernel is always preemptive.
|
||||||
|
* @note Disabling the round robin preemption makes the kernel more compact
|
||||||
|
* and generally faster.
|
||||||
|
* @note The round robin preemption is not supported in tickless mode and
|
||||||
|
* must be set to zero in that case.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_TIME_QUANTUM 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Managed RAM size.
|
||||||
|
* @details Size of the RAM area to be managed by the OS. If set to zero
|
||||||
|
* then the whole available RAM is used. The core memory is made
|
||||||
|
* available to the heap allocator and/or can be used directly through
|
||||||
|
* the simplified core memory allocator.
|
||||||
|
*
|
||||||
|
* @note In order to let the OS manage the whole RAM the linker script must
|
||||||
|
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||||
|
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_MEMCORE_SIZE 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Idle thread automatic spawn suppression.
|
||||||
|
* @details When this option is activated the function @p chSysInit()
|
||||||
|
* does not spawn the idle thread. The application @p main()
|
||||||
|
* function becomes the idle thread and must implement an
|
||||||
|
* infinite loop.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/**
|
||||||
|
* @name Performance options
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OS optimization.
|
||||||
|
* @details If enabled then time efficient rather than space efficient code
|
||||||
|
* is used when two possible implementations exist.
|
||||||
|
*
|
||||||
|
* @note This is not related to the compiler optimization options.
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_OPTIMIZE_SPEED TRUE
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/**
|
||||||
|
* @name Subsystem options
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Time Measurement APIs.
|
||||||
|
* @details If enabled then the time measurement APIs are included in
|
||||||
|
* the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_TM TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Threads registry APIs.
|
||||||
|
* @details If enabled then the registry APIs are included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_REGISTRY TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Threads synchronization APIs.
|
||||||
|
* @details If enabled then the @p chThdWait() function is included in
|
||||||
|
* the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_WAITEXIT TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Semaphores APIs.
|
||||||
|
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Semaphores queuing mode.
|
||||||
|
* @details If enabled then the threads are enqueued on semaphores by
|
||||||
|
* priority rather than in FIFO order.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE. Enable this if you have special
|
||||||
|
* requirements.
|
||||||
|
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Mutexes APIs.
|
||||||
|
* @details If enabled then the mutexes APIs are included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MUTEXES TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables recursive behavior on mutexes.
|
||||||
|
* @note Recursive mutexes are heavier and have an increased
|
||||||
|
* memory footprint.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Conditional Variables APIs.
|
||||||
|
* @details If enabled then the conditional variables APIs are included
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_CONDVARS TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Conditional Variables APIs with timeout.
|
||||||
|
* @details If enabled then the conditional variables APIs with timeout
|
||||||
|
* specification are included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Events Flags APIs.
|
||||||
|
* @details If enabled then the event flags APIs are included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_EVENTS TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Events Flags APIs with timeout.
|
||||||
|
* @details If enabled then the events APIs with timeout specification
|
||||||
|
* are included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Synchronous Messages APIs.
|
||||||
|
* @details If enabled then the synchronous messages APIs are included
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MESSAGES TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Synchronous Messages queuing mode.
|
||||||
|
* @details If enabled then messages are served by priority rather than in
|
||||||
|
* FIFO order.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE. Enable this if you have special
|
||||||
|
* requirements.
|
||||||
|
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MESSAGES_PRIORITY TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Mailboxes APIs.
|
||||||
|
* @details If enabled then the asynchronous messages (mailboxes) APIs are
|
||||||
|
* included in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MAILBOXES TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Core Memory Manager APIs.
|
||||||
|
* @details If enabled then the core memory manager APIs are included
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MEMCORE TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Heap Allocator APIs.
|
||||||
|
* @details If enabled then the memory heap allocator APIs are included
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||||
|
* @p CH_CFG_USE_SEMAPHORES.
|
||||||
|
* @note Mutexes are recommended.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_HEAP TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Memory Pools Allocator APIs.
|
||||||
|
* @details If enabled then the memory pools allocator APIs are included
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MEMPOOLS TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Dynamic Threads APIs.
|
||||||
|
* @details If enabled then the dynamic threads creation APIs are included
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||||
|
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_DYNAMIC TRUE
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/**
|
||||||
|
* @name Debug options
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, kernel statistics.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_STATISTICS FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, system state check.
|
||||||
|
* @details If enabled the correct call protocol for system APIs is checked
|
||||||
|
* at runtime.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, parameters checks.
|
||||||
|
* @details If enabled then the checks on the API functions input
|
||||||
|
* parameters are activated.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, consistency checks.
|
||||||
|
* @details If enabled then all the assertions in the kernel code are
|
||||||
|
* activated. This includes consistency checks inside the kernel,
|
||||||
|
* runtime anomalies and port-defined checks.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, trace buffer.
|
||||||
|
* @details If enabled then the trace buffer is activated.
|
||||||
|
*
|
||||||
|
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Trace buffer entries.
|
||||||
|
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||||
|
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, stack checks.
|
||||||
|
* @details If enabled then a runtime stack check is performed.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
* @note The stack check is performed in a architecture/port dependent way.
|
||||||
|
* It may not be implemented or some ports.
|
||||||
|
* @note The default failure mode is to halt the system with the global
|
||||||
|
* @p panic_msg variable set to @p NULL.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_ENABLE_STACK_CHECK TRUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, stacks initialization.
|
||||||
|
* @details If enabled then the threads working area is filled with a byte
|
||||||
|
* value when a thread is created. This can be useful for the
|
||||||
|
* runtime measurement of the used stack.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_FILL_THREADS FALSE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, threads profiling.
|
||||||
|
* @details If enabled then a field is added to the @p thread_t structure that
|
||||||
|
* counts the system ticks occurred while executing the thread.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
* @note This debug option is not currently compatible with the
|
||||||
|
* tickless mode.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_THREADS_PROFILING FALSE
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/**
|
||||||
|
* @name Kernel hooks
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Threads descriptor structure extension.
|
||||||
|
* @details User fields added to the end of the @p thread_t structure.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_THREAD_EXTRA_FIELDS \
|
||||||
|
/* Add threads custom fields here.*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Threads initialization hook.
|
||||||
|
* @details User initialization code added to the @p chThdInit() API.
|
||||||
|
*
|
||||||
|
* @note It is invoked from within @p chThdInit() and implicitly from all
|
||||||
|
* the threads creation APIs.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||||
|
/* Add threads initialization code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Threads finalization hook.
|
||||||
|
* @details User finalization code added to the @p chThdExit() API.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||||
|
/* Add threads finalization code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Context switch hook.
|
||||||
|
* @details This hook is invoked just before switching between threads.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||||
|
/* Context switch code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ISR enter hook.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
|
||||||
|
/* IRQ prologue code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ISR exit hook.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
|
||||||
|
/* IRQ epilogue code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Idle thread enter hook.
|
||||||
|
* @note This hook is invoked within a critical zone, no OS functions
|
||||||
|
* should be invoked from here.
|
||||||
|
* @note This macro can be used to activate a power saving mode.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||||
|
/* Idle-enter code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Idle thread leave hook.
|
||||||
|
* @note This hook is invoked within a critical zone, no OS functions
|
||||||
|
* should be invoked from here.
|
||||||
|
* @note This macro can be used to deactivate a power saving mode.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||||
|
/* Idle-leave code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Idle Loop hook.
|
||||||
|
* @details This hook is continuously invoked by the idle thread loop.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||||
|
/* Idle loop code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief System tick event hook.
|
||||||
|
* @details This hook is invoked in the system tick handler immediately
|
||||||
|
* after processing the virtual timers queue.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||||
|
/* System tick event code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief System halt hook.
|
||||||
|
* @details This hook is invoked in case to a system halting error before
|
||||||
|
* the system is halted.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||||
|
/* System halt code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Trace hook.
|
||||||
|
* @details This hook is invoked each time a new record is written in the
|
||||||
|
* trace buffer.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_TRACE_HOOK(tep) { \
|
||||||
|
/* Trace code here.*/ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#endif /* CHCONF_H */
|
||||||
|
|
||||||
|
/** @} */
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x1220
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER DZTECH
|
||||||
|
#define PRODUCT DZ40RGB
|
||||||
|
#define DESCRIPTION DZ40 ARM RGB keyboard
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 12
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B13, B12, A2, A1 }
|
||||||
|
#define MATRIX_COL_PINS {A6, A7, B0, B1, C15, C14, C13, B9, B8, A8, B14, B15 }
|
||||||
|
|
||||||
|
/* #define UNUSED_PINS {A0,A1,A2, A3,A4,A9,A10,C15,A13,A14,B2}*/
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define DEBOUNCE 3
|
||||||
|
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
|
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
|
||||||
|
#define RGB_MATRIX_SKIP_FRAMES 0
|
||||||
|
#define RGB_MATRIX_KEYPRESSES
|
||||||
|
#define DISABLE_RGB_MATRIX_SPLASH
|
||||||
|
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
|
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
|
#define DRIVER_ADDR_1 0b1010000
|
||||||
|
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
|
|
||||||
|
#define DRIVER_COUNT 2
|
||||||
|
|
||||||
@@ -0,0 +1,297 @@
|
|||||||
|
#include "dz40rgb.h"
|
||||||
|
#include "config.h"
|
||||||
|
#if defined (split_space)
|
||||||
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
/* Refer to IS31 manual for these locations
|
||||||
|
* driver
|
||||||
|
* | R location
|
||||||
|
* | | G location
|
||||||
|
* | | | B location
|
||||||
|
* | | | | */
|
||||||
|
{0, K_12, J_12, L_12},
|
||||||
|
{0, K_11, J_11, L_11},
|
||||||
|
{0, K_10, J_10, L_10},
|
||||||
|
{0, K_9, J_9, L_9},
|
||||||
|
{0, K_8, J_8, L_8},
|
||||||
|
{0, K_7, J_7, L_7},
|
||||||
|
{0, K_6, J_6, L_6},
|
||||||
|
{0, K_5, J_5, L_5},
|
||||||
|
{0, K_4, J_4, L_4},
|
||||||
|
{0, K_3, J_3, L_3},
|
||||||
|
{0, K_2, J_2, L_2},
|
||||||
|
{0, K_1, J_1, L_1},
|
||||||
|
|
||||||
|
{0, K_13, J_13, L_13},
|
||||||
|
{0, K_14, J_14, L_14},
|
||||||
|
|
||||||
|
{0, H_12, G_12, I_12},
|
||||||
|
{0, H_11, G_11, I_11},
|
||||||
|
{0, H_10, G_10, I_10},
|
||||||
|
{0, H_9, G_9, I_9},
|
||||||
|
{0, H_8, G_8, I_8},
|
||||||
|
{0, H_7, G_7, I_7},
|
||||||
|
{0, H_6, G_6, I_6},
|
||||||
|
{0, H_5, G_5, I_5},
|
||||||
|
{0, H_4, G_4, I_4},
|
||||||
|
{0, H_3, G_3, I_3},
|
||||||
|
{0, H_2, G_2, I_2},
|
||||||
|
{0, H_1, G_1, I_1},
|
||||||
|
|
||||||
|
{0, H_13, G_13, I_13},
|
||||||
|
{0, H_14, G_14, I_14},
|
||||||
|
|
||||||
|
{0, E_12, D_12, F_12},
|
||||||
|
{0, E_11, D_11, F_11},
|
||||||
|
{0, E_10, D_10, F_10},
|
||||||
|
{0, E_9, D_9, F_9},
|
||||||
|
{0, E_8, D_8, F_8},
|
||||||
|
{0, E_7, D_7, F_7},
|
||||||
|
{0, E_6, D_6, F_6},
|
||||||
|
{0, E_5, D_5, F_5},
|
||||||
|
{0, E_4, D_4, F_4},
|
||||||
|
{0, E_3, D_3, F_3},
|
||||||
|
{0, E_2, D_2, F_2},
|
||||||
|
{0, E_1, D_1, F_1},
|
||||||
|
|
||||||
|
{0, E_13, D_13, F_13},
|
||||||
|
{0, E_14, D_14, F_14},
|
||||||
|
|
||||||
|
{0, B_12, A_12, C_12},
|
||||||
|
{0, B_11, A_11, C_11},
|
||||||
|
{0, B_10, A_10, C_10},
|
||||||
|
{0, B_9, A_9, C_9},
|
||||||
|
{0, B_8, A_8, C_8},
|
||||||
|
{0, B_7, A_7, C_7},
|
||||||
|
{0, B_6, A_6, C_6},
|
||||||
|
{0, B_5, A_5, C_5},
|
||||||
|
{0, B_4, A_4, C_4},
|
||||||
|
{0, B_3, A_3, C_3},
|
||||||
|
{0, B_2, A_2, C_2},
|
||||||
|
{0, B_1, A_1, C_1}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
|
||||||
|
{{0|(11<<4)}, {20.36*11, 0}, 1},
|
||||||
|
{{0|(10<<4)}, {20.36*10, 0}, 1},
|
||||||
|
{{0|(9<<4)}, {20.36*9, 0}, 1},
|
||||||
|
{{0|(8<<4)}, {20.36*8, 0}, 1},
|
||||||
|
{{0|(7<<4)}, {20.36*7, 0}, 1},
|
||||||
|
{{0|(6<<4)}, { 20.36*6, 0}, 1},
|
||||||
|
{{0|(5<<4)}, { 20.36*5, 0}, 1},
|
||||||
|
{{0|(4<<4)}, { 20.36*4, 0}, 1},
|
||||||
|
{{0|(3<<4)}, { 20.36*3, 0}, 1},
|
||||||
|
{{0|(2<<4)}, { 20.36*2, 0}, 1},
|
||||||
|
{{0|(1<<4)}, { 20.36*1, 0}, 1},
|
||||||
|
{{0|(0<<4)}, { 20.36*0, 0}, 1},
|
||||||
|
|
||||||
|
{{0|(12<<4)}, {20.36*11, 21.33*0.5}, 1},
|
||||||
|
{{0|(13<<4)}, {20.36*0,21.33*0.5}, 1},
|
||||||
|
|
||||||
|
{{1|(11<<4)}, {20.36*11, 21.33}, 1},
|
||||||
|
{{1|(10<<4)}, {20.36*10, 21.33}, 0},
|
||||||
|
{{1|(9<<4)}, {20.36*9, 21.33}, 0},
|
||||||
|
{{1|(8<<4)}, {20.36*8, 21.33}, 0},
|
||||||
|
{{1|(7<<4)}, {20.36*7, 21.33}, 0},
|
||||||
|
{{1|(6<<4)}, { 20.36*6, 21.33}, 0},
|
||||||
|
{{1|(5<<4)}, { 20.36*5, 21.33}, 0},
|
||||||
|
{{1|(4<<4)}, { 20.36*4, 21.33}, 0},
|
||||||
|
{{1|(3<<4)}, { 20.36*3, 21.33}, 0},
|
||||||
|
{{1|(2<<4)}, { 20.36*2, 21.33}, 0},
|
||||||
|
{{1|(1<<4)}, { 20.36*1, 21.33}, 0},
|
||||||
|
{{1|(0<<4)}, { 20.36*0, 21.33}, 1},
|
||||||
|
|
||||||
|
{{1|(12<<4)}, {20.36*11, 21.33*1.5}, 1},
|
||||||
|
{{1|(13<<4)}, {20.36*0,21.33*1.5}, 1},
|
||||||
|
|
||||||
|
{{2|(11<<4)}, {20.36*11, 21.33*2}, 1},
|
||||||
|
{{2|(10<<4)}, {20.36*10, 21.33*2}, 0},
|
||||||
|
{{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
|
||||||
|
{{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
|
||||||
|
{{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
|
||||||
|
{{2|(6<<4)}, { 20.36*6, 21.33*2}, 0},
|
||||||
|
{{2|(5<<4)}, { 20.36*5, 21.33*2}, 0},
|
||||||
|
{{2|(4<<4)}, { 20.36*4, 21.33*2}, 0},
|
||||||
|
{{2|(3<<4)}, { 20.36*3, 21.33*2}, 0},
|
||||||
|
{{2|(2<<4)}, { 20.36*2, 21.33*2}, 0},
|
||||||
|
{{2|(1<<4)}, { 20.36*1, 21.33*2}, 0},
|
||||||
|
{{2|(0<<4)}, { 20.36*0, 21.33*2}, 1},
|
||||||
|
|
||||||
|
{{2|(12<<4)}, {20.36*11, 21.33*2.5}, 1},
|
||||||
|
{{2|(13<<4)}, {20.36*0,21.33*2.5}, 1},
|
||||||
|
|
||||||
|
{{3|(11<<4)}, {20.36*11, 21.33*3}, 1},
|
||||||
|
{{3|(10<<4)}, {20.36*10, 21.33*3}, 1},
|
||||||
|
{{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
|
||||||
|
{{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
|
||||||
|
{{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
|
||||||
|
{{3|(6<<4)}, { 20.36*6, 21.33*3}, 1},
|
||||||
|
{{3|(5<<4)}, { 20.36*5, 21.33*3}, 1},
|
||||||
|
{{3|(4<<4)}, { 20.36*4, 21.33*3}, 1},
|
||||||
|
{{3|(3<<4)}, { 20.36*3, 21.33*3}, 1},
|
||||||
|
{{3|(2<<4)}, { 20.36*2, 21.33*3}, 1},
|
||||||
|
{{3|(1<<4)}, { 20.36*1, 21.33*3}, 1},
|
||||||
|
{{3|(0<<4)}, { 20.36*0, 21.33*3}, 1}
|
||||||
|
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
/* Refer to IS31 manual for these locations
|
||||||
|
* driver
|
||||||
|
* | R location
|
||||||
|
* | | G location
|
||||||
|
* | | | B location
|
||||||
|
* | | | | */
|
||||||
|
{0, K_12, J_12, L_12},
|
||||||
|
{0, K_11, J_11, L_11},
|
||||||
|
{0, K_10, J_10, L_10},
|
||||||
|
{0, K_9, J_9, L_9},
|
||||||
|
{0, K_8, J_8, L_8},
|
||||||
|
{0, K_7, J_7, L_7},
|
||||||
|
{0, K_6, J_6, L_6},
|
||||||
|
{0, K_5, J_5, L_5},
|
||||||
|
{0, K_4, J_4, L_4},
|
||||||
|
{0, K_3, J_3, L_3},
|
||||||
|
{0, K_2, J_2, L_2},
|
||||||
|
{0, K_1, J_1, L_1},
|
||||||
|
|
||||||
|
{0, K_13, J_13, L_13},
|
||||||
|
{0, K_14, J_14, L_14},
|
||||||
|
|
||||||
|
{0, H_12, G_12, I_12},
|
||||||
|
{0, H_11, G_11, I_11},
|
||||||
|
{0, H_10, G_10, I_10},
|
||||||
|
{0, H_9, G_9, I_9},
|
||||||
|
{0, H_8, G_8, I_8},
|
||||||
|
{0, H_7, G_7, I_7},
|
||||||
|
{0, H_6, G_6, I_6},
|
||||||
|
{0, H_5, G_5, I_5},
|
||||||
|
{0, H_4, G_4, I_4},
|
||||||
|
{0, H_3, G_3, I_3},
|
||||||
|
{0, H_2, G_2, I_2},
|
||||||
|
{0, H_1, G_1, I_1},
|
||||||
|
|
||||||
|
{0, H_13, G_13, I_13},
|
||||||
|
{0, H_14, G_14, I_14},
|
||||||
|
|
||||||
|
{0, E_12, D_12, F_12},
|
||||||
|
{0, E_11, D_11, F_11},
|
||||||
|
{0, E_10, D_10, F_10},
|
||||||
|
{0, E_9, D_9, F_9},
|
||||||
|
{0, E_8, D_8, F_8},
|
||||||
|
{0, E_7, D_7, F_7},
|
||||||
|
{0, E_6, D_6, F_6},
|
||||||
|
{0, E_5, D_5, F_5},
|
||||||
|
{0, E_4, D_4, F_4},
|
||||||
|
{0, E_3, D_3, F_3},
|
||||||
|
{0, E_2, D_2, F_2},
|
||||||
|
{0, E_1, D_1, F_1},
|
||||||
|
|
||||||
|
{0, E_13, D_13, F_13},
|
||||||
|
{0, E_14, D_14, F_14},
|
||||||
|
|
||||||
|
{0, B_12, A_12, C_12},
|
||||||
|
{0, B_11, A_11, C_11},
|
||||||
|
{0, B_10, A_10, C_10},
|
||||||
|
{0, B_9, A_9, C_9},
|
||||||
|
{0, B_8, A_8, C_8},
|
||||||
|
{0, B_13, A_13, C_13},
|
||||||
|
{0, B_5, A_5, C_5},
|
||||||
|
{0, B_4, A_4, C_4},
|
||||||
|
{0, B_3, A_3, C_3},
|
||||||
|
{0, B_2, A_2, C_2},
|
||||||
|
{0, B_1, A_1, C_1}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
|
||||||
|
{{0|(11<<4)}, {20.36*11, 0}, 1},
|
||||||
|
{{0|(10<<4)}, {20.36*10, 0}, 1},
|
||||||
|
{{0|(9<<4)}, {20.36*9, 0}, 1},
|
||||||
|
{{0|(8<<4)}, {20.36*8, 0}, 1},
|
||||||
|
{{0|(7<<4)}, {20.36*7, 0}, 1},
|
||||||
|
{{0|(6<<4)}, { 20.36*6, 0}, 1},
|
||||||
|
{{0|(5<<4)}, { 20.36*5, 0}, 1},
|
||||||
|
{{0|(4<<4)}, { 20.36*4, 0}, 1},
|
||||||
|
{{0|(3<<4)}, { 20.36*3, 0}, 1},
|
||||||
|
{{0|(2<<4)}, { 20.36*2, 0}, 1},
|
||||||
|
{{0|(1<<4)}, { 20.36*1, 0}, 1},
|
||||||
|
{{0|(0<<4)}, { 20.36*0, 0}, 1},
|
||||||
|
|
||||||
|
{{0|(12<<4)}, {20.36*11, 21.33*0.5}, 1},
|
||||||
|
{{0|(13<<4)}, {20.36*0,21.33*0.5}, 1},
|
||||||
|
|
||||||
|
{{1|(11<<4)}, {20.36*11, 21.33}, 1},
|
||||||
|
{{1|(10<<4)}, {20.36*10, 21.33}, 0},
|
||||||
|
{{1|(9<<4)}, {20.36*9, 21.33}, 0},
|
||||||
|
{{1|(8<<4)}, {20.36*8, 21.33}, 0},
|
||||||
|
{{1|(7<<4)}, {20.36*7, 21.33}, 0},
|
||||||
|
{{1|(6<<4)}, { 20.36*6, 21.33}, 0},
|
||||||
|
{{1|(5<<4)}, { 20.36*5, 21.33}, 0},
|
||||||
|
{{1|(4<<4)}, { 20.36*4, 21.33}, 0},
|
||||||
|
{{1|(3<<4)}, { 20.36*3, 21.33}, 0},
|
||||||
|
{{1|(2<<4)}, { 20.36*2, 21.33}, 0},
|
||||||
|
{{1|(1<<4)}, { 20.36*1, 21.33}, 0},
|
||||||
|
{{1|(0<<4)}, { 20.36*0, 21.33}, 1},
|
||||||
|
|
||||||
|
{{1|(12<<4)}, {20.36*11, 21.33*1.5}, 1},
|
||||||
|
{{1|(13<<4)}, {20.36*0,21.33*1.5}, 1},
|
||||||
|
|
||||||
|
{{2|(11<<4)}, {20.36*11, 21.33*2}, 1},
|
||||||
|
{{2|(10<<4)}, {20.36*10, 21.33*2}, 0},
|
||||||
|
{{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
|
||||||
|
{{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
|
||||||
|
{{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
|
||||||
|
{{2|(6<<4)}, { 20.36*6, 21.33*2}, 0},
|
||||||
|
{{2|(5<<4)}, { 20.36*5, 21.33*2}, 0},
|
||||||
|
{{2|(4<<4)}, { 20.36*4, 21.33*2}, 0},
|
||||||
|
{{2|(3<<4)}, { 20.36*3, 21.33*2}, 0},
|
||||||
|
{{2|(2<<4)}, { 20.36*2, 21.33*2}, 0},
|
||||||
|
{{2|(1<<4)}, { 20.36*1, 21.33*2}, 0},
|
||||||
|
{{2|(0<<4)}, { 20.36*0, 21.33*2}, 1},
|
||||||
|
|
||||||
|
{{2|(12<<4)}, {20.36*11, 21.33*2.5}, 1},
|
||||||
|
{{2|(13<<4)}, {20.36*0,21.33*2.5}, 1},
|
||||||
|
|
||||||
|
{{3|(11<<4)}, {20.36*11, 21.33*3}, 1},
|
||||||
|
{{3|(10<<4)}, {20.36*10, 21.33*3}, 1},
|
||||||
|
{{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
|
||||||
|
{{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
|
||||||
|
{{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
|
||||||
|
{{3|(6<<4)}, { 20.36*5.5, 21.33*3}, 1},
|
||||||
|
{{3|(4<<4)}, { 20.36*4, 21.33*3}, 1},
|
||||||
|
{{3|(3<<4)}, { 20.36*3, 21.33*3}, 1},
|
||||||
|
{{3|(2<<4)}, { 20.36*2, 21.33*3}, 1},
|
||||||
|
{{3|(1<<4)}, { 20.36*1, 21.33*3}, 1},
|
||||||
|
{{3|(0<<4)}, { 20.36*0, 21.33*3}, 1}
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void suspend_power_down_kb(void)
|
||||||
|
{
|
||||||
|
rgb_matrix_set_suspend_state(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void suspend_wakeup_init_kb(void)
|
||||||
|
{
|
||||||
|
rgb_matrix_set_suspend_state(false);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "quantum.h"
|
||||||
|
#define LAYOUT( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k36, k36, k37, k38, k39, k3a, k3b } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_SPLIT( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,388 @@
|
|||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/halconf.h
|
||||||
|
* @brief HAL configuration header.
|
||||||
|
* @details HAL configuration file, this file allows to enable or disable the
|
||||||
|
* various device drivers from your application. You may also use
|
||||||
|
* this file in order to override the device drivers default settings.
|
||||||
|
*
|
||||||
|
* @addtogroup HAL_CONF
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HALCONF_H
|
||||||
|
#define HALCONF_H
|
||||||
|
|
||||||
|
#include "mcuconf.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the PAL subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_PAL TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the ADC subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_ADC FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the CAN subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_CAN FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the DAC subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_DAC TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the EXT subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_EXT FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the GPT subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_GPT TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the I2C subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_I2C TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the I2S subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_I2S FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the ICU subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_ICU FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the MAC subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_MAC FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the MMC_SPI subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_MMC_SPI FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the PWM subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_PWM FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the QSPI subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_QSPI) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_QSPI FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the RTC subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_RTC FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SDC subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_SDC FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SERIAL subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_SERIAL FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SERIAL over USB subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_SERIAL_USB FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SPI subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_SPI FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the UART subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_UART FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the USB subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_USB TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the WDG subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_WDG FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* ADC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
#define ADC_USE_WAIT TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
#define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* CAN driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sleep mode related APIs inclusion switch.
|
||||||
|
*/
|
||||||
|
#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||||
|
#define CAN_USE_SLEEP_MODE TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* I2C driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||||
|
*/
|
||||||
|
#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
#define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* MAC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables an event sources for incoming packets.
|
||||||
|
*/
|
||||||
|
#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||||
|
#define MAC_USE_ZERO_COPY FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables an event sources for incoming packets.
|
||||||
|
*/
|
||||||
|
#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||||
|
#define MAC_USE_EVENTS TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* MMC_SPI driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Delays insertions.
|
||||||
|
* @details If enabled this options inserts delays into the MMC waiting
|
||||||
|
* routines releasing some extra CPU time for the threads with
|
||||||
|
* lower priority, this may slow down the driver a bit however.
|
||||||
|
* This option is recommended also if the SPI driver does not
|
||||||
|
* use a DMA channel and heavily loads the CPU.
|
||||||
|
*/
|
||||||
|
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||||
|
#define MMC_NICE_WAITING TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SDC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Number of initialization attempts before rejecting the card.
|
||||||
|
* @note Attempts are performed at 10mS intervals.
|
||||||
|
*/
|
||||||
|
#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||||
|
#define SDC_INIT_RETRY 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Include support for MMC cards.
|
||||||
|
* @note MMC support is not yet implemented so this option must be kept
|
||||||
|
* at @p FALSE.
|
||||||
|
*/
|
||||||
|
#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||||
|
#define SDC_MMC_SUPPORT FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Delays insertions.
|
||||||
|
* @details If enabled this options inserts delays into the MMC waiting
|
||||||
|
* routines releasing some extra CPU time for the threads with
|
||||||
|
* lower priority, this may slow down the driver a bit however.
|
||||||
|
*/
|
||||||
|
#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||||
|
#define SDC_NICE_WAITING TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SERIAL driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Default bit rate.
|
||||||
|
* @details Configuration parameter, this is the baud rate selected for the
|
||||||
|
* default configuration.
|
||||||
|
*/
|
||||||
|
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||||
|
#define SERIAL_DEFAULT_BITRATE 38400
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial buffers size.
|
||||||
|
* @details Configuration parameter, you can change the depth of the queue
|
||||||
|
* buffers depending on the requirements of your application.
|
||||||
|
* @note The default is 16 bytes for both the transmission and receive
|
||||||
|
* buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||||
|
#define SERIAL_BUFFERS_SIZE 16
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SERIAL_USB driver related setting. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial over USB buffers size.
|
||||||
|
* @details Configuration parameter, the buffer size must be a multiple of
|
||||||
|
* the USB data endpoint maximum packet size.
|
||||||
|
* @note The default is 256 bytes for both the transmission and receive
|
||||||
|
* buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||||
|
#define SERIAL_USB_BUFFERS_SIZE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial over USB number of buffers.
|
||||||
|
* @note The default is 2 buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
|
||||||
|
#define SERIAL_USB_BUFFERS_NUMBER 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SPI driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
#define SPI_USE_WAIT TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
#define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* UART driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
#define UART_USE_WAIT FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
#define UART_USE_MUTUAL_EXCLUSION FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* USB driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
#define USB_USE_WAIT TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* HALCONF_H */
|
||||||
|
|
||||||
|
/** @} */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
#define DRIVER_1_LED_TOTAL 53
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
extern bool g_suspend_state;
|
||||||
|
#define _LAYER0 0
|
||||||
|
#define _LAYER1 1
|
||||||
|
#define _LAYER2 2
|
||||||
|
#define _LAYER3 3
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_LAYER0] = LAYOUT( /* Base */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
[_LAYER1] = LAYOUT( /* FN */
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, TO(3), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
[_LAYER2] = LAYOUT( /* FN2 */
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||||
|
RGB_TOG, RGB_MOD, BL_INC, BL_DEC, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
[_LAYER3] = LAYOUT( /* FN3 */
|
||||||
|
TO(0), RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
||||||
|
rgb_led led;
|
||||||
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
led = g_rgb_leds[i];
|
||||||
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
|
if (led.modifier) {
|
||||||
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
if (!g_suspend_state) {
|
||||||
|
switch (biton32(layer_state)) {
|
||||||
|
case _LAYER1:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
||||||
|
case _LAYER2:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
||||||
|
case _LAYER3:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
//user initialization
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
//user matrix
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "../../config.h"
|
||||||
|
#define split_space
|
||||||
|
#define DRIVER_1_LED_TOTAL 54
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
extern bool g_suspend_state;
|
||||||
|
#define _LAYER0 0
|
||||||
|
#define _LAYER1 1
|
||||||
|
#define _LAYER2 2
|
||||||
|
#define _LAYER3 3
|
||||||
|
#define _LAYER4 4
|
||||||
|
#define _LAYER5 5
|
||||||
|
#define _LAYER6 6
|
||||||
|
#define _LAYER7 7
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_LAYER0] = LAYOUT_SPLIT( /* Base */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
|
||||||
|
[_LAYER1] = LAYOUT_SPLIT( /* FN */
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
|
||||||
|
[_LAYER2] = LAYOUT_SPLIT( /* LIGHT */
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
|
||||||
|
[_LAYER3] = LAYOUT_SPLIT( /* NUMPAD */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
|
||||||
|
[_LAYER4] = LAYOUT_SPLIT( /* MAC */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
|
||||||
|
[_LAYER5] = LAYOUT_SPLIT( /* NEED TO DEFINE */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
|
||||||
|
[_LAYER6] = LAYOUT_SPLIT( /* NEED TO DEFINE */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
|
||||||
|
[_LAYER7] = LAYOUT_SPLIT( /* NEED TO DEFINE */
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
||||||
|
rgb_led led;
|
||||||
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
led = g_rgb_leds[i];
|
||||||
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
|
if (led.modifier) {
|
||||||
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
if (!g_suspend_state) {
|
||||||
|
switch (biton32(layer_state)) {
|
||||||
|
case _LAYER1:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
||||||
|
case _LAYER2:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
||||||
|
case _LAYER4:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
||||||
|
case _LAYER5:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, false); break;
|
||||||
|
case _LAYER6:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0xFF, false); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
//user initialization
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
//user matrix
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,257 @@
|
|||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MCUCONF_H
|
||||||
|
#define MCUCONF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* STM32F3xx drivers configuration.
|
||||||
|
* The following settings override the default settings present in
|
||||||
|
* the various device driver implementation headers.
|
||||||
|
* Note that the settings for each driver only have effect if the whole
|
||||||
|
* driver is enabled in halconf.h.
|
||||||
|
*
|
||||||
|
* IRQ priorities:
|
||||||
|
* 15...0 Lowest...Highest.
|
||||||
|
*
|
||||||
|
* DMA priorities:
|
||||||
|
* 0...3 Lowest...Highest.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define STM32F3xx_MCUCONF
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAL driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_NO_INIT FALSE
|
||||||
|
#define STM32_PVD_ENABLE FALSE
|
||||||
|
#define STM32_PLS STM32_PLS_LEV0
|
||||||
|
#define STM32_HSI_ENABLED TRUE
|
||||||
|
#define STM32_LSI_ENABLED TRUE
|
||||||
|
#define STM32_HSE_ENABLED TRUE
|
||||||
|
#define STM32_LSE_ENABLED FALSE
|
||||||
|
#define STM32_SW STM32_SW_PLL
|
||||||
|
#define STM32_PLLSRC STM32_PLLSRC_HSE
|
||||||
|
#define STM32_PREDIV_VALUE 1
|
||||||
|
#define STM32_PLLMUL_VALUE 9
|
||||||
|
#define STM32_HPRE STM32_HPRE_DIV1
|
||||||
|
#define STM32_PPRE1 STM32_PPRE1_DIV2
|
||||||
|
#define STM32_PPRE2 STM32_PPRE2_DIV2
|
||||||
|
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
|
||||||
|
#define STM32_ADC12PRES STM32_ADC12PRES_DIV1
|
||||||
|
#define STM32_ADC34PRES STM32_ADC34PRES_DIV1
|
||||||
|
#define STM32_USART1SW STM32_USART1SW_PCLK
|
||||||
|
#define STM32_USART2SW STM32_USART2SW_PCLK
|
||||||
|
#define STM32_USART3SW STM32_USART3SW_PCLK
|
||||||
|
#define STM32_UART4SW STM32_UART4SW_PCLK
|
||||||
|
#define STM32_UART5SW STM32_UART5SW_PCLK
|
||||||
|
#define STM32_I2C1SW STM32_I2C1SW_SYSCLK
|
||||||
|
#define STM32_I2C2SW STM32_I2C2SW_SYSCLK
|
||||||
|
#define STM32_TIM1SW STM32_TIM1SW_PCLK2
|
||||||
|
#define STM32_TIM8SW STM32_TIM8SW_PCLK2
|
||||||
|
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
||||||
|
#define STM32_USB_CLOCK_REQUIRED TRUE
|
||||||
|
#define STM32_USBPRE STM32_USBPRE_DIV1P5
|
||||||
|
|
||||||
|
#undef STM32_HSE_BYPASS
|
||||||
|
// #error "oh no"
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ADC driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_ADC_DUAL_MODE FALSE
|
||||||
|
#define STM32_ADC_COMPACT_SAMPLES FALSE
|
||||||
|
#define STM32_ADC_USE_ADC1 FALSE
|
||||||
|
#define STM32_ADC_USE_ADC2 FALSE
|
||||||
|
#define STM32_ADC_USE_ADC3 FALSE
|
||||||
|
#define STM32_ADC_USE_ADC4 FALSE
|
||||||
|
#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
|
||||||
|
#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 1)
|
||||||
|
#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
|
||||||
|
#define STM32_ADC_ADC4_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
|
||||||
|
#define STM32_ADC_ADC1_DMA_PRIORITY 2
|
||||||
|
#define STM32_ADC_ADC2_DMA_PRIORITY 2
|
||||||
|
#define STM32_ADC_ADC3_DMA_PRIORITY 2
|
||||||
|
#define STM32_ADC_ADC4_DMA_PRIORITY 2
|
||||||
|
#define STM32_ADC_ADC12_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC3_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC4_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC4_DMA_IRQ_PRIORITY 5
|
||||||
|
#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1
|
||||||
|
#define STM32_ADC_ADC34_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CAN driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_CAN_USE_CAN1 FALSE
|
||||||
|
#define STM32_CAN_CAN1_IRQ_PRIORITY 11
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DAC driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_DAC_DUAL_MODE FALSE
|
||||||
|
#define STM32_DAC_USE_DAC1_CH1 TRUE
|
||||||
|
#define STM32_DAC_USE_DAC1_CH2 TRUE
|
||||||
|
#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10
|
||||||
|
#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10
|
||||||
|
#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2
|
||||||
|
#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXT driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_EXT_EXTI0_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI1_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI2_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI3_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI4_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI16_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI17_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI18_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI19_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI20_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI21_22_29_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI30_32_IRQ_PRIORITY 6
|
||||||
|
#define STM32_EXT_EXTI33_IRQ_PRIORITY 6
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPT driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_GPT_USE_TIM1 FALSE
|
||||||
|
#define STM32_GPT_USE_TIM2 FALSE
|
||||||
|
#define STM32_GPT_USE_TIM3 FALSE
|
||||||
|
#define STM32_GPT_USE_TIM4 FALSE
|
||||||
|
#define STM32_GPT_USE_TIM6 TRUE
|
||||||
|
#define STM32_GPT_USE_TIM7 TRUE
|
||||||
|
#define STM32_GPT_USE_TIM8 TRUE
|
||||||
|
#define STM32_GPT_TIM1_IRQ_PRIORITY 7
|
||||||
|
#define STM32_GPT_TIM2_IRQ_PRIORITY 7
|
||||||
|
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
|
||||||
|
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
|
||||||
|
#define STM32_GPT_TIM6_IRQ_PRIORITY 7
|
||||||
|
#define STM32_GPT_TIM7_IRQ_PRIORITY 7
|
||||||
|
#define STM32_GPT_TIM8_IRQ_PRIORITY 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* I2C driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_I2C_USE_I2C1 TRUE
|
||||||
|
#define STM32_I2C_USE_I2C2 FALSE
|
||||||
|
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||||
|
#define STM32_I2C_I2C1_IRQ_PRIORITY 10
|
||||||
|
#define STM32_I2C_I2C2_IRQ_PRIORITY 10
|
||||||
|
#define STM32_I2C_USE_DMA TRUE
|
||||||
|
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
||||||
|
#define STM32_I2C_I2C2_DMA_PRIORITY 1
|
||||||
|
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ICU driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_ICU_USE_TIM1 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM2 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM3 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM4 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM8 FALSE
|
||||||
|
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM4_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM8_IRQ_PRIORITY 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PWM driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_PWM_USE_ADVANCED FALSE
|
||||||
|
#define STM32_PWM_USE_TIM1 FALSE
|
||||||
|
#define STM32_PWM_USE_TIM2 FALSE
|
||||||
|
#define STM32_PWM_USE_TIM3 FALSE
|
||||||
|
#define STM32_PWM_USE_TIM4 FALSE
|
||||||
|
#define STM32_PWM_USE_TIM8 FALSE
|
||||||
|
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
|
||||||
|
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
|
||||||
|
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
|
||||||
|
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
|
||||||
|
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SERIAL driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_SERIAL_USE_USART1 FALSE
|
||||||
|
#define STM32_SERIAL_USE_USART2 FALSE
|
||||||
|
#define STM32_SERIAL_USE_USART3 FALSE
|
||||||
|
#define STM32_SERIAL_USE_UART4 FALSE
|
||||||
|
#define STM32_SERIAL_USE_UART5 FALSE
|
||||||
|
#define STM32_SERIAL_USART1_PRIORITY 12
|
||||||
|
#define STM32_SERIAL_USART2_PRIORITY 12
|
||||||
|
#define STM32_SERIAL_USART3_PRIORITY 12
|
||||||
|
#define STM32_SERIAL_UART4_PRIORITY 12
|
||||||
|
#define STM32_SERIAL_UART5_PRIORITY 12
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SPI driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_SPI_USE_SPI1 FALSE
|
||||||
|
#define STM32_SPI_USE_SPI2 FALSE
|
||||||
|
#define STM32_SPI_USE_SPI3 FALSE
|
||||||
|
#define STM32_SPI_SPI1_DMA_PRIORITY 1
|
||||||
|
#define STM32_SPI_SPI2_DMA_PRIORITY 1
|
||||||
|
#define STM32_SPI_SPI3_DMA_PRIORITY 1
|
||||||
|
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
|
||||||
|
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
|
||||||
|
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
|
||||||
|
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ST driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_ST_IRQ_PRIORITY 8
|
||||||
|
#define STM32_ST_USE_TIMER 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* UART driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_UART_USE_USART1 FALSE
|
||||||
|
#define STM32_UART_USE_USART2 FALSE
|
||||||
|
#define STM32_UART_USE_USART3 FALSE
|
||||||
|
#define STM32_UART_USART1_IRQ_PRIORITY 12
|
||||||
|
#define STM32_UART_USART2_IRQ_PRIORITY 12
|
||||||
|
#define STM32_UART_USART3_IRQ_PRIORITY 12
|
||||||
|
#define STM32_UART_USART1_DMA_PRIORITY 0
|
||||||
|
#define STM32_UART_USART2_DMA_PRIORITY 0
|
||||||
|
#define STM32_UART_USART3_DMA_PRIORITY 0
|
||||||
|
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USB driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_USB_USE_USB1 TRUE
|
||||||
|
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
|
||||||
|
#define STM32_USB_USB1_HP_IRQ_PRIORITY 13
|
||||||
|
#define STM32_USB_USB1_LP_IRQ_PRIORITY 14
|
||||||
|
|
||||||
|
/*
|
||||||
|
* WDG driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_WDG_USE_IWDG FALSE
|
||||||
|
|
||||||
|
#endif /* MCUCONF_H */
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# project specific files
|
||||||
|
|
||||||
|
## chip/board settings
|
||||||
|
# the next two should match the directories in
|
||||||
|
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
|
||||||
|
MCU_FAMILY = STM32
|
||||||
|
MCU_SERIES = STM32F3xx
|
||||||
|
|
||||||
|
# Linker script to use
|
||||||
|
# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
||||||
|
# or <this_dir>/ld/
|
||||||
|
MCU_LDSCRIPT = STM32F303xC
|
||||||
|
|
||||||
|
# Startup code to use
|
||||||
|
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
|
||||||
|
MCU_STARTUP = stm32f3xx
|
||||||
|
|
||||||
|
# Board: it should exist either in <chibios>/os/hal/boards/
|
||||||
|
# or <this_dir>/boards
|
||||||
|
BOARD = GENERIC_STM32_F303XC
|
||||||
|
|
||||||
|
# Cortex version
|
||||||
|
MCU = cortex-m4
|
||||||
|
|
||||||
|
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
|
||||||
|
ARMV = 7
|
||||||
|
|
||||||
|
USE_FPU = yes
|
||||||
|
|
||||||
|
# Vector table for application
|
||||||
|
# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
|
||||||
|
# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
|
||||||
|
# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
|
||||||
|
OPT_DEFS =
|
||||||
|
|
||||||
|
# Do not put the microcontroller into power saving mode
|
||||||
|
# when we get USB suspend event. We want it to keep updating
|
||||||
|
# backlight effects.
|
||||||
|
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
|
||||||
|
|
||||||
|
# Options to pass to dfu-util when flashing
|
||||||
|
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# comment out to disable the options.
|
||||||
|
#
|
||||||
|
BACKLIGHT_ENABLE = no
|
||||||
|
BOOTMAGIC_ENABLE = lite # 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
|
||||||
|
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
AUDIO_ENABLE = no
|
||||||
|
RGB_MATRIX_ENABLE = IS31FL3733 # Use RGB matrix
|
||||||
|
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in66666666666666666666666666
|
||||||
@@ -6,7 +6,8 @@
|
|||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1219
|
#define PRODUCT_ID 0x1219
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER DOU
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB
|
#define PRODUCT DZ60RGB
|
||||||
#define DESCRIPTION DZ60 ARM RGB keyboard
|
#define DESCRIPTION DZ60 ARM RGB keyboard
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
@@ -20,7 +21,6 @@
|
|||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
|
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
|
||||||
#define RGB_MATRIX_SKIP_FRAMES 0
|
#define RGB_MATRIX_SKIP_FRAMES 0
|
||||||
@@ -30,7 +30,5 @@
|
|||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
#define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
|
|
||||||
#define DRIVER_COUNT 2
|
#define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 63
|
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
|
||||||
@@ -1,4 +1,587 @@
|
|||||||
#include "dz60rgb.h"
|
#include "dz60rgb.h"
|
||||||
|
#include "config.h"
|
||||||
|
#if defined (dzrgb60_iso)
|
||||||
|
|
||||||
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
/* Refer to IS31 manual for these locations
|
||||||
|
* driver
|
||||||
|
* | R location
|
||||||
|
* | | G location
|
||||||
|
* | | | B location
|
||||||
|
* | | | | */
|
||||||
|
{0, K_14, J_14, L_14},
|
||||||
|
{0, K_13, J_13, L_13},
|
||||||
|
{0, K_12, J_12, L_12},
|
||||||
|
{0, K_11, J_11, L_11},
|
||||||
|
{0, K_10, J_10, L_10},
|
||||||
|
{0, K_9, J_9, L_9},
|
||||||
|
{0, K_8, J_8, L_8},
|
||||||
|
{0, K_7, J_7, L_7},
|
||||||
|
{0, K_6, J_6, L_6},
|
||||||
|
{0, K_5, J_5, L_5},
|
||||||
|
{0, K_4, J_4, L_4},
|
||||||
|
{0, K_3, J_3, L_3},
|
||||||
|
{0, K_2, J_2, L_2},
|
||||||
|
{0, K_1, J_1, L_1},
|
||||||
|
|
||||||
|
{0, H_15, G_15, I_15},
|
||||||
|
{0, H_13, G_13, I_13},
|
||||||
|
{0, H_12, G_12, I_12},
|
||||||
|
{0, H_11, G_11, I_11},
|
||||||
|
{0, H_10, G_10, I_10},
|
||||||
|
{0, H_9, G_9, I_9},
|
||||||
|
{0, H_8, G_8, I_8},
|
||||||
|
{0, H_7, G_7, I_7},
|
||||||
|
{0, H_6, G_6, I_6},
|
||||||
|
{0, H_5, G_5, I_5},
|
||||||
|
{0, H_4, G_4, I_4},
|
||||||
|
{0, H_3, G_3, I_3},
|
||||||
|
{0, H_2, G_2, I_2},
|
||||||
|
{0, H_1, G_1, I_1},
|
||||||
|
|
||||||
|
{0, B_14, A_14, C_14},
|
||||||
|
{0, E_12, D_12, F_12},
|
||||||
|
{0, E_11, D_11, F_11},
|
||||||
|
{0, E_10, D_10, F_10},
|
||||||
|
{0, E_9, D_9, F_9},
|
||||||
|
{0, E_8, D_8, F_8},
|
||||||
|
{0, E_7, D_7, F_7},
|
||||||
|
{0, E_6, D_6, F_6},
|
||||||
|
{0, E_5, D_5, F_5},
|
||||||
|
{0, E_4, D_4, F_4},
|
||||||
|
{0, E_3, D_3, F_3},
|
||||||
|
{0, E_2, D_2, F_2},
|
||||||
|
{0, E_1, D_1, F_1},
|
||||||
|
|
||||||
|
{0, B_13, A_13, C_13},
|
||||||
|
{0, B_11, A_11, C_11},
|
||||||
|
{0, B_10, A_10, C_10},
|
||||||
|
{0, B_9, A_9, C_9},
|
||||||
|
{0, B_8, A_8, C_8},
|
||||||
|
{0, B_7, A_7, C_7},
|
||||||
|
{0, B_6, A_6, C_6},
|
||||||
|
{0, B_5, A_5, C_5},
|
||||||
|
{0, B_4, A_4, C_4},
|
||||||
|
{0, B_3, A_3, C_3},
|
||||||
|
{0, B_2, A_2, C_2},
|
||||||
|
{0, B_1, A_1, C_1},
|
||||||
|
|
||||||
|
{0, B_15, A_15, C_15},
|
||||||
|
{0, E_13, D_13, F_13},
|
||||||
|
{0, B_12, A_12, C_12},
|
||||||
|
{0, E_15, D_15, F_15},
|
||||||
|
{0, B_16, A_16, C_16},
|
||||||
|
{0, E_16, D_16, F_16},
|
||||||
|
{0, H_16, G_16, I_16},
|
||||||
|
{0, K_16, J_16, L_16}
|
||||||
|
};
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
{{0|(13<<4)}, {16*13.5, 0}, 1},
|
||||||
|
{{0|(12<<4)}, {16*12, 0}, 1},
|
||||||
|
{{0|(11<<4)}, {16*11, 0}, 1},
|
||||||
|
{{0|(10<<4)}, {16*10, 0}, 1},
|
||||||
|
{{0|(9<<4)}, {16*9, 0}, 1},
|
||||||
|
{{0|(8<<4)}, {16*8, 0}, 1},
|
||||||
|
{{0|(7<<4)}, {16*7, 0}, 1},
|
||||||
|
{{0|(6<<4)}, {16*6, 0}, 1},
|
||||||
|
{{0|(5<<4)}, {16*5, 0}, 1},
|
||||||
|
{{0|(4<<4)}, {16*4, 0}, 1},
|
||||||
|
{{0|(3<<4)}, {16*3, 0}, 1},
|
||||||
|
{{0|(2<<4)}, {16*2, 0}, 1},
|
||||||
|
{{0|(1<<4)}, {16*1, 0}, 1},
|
||||||
|
{{0|(0<<4)}, {16*0, 0}, 1},
|
||||||
|
|
||||||
|
{{2|(13<<4)}, {16*13.75, 24}, 1},
|
||||||
|
{{1|(12<<4)}, {16*12.5, 16}, 0},
|
||||||
|
{{1|(11<<4)}, {16*11.5, 16}, 0},
|
||||||
|
{{1|(10<<4)}, {16*10.5, 16}, 0},
|
||||||
|
{{1|(9<<4)}, { 16*9.5, 16}, 0},
|
||||||
|
{{1|(8<<4)}, { 16*8.5, 16}, 0},
|
||||||
|
{{1|(7<<4)}, { 16*7.5, 16}, 0},
|
||||||
|
{{1|(6<<4)}, { 16*6.5, 16}, 0},
|
||||||
|
{{1|(5<<4)}, { 16*5.5, 16}, 0},
|
||||||
|
{{1|(4<<4)}, { 16*4.5, 16}, 0},
|
||||||
|
{{1|(3<<4)}, { 16*3.5, 16}, 0},
|
||||||
|
{{1|(2<<4)}, { 16*2.5, 16}, 0},
|
||||||
|
{{1|(1<<4)}, { 16*1.5, 16}, 0},
|
||||||
|
{{1|(0<<4)}, { 16*0.25, 16}, 1},
|
||||||
|
|
||||||
|
{{1|(13<<4)}, {16*12.75, 32}, 1},
|
||||||
|
{{2|(11<<4)}, {16*11.75, 32}, 0},
|
||||||
|
{{2|(10<<4)}, {16*10.75, 32}, 0},
|
||||||
|
{{2|(9<<4)}, {16*9.75, 32}, 0},
|
||||||
|
{{2|(8<<4)}, {16*8.75, 32}, 0},
|
||||||
|
{{2|(7<<4)}, {16*7.75, 32}, 0},
|
||||||
|
{{2|(6<<4)}, { 16*6.75, 32}, 0},
|
||||||
|
{{2|(5<<4)}, { 16*5.75, 32}, 0},
|
||||||
|
{{2|(4<<4)}, { 16*4.75, 32}, 0},
|
||||||
|
{{2|(3<<4)}, { 16*3.75, 32}, 0},
|
||||||
|
{{2|(2<<4)}, { 16*2.75, 32}, 0},
|
||||||
|
{{2|(1<<4)}, { 16*1.75, 32}, 0},
|
||||||
|
{{2|(0<<4)}, { 16*0.375, 32}, 1},
|
||||||
|
|
||||||
|
{{3|(11<<4)}, {16*13.125, 48}, 1},
|
||||||
|
{{3|(10<<4)}, {16*11.25, 48}, 0},
|
||||||
|
{{3|(9<<4)}, {16*10.25, 48}, 0},
|
||||||
|
{{3|(8<<4)}, {16*9.25, 48}, 0},
|
||||||
|
{{3|(7<<4)}, {16*8.25, 48}, 0},
|
||||||
|
{{3|(6<<4)}, {16*7.25, 48}, 0},
|
||||||
|
{{3|(5<<4)}, {16*6.25, 48}, 0},
|
||||||
|
{{3|(4<<4)}, {16*5.25, 48}, 0},
|
||||||
|
{{3|(3<<4)}, {16*4.25, 48}, 0},
|
||||||
|
{{3|(2<<4)}, {16*3.25, 48}, 0},
|
||||||
|
{{3|(1<<4)}, {16*1.25, 48}, 0},
|
||||||
|
{{3|(0<<4)}, {16*0.625, 48}, 1},
|
||||||
|
|
||||||
|
{{4|(13<<4)}, {16*13.875, 64}, 1},
|
||||||
|
{{4|(11<<4)}, {16*12.625, 64}, 1},
|
||||||
|
{{4|(10<<4)}, {16*11.375, 64}, 1},
|
||||||
|
{{4|(9<<4)}, {16*10.125, 64}, 1},
|
||||||
|
{{4|(5<<4)}, { 16*6.375, 64}, 0},
|
||||||
|
{{4|(2<<4)}, { 16*2.625, 64}, 1},
|
||||||
|
{{4|(1<<4)}, { 16*1.375, 64}, 1},
|
||||||
|
{{4|(0<<4)}, { 16*0.125, 64}, 1}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined (dzrgb60_hhkb)
|
||||||
|
|
||||||
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
/* Refer to IS31 manual for these locations
|
||||||
|
* driver
|
||||||
|
* | R location
|
||||||
|
* | | G location
|
||||||
|
* | | | B location
|
||||||
|
* | | | | */
|
||||||
|
{0, H_15, G_15, I_15},
|
||||||
|
{0, K_14, J_14, L_14},
|
||||||
|
{0, K_13, J_13, L_13},
|
||||||
|
{0, K_12, J_12, L_12},
|
||||||
|
{0, K_11, J_11, L_11},
|
||||||
|
{0, K_10, J_10, L_10},
|
||||||
|
{0, K_9, J_9, L_9},
|
||||||
|
{0, K_8, J_8, L_8},
|
||||||
|
{0, K_7, J_7, L_7},
|
||||||
|
{0, K_6, J_6, L_6},
|
||||||
|
{0, K_5, J_5, L_5},
|
||||||
|
{0, K_4, J_4, L_4},
|
||||||
|
{0, K_3, J_3, L_3},
|
||||||
|
{0, K_2, J_2, L_2},
|
||||||
|
{0, K_1, J_1, L_1},
|
||||||
|
|
||||||
|
{0, H_14, G_14, I_14},
|
||||||
|
{0, H_13, G_13, I_13},
|
||||||
|
{0, H_12, G_12, I_12},
|
||||||
|
{0, H_11, G_11, I_11},
|
||||||
|
{0, H_10, G_10, I_10},
|
||||||
|
{0, H_9, G_9, I_9},
|
||||||
|
{0, H_8, G_8, I_8},
|
||||||
|
{0, H_7, G_7, I_7},
|
||||||
|
{0, H_6, G_6, I_6},
|
||||||
|
{0, H_5, G_5, I_5},
|
||||||
|
{0, H_4, G_4, I_4},
|
||||||
|
{0, H_3, G_3, I_3},
|
||||||
|
{0, H_2, G_2, I_2},
|
||||||
|
{0, H_1, G_1, I_1},
|
||||||
|
|
||||||
|
{0, E_14, D_14, F_14},
|
||||||
|
{0, E_12, D_12, F_12},
|
||||||
|
{0, E_11, D_11, F_11},
|
||||||
|
{0, E_10, D_10, F_10},
|
||||||
|
{0, E_9, D_9, F_9},
|
||||||
|
{0, E_8, D_8, F_8},
|
||||||
|
{0, E_7, D_7, F_7},
|
||||||
|
{0, E_6, D_6, F_6},
|
||||||
|
{0, E_5, D_5, F_5},
|
||||||
|
{0, E_4, D_4, F_4},
|
||||||
|
{0, E_3, D_3, F_3},
|
||||||
|
{0, E_2, D_2, F_2},
|
||||||
|
{0, E_1, D_1, F_1},
|
||||||
|
|
||||||
|
{0, B_14, A_14, C_14},
|
||||||
|
{0, B_13, A_13, C_13},
|
||||||
|
{0, B_11, A_11, C_11},
|
||||||
|
{0, B_10, A_10, C_10},
|
||||||
|
{0, B_9, A_9, C_9},
|
||||||
|
{0, B_8, A_8, C_8},
|
||||||
|
{0, B_7, A_7, C_7},
|
||||||
|
{0, B_6, A_6, C_6},
|
||||||
|
{0, B_5, A_5, C_5},
|
||||||
|
{0, B_4, A_4, C_4},
|
||||||
|
{0, B_3, A_3, C_3},
|
||||||
|
{0, B_2, A_2, C_2},
|
||||||
|
{0, B_1, A_1, C_1},
|
||||||
|
|
||||||
|
{0, B_15, A_15, C_15},
|
||||||
|
{0, E_13, D_13, F_13},
|
||||||
|
{0, B_12, A_12, C_12},
|
||||||
|
{0, B_16, A_16, C_16},
|
||||||
|
{0, E_16, D_16, F_16},
|
||||||
|
{0, H_16, G_16, I_16},
|
||||||
|
{0, K_16, J_16, L_16}
|
||||||
|
};
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
{{2|(12<<4)}, {16*14, 0}, 1},
|
||||||
|
{{0|(13<<4)}, {16*13, 0}, 1},
|
||||||
|
{{0|(12<<4)}, {16*12, 0}, 1},
|
||||||
|
{{0|(11<<4)}, {16*11, 0}, 1},
|
||||||
|
{{0|(10<<4)}, {16*10, 0}, 1},
|
||||||
|
{{0|(9<<4)}, {16*9, 0}, 1},
|
||||||
|
{{0|(8<<4)}, {16*8, 0}, 1},
|
||||||
|
{{0|(7<<4)}, {16*7, 0}, 1},
|
||||||
|
{{0|(6<<4)}, {16*6, 0}, 1},
|
||||||
|
{{0|(5<<4)}, {16*5, 0}, 1},
|
||||||
|
{{0|(4<<4)}, {16*4, 0}, 1},
|
||||||
|
{{0|(3<<4)}, {16*3, 0}, 1},
|
||||||
|
{{0|(2<<4)}, {16*2, 0}, 1},
|
||||||
|
{{0|(1<<4)}, {16*1, 0}, 1},
|
||||||
|
{{0|(0<<4)}, {16*0, 0}, 1},
|
||||||
|
|
||||||
|
{{1|(13<<4)}, {16*13.75, 16}, 1},
|
||||||
|
{{1|(12<<4)}, {16*12.5, 16}, 0},
|
||||||
|
{{1|(11<<4)}, {16*11.5, 16}, 0},
|
||||||
|
{{1|(10<<4)}, {16*10.5, 16}, 0},
|
||||||
|
{{1|(9<<4)}, { 16*9.5, 16}, 0},
|
||||||
|
{{1|(8<<4)}, { 16*8.5, 16}, 0},
|
||||||
|
{{1|(7<<4)}, { 16*7.5, 16}, 0},
|
||||||
|
{{1|(6<<4)}, { 16*6.5, 16}, 0},
|
||||||
|
{{1|(5<<4)}, { 16*5.5, 16}, 0},
|
||||||
|
{{1|(4<<4)}, { 16*4.5, 16}, 0},
|
||||||
|
{{1|(3<<4)}, { 16*3.5, 16}, 0},
|
||||||
|
{{1|(2<<4)}, { 16*2.5, 16}, 0},
|
||||||
|
{{1|(1<<4)}, { 16*1.5, 16}, 0},
|
||||||
|
{{1|(0<<4)}, { 16*0.25, 16}, 1},
|
||||||
|
|
||||||
|
{{2|(13<<4)}, {16*12.75, 32}, 1},
|
||||||
|
{{2|(11<<4)}, {16*11.75, 32}, 0},
|
||||||
|
{{2|(10<<4)}, {16*10.75, 32}, 0},
|
||||||
|
{{2|(9<<4)}, {16*9.75, 32}, 0},
|
||||||
|
{{2|(8<<4)}, {16*8.75, 32}, 0},
|
||||||
|
{{2|(7<<4)}, {16*7.75, 32}, 0},
|
||||||
|
{{2|(6<<4)}, { 16*6.75, 32}, 0},
|
||||||
|
{{2|(5<<4)}, { 16*5.75, 32}, 0},
|
||||||
|
{{2|(4<<4)}, { 16*4.75, 32}, 0},
|
||||||
|
{{2|(3<<4)}, { 16*3.75, 32}, 0},
|
||||||
|
{{2|(2<<4)}, { 16*2.75, 32}, 0},
|
||||||
|
{{2|(1<<4)}, { 16*1.75, 32}, 0},
|
||||||
|
{{2|(0<<4)}, { 16*0.375, 32}, 1},
|
||||||
|
|
||||||
|
{{3|(13<<4)}, {16*14, 48}, 1},
|
||||||
|
{{3|(11<<4)}, {16*12.625, 48}, 0},
|
||||||
|
{{3|(10<<4)}, {16*11.25, 48}, 0},
|
||||||
|
{{3|(9<<4)}, {16*10.25, 48}, 0},
|
||||||
|
{{3|(8<<4)}, {16*9.25, 48}, 0},
|
||||||
|
{{3|(7<<4)}, {16*8.25, 48}, 0},
|
||||||
|
{{3|(6<<4)}, {16*7.25, 48}, 0},
|
||||||
|
{{3|(5<<4)}, {16*6.25, 48}, 0},
|
||||||
|
{{3|(4<<4)}, {16*5.25, 48}, 0},
|
||||||
|
{{3|(3<<4)}, {16*4.25, 48}, 0},
|
||||||
|
{{3|(2<<4)}, {16*3.25, 48}, 0},
|
||||||
|
{{3|(1<<4)}, {16*1.25, 48}, 0},
|
||||||
|
{{3|(0<<4)}, {16*0.625, 48}, 1},
|
||||||
|
|
||||||
|
{{4|(13<<4)}, {16*13.625, 64}, 1},
|
||||||
|
{{4|(11<<4)}, {16*12.375, 64}, 1},
|
||||||
|
{{4|(10<<4)}, {16*11.125, 64}, 1},
|
||||||
|
{{4|(5<<4)}, { 16*7, 64}, 0},
|
||||||
|
{{4|(2<<4)}, { 16*2.875, 64}, 1},
|
||||||
|
{{4|(1<<4)}, { 16*1.625, 64}, 1},
|
||||||
|
{{4|(0<<4)}, { 16*0.375, 64}, 1}
|
||||||
|
|
||||||
|
};
|
||||||
|
#elif defined (dzrgb60_hhkb_iso)
|
||||||
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
/* Refer to IS31 manual for these locations
|
||||||
|
* driver
|
||||||
|
* | R location
|
||||||
|
* | | G location
|
||||||
|
* | | | B location
|
||||||
|
* | | | | */
|
||||||
|
{0, H_15, G_15, I_15},
|
||||||
|
{0, K_14, J_14, L_14},
|
||||||
|
{0, K_13, J_13, L_13},
|
||||||
|
{0, K_12, J_12, L_12},
|
||||||
|
{0, K_11, J_11, L_11},
|
||||||
|
{0, K_10, J_10, L_10},
|
||||||
|
{0, K_9, J_9, L_9},
|
||||||
|
{0, K_8, J_8, L_8},
|
||||||
|
{0, K_7, J_7, L_7},
|
||||||
|
{0, K_6, J_6, L_6},
|
||||||
|
{0, K_5, J_5, L_5},
|
||||||
|
{0, K_4, J_4, L_4},
|
||||||
|
{0, K_3, J_3, L_3},
|
||||||
|
{0, K_2, J_2, L_2},
|
||||||
|
{0, K_1, J_1, L_1},
|
||||||
|
|
||||||
|
{0, K_15, J_15, L_15},
|
||||||
|
{0, H_13, G_13, I_13},
|
||||||
|
{0, H_12, G_12, I_12},
|
||||||
|
{0, H_11, G_11, I_11},
|
||||||
|
{0, H_10, G_10, I_10},
|
||||||
|
{0, H_9, G_9, I_9},
|
||||||
|
{0, H_8, G_8, I_8},
|
||||||
|
{0, H_7, G_7, I_7},
|
||||||
|
{0, H_6, G_6, I_6},
|
||||||
|
{0, H_5, G_5, I_5},
|
||||||
|
{0, H_4, G_4, I_4},
|
||||||
|
{0, H_3, G_3, I_3},
|
||||||
|
{0, H_2, G_2, I_2},
|
||||||
|
{0, H_1, G_1, I_1},
|
||||||
|
|
||||||
|
{0, E_15, D_15, F_15},
|
||||||
|
{0, E_12, D_12, F_12},
|
||||||
|
{0, E_11, D_11, F_11},
|
||||||
|
{0, E_10, D_10, F_10},
|
||||||
|
{0, E_9, D_9, F_9},
|
||||||
|
{0, E_8, D_8, F_8},
|
||||||
|
{0, E_7, D_7, F_7},
|
||||||
|
{0, E_6, D_6, F_6},
|
||||||
|
{0, E_5, D_5, F_5},
|
||||||
|
{0, E_4, D_4, F_4},
|
||||||
|
{0, E_3, D_3, F_3},
|
||||||
|
{0, E_2, D_2, F_2},
|
||||||
|
{0, E_1, D_1, F_1},
|
||||||
|
|
||||||
|
{0, B_14, A_14, C_14},
|
||||||
|
{0, B_13, A_13, C_13},
|
||||||
|
{0, B_11, A_11, C_11},
|
||||||
|
{0, B_10, A_10, C_10},
|
||||||
|
{0, B_9, A_9, C_9},
|
||||||
|
{0, B_8, A_8, C_8},
|
||||||
|
{0, B_7, A_7, C_7},
|
||||||
|
{0, B_6, A_6, C_6},
|
||||||
|
{0, B_5, A_5, C_5},
|
||||||
|
{0, B_4, A_4, C_4},
|
||||||
|
{0, B_3, A_3, C_3},
|
||||||
|
{0, B_2, A_2, C_2},
|
||||||
|
{0, B_1, A_1, C_1},
|
||||||
|
|
||||||
|
{0, B_15, A_15, C_15},
|
||||||
|
{0, E_13, D_13, F_13},
|
||||||
|
{0, B_12, A_12, C_12},
|
||||||
|
{0, B_16, A_16, C_16},
|
||||||
|
{0, E_16, D_16, F_16},
|
||||||
|
{0, H_16, G_16, I_16},
|
||||||
|
{0, K_16, J_16, L_16}
|
||||||
|
};
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
{{2|(12<<4)}, {16*14, 0}, 1},
|
||||||
|
{{0|(13<<4)}, {16*13, 0}, 1},
|
||||||
|
{{0|(12<<4)}, {16*12, 0}, 1},
|
||||||
|
{{0|(11<<4)}, {16*11, 0}, 1},
|
||||||
|
{{0|(10<<4)}, {16*10, 0}, 1},
|
||||||
|
{{0|(9<<4)}, {16*9, 0}, 1},
|
||||||
|
{{0|(8<<4)}, {16*8, 0}, 1},
|
||||||
|
{{0|(7<<4)}, {16*7, 0}, 1},
|
||||||
|
{{0|(6<<4)}, {16*6, 0}, 1},
|
||||||
|
{{0|(5<<4)}, {16*5, 0}, 1},
|
||||||
|
{{0|(4<<4)}, {16*4, 0}, 1},
|
||||||
|
{{0|(3<<4)}, {16*3, 0}, 1},
|
||||||
|
{{0|(2<<4)}, {16*2, 0}, 1},
|
||||||
|
{{0|(1<<4)}, {16*1, 0}, 1},
|
||||||
|
{{0|(0<<4)}, {16*0, 0}, 1},
|
||||||
|
|
||||||
|
{{2|(13<<4)}, {16*13.75, 24}, 1},
|
||||||
|
{{1|(12<<4)}, {16*12.5, 16}, 0},
|
||||||
|
{{1|(11<<4)}, {16*11.5, 16}, 0},
|
||||||
|
{{1|(10<<4)}, {16*10.5, 16}, 0},
|
||||||
|
{{1|(9<<4)}, { 16*9.5, 16}, 0},
|
||||||
|
{{1|(8<<4)}, { 16*8.5, 16}, 0},
|
||||||
|
{{1|(7<<4)}, { 16*7.5, 16}, 0},
|
||||||
|
{{1|(6<<4)}, { 16*6.5, 16}, 0},
|
||||||
|
{{1|(5<<4)}, { 16*5.5, 16}, 0},
|
||||||
|
{{1|(4<<4)}, { 16*4.5, 16}, 0},
|
||||||
|
{{1|(3<<4)}, { 16*3.5, 16}, 0},
|
||||||
|
{{1|(2<<4)}, { 16*2.5, 16}, 0},
|
||||||
|
{{1|(1<<4)}, { 16*1.5, 16}, 0},
|
||||||
|
{{1|(0<<4)}, { 16*0.25, 16}, 1},
|
||||||
|
|
||||||
|
{{1|(13<<4)}, {16*12.75, 32}, 1},
|
||||||
|
{{2|(11<<4)}, {16*11.75, 32}, 0},
|
||||||
|
{{2|(10<<4)}, {16*10.75, 32}, 0},
|
||||||
|
{{2|(9<<4)}, {16*9.75, 32}, 0},
|
||||||
|
{{2|(8<<4)}, {16*8.75, 32}, 0},
|
||||||
|
{{2|(7<<4)}, {16*7.75, 32}, 0},
|
||||||
|
{{2|(6<<4)}, { 16*6.75, 32}, 0},
|
||||||
|
{{2|(5<<4)}, { 16*5.75, 32}, 0},
|
||||||
|
{{2|(4<<4)}, { 16*4.75, 32}, 0},
|
||||||
|
{{2|(3<<4)}, { 16*3.75, 32}, 0},
|
||||||
|
{{2|(2<<4)}, { 16*2.75, 32}, 0},
|
||||||
|
{{2|(1<<4)}, { 16*1.75, 32}, 0},
|
||||||
|
{{2|(0<<4)}, { 16*0.375, 32}, 1},
|
||||||
|
|
||||||
|
{{3|(13<<4)}, {16*14, 48}, 1},
|
||||||
|
{{3|(11<<4)}, {16*12.625, 48}, 0},
|
||||||
|
{{3|(10<<4)}, {16*11.25, 48}, 0},
|
||||||
|
{{3|(9<<4)}, {16*10.25, 48}, 0},
|
||||||
|
{{3|(8<<4)}, {16*9.25, 48}, 0},
|
||||||
|
{{3|(7<<4)}, {16*8.25, 48}, 0},
|
||||||
|
{{3|(6<<4)}, {16*7.25, 48}, 0},
|
||||||
|
{{3|(5<<4)}, {16*6.25, 48}, 0},
|
||||||
|
{{3|(4<<4)}, {16*5.25, 48}, 0},
|
||||||
|
{{3|(3<<4)}, {16*4.25, 48}, 0},
|
||||||
|
{{3|(2<<4)}, {16*3.25, 48}, 0},
|
||||||
|
{{3|(1<<4)}, {16*1.25, 48}, 0},
|
||||||
|
{{3|(0<<4)}, {16*0.625, 48}, 1},
|
||||||
|
|
||||||
|
{{4|(13<<4)}, {16*13.625, 64}, 1},
|
||||||
|
{{4|(11<<4)}, {16*12.375, 64}, 1},
|
||||||
|
{{4|(10<<4)}, {16*11.125, 64}, 1},
|
||||||
|
{{4|(5<<4)}, { 16*7, 64}, 0},
|
||||||
|
{{4|(2<<4)}, { 16*2.875, 64}, 1},
|
||||||
|
{{4|(1<<4)}, { 16*1.625, 64}, 1},
|
||||||
|
{{4|(0<<4)}, { 16*0.375, 64}, 1}
|
||||||
|
|
||||||
|
};
|
||||||
|
#elif defined (dzrgb60_ansi)
|
||||||
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
/* Refer to IS31 manual for these locations
|
||||||
|
* driver
|
||||||
|
* | R location
|
||||||
|
* | | G location
|
||||||
|
* | | | B location
|
||||||
|
* | | | | */
|
||||||
|
{0, K_14, J_14, L_14},
|
||||||
|
{0, K_13, J_13, L_13},
|
||||||
|
{0, K_12, J_12, L_12},
|
||||||
|
{0, K_11, J_11, L_11},
|
||||||
|
{0, K_10, J_10, L_10},
|
||||||
|
{0, K_9, J_9, L_9},
|
||||||
|
{0, K_8, J_8, L_8},
|
||||||
|
{0, K_7, J_7, L_7},
|
||||||
|
{0, K_6, J_6, L_6},
|
||||||
|
{0, K_5, J_5, L_5},
|
||||||
|
{0, K_4, J_4, L_4},
|
||||||
|
{0, K_3, J_3, L_3},
|
||||||
|
{0, K_2, J_2, L_2},
|
||||||
|
{0, K_1, J_1, L_1},
|
||||||
|
|
||||||
|
{0, H_14, G_14, I_14},
|
||||||
|
{0, H_13, G_13, I_13},
|
||||||
|
{0, H_12, G_12, I_12},
|
||||||
|
{0, H_11, G_11, I_11},
|
||||||
|
{0, H_10, G_10, I_10},
|
||||||
|
{0, H_9, G_9, I_9},
|
||||||
|
{0, H_8, G_8, I_8},
|
||||||
|
{0, H_7, G_7, I_7},
|
||||||
|
{0, H_6, G_6, I_6},
|
||||||
|
{0, H_5, G_5, I_5},
|
||||||
|
{0, H_4, G_4, I_4},
|
||||||
|
{0, H_3, G_3, I_3},
|
||||||
|
{0, H_2, G_2, I_2},
|
||||||
|
{0, H_1, G_1, I_1},
|
||||||
|
|
||||||
|
{0, E_14, D_14, F_14},
|
||||||
|
{0, E_12, D_12, F_12},
|
||||||
|
{0, E_11, D_11, F_11},
|
||||||
|
{0, E_10, D_10, F_10},
|
||||||
|
{0, E_9, D_9, F_9},
|
||||||
|
{0, E_8, D_8, F_8},
|
||||||
|
{0, E_7, D_7, F_7},
|
||||||
|
{0, E_6, D_6, F_6},
|
||||||
|
{0, E_5, D_5, F_5},
|
||||||
|
{0, E_4, D_4, F_4},
|
||||||
|
{0, E_3, D_3, F_3},
|
||||||
|
{0, E_2, D_2, F_2},
|
||||||
|
{0, E_1, D_1, F_1},
|
||||||
|
|
||||||
|
{0, B_13, A_13, C_13},
|
||||||
|
{0, B_11, A_11, C_11},
|
||||||
|
{0, B_10, A_10, C_10},
|
||||||
|
{0, B_9, A_9, C_9},
|
||||||
|
{0, B_8, A_8, C_8},
|
||||||
|
{0, B_7, A_7, C_7},
|
||||||
|
{0, B_6, A_6, C_6},
|
||||||
|
{0, B_5, A_5, C_5},
|
||||||
|
{0, B_4, A_4, C_4},
|
||||||
|
{0, B_3, A_3, C_3},
|
||||||
|
{0, B_2, A_2, C_2},
|
||||||
|
{0, B_1, A_1, C_1},
|
||||||
|
|
||||||
|
{0, B_15, A_15, C_15},
|
||||||
|
{0, E_13, D_13, F_13},
|
||||||
|
{0, B_12, A_12, C_12},
|
||||||
|
{0, E_15, D_15, F_15},
|
||||||
|
{0, B_16, A_16, C_16},
|
||||||
|
{0, E_16, D_16, F_16},
|
||||||
|
{0, H_16, G_16, I_16},
|
||||||
|
{0, K_16, J_16, L_16}
|
||||||
|
};
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
{{0|(13<<4)}, {16*13.5, 0}, 1},
|
||||||
|
{{0|(12<<4)}, {16*12, 0}, 1},
|
||||||
|
{{0|(11<<4)}, {16*11, 0}, 1},
|
||||||
|
{{0|(10<<4)}, {16*10, 0}, 1},
|
||||||
|
{{0|(9<<4)}, {16*9, 0}, 1},
|
||||||
|
{{0|(8<<4)}, {16*8, 0}, 1},
|
||||||
|
{{0|(7<<4)}, {16*7, 0}, 1},
|
||||||
|
{{0|(6<<4)}, {16*6, 0}, 1},
|
||||||
|
{{0|(5<<4)}, {16*5, 0}, 1},
|
||||||
|
{{0|(4<<4)}, {16*4, 0}, 1},
|
||||||
|
{{0|(3<<4)}, {16*3, 0}, 1},
|
||||||
|
{{0|(2<<4)}, {16*2, 0}, 1},
|
||||||
|
{{0|(1<<4)}, {16*1, 0}, 1},
|
||||||
|
{{0|(0<<4)}, {16*0, 0}, 1},
|
||||||
|
|
||||||
|
{{1|(13<<4)}, {16*13.75, 16}, 1},
|
||||||
|
{{1|(12<<4)}, {16*12.5, 16}, 0},
|
||||||
|
{{1|(11<<4)}, {16*11.5, 16}, 0},
|
||||||
|
{{1|(10<<4)}, {16*10.5, 16}, 0},
|
||||||
|
{{1|(9<<4)}, { 16*9.5, 16}, 0},
|
||||||
|
{{1|(8<<4)}, { 16*8.5, 16}, 0},
|
||||||
|
{{1|(7<<4)}, { 16*7.5, 16}, 0},
|
||||||
|
{{1|(6<<4)}, { 16*6.5, 16}, 0},
|
||||||
|
{{1|(5<<4)}, { 16*5.5, 16}, 0},
|
||||||
|
{{1|(4<<4)}, { 16*4.5, 16}, 0},
|
||||||
|
{{1|(3<<4)}, { 16*3.5, 16}, 0},
|
||||||
|
{{1|(2<<4)}, { 16*2.5, 16}, 0},
|
||||||
|
{{1|(1<<4)}, { 16*1.5, 16}, 0},
|
||||||
|
{{1|(0<<4)}, { 16*0.25, 16}, 1},
|
||||||
|
|
||||||
|
{{2|(13<<4)}, {16*13.375, 24}, 1},
|
||||||
|
{{2|(11<<4)}, {16*11.75, 32}, 0},
|
||||||
|
{{2|(10<<4)}, {16*10.75, 32}, 0},
|
||||||
|
{{2|(9<<4)}, {16*9.75, 32}, 0},
|
||||||
|
{{2|(8<<4)}, {16*8.75, 32}, 0},
|
||||||
|
{{2|(7<<4)}, {16*7.75, 32}, 0},
|
||||||
|
{{2|(6<<4)}, { 16*6.75, 32}, 0},
|
||||||
|
{{2|(5<<4)}, { 16*5.75, 32}, 0},
|
||||||
|
{{2|(4<<4)}, { 16*4.75, 32}, 0},
|
||||||
|
{{2|(3<<4)}, { 16*3.75, 32}, 0},
|
||||||
|
{{2|(2<<4)}, { 16*2.75, 32}, 0},
|
||||||
|
{{2|(1<<4)}, { 16*1.75, 32}, 0},
|
||||||
|
{{2|(0<<4)}, { 16*0.375, 32}, 1},
|
||||||
|
|
||||||
|
{{3|(11<<4)}, {16*13.125, 48}, 1},
|
||||||
|
{{3|(10<<4)}, {16*11.25, 48}, 0},
|
||||||
|
{{3|(9<<4)}, {16*10.25, 48}, 0},
|
||||||
|
{{3|(8<<4)}, {16*9.25, 48}, 0},
|
||||||
|
{{3|(7<<4)}, {16*8.25, 48}, 0},
|
||||||
|
{{3|(6<<4)}, {16*7.25, 48}, 0},
|
||||||
|
{{3|(5<<4)}, {16*6.25, 48}, 0},
|
||||||
|
{{3|(4<<4)}, {16*5.25, 48}, 0},
|
||||||
|
{{3|(3<<4)}, {16*4.25, 48}, 0},
|
||||||
|
{{3|(2<<4)}, {16*3.25, 48}, 0},
|
||||||
|
{{3|(1<<4)}, {16*1.25, 48}, 0},
|
||||||
|
{{3|(0<<4)}, {16*0.625, 48}, 1},
|
||||||
|
|
||||||
|
{{4|(13<<4)}, {16*13.875, 64}, 1},
|
||||||
|
{{4|(11<<4)}, {16*12.625, 64}, 1},
|
||||||
|
{{4|(10<<4)}, {16*11.375, 64}, 1},
|
||||||
|
{{4|(9<<4)}, {16*10.125, 64}, 1},
|
||||||
|
{{4|(5<<4)}, { 16*6.375, 64}, 0},
|
||||||
|
{{4|(2<<4)}, { 16*2.625, 64}, 1},
|
||||||
|
{{4|(1<<4)}, { 16*1.375, 64}, 1},
|
||||||
|
{{4|(0<<4)}, { 16*0.125, 64}, 1}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
|
||||||
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
/* Refer to IS31 manual for these locations
|
/* Refer to IS31 manual for these locations
|
||||||
* driver
|
* driver
|
||||||
@@ -72,7 +655,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
|||||||
{0, B_16, A_16, C_16},
|
{0, B_16, A_16, C_16},
|
||||||
{0, E_16, D_16, F_16},
|
{0, E_16, D_16, F_16},
|
||||||
{0, H_16, G_16, I_16},
|
{0, H_16, G_16, I_16},
|
||||||
{0, K_16, J_16, L_16},
|
{0, K_16, J_16, L_16}
|
||||||
};
|
};
|
||||||
|
|
||||||
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
@@ -142,9 +725,10 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
|||||||
{{4|(5<<4)}, { 17.23*5, 64}, 0},
|
{{4|(5<<4)}, { 17.23*5, 64}, 0},
|
||||||
{{4|(2<<4)}, { 17.23*2, 64}, 1},
|
{{4|(2<<4)}, { 17.23*2, 64}, 1},
|
||||||
{{4|(1<<4)}, { 17.23*1, 64}, 1},
|
{{4|(1<<4)}, { 17.23*1, 64}, 1},
|
||||||
{{4|(0<<4)}, { 17.23*0, 64}, 1},
|
{{4|(0<<4)}, { 17.23*0, 64}, 1}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define XXX KC_NO
|
#define XXX KC_NO
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
@@ -14,3 +15,58 @@
|
|||||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
|
||||||
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, K49, K4A, K4B, XXX, K4D } \
|
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, K49, K4A, K4B, XXX, K4D } \
|
||||||
}
|
}
|
||||||
|
#define LAYOUT_ISO( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
|
||||||
|
K40, K41, K42, K45, K49, K4A, K4B, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, XXX }, \
|
||||||
|
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, XXX, K4D } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_HHKB( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D,\
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,\
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\
|
||||||
|
K40, K41, K42, K45, K4A, K4B, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D}, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
|
||||||
|
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, K4B, XXX, K4D } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_HHKB_ISO( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
|
K40, K41, K42, K45, K4A, K4B, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D,}, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
|
||||||
|
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, K4B, XXX, K4D } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_ANSI( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
|
||||||
|
K40, K41, K42, K45, K49, K4A, K4B, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, XXX }, \
|
||||||
|
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, XXX, K4D } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#define dzrgb60_ansi
|
||||||
|
#define DRIVER_1_LED_TOTAL 61
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
extern bool g_suspend_state;
|
||||||
|
#define _LAYER0 0
|
||||||
|
#define _LAYER1 1
|
||||||
|
#define _LAYER2 2
|
||||||
|
#define _LAYER3 3
|
||||||
|
#define _LAYER4 4
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_LAYER0] = LAYOUT_ANSI( /* Base */
|
||||||
|
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_BSPC,\
|
||||||
|
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_BSLASH,\
|
||||||
|
CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(2), KC_RCTL),
|
||||||
|
[_LAYER1] = LAYOUT_ANSI( /* FN */
|
||||||
|
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_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,\
|
||||||
|
KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_LAYER2] = LAYOUT_ANSI( /* FN2 */
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
|
||||||
|
KC_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_LAYER3] = LAYOUT_ANSI( /* FN3 */
|
||||||
|
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_BSPC,\
|
||||||
|
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_BSLASH,\
|
||||||
|
CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_TRNS,MO(4), KC_RALT, KC_RCTL),
|
||||||
|
[_LAYER4] = LAYOUT_ANSI( /* FN4 */
|
||||||
|
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_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, KC_TRNS,\
|
||||||
|
KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
|
|
||||||
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
||||||
|
rgb_led led;
|
||||||
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
led = g_rgb_leds[i];
|
||||||
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
|
if (led.modifier) {
|
||||||
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
uint8_t this_led = host_keyboard_leds();
|
||||||
|
if (!g_suspend_state) {
|
||||||
|
switch (biton32(layer_state)) {
|
||||||
|
case _LAYER1:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
||||||
|
case _LAYER2:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
||||||
|
case _LAYER3:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0x00, 0xFF, false); break;
|
||||||
|
case _LAYER4:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||||
|
rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
//user initialization
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
//user matrix
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
#define DRIVER_1_LED_TOTAL 63
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
@@ -10,7 +10,7 @@ extern bool g_suspend_state;
|
|||||||
#define _LAYER7 7
|
#define _LAYER7 7
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_LAYER0] = LAYOUT( /* Base */
|
[_LAYER0] = LAYOUT( /* Base */
|
||||||
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_BSPC,\
|
RESET, RGB_MOD, 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_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_BSLASH,\
|
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_BSLASH,\
|
||||||
CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL),\
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL),\
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#define dzrgb60_hhkb
|
||||||
|
#define DRIVER_1_LED_TOTAL 62
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
extern bool g_suspend_state;
|
||||||
|
#define _LAYER0 0
|
||||||
|
#define _LAYER1 1
|
||||||
|
#define _LAYER2 2
|
||||||
|
#define _LAYER3 3
|
||||||
|
#define _LAYER4 4
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_LAYER0] = LAYOUT_HHKB( /* Base */
|
||||||
|
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_BSLS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||||
|
CTL_T(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_DEL, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_RCTL),
|
||||||
|
[_LAYER1] = LAYOUT_HHKB( /* FN */
|
||||||
|
KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, TO(3), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_LAYER2] = LAYOUT_HHKB( /* FN2 */
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
|
||||||
|
KC_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_LAYER3] = LAYOUT_HHKB( /* FN3 */
|
||||||
|
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_BSPC,\
|
||||||
|
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_BSLASH,\
|
||||||
|
CTL_T(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_DEL, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(4),\
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(4), KC_RGUI, KC_RCTL),
|
||||||
|
[_LAYER4] = LAYOUT_HHKB( /* FN4 */
|
||||||
|
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_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
||||||
|
rgb_led led;
|
||||||
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
led = g_rgb_leds[i];
|
||||||
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
|
if (led.modifier) {
|
||||||
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
uint8_t this_led = host_keyboard_leds();
|
||||||
|
if (!g_suspend_state) {
|
||||||
|
switch (biton32(layer_state)) {
|
||||||
|
case _LAYER1:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
||||||
|
case _LAYER2:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
||||||
|
case _LAYER3:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0x00, 0xFF, false); break;
|
||||||
|
case _LAYER4:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||||
|
rgb_matrix_set_color(41, 0xFF, 0xFF, 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
//user initialization
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
//user matrix
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#define dzrgb60_hhkb_iso
|
||||||
|
#define DRIVER_1_LED_TOTAL 62
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
extern bool g_suspend_state;
|
||||||
|
#define _LAYER0 0
|
||||||
|
#define _LAYER1 1
|
||||||
|
#define _LAYER2 2
|
||||||
|
#define _LAYER3 3
|
||||||
|
#define _LAYER4 4
|
||||||
|
#define _LAYER5 5
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_LAYER0] = LAYOUT_HHKB_ISO( /* Base */
|
||||||
|
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_BSLS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||||
|
CTL_T(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_DEL, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_RCTL),
|
||||||
|
[_LAYER1] = LAYOUT_HHKB_ISO( /* FN */
|
||||||
|
KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, TO(3), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_LAYER2] = LAYOUT_HHKB_ISO( /* LIGHT */
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
|
||||||
|
KC_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_LAYER3] = LAYOUT_HHKB_ISO( /* NUMPAD */
|
||||||
|
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_BSPC,\
|
||||||
|
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_BSLASH,\
|
||||||
|
CTL_T(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_DEL, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(4),\
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(4), KC_RGUI, KC_RCTL),
|
||||||
|
[_LAYER4] = LAYOUT_HHKB_ISO( /* MAC */
|
||||||
|
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_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,\
|
||||||
|
KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, KC_TRNS,\
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
|
|
||||||
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
||||||
|
rgb_led led;
|
||||||
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
|
led = g_rgb_leds[i];
|
||||||
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
|
if (led.modifier) {
|
||||||
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
uint8_t this_led = host_keyboard_leds();
|
||||||
|
if (!g_suspend_state) {
|
||||||
|
switch (biton32(layer_state)) {
|
||||||
|
case _LAYER1:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
||||||
|
case _LAYER2:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
||||||
|
case _LAYER3:
|
||||||
|
rgb_matrix_layer_helper(0x00, 0x00, 0xFF, false); break;
|
||||||
|
case _LAYER4:
|
||||||
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||||
|
rgb_matrix_set_color(41, 0xFF, 0xFF, 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
//user initialization
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
//user matrix
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#define dzrgb60_iso
|
||||||
|
#define DRIVER_1_LED_TOTAL 61
|
||||||
|
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
Loaded 100 of 278 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user