Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
445cd95d17 | ||
|
|
7d5ba88e6f | ||
|
|
704934c427 | ||
|
|
47ea522e79 | ||
|
|
f663ba5ed0 | ||
|
|
de0153f339 | ||
|
|
3633330e1a | ||
|
|
855dd2d218 | ||
|
|
aa1c1c3865 | ||
|
|
de68d294ec | ||
|
|
f0a1ab5488 | ||
|
|
1a2a838bc2 | ||
|
|
67474f7e3f | ||
|
|
39c473a639 | ||
|
|
f871f7a56f | ||
|
|
e0bdd51177 | ||
|
|
fba7d4e32f | ||
|
|
cab49809ad | ||
|
|
42696a4f8c | ||
|
|
a4dfa45f37 | ||
|
|
616dc7dd5d | ||
|
|
44f9017cb8 | ||
|
|
3c4fa68000 | ||
|
|
cb556b7a16 | ||
|
|
87317a3af6 | ||
|
|
92b7dff3ae | ||
|
|
0dc74dd8c4 | ||
|
|
6529cbac0d | ||
|
|
139d28eaae | ||
|
|
a1f129edd5 | ||
|
|
73699cccbc | ||
|
|
229dbcc547 | ||
|
|
c738ce2f65 | ||
|
|
c0b3034721 | ||
|
|
f90688e550 | ||
|
|
0f453bc5f7 | ||
|
|
21357b658a | ||
|
|
2c5ad9189c | ||
|
|
b0dbe7365b | ||
|
|
af2c506383 | ||
|
|
59d503e3b9 | ||
|
|
b63b2106d8 | ||
|
|
a2af0a352b | ||
|
|
6aae926b5f | ||
|
|
49dd1edb69 | ||
|
|
7437a38899 | ||
|
|
381884fa9b | ||
|
|
f706e1e80e | ||
|
|
46c77febf7 | ||
|
|
fdbf67e0da | ||
|
|
bb35f6a6f5 | ||
|
|
c87b2efef8 | ||
|
|
2a65709db6 | ||
|
|
451e600476 | ||
|
|
6f391094ab | ||
|
|
5b067ffc16 | ||
|
|
b4e7d4ffae | ||
|
|
30c65a2547 | ||
|
|
4d59657b83 | ||
|
|
b84b6107ff | ||
|
|
f7cffcbcd4 | ||
|
|
2e402741a8 | ||
|
|
3e5e4f7427 | ||
|
|
1531087617 | ||
|
|
bb1550313c |
No files matched your search
+1
-1
@@ -110,7 +110,7 @@ endif
|
|||||||
|
|
||||||
ifeq ($(strip $(BOOTLOADER)), stm32duino)
|
ifeq ($(strip $(BOOTLOADER)), stm32duino)
|
||||||
OPT_DEFS += -DBOOTLOADER_STM32DUINO
|
OPT_DEFS += -DBOOTLOADER_STM32DUINO
|
||||||
MCU_LDSCRIPT ?= STM32F103x8_stm32duino_bootloader
|
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
|
||||||
BOARD = STM32_F103_STM32DUINO
|
BOARD = STM32_F103_STM32DUINO
|
||||||
# STM32F103 does NOT have an USB bootloader in ROM (only serial), so setting anything here does not make much sense
|
# STM32F103 does NOT have an USB bootloader in ROM (only serial), so setting anything here does not make much sense
|
||||||
STM32_BOOTLOADER_ADDRESS = 0x80000000
|
STM32_BOOTLOADER_ADDRESS = 0x80000000
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
* [Overview](api_overview.md)
|
* [Overview](api_overview.md)
|
||||||
* [API Documentation](api_docs.md)
|
* [API Documentation](api_docs.md)
|
||||||
* [Keyboard Support](reference_configurator_support.md)
|
* [Keyboard Support](reference_configurator_support.md)
|
||||||
|
* [Adding Default Keymaps](configurator_default_keymaps.md)
|
||||||
|
|
||||||
* CLI
|
* CLI
|
||||||
* [Overview](cli.md)
|
* [Overview](cli.md)
|
||||||
|
|||||||
@@ -0,0 +1,193 @@
|
|||||||
|
# Adding Default Keymaps to QMK Configurator :id=adding-default-keymaps
|
||||||
|
|
||||||
|
This page covers how to add a default keymap for a keyboard to QMK Configurator.
|
||||||
|
|
||||||
|
|
||||||
|
## Technical Information :id=technical-information
|
||||||
|
|
||||||
|
QMK Configurator uses JSON as its native file format for keymaps. As much as possible, these should be kept such that they behave the same as running `make <keyboard>:default` from `qmk_firmware`.
|
||||||
|
|
||||||
|
Keymaps in this directory require four key-value pairs:
|
||||||
|
|
||||||
|
* `keyboard` (string)
|
||||||
|
* This is the name of the keyboard, the same as would be used when running a compile job through `make` (e.g. `make 1upkeyboards/1up60rgb:default`).
|
||||||
|
* `keymap` (string)
|
||||||
|
* Should be set to `default`.
|
||||||
|
* `layout` (string)
|
||||||
|
* This is the layout macro used by the default keymap.
|
||||||
|
* `layers` (array)
|
||||||
|
* The keymap itself. This key should contain one array per layer, which themselves should contain the keycodes that make up that layer.
|
||||||
|
|
||||||
|
Additionally, most keymaps contain a `commit` key. This key is not consumed by the API that back-stops QMK Configurator, but is used by Configurator's maintainers to tell which version of a keymap was used to create the JSON keymap in this repository. The value is the SHA of the last commit to modify a board's default `keymap.c` in the `qmk_firmware` repository. The SHA is found by checking out [the `master` branch of the `qmk/qmk_firmware` repository](https://github.com/qmk/qmk_firmware/tree/master/) and running `git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c` (use `keymap.json` if the keyboard in question has this file instead), which should return something similar to:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, `f14629ed1cd7c7ec9089604d64f29a99981558e8` is the value that should be used for `commit`.
|
||||||
|
|
||||||
|
|
||||||
|
## Example :id=example
|
||||||
|
|
||||||
|
If one wished to add a default keymap for the H87a by Hineybush, one would run the `git log` command above against the H87a's default keymap in `qmk_firmware`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
user ~/qmk_firmware (master)
|
||||||
|
$ git log -1 --pretty=oneline master -- keyboards/hineybush/h87a/keymaps/default/keymap.c
|
||||||
|
ef8878fba5d3786e3f9c66436da63a560cd36ac9 Hineybush h87a lock indicators (#8237)
|
||||||
|
```
|
||||||
|
|
||||||
|
Now that we have the commit hash, we need the keymap (edited for readability):
|
||||||
|
|
||||||
|
```c
|
||||||
|
...
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC,
|
||||||
|
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_VOLU,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
The default keymap uses the `LAYOUT_all` macro, so that will be the value of the `layout` key. Compiled to a QMK Configurator JSON keymap, our resulting file should be:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"keyboard": "hineybush/h87a",
|
||||||
|
"keymap": "default",
|
||||||
|
"commit": "ef8878fba5d3786e3f9c66436da63a560cd36ac9",
|
||||||
|
"layout": "LAYOUT_all",
|
||||||
|
"layers": [
|
||||||
|
[
|
||||||
|
"KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS",
|
||||||
|
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP",
|
||||||
|
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN",
|
||||||
|
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT",
|
||||||
|
"KC_LSFT", "KC_NUBS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_TRNS", "KC_UP",
|
||||||
|
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_HUD", "RGB_HUI", "RGB_SAD", "RGB_SAI", "RGB_VAD", "RGB_VAI", "BL_TOGG", "BL_DEC", "BL_INC",
|
||||||
|
"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_VOLU",
|
||||||
|
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RESET", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPLY", "KC_MNXT", "KC_VOLD",
|
||||||
|
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||||
|
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||||
|
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The white space in the `layers` arrays have no effect on the functionality of the keymap, but are used to make these files easier for humans to read.
|
||||||
|
|
||||||
|
|
||||||
|
## Caveats :id=caveats
|
||||||
|
|
||||||
|
### Layers can only be referenced by number :id=layer-references
|
||||||
|
|
||||||
|
A common QMK convention is to name layers using a series of `#define`s, or an `enum` statement:
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_MEDIA,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
This works in C, but for Configurator, you *must* use the layer's numeric index – `MO(_FN)` would need to be `MO(2)` in the above example.
|
||||||
|
|
||||||
|
### No support for custom code of any kind :id=custom-code
|
||||||
|
|
||||||
|
Features that require adding functions to the keymap.c file, such as Tap Dance or Unicode, can not be compiled in Configurator **at all**. Even setting `TAP_DANCE_ENABLE = yes` in the `qmk_firmware` repository at the keyboard level will prevent Configurator from compiling **any** firmware for that keyboard. This is limited both by the API and the current spec of our JSON keymap format.
|
||||||
|
|
||||||
|
### Limited Support for Custom keycodes :id=custom-keycodes
|
||||||
|
|
||||||
|
There is a way to support custom keycodes: if the logic for a custom keycode is implemented at the keyboard level instead of the keymap level in qmk_firmware, that keycode *can* be used in Configurator and it *will* compile and work. Instead of using the following in your `keymap.c`:
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum custom_keycodes {
|
||||||
|
MACRO_1 = SAFE_RANGE,
|
||||||
|
MACRO_2,
|
||||||
|
MACRO_3
|
||||||
|
};
|
||||||
|
...
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch(keycode) {
|
||||||
|
case MACRO_1:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro #1.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MACRO_2:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro #2.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MACRO_3:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro #3.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
... add the keycode `enum` block to your keyboard's header file (`<keyboard>.h`) as follows (note that the `enum` is named `keyboard_keycodes` here):
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum keyboard_keycodes {
|
||||||
|
MACRO_1 = SAFE_RANGE,
|
||||||
|
MACRO_2,
|
||||||
|
MACRO_3,
|
||||||
|
NEW_SAFE_RANGE // Important!
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
... then the logic to your `<keyboard>.c` through `process_record_kb()`:
|
||||||
|
|
||||||
|
```c
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch(keycode) {
|
||||||
|
case MACRO_1:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro #1.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MACRO_2:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro #2.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MACRO_3:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro #3.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the call to `process_record_user()` at the end. Additionally, users of the keyboard will need to use `NEW_SAFE_RANGE` instead of `SAFE_RANGE` if they wish to add their own custom keycodes at keymap level, beyond what is provided by the keyboard.
|
||||||
|
|
||||||
|
|
||||||
|
## Additional Reading :id=additional-reading
|
||||||
|
|
||||||
|
For QMK Configurator to support your keyboard, your keyboard must be present in the `master` branch of the `qmk_firmware` repository. For instructions on this, please see [Supporting Your Keyboard in QMK Configurator](reference_configurator_support.md).
|
||||||
@@ -4,7 +4,7 @@ QMK presents itself to the host as a regular HID keyboard device, and as such re
|
|||||||
|
|
||||||
There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.
|
There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.
|
||||||
|
|
||||||
We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with MSYS2 or WSL, the `qmk_install.sh` script will have asked if you want it to install the drivers for you.
|
We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with MSYS2, the `qmk_install.sh` script will have already installed the drivers for you.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|||||||
+1
-65
@@ -19,71 +19,7 @@ Note that running `make` with `sudo` is generally ***not*** a good idea, and you
|
|||||||
|
|
||||||
### Linux `udev` Rules
|
### Linux `udev` Rules
|
||||||
|
|
||||||
On Linux, you'll need proper privileges to communicate with the bootloader device. You can either use `sudo` when flashing firmware, or place this file in `/etc/udev/rules.d/`:
|
On Linux, you'll need proper privileges to communicate with the bootloader device. You can either use `sudo` when flashing firmware (not recommended), or place [this file](https://github.com/qmk/qmk_firmware/tree/master/util/udev/50-qmk.rules) into `/etc/udev/rules.d/`.
|
||||||
|
|
||||||
**/etc/udev/rules.d/50-qmk.rules:**
|
|
||||||
```
|
|
||||||
# Atmel DFU
|
|
||||||
### ATmega16U2
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FEF", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
### ATmega32U2
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF0", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
### ATmega16U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF3", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
### ATmega32U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF4", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
### AT90USB64
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF9", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
### AT90USB128
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FFB", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
|
|
||||||
# Input Club
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1C11", ATTRS{idProduct}=="B007", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
|
|
||||||
# STM32duino
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1EAF", ATTRS{idProduct}=="0003", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
# STM32 DFU
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="DF11", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
|
|
||||||
# BootloadHID
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16C0", ATTRS{idProduct}=="05DF", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
|
|
||||||
# USBAspLoader
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16C0", ATTRS{idProduct}=="05DC", TAG+="uaccess", RUN{builtin}+="uaccess"
|
|
||||||
|
|
||||||
# ModemManager should ignore the following devices
|
|
||||||
# Atmel SAM-BA (Massdrop)
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="6124", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
|
|
||||||
# Caterina (Pro Micro)
|
|
||||||
## Spark Fun Electronics
|
|
||||||
### Pro Micro 3V3/8MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1B4F", ATTRS{idProduct}=="9203", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### Pro Micro 5V/16MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1B4F", ATTRS{idProduct}=="9205", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### LilyPad 3V3/8MHz (and some Pro Micro clones)
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1B4F", ATTRS{idProduct}=="9207", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Pololu Electronics
|
|
||||||
### A-Star 32U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1FFB", ATTRS{idProduct}=="0101", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Arduino SA
|
|
||||||
### Leonardo
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### Micro
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Adafruit Industries LLC
|
|
||||||
### Feather 32U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239A", ATTRS{idProduct}=="000C", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### ItsyBitsy 32U4 3V3/8MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239A", ATTRS{idProduct}=="000D", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### ItsyBitsy 32U4 5V/16MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239A", ATTRS{idProduct}=="000E", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## dog hunter AG
|
|
||||||
### Leonardo
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2A03", ATTRS{idProduct}=="0036", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### Micro
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2A03", ATTRS{idProduct}=="0037", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
```
|
|
||||||
|
|
||||||
Once added, run the following:
|
Once added, run the following:
|
||||||
|
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ susceptible to noise, you must choose a debounce method that will also mitigate
|
|||||||
* Defer algorithms are noise-resistant
|
* Defer algorithms are noise-resistant
|
||||||
* Recommended naming conventions:
|
* Recommended naming conventions:
|
||||||
* ```sym_defer_*```
|
* ```sym_defer_*```
|
||||||
* ```asym_defer_*_*```: key-down is using eager algorithm
|
* ```asym_defer_*_*```: key-down is using defer algorithm
|
||||||
* ```asym_*_defer_*```: key-up is using eager algorithm
|
* ```asym_*_defer_*```: key-up is using defer algorithm
|
||||||
|
|
||||||
4) Global vs Per-Key vs Per-Row
|
4) Global vs Per-Key vs Per-Row
|
||||||
* Global - one timer for all keys. Any key change state affects global timer
|
* Global - one timer for all keys. Any key change state affects global timer
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# QMK の設定
|
# QMK の設定
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.43:docs/config_options.md
|
original document: 0.10.33:docs/config_options.md
|
||||||
git diff 0.9.43 HEAD -- docs/config_options.md | cat
|
git diff 0.10.33 HEAD -- docs/config_options.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
QMK はほぼ無制限に設定可能です。可能なところはいかなるところでも、やりすぎな程、ユーザーがコードサイズを犠牲にしてでも彼らのキーボードをカスタマイズをすることを許しています。ただし、このレベルの柔軟性により設定が困難になります。
|
QMK はほぼ無制限に設定可能です。可能なところはいかなるところでも、やりすぎな程、ユーザーがコードサイズを犠牲にしてでも彼らのキーボードをカスタマイズをすることを許しています。ただし、このレベルの柔軟性により設定が困難になります。
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ keyboards/<keyboard>/matrix.c
|
|||||||
SRC += matrix.c
|
SRC += matrix.c
|
||||||
```
|
```
|
||||||
|
|
||||||
## マトリックスコードの部分置き換え
|
## マトリックスコードの部分置き換え :id=lite
|
||||||
|
|
||||||
カスタムマトリックスを実装する際、定型コードを書かなくてすむように、さまざまなスキャン関数のデフォルト実装を提供しています。
|
カスタムマトリックスを実装する際、定型コードを書かなくてすむように、さまざまなスキャン関数のデフォルト実装を提供しています。
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# キーボードの挙動をカスタマイズする方法
|
# キーボードの挙動をカスタマイズする方法
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.43:docs/custom_quantum_functions.md
|
original document: 0.10.33:docs/custom_quantum_functions.md
|
||||||
git diff 0.9.43 HEAD -- docs/custom_quantum_functions.md | cat
|
git diff 0.10.33 HEAD -- docs/custom_quantum_functions.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
|
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
|
||||||
@@ -232,7 +232,7 @@ void keyboard_pre_init_user(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `keyboard_pre_init_*` 関数のドキュメント
|
### `keyboard_pre_init_*` 関数のドキュメント :id=keyboard_pre_init_-function-documentation
|
||||||
|
|
||||||
* キーボード/リビジョン: `void keyboard_pre_init_kb(void)`
|
* キーボード/リビジョン: `void keyboard_pre_init_kb(void)`
|
||||||
* キーマップ: `void keyboard_pre_init_user(void)`
|
* キーマップ: `void keyboard_pre_init_user(void)`
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# ドキュメントベストプラクティス
|
# ドキュメントベストプラクティス
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.19:docs/documentation_best_practices.md
|
original document: 0.10.33:docs/documentation_best_practices.md
|
||||||
git diff 0.9.19 HEAD -- docs/documentation_best_practices.md | cat
|
git diff 0.10.33 HEAD -- docs/documentation_best_practices.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
このページは QMK のためのドキュメントを作成する時のベストプラクティスを文章化するためのものです。これらのガイドラインに従うことで、一貫したトーンとスタイルを維持することでき、他の人が QMK をより理解しやすくすることができます。
|
このページは QMK のためのドキュメントを作成する時のベストプラクティスを文章化するためのものです。これらのガイドラインに従うことで、一貫したトーンとスタイルを維持することでき、他の人が QMK をより理解しやすくすることができます。
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# コンボ
|
# コンボ
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.8.94:docs/feature_combo.md
|
original document: 0.10.36:docs/feature_combo.md
|
||||||
git diff 0.8.94 HEAD -- docs/feature_combo.md | cat
|
git diff 0.10.36 HEAD -- docs/feature_combo.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
コンボ機能は、同時押し方式でのカスタムアクション追加機能です。同時に複数のキーを押して、異なる効果を生み出すことができます。例えば、タッピング時間内で `A` と `S` を押すと、代わりに `ESC` が押されます。もっと複雑なタスクを実行させることもできます。
|
コンボ機能は、同時押し方式でのカスタムアクション追加機能です。同時に複数のキーを押して、異なる効果を生み出すことができます。例えば、タッピング時間内で `A` と `S` を押すと、代わりに `ESC` が押されます。もっと複雑なタスクを実行させることもできます。
|
||||||
@@ -60,7 +60,7 @@ combo_t key_combos[COMBO_COUNT] = {
|
|||||||
[XV_PASTE] = COMBO_ACTION(paste_combo),
|
[XV_PASTE] = COMBO_ACTION(paste_combo),
|
||||||
};
|
};
|
||||||
|
|
||||||
void process_combo_event(uint8_t combo_index, bool pressed) {
|
void process_combo_event(uint16_t combo_index, bool pressed) {
|
||||||
switch(combo_index) {
|
switch(combo_index) {
|
||||||
case ZC_COPY:
|
case ZC_COPY:
|
||||||
if (pressed) {
|
if (pressed) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# 動的マクロ: ランタイムでのマクロの記録および再生
|
# 動的マクロ: ランタイムでのマクロの記録および再生
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.43:docs/feature_dynamic_macros.md
|
original document: 0.10.33:docs/feature_dynamic_macros.md
|
||||||
git diff 0.9.43 HEAD -- docs/feature_dynamic_macros.md | cat
|
git diff 0.10.33 HEAD -- docs/feature_dynamic_macros.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
QMK はその場で作られた一時的なマクロをサポートします。これらを動的マクロと呼びます。それらはユーザがキーボードから定義し、キーボードのプラグを抜くか再起動すると失われます。
|
QMK はその場で作られた一時的なマクロをサポートします。これらを動的マクロと呼びます。それらはユーザがキーボードから定義し、キーボードのプラグを抜くか再起動すると失われます。
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# リーダーキー: 新しい種類のモディファイア
|
# リーダーキー: 新しい種類のモディファイア
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.8.134:docs/feature_leader_key.md
|
original document: 0.10.33:docs/feature_leader_key.md
|
||||||
git diff 0.8.134 HEAD -- docs/feature_leader_key.md | cat
|
git diff 0.10.33 HEAD -- docs/feature_leader_key.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
もしあなたが Vim を使ったことがある場合、リーダーキーは何であるかを知っています。そうでなければ、素晴らしい概念を発見しようとしています。:) 例えば、Alt+Shift+W を押す(3つのキーを同時に押す)代わりに、キーの_シーケンス_を押すことができたらどうでしょう?つまり、特別なモディファイア (リーダーキー)を押して、続けて W と C を押すと (単純にキーを高速に繋げます)、何かが起こります。
|
もしあなたが Vim を使ったことがある場合、リーダーキーは何であるかを知っています。そうでなければ、素晴らしい概念を発見しようとしています。:) 例えば、Alt+Shift+W を押す(3つのキーを同時に押す)代わりに、キーの_シーケンス_を押すことができたらどうでしょう?つまり、特別なモディファイア (リーダーキー)を押して、続けて W と C を押すと (単純にキーを高速に繋げます)、何かが起こります。
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# QMK での速記 :id=stenography-in-qmk
|
# QMK での速記 :id=stenography-in-qmk
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.19:docs/feature_stenography.md
|
original document: 0.10.33:docs/feature_stenography.md
|
||||||
git diff 0.9.19 HEAD -- docs/feature_stenography.md | cat
|
git diff 0.10.33 HEAD -- docs/feature_stenography.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
[速記](https://en.wikipedia.org/wiki/Stenotype)は裁判所のレポート、字幕および耳が不自由な人のためのリアルタイムの文字起こしで最もよく使われる記述方法です。速記では単語はスペル、音声およびショートカット(短い)ストロークが混在する音節ごとに音節化されます。プロの速記者は、標準的なタイピングで通常見られる負担を掛けずに、はるかに少ないエラー(99.9%より高い精度)で、200-300 WPM に到達できます。
|
[速記](https://en.wikipedia.org/wiki/Stenotype)は裁判所のレポート、字幕および耳が不自由な人のためのリアルタイムの文字起こしで最もよく使われる記述方法です。速記では単語はスペル、音声およびショートカット(短い)ストロークが混在する音節ごとに音節化されます。プロの速記者は、標準的なタイピングで通常見られる負担を掛けずに、はるかに少ないエラー(99.9%より高い精度)で、200-300 WPM に到達できます。
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# より詳細な `make` 手順
|
# より詳細な `make` 手順
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.0:docs/getting_started_make_guide.md
|
original document: 0.10.33:docs/getting_started_make_guide.md
|
||||||
git diff 0.9.0 HEAD -- docs/getting_started_make_guide.md | cat
|
git diff 0.10.33 HEAD -- docs/getting_started_make_guide.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
`make` コマンドの完全な構文は `<keyboard_folder>:<keymap>:<target>` です:
|
`make` コマンドの完全な構文は `<keyboard_folder>:<keymap>:<target>` です:
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<!---
|
<!---
|
||||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
original document: 0.9.0:docs/hardware_avr.md
|
original document: 0.10.33:docs/hardware_avr.md
|
||||||
git diff 0.9.0 HEAD -- docs/hardware_avr.md | cat
|
git diff 0.10.33 HEAD -- docs/hardware_avr.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
|
このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<!---
|
<!---
|
||||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
original document: 0.9.0:docs/hardware_keyboard_guidelines.md
|
original document: 0.10.33:docs/hardware_keyboard_guidelines.md
|
||||||
git diff 0.9.0 HEAD -- docs/hardware_keyboard_guidelines.md | cat
|
git diff 0.10.33 HEAD -- docs/hardware_keyboard_guidelines.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
QMK は開始以来、コミュニティにおけるキーボードの作成や保守に貢献しているあなたのような人たちのおかげで飛躍的に成長しました。私たちが成長するにつれて、うまくやるためのいくつかのパターンを発見しました。他の人たちがあなたの苦労の恩恵を受けやすくするため、それにあわせてもらえるようお願いします。
|
QMK は開始以来、コミュニティにおけるキーボードの作成や保守に貢献しているあなたのような人たちのおかげで飛躍的に成長しました。私たちが成長するにつれて、うまくやるためのいくつかのパターンを発見しました。他の人たちがあなたの苦労の恩恵を受けやすくするため、それにあわせてもらえるようお願いします。
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# QMK 開発用の Visual Studio Code のセットアップ
|
# QMK 開発用の Visual Studio Code のセットアップ
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.34:docs/other_vscode.md
|
original document: 0.10.33:docs/other_vscode.md
|
||||||
git diff 0.9.34 HEAD -- docs/other_vscode.md | cat
|
git diff 0.10.33 HEAD -- docs/other_vscode.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
[Visual Studio Code](https://code.visualstudio.com/) (VS Code) は多くの異なるプログラミング言語をサポートするオープンソースのコードエディタです。
|
[Visual Studio Code](https://code.visualstudio.com/) (VS Code) は多くの異なるプログラミング言語をサポートするオープンソースのコードエディタです。
|
||||||
@@ -53,7 +53,7 @@ VS Code のようなフル機能のエディタの使用は、プレーンテキ
|
|||||||
|
|
||||||
### VS Code の設定
|
### VS Code の設定
|
||||||
|
|
||||||
最初に、IntelliSense をセットアップする必要があります。これは厳密には必要ではありませんが、あなたの人生をずっと楽にします。これを行うには、QMK ファームウェアフォルダに `.vscode/c_cpp_properies.json` ファイルを作成する必要があります。これは全て手動で行うことができますが、ほとんどの作業は既に完了しています。
|
最初に、IntelliSense をセットアップする必要があります。これは厳密には必要ではありませんが、あなたの人生をずっと楽にします。これを行うには、QMK ファームウェアフォルダに `.vscode/c_cpp_properties.json` ファイルを作成する必要があります。これは全て手動で行うことができますが、ほとんどの作業は既に完了しています。
|
||||||
|
|
||||||
[このファイル](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) を取得して保存します。MSYS2 をデフォルトの場所にインストールしなかった、または WSL か LxSS を使っている場合、このファイルを編集する必要があります。
|
[このファイル](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) を取得して保存します。MSYS2 をデフォルトの場所にインストールしなかった、または WSL か LxSS を使っている場合、このファイルを編集する必要があります。
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ VS Code のようなフル機能のエディタの使用は、プレーンテキ
|
|||||||
|
|
||||||
次に、VSCode に統合ターミナルとして表示されるように、MSYS2 ウィンドウを設定します。これには多くの利点があります。ほとんどの場合で、エラー上で Ctrl + クリックするとこれらのファイルにジャンプできます。これによりデバッグがはるかに簡単になります。また、他のウィンドウへジャンプする必要が無いという点でも優れています。
|
次に、VSCode に統合ターミナルとして表示されるように、MSYS2 ウィンドウを設定します。これには多くの利点があります。ほとんどの場合で、エラー上で Ctrl + クリックするとこれらのファイルにジャンプできます。これによりデバッグがはるかに簡単になります。また、他のウィンドウへジャンプする必要が無いという点でも優れています。
|
||||||
|
|
||||||
1. <kbd><kbd>File</kbd> > <kbd>Preferences ></kbd> > <kbd>Settings</kbd> </kbd> をクリックします。
|
1. <kbd><kbd>ファイル</kbd> > <kbd>ユーザー設定 ></kbd> > <kbd>設定</kbd> </kbd> をクリックします。
|
||||||
2. 右上の <kbd>{}</kbd> ボタンをクリックし、`settings.json` ファイルを開きます。
|
2. 右上の <kbd>{}</kbd> ボタンをクリックし、`settings.json` ファイルを開きます。
|
||||||
3. ファイルの内容を以下のように設定します:
|
3. ファイルの内容を以下のように設定します:
|
||||||
|
|
||||||
@@ -82,11 +82,11 @@ VS Code のようなフル機能のエディタの使用は、プレーンテキ
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
ここに既に設定がある場合は、最初と最後の波括弧の間に全てを追加します。
|
ここに既に設定がある場合は、最初と最後の波括弧の間に全てを追加し、既存の設定を新しく追加された設定とカンマで区切ります。
|
||||||
|
|
||||||
?> MSYS2 を別のフォルダにインストールした場合は、`terminal.integrated.shell.windows` のパスをシステムの正しいパスに変更する必要があります。
|
?> MSYS2 を別のフォルダにインストールした場合は、`terminal.integrated.shell.windows` のパスをシステムの正しいパスに変更する必要があります。
|
||||||
|
|
||||||
4. Ctrl-` (grave) を押して、ターミナルを起動します。
|
4. Ctrl-<code>`</code> (Grave) を押して、ターミナルを起動するか、<kbd><kbd>表示</kbd> > <kbd>ターミナル</kbd></kbd> (コマンド `workbench.action.terminal.toggleTerminal`)に進みます。まだターミナルが開いていない場合は、新しいターミナルが開きます。
|
||||||
|
|
||||||
これにより、ワークスペースフォルダ(つまり `qmk_firmware` フォルダ)でターミナルが起動し、キーボードをコンパイルすることができます。
|
これにより、ワークスペースフォルダ(つまり `qmk_firmware` フォルダ)でターミナルが起動し、キーボードをコンパイルすることができます。
|
||||||
|
|
||||||
@@ -115,8 +115,8 @@ VS Code のようなフル機能のエディタの使用は、プレーンテキ
|
|||||||
いずれかの拡張機能をインストールしたら、再起動します。
|
いずれかの拡張機能をインストールしたら、再起動します。
|
||||||
|
|
||||||
# QMK 用の VS Code の設定
|
# QMK 用の VS Code の設定
|
||||||
1. <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd> をクリックします
|
1. <kbd><kbd>ファイル</kbd> > <kbd>フォルダーを開く</kbd></kbd> をクリックします
|
||||||
2. GitHub からクローンした QMK ファームウェアフォルダを開きます。
|
2. GitHub からクローンした QMK ファームウェアフォルダを開きます。
|
||||||
3. <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd> をクリックします
|
3. <kbd><kbd>ファイル</kbd> > <kbd>名前を付けてワークスペースを保存...</kbd></kbd> をクリックします
|
||||||
|
|
||||||
これで、VS Code で QMK ファームウェアをコーディングする準備ができました。
|
これで、VS Code で QMK ファームウェアをコーディングする準備ができました。
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
# PR チェックリスト
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.10.7:docs/pr_checklist.md
|
||||||
|
git diff 0.10.7 HEAD -- docs/pr_checklist.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
これは、提出された PR を QMK の協力者がレビューする際に何をチェックするのかの非網羅的なチェックリストです。
|
||||||
|
|
||||||
|
これらの推奨事項に矛盾がある場合は、このドキュメントに対して [issue を開く](https://github.com/qmk/qmk_firmware/issues/new)か、[Discord](https://discord.gg/Uq7gcHh) の QMK コラボレータに連絡することをお勧めします。
|
||||||
|
|
||||||
|
## 一般的な PR
|
||||||
|
|
||||||
|
- PRは、ソースリポジトリ上の `master` ではないブランチを使って提出する必要があります
|
||||||
|
- これは、あなたの PR にとって別のブランチをターゲットにするという意味ではなく、むしろ自分の master ブランチで作業をしていないという意味です
|
||||||
|
- もし PR の提出者が自分の `master` ブランチを使っている場合は、マージ後に ["git の使い方"](https://docs.qmk.fm/#/ja/newbs_git_using_your_master_branch) ページへのリンクが表示されます - (このドキュメントの最後にはメッセージの内容が含まれます)
|
||||||
|
- 新しく追加されたディレクトリとファイル名は小文字でなければなりません
|
||||||
|
- 上流のソースが元々大文字を使っていた場合 (ChibiOS や他のリポジトリからインポートしたファイルなど)、このルールは緩和されるかもしれません
|
||||||
|
- 十分な正当性がある場合 (既存のコアファイルとの整合性など) は、このルールを緩和することができます。
|
||||||
|
- ボードデザイナーがキーボードの名前を大文字にした場合は、十分な正当性とはみとめられません
|
||||||
|
- すべての `*.c` および `*.h` ソースファイルの有効なライセンスヘッダ
|
||||||
|
- 一貫性のために GPL2/GPL3 が推奨されています
|
||||||
|
- 他のライセンスも許可されていますが、GPL と互換性があり、再配布が許可されていなければなりません。異なるライセンスを使うと、PR がマージされるのをほぼ確実に遅らせることになります
|
||||||
|
- QMK コードベースの「ベストプラクティス」に従う
|
||||||
|
- これは網羅的なリストではありませんし、時間が経つにつれて修正される可能性が高いです
|
||||||
|
- ヘッダファイルでは、`#ifndef` インクルードガードの代わりに `#pragma once` を使います
|
||||||
|
- 「旧式の」 GPIO/I2C/SPI 関数を使用しない - 正当な理由がない限り、QMK の抽象化を使用しなければなりません (怠惰は正当な理由にはなりません)
|
||||||
|
- タイミングの抽象化にも従う必要があります:
|
||||||
|
- `_delay_ms()` のかわりに `wait_ms()` を。(`#include <util/delay.h>` も消します)
|
||||||
|
- `timer_read()` と `timer_read32()` など。 -- タイミング API は [timer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/timer.h) を参照してください
|
||||||
|
- 新しい抽象化が有用だと思う場合は、次のことをお勧めします:
|
||||||
|
- 機能が完成するまで自分のキーボードでプロトタイプを作成する
|
||||||
|
- Discord の QMK コラボレータと話し合う
|
||||||
|
- 個別のコア変更としてそれをリファクタリングする
|
||||||
|
- あなたのキーボードからそのコピーを削除する
|
||||||
|
- PR を開く前にリベースしてマージの競合をすべて修正します (ヘルプやアドバイスが必要な場合は、Discord で QMK コラボレータに連絡してください)。
|
||||||
|
|
||||||
|
## キーマップの PR
|
||||||
|
|
||||||
|
- 特定のボードファイルをインクルードするよりも `#include QMK_KEYBOARD_H` を推奨します
|
||||||
|
- レイヤーは `#define` よりも `enum` が好まれます
|
||||||
|
- カスタムキーコードは `#define` ではなく `enum` が必要です。最初のエントリには `= SAFE_RANGE` が必要です
|
||||||
|
- LAYOUT マクロ呼び出しのパラメータの途中の改行ではバックスラッシュ(`\`)は不要です
|
||||||
|
- スペーシング(コンマまたはキーコードの最初の文字の配置など)に注意を払うと、見栄えの良いキーマップになります
|
||||||
|
|
||||||
|
## キーボードの PR
|
||||||
|
|
||||||
|
終了した PR(インスピレーションを得るために、以前のレビューコメントセットは、自分のレビューのピンポンをなくすのに役立ちます):
|
||||||
|
https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||||
|
|
||||||
|
- `info.json`
|
||||||
|
- 有効な URL
|
||||||
|
- 有効なメンテナ
|
||||||
|
- Configurator で正しく表示されること(Ctrl + Shift + I を押してローカルファイルをプレビューし、高速入力をオンにして順序を確認する)
|
||||||
|
- `readme.md`
|
||||||
|
- 標準テンプレートがあること
|
||||||
|
- 書き込みコマンドが `:flash` で終わっていること
|
||||||
|
- 有効なハードウェアの入手方法へのリンク (手配線の場合を除く) -- プライベートな共同購入は問題ありませんが、一回限りのプロトタイプは疑問視されます。オープンソースの場合は、ファイルへのリンクを提供してください
|
||||||
|
- ボードをブートローダーモードにリセットする方法を明確に説明してください
|
||||||
|
- キーボードの写真、できれば PCB の写真も添付してください
|
||||||
|
- `rules.mk`
|
||||||
|
- `MIDI_ENABLE`、`FAUXCLICKY_ENABLE`、`HD44780_ENABLE` は削除されました
|
||||||
|
- `# Enable Bluetooth with the Adafruit EZ-Key HID` は `# Enable Bluetooth` に変更されました
|
||||||
|
- 機能の有効化に関する `(-/+サイズ)` コメントはなくなりました
|
||||||
|
- ブートローダが指定されている場合は、代替ブートローダのリストを削除します
|
||||||
|
- [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/quantum/mcu_selection.mk)の同等の MCU と比較した場合、同じ値の場合、デフォルトの MCU パラメータの再定義がないこと
|
||||||
|
- キーボードの `config.h`
|
||||||
|
- `PRODUCT` 値に `MANUFACTURER` を繰り返さないでください
|
||||||
|
- `#define DESCRIPTION` は要りません
|
||||||
|
- マジックキーオプション、 MIDI オプション、HD44780 コンフィギュレーションは要りません
|
||||||
|
- ユーザー設定の設定可能な `#define` はキーマップ `config.h` に移動する必要があります
|
||||||
|
- "`DEBOUNCING_DELAY`" の代りに "`DEBOUNCE`" を使います
|
||||||
|
- キーボードが QMK で起動するために最低限必要なコードが存在する必要があります
|
||||||
|
- マトリックスと重要なデバイスの初期化コード
|
||||||
|
- (カスタムキーコードや特別なアニメーションなど)商用キーボードの既存の機能をミラーリングする場合は、`default` ではないキーマップを使って処理する必要があります
|
||||||
|
- `keyboard.c`
|
||||||
|
- 空の `xxxx_xxxx_kb()` または他の weak-define のデフォルト実装関数が削除されていること
|
||||||
|
- コメントアウトされた関数も削除されていること
|
||||||
|
- `matrix_init_board()` などが `keyboard_pre_init_kb()` に移行されました。[keyboard_pre_init*](https://docs.qmk.fm/#/ja/custom_quantum_functions?id=keyboard_pre_init_-function-documentation) を参照してください
|
||||||
|
- カスタムマトリックスを使用する場合は、`CUSTOM_MATRIX = lite` を選択し、標準のデバウンスを許可します。[マトリックスコードの部分置き換え](https://docs.qmk.fm/#/ja/custom_matrix?id=lite) を参照してください
|
||||||
|
- `keyboard.h`
|
||||||
|
- 先頭に `#include "quantum.h"` を置きます
|
||||||
|
- `LAYOUT` マクロは、該当する場合は標準の定義を使用してください
|
||||||
|
- 該当する場合はコミュニティレイアウトマクロ名を使用します (`LAYOUT`/`LAYOUT_all`よりも優先されます)
|
||||||
|
- キーマップの `config.h`
|
||||||
|
- キーボードから `rules.mk` や `config.h` が重複していないこと
|
||||||
|
- `keymaps/default/keymap.c`
|
||||||
|
- `QMKBEST`/`QMKURL` が削除されていること
|
||||||
|
- `MO(_LOWER)`および `MO(_RAISE)`キーコードまたは同等のものを使用していて、キーマップに両方のキーを押したときに adjust レイヤーがある場合 - キーマップに直接 adjust レイヤーに入るキーコードがない場合(`MO(_ADJUST)`のように)次のように記述します...
|
||||||
|
```
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
...キーマップの `process_record_user()` 内で `layer_on()`、 `update_tri_layer()` を手動で処理する代わりに。
|
||||||
|
- default (および via) のキーマップは「素朴」でなければなりません。
|
||||||
|
- 他のユーザーが独自のユーザー固有のキーマップを開発するための「クリーンな状態」として使用するための最低限のもの。
|
||||||
|
- これらのキーマップで推奨される標準レイアウト(可能な場合)
|
||||||
|
- PR の提出者は、同じ PR に機能を紹介する個人的な(または豪華な)キーマップを持たせることができますが、「デフォルト」のキーマップに埋め込むべきではありません
|
||||||
|
- PR の提出者はまた、既存の商用キーボードへ QMK を移植する場合、その商用製品の既存の機能を反映する「製造業者に一致する」キーマップを持つことができます
|
||||||
|
|
||||||
|
さらに、ChibiOS に固有で:
|
||||||
|
- 既存の ChibiOS ボード定義を使用することを**強く**推奨します。
|
||||||
|
- 多くの場合、同等の Nucleo ボードは、同じファミリの異なるフラッシュサイズまたはわずかに異なるモデルで使用できます。
|
||||||
|
- 例:STM32L082KZ の場合、STM32L073RZ に類似しているため、rules.mkで `BOARD = ST_NUCLEO64_L073RZ` を使用できます。
|
||||||
|
- QMK は ChibiOS のアップグレード時のメンテナンス負担が継続的に発生するため、可能な限りカスタムボード定義を持たないように移行しています。
|
||||||
|
- ボードの定義が避けられない場合、`board.c` には標準の `__early_init()` (通常の ChibiOS ボードの定義と同じ) と空の `boardInit()` を実装しなければなりません。
|
||||||
|
- Arm/ChibiOS [早期初期化](https:/docs.qmk.fm/#/ja/platformdev_chibios_earlyinit?id=board-init)を参照してください
|
||||||
|
- `__early_init()`は、`early_hardware_init_pre()` または `early_hardware_init_post()` で適切に置き換える必要があります
|
||||||
|
- `boardInit()` は `board_init()` に移行する必要があります
|
||||||
|
|
||||||
|
## コアの PR
|
||||||
|
|
||||||
|
- `develop` ブランチをターゲットにする必要があります。これは、その後、breaking change のタイムラインで `master` にマージされます。
|
||||||
|
- その他の注意事項 TBD
|
||||||
|
- 投稿された変更の幅を考えると、コアはもっと主観的です
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 注意事項
|
||||||
|
|
||||||
|
人々が自分の `master` ブランチを使用する場合、マージ後に以下を投稿します:
|
||||||
|
|
||||||
|
```
|
||||||
|
For future reference, we recommend against committing to your `master` branch as you've done here, because pull requests from modified `master` branches can make it more difficult to keep your QMK fork updated. It is highly recommended for QMK development – regardless of what is being done or where – to keep your master updated, but **NEVER** commit to it. Instead, do all your changes in a branch (branches are basically free in Git) and issue PRs from your branches when you're developing.
|
||||||
|
|
||||||
|
There are instructions on how to keep your fork updated here:
|
||||||
|
|
||||||
|
[**Best Practices: Your Fork's Master: Update Often, Commit Never**](https://docs.qmk.fm/#/newbs_git_using_your_master_branch)
|
||||||
|
|
||||||
|
[Fixing Your Branch](https://docs.qmk.fm/#/newbs_git_resynchronize_a_branch) will walk you through fixing up your `master` branch moving forward. If you need any help with this just ask.
|
||||||
|
|
||||||
|
Thanks for contributing!
|
||||||
|
```
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# `info.json`
|
# `info.json`
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.46:docs/reference_info_json.md
|
original document: 0.10.33:docs/reference_info_json.md
|
||||||
git diff 0.9.46 HEAD -- docs/reference_info_json.md | cat
|
git diff 0.10.33 HEAD -- docs/reference_info_json.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
このファイルは [QMK API](https://github.com/qmk/qmk_api) によって使われます。このファイルは [QMK Configurator](https://config.qmk.fm/) がキーボードの画像を表示するために必要な情報を含んでいます。ここにメタデータを設定することもできます。
|
このファイルは [QMK API](https://github.com/qmk/qmk_api) によって使われます。このファイルは [QMK Configurator](https://config.qmk.fm/) がキーボードの画像を表示するために必要な情報を含んでいます。ここにメタデータを設定することもできます。
|
||||||
|
|||||||
+12
-11
@@ -1,8 +1,8 @@
|
|||||||
# タップホールド設定オプション
|
# タップホールド設定オプション
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.9.51:docs/tap_hold.md
|
original document: 0.10.33:docs/tap_hold.md
|
||||||
git diff 0.9.51 HEAD -- docs/tap_hold.md | cat
|
git diff 0.10.33 HEAD -- docs/tap_hold.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
タップホールドオプションは素晴らしいものですが、問題が無いわけではありません。デフォルト設定を適切なものにしようとしましたが、一部の人にとってまだ問題を引き起こすかもしれません。
|
タップホールドオプションは素晴らしいものですが、問題が無いわけではありません。デフォルト設定を適切なものにしようとしましたが、一部の人にとってまだ問題を引き起こすかもしれません。
|
||||||
@@ -52,7 +52,7 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
|||||||
|
|
||||||
これは高速なタイピストや高い `TAPPING_TERM` 設定に対して、タップとホールドキー(モッドタップのような)の動作を向上させます。
|
これは高速なタイピストや高い `TAPPING_TERM` 設定に対して、タップとホールドキー(モッドタップのような)の動作を向上させます。
|
||||||
|
|
||||||
モッドタップキーを押し、他のキーをタップ(押して放す)して、モッドタップキーを放すという動作の全てをタッピング時間内に行うと、両方のキーの「タッピング」機能が出力されます。
|
モッドタップキーを押し、他のキーをタップ(押して放す)して、モッドタップキーを放すという動作の全てをタッピング時間内に行うと、両方のキーのタッピング機能が出力されます。
|
||||||
|
|
||||||
例えば:
|
例えば:
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
|
|||||||
#define IGNORE_MOD_TAP_INTERRUPT
|
#define IGNORE_MOD_TAP_INTERRUPT
|
||||||
```
|
```
|
||||||
|
|
||||||
許容ホールドと同様に、これは高速なタイピストのためのファームウェアの処理方法を変更します。モッドタップキーを押し、他のキーを押し、モッドタップキーを放し、通常のキーを放すと、通常は両方のキーの「タッピング」機能が出力されます。これはローリングコンボキーには望ましくないかもしれません。
|
許容ホールドと同様に、これは高速なタイピストのためのファームウェアの処理方法を変更します。モッドタップキーを押し、他のキーを押し、モッドタップキーを放し、通常のキーを放すと、通常は両方のキーのタッピング機能が出力されます。これはローリングコンボキーには望ましくないかもしれません。
|
||||||
|
|
||||||
`モッドタップ割り込みの無視`を設定するには、両方のキーを `TAPPING_TERM` の間ホールドすると、(その修飾キーの)ホールド機能を実行する必要があります。
|
`モッドタップ割り込みの無視`を設定するには、両方のキーを `TAPPING_TERM` の間ホールドすると、(その修飾キーの)ホールド機能を実行する必要があります。
|
||||||
|
|
||||||
@@ -137,21 +137,22 @@ bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
|
|||||||
#define TAPPING_FORCE_HOLD
|
#define TAPPING_FORCE_HOLD
|
||||||
```
|
```
|
||||||
|
|
||||||
タップの後でユーザがキーをホールドすると、これは修飾キーをホールドするかわりにタップされたキーを繰り返します。これにより、タップされたキーのために自動繰り返しを使うことができます。
|
タップの後でユーザがキーをホールドすると、ホールド機能がアクティブになるのではなく、デフォルトでタッピング機能が繰り返されます。これにより、デュアルロールキーのタッピング機能を自動繰り返しする機能を維持することができます。
|
||||||
|
`TAPPING_FORCE_HOLD` は、デュアルロールキーをタップした後ホールドした場合、ユーザがホールド機能をアクティブにする機能を削除します。
|
||||||
|
|
||||||
例:
|
例:
|
||||||
|
|
||||||
- SFT_T(KC_A) を押す
|
- `SFT_T(KC_A)` を押す
|
||||||
- SFT_T(KC_A) を放す
|
- `SFT_T(KC_A)` を放す
|
||||||
- SFT_T(KC_A) を押す
|
- `SFT_T(KC_A)` を押す
|
||||||
- タッピング時間より長く待ちます...
|
- タッピング時間が終了するまで待ちます...
|
||||||
- SFT_T(KC_A) を放す
|
- `SFT_T(KC_A)` を放す
|
||||||
|
|
||||||
デフォルトの設定では、最初に放したときに `a` が送信され、2回目の押下で `a` が送信され、コンピュータに自動リピート機能を作動させることができます。
|
デフォルトの設定では、最初に放したときに `a` が送信され、2回目の押下で `a` が送信され、コンピュータに自動リピート機能を作動させることができます。
|
||||||
|
|
||||||
`TAPPING_FORCE_HOLD` を使うと、2回目の押下は Shift として解釈され、それをタップして使った後ですぐに修飾キーとして使うことができます。
|
`TAPPING_FORCE_HOLD` を使うと、2回目の押下は Shift として解釈され、それをタップして使った後ですぐに修飾キーとして使うことができます。
|
||||||
|
|
||||||
!> `TAPPING_FORCE_HOLD` はタッピングトグル(`TT` レイヤーキーコード、ワンショットタッピングトグルなど)を使うものをすべて破壊します。
|
!> `TAPPING_FORCE_HOLD` はタッピングトグル(`TT` レイヤーキーコード、ワンショットタップトグルなど)を使うものをすべて破壊します。
|
||||||
|
|
||||||
この機能をより細かく制御するために、以下を `config.h` に追加することができます:
|
この機能をより細かく制御するために、以下を `config.h` に追加することができます:
|
||||||
|
|
||||||
|
|||||||
@@ -55,3 +55,7 @@ Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since an
|
|||||||
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
|
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
|
||||||
|
|
||||||
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
|
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
|
||||||
|
|
||||||
|
## Other Resources
|
||||||
|
|
||||||
|
See the [Tap-Hold Configuration Options](tap_hold.md) for additional flags that tweak Mod-Tap behavior.
|
||||||
@@ -81,7 +81,7 @@ Now, we will set up the MSYS2 window to show up in VSCode as the integrated term
|
|||||||
|
|
||||||
?> If you installed MSYS2 to a different folder, then you'll need to change the path for `terminal.integrated.shell.windows` to the correct path for your system.
|
?> If you installed MSYS2 to a different folder, then you'll need to change the path for `terminal.integrated.shell.windows` to the correct path for your system.
|
||||||
|
|
||||||
4. Hit Ctrl-`\`` (Grave) to bring up the terminal or go to <kbd><kbd>View</kbd> > <kbd>Terminal</kbd></kbd> (command `workbench.action.terminal.toggleTerminal`). A new terminal will be opened if there isn‘t one already.
|
4. Hit Ctrl-<code>`</code> (Grave) to bring up the terminal or go to <kbd><kbd>View</kbd> > <kbd>Terminal</kbd></kbd> (command `workbench.action.terminal.toggleTerminal`). A new terminal will be opened if there isn‘t one already.
|
||||||
|
|
||||||
This should start the terminal in the workspace's folder (so the `qmk_firmware` folder), and then you can compile your keyboard.
|
This should start the terminal in the workspace's folder (so the `qmk_firmware` folder), and then you can compile your keyboard.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <[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 "drashna.h"
|
#include "drashna.h"
|
||||||
#include "analog.h"
|
#include "analog.h"
|
||||||
#include "pointing_device.h"
|
#include "pointing_device.h"
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Alec Penland
|
||||||
|
Copyright 2020 Garret Gartner
|
||||||
|
|
||||||
|
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 "45_ats.h"
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Alec Penland
|
||||||
|
Copyright 2020 Garret Gartner
|
||||||
|
|
||||||
|
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 xxx KC_NO
|
||||||
|
|
||||||
|
#define LAYOUT_split_space( \
|
||||||
|
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, k1D, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
|
||||||
|
k30, k31, k32, k33, k36, k38, k39, k3A, k3B, k3D \
|
||||||
|
) { \
|
||||||
|
{ 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, xxx, k1D }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, xxx, k2D }, \
|
||||||
|
{ k30, k31, k32, k33, xxx, xxx, k36, xxx, k38, k39, k3A, k3B, xxx, k3D } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_625_space( \
|
||||||
|
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, k1D, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
|
||||||
|
k30, k31, k32, k36, k39, k3A, k3B, k3D \
|
||||||
|
) { \
|
||||||
|
{ 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, xxx, k1D }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, xxx, k2D }, \
|
||||||
|
{ k30, k31, k32, xxx, xxx, xxx, k36, xxx, xxx, k39, k3A, k3B, xxx, k3D } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_600_space( \
|
||||||
|
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, k1D, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
|
||||||
|
k30, k31, k32, k36, k38, k39, k3A, k3B, k3D \
|
||||||
|
) { \
|
||||||
|
{ 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, xxx, k1D }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, xxx, k2D }, \
|
||||||
|
{ k30, k31, k32, xxx, xxx, xxx, k36, xxx, k38, k39, k3A, k3B, xxx, k3D } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Alec Penland
|
||||||
|
Copyright 2020 Garret Gartner
|
||||||
|
|
||||||
|
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 0xAB13
|
||||||
|
#define PRODUCT_ID 0x4511
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Abec13
|
||||||
|
#define PRODUCT 45ATS
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
#define ENCODERS_PAD_A { B4 }
|
||||||
|
#define ENCODERS_PAD_B { B5 }
|
||||||
|
|
||||||
|
/* key matrix pins */
|
||||||
|
#define MATRIX_ROW_PINS { D3, D5, D7, D6 }
|
||||||
|
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, B7, F6, F5, F4, C7, F7, C6, B6, D4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 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
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "45-ATS",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "The-Royal",
|
||||||
|
"width": 14.25,
|
||||||
|
"height": 4.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_split_space": {
|
||||||
|
"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":"", "x":13.5, "y":0},
|
||||||
|
{"label":"", "x":0, "y":1, "w":1.25},
|
||||||
|
{"label":"", "x":1.25, "y":1},
|
||||||
|
{"label":"", "x":2.25, "y":1},
|
||||||
|
{"label":"", "x":3.25, "y":1},
|
||||||
|
{"label":"", "x":4.25, "y":1},
|
||||||
|
{"label":"", "x":5.25, "y":1},
|
||||||
|
{"label":"", "x":6.25, "y":1},
|
||||||
|
{"label":"", "x":7.25, "y":1},
|
||||||
|
{"label":"", "x":8.25, "y":1},
|
||||||
|
{"label":"", "x":9.25, "y":1},
|
||||||
|
{"label":"", "x":10.25, "y":1},
|
||||||
|
{"label":"", "x":11.25, "y":1, "w":1.75},
|
||||||
|
{"label":"", "x":13.5, "y":1},
|
||||||
|
{"label":"", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"", "x":1.75, "y":2},
|
||||||
|
{"label":"", "x":2.75, "y":2},
|
||||||
|
{"label":"", "x":3.75, "y":2},
|
||||||
|
{"label":"", "x":4.75, "y":2},
|
||||||
|
{"label":"", "x":5.75, "y":2},
|
||||||
|
{"label":"", "x":6.75, "y":2},
|
||||||
|
{"label":"", "x":7.75, "y":2},
|
||||||
|
{"label":"", "x":8.75, "y":2},
|
||||||
|
{"label":"", "x":9.75, "y":2},
|
||||||
|
{"label":"", "x":10.75, "y":2, "w":1.25},
|
||||||
|
{"label":"", "x":12.25, "y":2.25},
|
||||||
|
{"label":"", "x":13.5, "y":2},
|
||||||
|
{"label":"", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":1.25, "y":3},
|
||||||
|
{"label":"", "x":2.25, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":3.5, "y":3, "w":2.75},
|
||||||
|
{"label":"", "x":6.25, "y":3, "w":2.25},
|
||||||
|
{"label":"", "x":8.5, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":9.75, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":11.25, "y":3.25},
|
||||||
|
{"label":"", "x":12.25, "y":3.25},
|
||||||
|
{"label":"", "x":13.25, "y":3.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_625_space": {
|
||||||
|
"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":"", "x":13.5, "y":0},
|
||||||
|
{"label":"", "x":0, "y":1, "w":1.25},
|
||||||
|
{"label":"", "x":1.25, "y":1},
|
||||||
|
{"label":"", "x":2.25, "y":1},
|
||||||
|
{"label":"", "x":3.25, "y":1},
|
||||||
|
{"label":"", "x":4.25, "y":1},
|
||||||
|
{"label":"", "x":5.25, "y":1},
|
||||||
|
{"label":"", "x":6.25, "y":1},
|
||||||
|
{"label":"", "x":7.25, "y":1},
|
||||||
|
{"label":"", "x":8.25, "y":1},
|
||||||
|
{"label":"", "x":9.25, "y":1},
|
||||||
|
{"label":"", "x":10.25, "y":1},
|
||||||
|
{"label":"", "x":11.25, "y":1, "w":1.75},
|
||||||
|
{"label":"", "x":13.5, "y":1},
|
||||||
|
{"label":"", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"", "x":1.75, "y":2},
|
||||||
|
{"label":"", "x":2.75, "y":2},
|
||||||
|
{"label":"", "x":3.75, "y":2},
|
||||||
|
{"label":"", "x":4.75, "y":2},
|
||||||
|
{"label":"", "x":5.75, "y":2},
|
||||||
|
{"label":"", "x":6.75, "y":2},
|
||||||
|
{"label":"", "x":7.75, "y":2},
|
||||||
|
{"label":"", "x":8.75, "y":2},
|
||||||
|
{"label":"", "x":9.75, "y":2},
|
||||||
|
{"label":"", "x":10.75, "y":2, "w":1.25},
|
||||||
|
{"label":"", "x":12.25, "y":2.25},
|
||||||
|
{"label":"K", "x":13.5, "y":2},
|
||||||
|
{"label":"", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":1.25, "y":3},
|
||||||
|
{"label":"", "x":2.25, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":3.5, "y":3, "w":6.25},
|
||||||
|
{"label":"", "x":9.75, "y":3, "w":1.25},
|
||||||
|
{"label":"", "x":11.25, "y":3.25},
|
||||||
|
{"label":"", "x":12.25, "y":3.25},
|
||||||
|
{"label":"", "x":13.25, "y":3.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_600_space": {
|
||||||
|
"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":"", "x":13.5, "y":0},
|
||||||
|
{"label":"", "x":0, "y":1, "w":1.25},
|
||||||
|
{"label":"", "x":1.25, "y":1},
|
||||||
|
{"label":"", "x":2.25, "y":1},
|
||||||
|
{"label":"", "x":3.25, "y":1},
|
||||||
|
{"label":"", "x":4.25, "y":1},
|
||||||
|
{"label":"", "x":5.25, "y":1},
|
||||||
|
{"label":"", "x":6.25, "y":1},
|
||||||
|
{"label":"", "x":7.25, "y":1},
|
||||||
|
{"label":"", "x":8.25, "y":1},
|
||||||
|
{"label":"", "x":9.25, "y":1},
|
||||||
|
{"label":"", "x":10.25, "y":1},
|
||||||
|
{"label":"", "x":11.25, "y":1, "w":1.75},
|
||||||
|
{"label":"", "x":13.5, "y":1},
|
||||||
|
{"label":"", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"", "x":1.75, "y":2},
|
||||||
|
{"label":"", "x":2.75, "y":2},
|
||||||
|
{"label":"", "x":3.75, "y":2},
|
||||||
|
{"label":"", "x":4.75, "y":2},
|
||||||
|
{"label":"", "x":5.75, "y":2},
|
||||||
|
{"label":"", "x":6.75, "y":2},
|
||||||
|
{"label":"", "x":7.75, "y":2},
|
||||||
|
{"label":"", "x":8.75, "y":2},
|
||||||
|
{"label":"", "x":9.75, "y":2},
|
||||||
|
{"label":"", "x":10.75, "y":2, "w":1.25},
|
||||||
|
{"label":"", "x":12.25, "y":2.25},
|
||||||
|
{"label":"", "x":13.5, "y":2},
|
||||||
|
{"label":"", "x":0, "y":3},
|
||||||
|
{"label":"", "x":1, "y":3},
|
||||||
|
{"label":"", "x":2, "y":3},
|
||||||
|
{"label":"", "x":3, "y":3, "w":6.00},
|
||||||
|
{"label":"", "x":9, "y":3},
|
||||||
|
{"label":"", "x":10, "y":3},
|
||||||
|
{"label":"", "x":11.25, "y":3.25},
|
||||||
|
{"label":"", "x":12.25, "y":3.25},
|
||||||
|
{"label":"", "x":13.25, "y":3.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Alec Penland
|
||||||
|
Copyright 2020 Garret Gartner
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#define TAPPING_TERM 175
|
||||||
|
|
||||||
|
#define PERMISSIVE_HOLD
|
||||||
|
|
||||||
|
#define MOD_TAP_INTERUPT
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Alec Penland
|
||||||
|
Copyright 2020 Garret Gartner
|
||||||
|
|
||||||
|
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 names
|
||||||
|
enum ats_layers{
|
||||||
|
// - Base layer:
|
||||||
|
_BASE,
|
||||||
|
// - Symbols, numbers, and functions:
|
||||||
|
_FN,
|
||||||
|
// - Alternate Function layer:
|
||||||
|
_LN
|
||||||
|
};
|
||||||
|
|
||||||
|
#define RS_SLS RSFT_T(KC_SLSH)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default QWERTY layer
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
|
||||||
|
* │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│
|
||||||
|
* ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
|
||||||
|
* │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │ │PgD│
|
||||||
|
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
|
||||||
|
* │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┐ │CAP│
|
||||||
|
* ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘
|
||||||
|
* │LCtl│OS │LAlt│ Fn │ Space │RAlt│ Ln │ ┌───┼───┼───┐
|
||||||
|
* └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │
|
||||||
|
* └───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_BASE] = LAYOUT_split_space(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_PGUP,
|
||||||
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RS_SLS, KC_UP, KC_CAPS,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPACE, KC_RALT, MO(_LN), KC_LEFT, KC_DOWN, KC_RIGHT
|
||||||
|
),
|
||||||
|
/* Main Numbers, Symbols & Function Layer (MOMENTARY)
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
|
||||||
|
* │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │ │ │Hme│
|
||||||
|
* ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
|
||||||
|
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │End│
|
||||||
|
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
|
||||||
|
* │ │ ( │ ) │ ; │ . │ │ - │ + │ * │ / │ = │ ┌───┐ │ │
|
||||||
|
* ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
|
||||||
|
* │ │ │ │ │ │ │ │ ┌───┼───┼───┐
|
||||||
|
* └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │
|
||||||
|
* └───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FN] = LAYOUT_split_space(
|
||||||
|
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_HOME,
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENTER, KC_END,
|
||||||
|
_______, KC_LPRN, KC_RPRN, KC_SCLN, KC_DOT, _______, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_EQL, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* ALTERNATE Function layer (MOMENTARY)
|
||||||
|
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
|
||||||
|
* │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │ │ │ │ │PRV│NXT│ │VL+│
|
||||||
|
* ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
|
||||||
|
* │ SLP │F7 │F8 │F9 │F10│F11│F12│ │ │ │ │ PLAY │ │VL-│
|
||||||
|
* ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
|
||||||
|
* │ WAKE │ │ │ │ │ │ │ │ │ │ │ ┌───┐ │ │
|
||||||
|
* ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
|
||||||
|
* │RSET│ │ │ │ │ │ │ ┌───┼───┼───┐
|
||||||
|
* └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │
|
||||||
|
* └───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_LN] = LAYOUT_split_space(
|
||||||
|
KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLU,
|
||||||
|
KC_SLEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_MPLY, KC_VOLD,
|
||||||
|
KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
//function for layer indicator LED
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
writePin(D0, layer_state_cmp(state, 0));
|
||||||
|
writePin(D1, layer_state_cmp(state, 1));
|
||||||
|
writePin(D2, layer_state_cmp(state, 2));
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Alec Penland
|
||||||
|
Copyright 2020 Garret Gartner
|
||||||
|
|
||||||
|
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 names
|
||||||
|
enum ats_layers{
|
||||||
|
// - Base layer:
|
||||||
|
_BASE,
|
||||||
|
// - Symbols, numbers, and functions:
|
||||||
|
_FN,
|
||||||
|
// - Alternate Function layer:
|
||||||
|
_LN
|
||||||
|
};
|
||||||
|
|
||||||
|
#define RS_SLS RSFT_T(KC_SLSH)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default QWERTY layer
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
|
||||||
|
* │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│
|
||||||
|
* ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
|
||||||
|
* │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │ │PgD│
|
||||||
|
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
|
||||||
|
* │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┐ │CAP│
|
||||||
|
* ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘
|
||||||
|
* │LCtl│OS │LAlt│ Fn │ Space │RAlt│ Ln │ ┌───┼───┼───┐
|
||||||
|
* └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │
|
||||||
|
* └───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_BASE] = LAYOUT_split_space(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_PGUP,
|
||||||
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RS_SLS, KC_UP, KC_CAPS,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPACE, KC_RALT, MO(_LN), KC_LEFT, KC_DOWN, KC_RIGHT
|
||||||
|
),
|
||||||
|
/* Main Numbers, Symbols & Function Layer (MOMENTARY)
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
|
||||||
|
* │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │ │ │Hme│
|
||||||
|
* ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
|
||||||
|
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │End│
|
||||||
|
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
|
||||||
|
* │ │ ( │ ) │ ; │ . │ │ - │ + │ * │ / │ = │ ┌───┐ │ │
|
||||||
|
* ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
|
||||||
|
* │ │ │ │ │ │ │ │ ┌───┼───┼───┐
|
||||||
|
* └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │
|
||||||
|
* └───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FN] = LAYOUT_split_space(
|
||||||
|
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_HOME,
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENTER, KC_END,
|
||||||
|
_______, KC_LPRN, KC_RPRN, KC_SCLN, KC_DOT, _______, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_EQL, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* ALTERNATE Function layer (MOMENTARY)
|
||||||
|
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
|
||||||
|
* │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │ │ │ │ │PRV│NXT│ │VL+│
|
||||||
|
* ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
|
||||||
|
* │ SLP │F7 │F8 │F9 │F10│F11│F12│ │ │ │ │ PLAY │ │VL-│
|
||||||
|
* ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
|
||||||
|
* │ WAKE │ │ │ │ │ │ │ │ │ │ │ ┌───┐ │ │
|
||||||
|
* ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
|
||||||
|
* │RSET│ │ │ │ │ │ │ ┌───┼───┼───┐
|
||||||
|
* └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │
|
||||||
|
* └───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_LN] = LAYOUT_split_space(
|
||||||
|
KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLU,
|
||||||
|
KC_SLEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_MPLY, KC_VOLD,
|
||||||
|
KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
//function for layer indicator LED
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
writePin(D0, layer_state_cmp(state, 0));
|
||||||
|
writePin(D1, layer_state_cmp(state, 1));
|
||||||
|
writePin(D2, layer_state_cmp(state, 2));
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# 45-ATS VIA Firmware
|
||||||
|
|
||||||
|
This keymap is to enable the use of VIA on the 45-ATS Keyboard.
|
||||||
File renamed without changes.
@@ -0,0 +1,16 @@
|
|||||||
|
# 45-ATS
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A Premium and Beautiful 45% (And-Then-Some) Keyboard. Concept and Design by [Abec13](https://www.reddit.com/user/abec13).
|
||||||
|
|
||||||
|
- Keyboard Designer: [Abec13](https://reddit.com/u/abec13/)
|
||||||
|
- Keyboard Maintainer: [The-Royal](https://github.com/the-royal)
|
||||||
|
- Hardware Supported: 45-ATS v1.0 PCB
|
||||||
|
- Hardware Availability: Through Group Buy - Dec. 2019
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make 45_ats: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,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
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
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
Copyright 2020 Salicylic_Acid
|
||||||
|
|
||||||
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
|
||||||
@@ -14,11 +14,4 @@ GNU General Public License for more details.
|
|||||||
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/>.
|
||||||
*/
|
*/
|
||||||
|
#include "7splus.h"
|
||||||
#include "hal.h"
|
|
||||||
|
|
||||||
#include "led.h"
|
|
||||||
|
|
||||||
|
|
||||||
void led_set(uint8_t usb_led) {
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Salicylic_Acid
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ,-------------------------------------- ----------------------------------------------------------.
|
||||||
|
* | L00 | L01 | L02 | L03 | L04 | L05 | | R00 | R01 | R02 | R03 | R04 | R05 | R06 | R07 | R60 |
|
||||||
|
* |-------------------------------------- ------------------------------------------------------------+
|
||||||
|
* | L10 | L11 | L12 | L13 | L14 | L15 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R17 | R62 |
|
||||||
|
* |---------------------------------------------------------------------------------------------------+
|
||||||
|
* | L20 | L21 | L22 | L23 | L24 | L25 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 | R27 | R63 |
|
||||||
|
* |---------------------------------------- ---------------------------------------------------------+
|
||||||
|
* | L30 | L31 | L32 | L33 | L34 | L35 | | R30 | R31 | R32 | R33 | R34 | R35 | R36 | R37 |
|
||||||
|
* |---------------------------------------------------------------------------------------------------+
|
||||||
|
* | L40 | L41 | L42 | L43 | L44 | L45 | | R40 | R41 | R42 | R43 | R44 | R45 | R47 | R57 |
|
||||||
|
* |---------------------------------------------------------------------------------------------------+
|
||||||
|
* | L50 | L51 | L52 | L53 | L54 | L55 | | R50 | R51 | R53 | R54 | R55 | R56 | R64 |
|
||||||
|
* |---------------------------------------- ------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, R60, \
|
||||||
|
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R62, \
|
||||||
|
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R27, R63, \
|
||||||
|
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, R37, \
|
||||||
|
L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, R47, R57, \
|
||||||
|
L50, L51, L52, L54, L55, R50, R51, R53, R54, R55, R56, R64 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L00, L01, L02, L03, L04, L05, KC_NO, KC_NO }, \
|
||||||
|
{ L10, L11, L12, L13, L14, L15, KC_NO, KC_NO }, \
|
||||||
|
{ L20, L21, L22, L23, L24, L25, KC_NO, KC_NO }, \
|
||||||
|
{ L30, L31, L32, L33, L34, L35, KC_NO, KC_NO }, \
|
||||||
|
{ L40, L41, L42, L43, L44, L45, KC_NO, KC_NO }, \
|
||||||
|
{ L50, L51, L52, KC_NO, L54, L55, KC_NO, KC_NO }, \
|
||||||
|
{KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, R06, R07 }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, R16, R17 }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25, R26, R27 }, \
|
||||||
|
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
|
||||||
|
{ R40, R41, R42, R43, R44, R45, KC_NO, R47 }, \
|
||||||
|
{ R50, R51, KC_NO, R53, R54, R55, R56, R57 }, \
|
||||||
|
{ R60, KC_NO, R62, R63, R64, KC_NO, KC_NO, KC_NO } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Salicylic_acid3
|
||||||
|
|
||||||
|
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 0x04D8
|
||||||
|
#define PRODUCT_ID 0xEAE7
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Salicylic_Acid
|
||||||
|
#define PRODUCT 7splus
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 14
|
||||||
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B5 }
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* serial.c configuration for split keyboard */
|
||||||
|
#define SOFT_SERIAL_PIN D2
|
||||||
|
#define SPLIT_HAND_PIN B6
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
|
||||||
|
#ifndef RGBLED_NUM
|
||||||
|
#define RGBLED_NUM 31
|
||||||
|
#define RGBLIGHT_SPLIT
|
||||||
|
#define RGBLED_SPLIT { 11, 20 }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
#ifndef IOS_DEVICE_ENABLE
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 180
|
||||||
|
#define RGBLIGHT_VAL_STEP 17
|
||||||
|
#else
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 50
|
||||||
|
#define RGBLIGHT_VAL_STEP 4
|
||||||
|
#endif
|
||||||
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
||||||
|
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
||||||
|
// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
|
||||||
|
// 120 RGBoff, OLEDoff
|
||||||
|
// 120 OLED
|
||||||
|
// 330 RGB 6
|
||||||
|
// 300 RGB 32
|
||||||
|
// 310 OLED & RGB 32
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 400
|
||||||
|
#else
|
||||||
|
// fix iPhone and iPad power adapter issue
|
||||||
|
// iOS device need lessthan 100
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 100
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "7splus",
|
||||||
|
"url": "https://salicylic-acid3.hatenablog.com/",
|
||||||
|
"maintainer": "Salicylic_acid3",
|
||||||
|
"width": 17,
|
||||||
|
"height": 6.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"F1", "x":1.25, "y":0},
|
||||||
|
{"label":"F2", "x":2.25, "y":0},
|
||||||
|
{"label":"F3", "x":3.25, "y":0},
|
||||||
|
{"label":"F4", "x":4.25, "y":0},
|
||||||
|
{"label":"F5", "x":5.5, "y":0},
|
||||||
|
{"label":"F6", "x":7.5, "y":0},
|
||||||
|
{"label":"F7", "x":8.5, "y":0},
|
||||||
|
{"label":"F8", "x":9.5, "y":0},
|
||||||
|
{"label":"F9", "x":10.75, "y":0},
|
||||||
|
{"label":"F10", "x":11.75, "y":0},
|
||||||
|
{"label":"F11", "x":12.75, "y":0},
|
||||||
|
{"label":"F12", "x":13.75, "y":0},
|
||||||
|
{"label":"PrtScr", "x":15, "y":0},
|
||||||
|
{"label":"Delete", "x":16, "y":0},
|
||||||
|
{"label":"~", "x":0, "y":1.25},
|
||||||
|
{"label":"1", "x":1, "y":1.25},
|
||||||
|
{"label":"2", "x":2, "y":1.25},
|
||||||
|
{"label":"3", "x":3, "y":1.25},
|
||||||
|
{"label":"4", "x":4, "y":1.25},
|
||||||
|
{"label":"5", "x":5, "y":1.25},
|
||||||
|
{"label":"6", "x":7, "y":1.25},
|
||||||
|
{"label":"7", "x":8, "y":1.25},
|
||||||
|
{"label":"8", "x":9, "y":1.25},
|
||||||
|
{"label":"9", "x":10, "y":1.25},
|
||||||
|
{"label":"0", "x":11, "y":1.25},
|
||||||
|
{"label":"-", "x":12, "y":1.25},
|
||||||
|
{"label":"=", "x":13, "y":1.25},
|
||||||
|
{"label":"Back Space", "x":14, "y":1.25, "w":2},
|
||||||
|
{"label":"Home", "x":16, "y":1.25},
|
||||||
|
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":2.25},
|
||||||
|
{"label":"W", "x":2.5, "y":2.25},
|
||||||
|
{"label":"E", "x":3.5, "y":2.25},
|
||||||
|
{"label":"R", "x":4.5, "y":2.25},
|
||||||
|
{"label":"T", "x":5.5, "y":2.25},
|
||||||
|
{"label":"Y", "x":7.5, "y":2.25},
|
||||||
|
{"label":"U", "x":8.5, "y":2.25},
|
||||||
|
{"label":"I", "x":9.5, "y":2.25},
|
||||||
|
{"label":"O", "x":10.5, "y":2.25},
|
||||||
|
{"label":"P", "x":11.5, "y":2.25},
|
||||||
|
{"label":"[", "x":12.5, "y":2.25},
|
||||||
|
{"label":"]", "x":13.5, "y":2.25},
|
||||||
|
{"label":"\"", "x":14.5, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Page Up", "x":16, "y":2.25},
|
||||||
|
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":3.25},
|
||||||
|
{"label":"S", "x":2.75, "y":3.25},
|
||||||
|
{"label":"D", "x":3.75, "y":3.25},
|
||||||
|
{"label":"F", "x":4.75, "y":3.25},
|
||||||
|
{"label":"G", "x":5.75, "y":3.25},
|
||||||
|
{"label":"H", "x":7.75, "y":3.25},
|
||||||
|
{"label":"J", "x":8.75, "y":3.25},
|
||||||
|
{"label":"K", "x":9.75, "y":3.25},
|
||||||
|
{"label":"L", "x":10.75, "y":3.25},
|
||||||
|
{"label":":", "x":11.75, "y":3.25},
|
||||||
|
{"label":"'", "x":12.75, "y":3.25},
|
||||||
|
{"label":"Enter", "x":13.75, "y":3.25, "w":2.25},
|
||||||
|
{"label":"Page Down", "x":16, "y":3.25},
|
||||||
|
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
|
||||||
|
{"label":"Z", "x":2.25, "y":4.25},
|
||||||
|
{"label":"X", "x":3.25, "y":4.25},
|
||||||
|
{"label":"C", "x":4.25, "y":4.25},
|
||||||
|
{"label":"V", "x":5.25, "y":4.25},
|
||||||
|
{"label":"B", "x":6.25, "y":4.25},
|
||||||
|
{"label":"N", "x":8.25, "y":4.25},
|
||||||
|
{"label":"M", "x":9.25, "y":4.25},
|
||||||
|
{"label":"<", "x":10.25, "y":4.25},
|
||||||
|
{"label":">", "x":11.25, "y":4.25},
|
||||||
|
{"label":"?", "x":12.25, "y":4.25},
|
||||||
|
{"label":"Shift","x":13.25, "y":4.25, "w":1.75},
|
||||||
|
{"label":"Up", "x":15, "y":4.25},
|
||||||
|
{"label":"End", "x":16, "y":4.25},
|
||||||
|
{"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
|
||||||
|
{"x":3.75, "y":5.25, "w":2},
|
||||||
|
{"x":5.75, "y":5.25},
|
||||||
|
{"x":7.75, "y":5.25},
|
||||||
|
{"x":8.75, "y":5.25, "w":2.75},
|
||||||
|
{"label":"Alt", "x":11.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"App", "x":12.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Left", "x":14, "y":5.25},
|
||||||
|
{"label":"Down", "x":15, "y":5.25},
|
||||||
|
{"label":"Right", "x":16, "y":5.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Salicylic_Acid
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
enum layer_number {
|
||||||
|
_QWERTY = 0,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
RGB_RST = SAFE_RANGE
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
LT(_ADJUST,KC_GRV),KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
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_PGDN,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN,KC_RIGHT
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
[_ADJUST] = LAYOUT( /* Base */
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
MO(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
case RGB_RST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
uint8_t mode = rgblight_get_mode();
|
||||||
|
eeconfig_update_rgblight_default();
|
||||||
|
rgblight_enable();
|
||||||
|
rgblight_mode(mode);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright 2020 Salicylic_acid3
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* Select hand configuration */
|
||||||
|
|
||||||
|
#define TAPPING_FORCE_HOLD
|
||||||
|
#define TAPPING_TERM 180
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Salicylic_Acid
|
||||||
|
|
||||||
|
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
|
||||||
|
#include "keymap_jp.h"
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
enum layer_number {
|
||||||
|
_QWERTY = 0,
|
||||||
|
_MOUSE,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
RGB_RST = SAFE_RANGE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum tapdances{
|
||||||
|
TD_ESMS = 0,
|
||||||
|
TD_ESAR,
|
||||||
|
};
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[TD_ESMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _MOUSE),
|
||||||
|
[TD_ESAR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
TD(TD_ESMS), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_EQL, KC_BSPC, KC_HOME,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, JP_RBRC, JP_BSLS, KC_PGUP,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_ZKHK, KC_LGUI,ALT_T(KC_MHEN),LT(_LOWER,KC_ENT),KC_BSPC, KC_DEL,LT(_RAISE,KC_SPC), ALT_T(KC_HENK), KC_APP, KC_LEFT, KC_DOWN,KC_RIGHT
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_MOUSE] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
TD(TD_ESAR), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCTL(KC_W),
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCTL(LSFT(KC_T)),
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, _______, KC_HOME,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
LCTL_T(JP_QUOT),JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, KC_END,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
SFT_T(JP_CIRC),JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, KC_UP, KC_PGUP,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, MO(_LOWER), _______, _______,MO(_RAISE), _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, XXXXXXX, _______, _______, KC_HOME,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
LCTL_T(KC_F11),XXXXXXX, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX, XXXXXXX, _______, KC_END,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, _______, KC_UP, KC_PGUP,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ADJUST] = LAYOUT( /* Base */
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
//A description for expressing the layer position in LED mode.
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
case RGB_RST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
uint8_t mode = rgblight_get_mode();
|
||||||
|
eeconfig_update_rgblight_default();
|
||||||
|
rgblight_enable();
|
||||||
|
rgblight_mode(mode);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
|
MOUSEKEY_ENABLE = yes
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/* Copyright 2020 Salicylic_acid3
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* Select hand configuration */
|
||||||
|
|
||||||
|
#define TAPPING_FORCE_HOLD
|
||||||
|
#define TAPPING_TERM 180
|
||||||
|
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Salicylic_Acid
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
LT(1,KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
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_PGDN,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN,KC_RIGHT
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
[1] = LAYOUT( /* Base */
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
MO(1), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
[2] = LAYOUT(
|
||||||
|
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//`-----------------------------------------------------| |--------------------------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# 7sPlus
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is 85 keys Custom keyboard.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
|
||||||
|
* Hardware Supported: 7sPlus PCB, Pro Micro
|
||||||
|
* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/2425503)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make 7splus: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).
|
||||||
|
|
||||||
|
[Build guide](https://salicylic-acid3.hatenablog.com/entry/7splus-build-guide)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
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
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
/* Copyright (C) 2020 Sendy YK (https://mr.sendyyk.com).
|
/*
|
||||||
|
* ai03 Soyuz VIA Keymap
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020 Sendy YK <https://mr.sendyyk.com>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@@ -13,7 +16,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 <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
enum layer_names {
|
enum layer_names {
|
||||||
@@ -34,26 +37,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
),
|
),
|
||||||
// Fn Layer 1
|
// Fn Layer 1
|
||||||
[_FN] = LAYOUT_ortho_5x4(
|
[_FN] = LAYOUT_ortho_5x4(
|
||||||
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
|
_______, _______, _______, _______
|
||||||
),
|
),
|
||||||
// Fn Layer 2
|
// Fn Layer 2
|
||||||
[_FN2] = LAYOUT_ortho_5x4(
|
[_FN2] = LAYOUT_ortho_5x4(
|
||||||
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
|
_______, _______, _______, _______
|
||||||
),
|
),
|
||||||
// Fn Layer 3
|
// Fn Layer 3
|
||||||
[_FN3] = LAYOUT_ortho_5x4(
|
[_FN3] = LAYOUT_ortho_5x4(
|
||||||
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
|
_______, _______, _______, _______
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
* ├───┴───┼───┤43 │
|
* ├───┴───┼───┤43 │
|
||||||
* │41 │42 │ │
|
* │41 │42 │ │
|
||||||
* └───────┴───┴───┘
|
* └───────┴───┴───┘
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LAYOUT_numpad_5x4( \
|
#define LAYOUT_numpad_5x4( \
|
||||||
k00, k01, k02, k03, \
|
k00, k01, k02, k03, \
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 <[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"
|
||||||
|
|
||||||
|
#define VENDOR_ID 0xA103
|
||||||
|
#define PRODUCT_ID 0x060A
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER ai03
|
||||||
|
#define PRODUCT Voyager60-Alps
|
||||||
|
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3}
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||||
|
*/
|
||||||
|
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||||
|
|
||||||
|
// define BACKLIGHT_PIN B7
|
||||||
|
// define BACKLIGHT_BREATHING
|
||||||
|
// #define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D2
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 14
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// /*== all animations enable ==*/
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
// #define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
// #define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
// #define BOOTMAGIC_LITE_ROW 0
|
||||||
|
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Voyager60-Alps",
|
||||||
|
"url": "https://github.com/ai03-2725/Voyager60/tree/alps",
|
||||||
|
"maintainer": "ai03",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"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":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 <[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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT( /* Base */
|
||||||
|
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_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_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_NO, MO(1), KC_RALT, KC_RCTL
|
||||||
|
),
|
||||||
|
[1] = LAYOUT( /* Fn */
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL,
|
||||||
|
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# Default keymap
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 <[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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT( /* Base */
|
||||||
|
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_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_BSLS,
|
||||||
|
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_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(1),
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, _______, KC_RGUI, KC_RALT, KC_RCTL
|
||||||
|
),
|
||||||
|
[1] = LAYOUT( /* FN */
|
||||||
|
RESET, 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_DEL,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[2] = LAYOUT( /* Blank. For VIA compatibility */
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[3] = LAYOUT( /* Blank. For VIA compatibility */
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# VIA Keymap
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# Voyager60-Alps
|
||||||
|
A fully featured Alps-specific 60% PCB
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Features
|
||||||
|
* RGB underglow
|
||||||
|
* Decent amount of layout compatibility - [View supported layouts](http://www.keyboard-layout-editor.com/#/gists/c867bdba7e5ae8be282f77a242bacf66)
|
||||||
|
* Slot cutout for maximum flexibility and typing comfort
|
||||||
|
* Over-current and static discharge protection
|
||||||
|
* Fully open-source
|
||||||
|
|
||||||
|
### Additional Information
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
|
||||||
|
* Hardware Supported: Voyager60-Alps PCB
|
||||||
|
* Hardware Availability: [Gerbers](https://github.com/ai03-2725/Voyager60/tree/alps)
|
||||||
|
|
||||||
|
### Building the Firmware
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make ai03/voyager60_alps: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,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 <[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 "voyager60_alps.h"
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 <[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( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
|
||||||
|
K400, K401, K402, K404, K406, K408, K410, K411, K412, K413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \
|
||||||
|
{ K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/* Copyright 2020 jakobst1n
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/*****************************
|
||||||
|
* SLEEPMODE CONFIG
|
||||||
|
*****************************/
|
||||||
|
#define SLEEPMODE_ENABLE // see keymap readme for info about this function.
|
||||||
|
|
||||||
|
/* How long the backlight should stay on
|
||||||
|
without any interaction before turning off. */
|
||||||
|
#define SLEEPMODE_TIMEOUT 10 // in minutes
|
||||||
|
/* Which mode we should enter after the timeout,
|
||||||
|
RGB_MATRIX_NONE to turn off.
|
||||||
|
I thinks RGB_MATRIX_DIGITAL RAIN is pretty :) */
|
||||||
|
#define SLEEPMODE_RGB_MODE RGB_MATRIX_NONE
|
||||||
|
/* The desired animation speed when in "sleep mode" */
|
||||||
|
#define SLEEPMODE_RGB_ANIMATION_SPEED 10
|
||||||
|
/* The desired brightness when in "sleep mode" */
|
||||||
|
#define SLEEPMODE_RGB_VAL 10
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
/* Copyright 2020 jakobst1n
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
#ifdef SLEEPMODE_ENABLE
|
||||||
|
/* A bunch of vars to keep track of the rgb states
|
||||||
|
before sleepmode is turned on */
|
||||||
|
static bool sleepmode_on = false;
|
||||||
|
static uint8_t sleepmode_before_mode = -1;
|
||||||
|
static uint8_t sleepmode_before_brightness = -1;
|
||||||
|
static uint8_t sleepmode_before_anim_speed = -1;
|
||||||
|
static uint8_t halfmin_counter = 0;
|
||||||
|
static uint16_t idle_timer = 0;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* ,-----------------------------------------------------------.
|
||||||
|
* |ESC| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | ´ | BACK |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | Å | ¨ | RET |
|
||||||
|
* |------------------------------------------------------\ |
|
||||||
|
* | CAPS | A | S | D | F | G | H | J | K | L | Ø | Æ | @ | |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* | ^ | < | Z | X | C | V | B | N | M | , | . | ^/- | U | - |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* |ctrl| win| alt| |alt| fn| L | D | R |
|
||||||
|
* `-----------------------------------------------------------' */
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT(MOD_RSFT, KC_SLSH), KC_UP, KC_SLSH,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, OSL(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
/* ,-----------------------------------------------------------.
|
||||||
|
* |GRA| f1| f2| f3| f4| f5| f6| f7| f8| f9|f10|f11|f12| DEL |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* | | R | R | R | R | R | R | R | R | | | | | |
|
||||||
|
* |------------------------------------------------------\ |
|
||||||
|
* | | | | | | | H |PGD|PGU| E | | | | |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* | | | | | | | | | | | | |V_D|V_U|
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* | | | | | |PRE|PLA|NEX|
|
||||||
|
* `-----------------------------------------------------------' */
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
#if defined(RGB_MATRIX_ENABLE) && defined(SLEEPMODE_ENABLE)
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (sleepmode_before_mode == -1) { sleepmode_before_mode = rgb_matrix_get_mode(); }
|
||||||
|
if (sleepmode_before_brightness == -1) { sleepmode_before_brightness = rgb_matrix_get_val(); }
|
||||||
|
if (sleepmode_before_anim_speed == -1) { sleepmode_before_anim_speed = rgb_matrix_get_speed(); }
|
||||||
|
|
||||||
|
if (sleepmode_on == true) {
|
||||||
|
// rgb_matrix_enable_noeeprom();
|
||||||
|
rgb_matrix_mode_noeeprom(sleepmode_before_mode);
|
||||||
|
rgb_matrix_set_speed_noeeprom(sleepmode_before_anim_speed);
|
||||||
|
rgb_matrix_sethsv_noeeprom(rgb_matrix_get_hue(), rgb_matrix_get_sat(), sleepmode_before_brightness);
|
||||||
|
sleepmode_on = false;
|
||||||
|
}
|
||||||
|
idle_timer = timer_read();
|
||||||
|
halfmin_counter = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
#if defined(RGB_MATRIX_ENABLE) && defined(SLEEPMODE_ENABLE)
|
||||||
|
/* idle_timer needs to be set one time */
|
||||||
|
if (idle_timer == 0) idle_timer = timer_read();
|
||||||
|
|
||||||
|
if ( !sleepmode_on && timer_elapsed(idle_timer) > 30000) {
|
||||||
|
halfmin_counter++;
|
||||||
|
idle_timer = timer_read();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !sleepmode_on && halfmin_counter >= SLEEPMODE_TIMEOUT * 2) {// * 2) {
|
||||||
|
layer_clear();
|
||||||
|
sleepmode_before_anim_speed = rgb_matrix_get_speed();
|
||||||
|
sleepmode_before_brightness = rgb_matrix_get_val();
|
||||||
|
sleepmode_before_mode = rgb_matrix_get_mode();
|
||||||
|
//rgb_matrix_disable_noeeprom();
|
||||||
|
|
||||||
|
rgb_matrix_mode_noeeprom(SLEEPMODE_RGB_MODE);
|
||||||
|
rgb_matrix_set_speed_noeeprom(SLEEPMODE_RGB_ANIMATION_SPEED);
|
||||||
|
rgb_matrix_sethsv_noeeprom(rgb_matrix_get_hue(), rgb_matrix_get_sat(), SLEEPMODE_RGB_VAL);
|
||||||
|
sleepmode_on = true;
|
||||||
|
halfmin_counter = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Nordic keymap for BM60rgb_iso
|
||||||
|
Very few changes from default keyboard, apart from the button right of leftshift,
|
||||||
|
and adding some more buttons on the second layer (function keys, home/end, pg up/down and media keys).
|
||||||
|
|
||||||
|
On the default layout, the top left button is RESET on the second layer,
|
||||||
|
this board has a reset button on the back. So I feel like it serves a better
|
||||||
|
purpose as the grave key (because grave-escape doesn't really
|
||||||
|
work with mac and norwegian layout). It could of course also be on the base layer.
|
||||||
|
But as a regular vim user I use escape more than the grave key.
|
||||||
|
|
||||||
|
I have also added mod-tap to the right shift, with the "default" position for
|
||||||
|
`KC_SLSH` beeing on the far right, that works fine.
|
||||||
|
|
||||||
|
There is also a "sleep-mode" function added,
|
||||||
|
this can be enabled defining `SLEEPMODE_ENABLE` in `config.h`.
|
||||||
|
This makes the keyboard backlight turn off after 10 minutes without any
|
||||||
|
keypresses, and turn on again on keypress. (This is something different than `USB_SUSPEND`)
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 boardsource
|
||||||
|
|
||||||
|
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 0x4273
|
||||||
|
#define PRODUCT_ID 0x1031
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Boardsource
|
||||||
|
#define PRODUCT spooky
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 2
|
||||||
|
#define MATRIX_COLS 3
|
||||||
|
|
||||||
|
#define DIRECT_PINS { {E6,B4,B5}, {B3,B2,B6}}
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#define RGBLED_NUM 5 // Number of LEDs
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//#define BACKLIGHT_PIN B7
|
||||||
|
//#define BACKLIGHT_LEVELS 3
|
||||||
|
//#define BACKLIGHT_BREATHING
|
||||||
|
|
||||||
|
//#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
|
||||||
|
/*== customize breathing effect ==*/
|
||||||
|
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
/*==== use exp() and sin() ====*/
|
||||||
|
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
//#define BOOTMAGIC_LITE_ROW 0
|
||||||
|
//#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "spooky",
|
||||||
|
"url": "https://boardsource.xyz/store/5f783f6da2c1b43e37ca0795",
|
||||||
|
"maintainer": "boardsource",
|
||||||
|
"width": 3,
|
||||||
|
"height": 2,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{ "label": "k00", "x": 0, "y": 0 },
|
||||||
|
{ "label": "k01", "x": 1, "y": 0 },
|
||||||
|
{ "label": "k02", "x": 2, "y": 0 },
|
||||||
|
|
||||||
|
{ "label": "k10", "x": 0, "y": 1 },
|
||||||
|
{ "label": "k11", "x": 1, "y": 1 },
|
||||||
|
{ "label": "k12", "x": 2, "y": 1 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright 2020 boardsource
|
||||||
|
*
|
||||||
|
* 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 names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base */
|
||||||
|
[_BASE] = LAYOUT_ortho_2x3(
|
||||||
|
KC_F1, KC_F2, KC_F3,
|
||||||
|
KC_F4, KC_F5,KC_F6
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/* Copyright 2020 boardsource
|
||||||
|
*
|
||||||
|
* 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 names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base */
|
||||||
|
[_BASE] = LAYOUT_ortho_2x3(
|
||||||
|
RGB_TOG, KC_VOLU, KC_F2,
|
||||||
|
RGB_MOD, KC_VOLD, KC_F1
|
||||||
|
),
|
||||||
|
};
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
return OLED_ROTATION_180;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_RIP(void) {
|
||||||
|
static const char PROGMEM my_logo[] = {
|
||||||
|
0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82,
|
||||||
|
0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0,
|
||||||
|
0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10,
|
||||||
|
0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff,
|
||||||
|
0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98,
|
||||||
|
0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00,
|
||||||
|
0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00,
|
||||||
|
0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18,
|
||||||
|
0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10,
|
||||||
|
0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e,
|
||||||
|
0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0,
|
||||||
|
0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18,
|
||||||
|
0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30,
|
||||||
|
0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18,
|
||||||
|
0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0,
|
||||||
|
0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7,
|
||||||
|
0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82,
|
||||||
|
0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0,
|
||||||
|
0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08,
|
||||||
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc,
|
||||||
|
0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70,
|
||||||
|
0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0x60, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
render_RIP();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
OLED_DRIVER_ENABLE = yes
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/* Copyright 2020 boardsource
|
||||||
|
*
|
||||||
|
* 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 names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base */
|
||||||
|
[_BASE] = LAYOUT_ortho_2x3(
|
||||||
|
RGB_TOG, KC_1, KC_2,
|
||||||
|
RGB_MOD, KC_3,KC_4
|
||||||
|
),
|
||||||
|
};
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
return OLED_ROTATION_180;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_RIP(void) {
|
||||||
|
static const char PROGMEM my_logo[] = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x08, 0x04,
|
||||||
|
0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00,
|
||||||
|
0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00,
|
||||||
|
0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02,
|
||||||
|
0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08,
|
||||||
|
0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0,
|
||||||
|
0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00,
|
||||||
|
0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00,
|
||||||
|
0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 0x08, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
|
||||||
|
0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00,
|
||||||
|
0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0,
|
||||||
|
0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c,
|
||||||
|
0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 0xf0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
|
||||||
|
0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00,
|
||||||
|
0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03,
|
||||||
|
0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c,
|
||||||
|
0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
render_RIP();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
OLED_DRIVER_ENABLE = yes
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# spooky
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
this is a limited edition macro pad for the spookiest time of year
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [boardsource](https://github.com/boardsource)
|
||||||
|
* Hardware Supported: spooky v1 PCB
|
||||||
|
* Hardware Availability: [From Boardsource store around halloween time](https://boardsource.xyz/store/5f783f6da2c1b43e37ca0795)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make boardsource/holiday/spooky: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,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# 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
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 boardsource
|
||||||
|
*
|
||||||
|
* 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 "spooky.h"
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/* Copyright 2020 boardsource
|
||||||
|
*
|
||||||
|
* 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 is 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_ortho_2x3( \
|
||||||
|
k00, k01, k02, \
|
||||||
|
k10, k11, k12 \
|
||||||
|
) { \
|
||||||
|
{ k00, k01, k02 }, \
|
||||||
|
{ k10, k11, k12 } \
|
||||||
|
}
|
||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <[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
|
#pragma once
|
||||||
|
|
||||||
// place overrides here
|
// place overrides here
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <[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 "drashna.h"
|
#include "drashna.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
# The logo keymap for drakon
|
|
||||||
@@ -1,248 +0,0 @@
|
|||||||
/* Copyright 2020 jagdpietr
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
char wpm_str[10];
|
|
||||||
|
|
||||||
// Defines names for use in layer keycodes and the keymap
|
|
||||||
enum Layer_names {
|
|
||||||
_Base,
|
|
||||||
_FN,
|
|
||||||
_Lyr2
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_Base] = LAYOUT_wkl(
|
|
||||||
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_DEL, KC_MUTE,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MPRV, KC_MPLY, KC_MNXT,
|
|
||||||
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_MSTP,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
|
||||||
KC_LCTL, KC_LALT, KC_SPC, KC_APP, MO(_FN), KC_LEFT, KC_DOWN, KC_RIGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[_FN] = LAYOUT_wkl(
|
|
||||||
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, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
|
|
||||||
),
|
|
||||||
|
|
||||||
[_Lyr2] = LAYOUT_wkl(
|
|
||||||
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_DEL, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
|
|
||||||
)
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
|
||||||
|
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
|
||||||
return OLED_ROTATION_90; // flips the display 90 degrees if offhand
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_status(void) {
|
|
||||||
//Host Keyboard Layer Status
|
|
||||||
oled_set_cursor(0,10);
|
|
||||||
oled_write_P(PSTR("Lyr: "), false);
|
|
||||||
|
|
||||||
switch (get_highest_layer(layer_state)) {
|
|
||||||
case _Base:
|
|
||||||
oled_write_P(PSTR("Base\n"), false);
|
|
||||||
break;
|
|
||||||
case _FN:
|
|
||||||
oled_write_P(PSTR("FN\n"), false);
|
|
||||||
break;
|
|
||||||
case _Lyr2:
|
|
||||||
oled_write_P(PSTR("Lyr2\n"), false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Or use the write_ln shortcut over adding '\n' to the end of your string
|
|
||||||
oled_write_ln_P(PSTR("Undefined"), false);
|
|
||||||
}
|
|
||||||
// Host Keyboard LED Status
|
|
||||||
led_t led_state = host_keyboard_led_state();
|
|
||||||
oled_set_cursor(0,12);
|
|
||||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// WPM-responsive animation stuff here
|
|
||||||
#define IDLE_FRAMES 5
|
|
||||||
#define IDLE_SPEED 40 // below this wpm value your animation will idle
|
|
||||||
|
|
||||||
// #define PREP_FRAMES 1 // uncomment if >1
|
|
||||||
|
|
||||||
#define TAP_FRAMES 2
|
|
||||||
#define TAP_SPEED 60 // above this wpm value typing animation to triggere
|
|
||||||
|
|
||||||
#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
|
|
||||||
// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
|
|
||||||
#define ANIM_SIZE 128 // number of bytes in array, minimize for adequate firmware size, max is 1024
|
|
||||||
|
|
||||||
uint32_t anim_timer = 0;
|
|
||||||
uint32_t anim_sleep = 0;
|
|
||||||
uint8_t current_idle_frame = 0;
|
|
||||||
// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
|
|
||||||
uint8_t current_tap_frame = 0;
|
|
||||||
|
|
||||||
// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
|
|
||||||
static void render_anim(void) {
|
|
||||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x60,
|
|
||||||
0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x0c, 0x06, 0x03, 0x81, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x04, 0x0c, 0x18, 0x10, 0x18, 0x08, 0xf8, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x3e, 0x23, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x30, 0x21, 0x21, 0x63, 0x43, 0x42,
|
|
||||||
0xc0, 0x80, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x73, 0xc0, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x05, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x06, 0x04, 0x0c, 0x08, 0x0b, 0x08, 0x00
|
|
||||||
},
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x60, 0x30, 0x10, 0x08, 0x04, 0x04, 0x06, 0x01, 0x01, 0x06,
|
|
||||||
0x04, 0x0c, 0x08, 0x18, 0x10, 0x30, 0x20, 0x40, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0x00, 0x00,
|
|
||||||
0xe0, 0x98, 0x04, 0x03, 0x01, 0x80, 0x80, 0x80, 0x80, 0x84, 0x86, 0x80, 0x08, 0x18, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x78, 0x87, 0x00, 0x00,
|
|
||||||
0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02,
|
|
||||||
0x02, 0x02, 0x0e, 0x3e, 0x20, 0x20, 0x20, 0x10, 0x10, 0x18, 0x18, 0x10, 0x10, 0x33, 0x3e, 0x00
|
|
||||||
},
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x60,
|
|
||||||
0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x0c, 0x06, 0x03, 0x81, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x04, 0x0c, 0x18, 0x10, 0x18, 0x08, 0xf8, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x3e, 0x23, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x30, 0x21, 0x21, 0x63, 0x43, 0x42,
|
|
||||||
0xc0, 0x80, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x73, 0xc0, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x05, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x06, 0x04, 0x0c, 0x08, 0x0b, 0x08, 0x00
|
|
||||||
},
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x60, 0x30, 0x10, 0x08, 0x04, 0x04, 0x06, 0x01, 0x01, 0x06,
|
|
||||||
0x04, 0x0c, 0x08, 0x18, 0x10, 0x30, 0x20, 0x40, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0x00, 0x00,
|
|
||||||
0xe0, 0x98, 0x04, 0x03, 0x01, 0x80, 0x80, 0x80, 0x80, 0x84, 0x86, 0x80, 0x08, 0x18, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x78, 0x87, 0x00, 0x00,
|
|
||||||
0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02,
|
|
||||||
0x02, 0x02, 0x0e, 0x3e, 0x20, 0x20, 0x20, 0x10, 0x10, 0x18, 0x18, 0x10, 0x10, 0x33, 0x3e, 0x00
|
|
||||||
},
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x60,
|
|
||||||
0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x0c, 0x06, 0x03, 0x81, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x04, 0x0c, 0x18, 0x10, 0x18, 0x08, 0xf8, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x3e, 0x23, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x30, 0x21, 0x21, 0x63, 0x43, 0x42,
|
|
||||||
0xc0, 0x80, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x73, 0xc0, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x05, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x06, 0x04, 0x0c, 0x08, 0x0b, 0x08, 0x00
|
|
||||||
}
|
|
||||||
};
|
|
||||||
static const char PROGMEM prep[][ANIM_SIZE] = {
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x30, 0x18, 0x0c, 0x38,
|
|
||||||
0x60, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0xf8, 0x18, 0x0c, 0x0c, 0x38, 0x0c, 0x06, 0x03, 0x01, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x06, 0x04, 0x08, 0x18, 0x30, 0x18, 0x18, 0xf8, 0x00, 0x00,
|
|
||||||
0x00, 0x07, 0x0c, 0x18, 0x18, 0x10, 0x10, 0x10, 0x20, 0x60, 0x61, 0x41, 0x42, 0xc2, 0x86, 0x84,
|
|
||||||
0x80, 0x00, 0x00, 0x18, 0x10, 0xfc, 0x02, 0x02, 0x04, 0x1c, 0x00, 0x00, 0x3e, 0xe1, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
|
|
||||||
0x01, 0x03, 0x03, 0x02, 0x06, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x10, 0x10, 0x30, 0x20, 0x3f, 0x00
|
|
||||||
}
|
|
||||||
};
|
|
||||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x30, 0x18, 0x0c, 0x38,
|
|
||||||
0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xfe, 0xfe, 0x80, 0xc0, 0x60, 0x18, 0x0c, 0x02, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x04, 0x08, 0x10, 0x10, 0x18, 0x08, 0xfc, 0x00, 0x00,
|
|
||||||
0xf9, 0xff, 0xe3, 0xe0, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x60, 0x41, 0x40, 0xc3, 0x82, 0x86, 0x04,
|
|
||||||
0x00, 0x00, 0x00, 0x18, 0x18, 0xfc, 0x06, 0x06, 0x04, 0x38, 0x00, 0x00, 0x1c, 0xe7, 0x00, 0x00,
|
|
||||||
0xf0, 0xfc, 0x03, 0x00, 0x01, 0x07, 0x7c, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
|
||||||
0x01, 0x03, 0x02, 0x02, 0x06, 0x07, 0x04, 0x0c, 0x08, 0x08, 0x18, 0x10, 0x30, 0x21, 0x3f, 0x38
|
|
||||||
},
|
|
||||||
{
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x30, 0x18, 0x0c, 0x38,
|
|
||||||
0x60, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xe0, 0xf8, 0x04, 0x04, 0x0c, 0x3c, 0x06, 0x03, 0x01, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x06, 0x0c, 0x18, 0x98, 0x08, 0x0c, 0xfc, 0x00, 0x00,
|
|
||||||
0x03, 0x07, 0x04, 0x0c, 0x08, 0x08, 0x18, 0x10, 0x10, 0x30, 0x20, 0x20, 0x61, 0x43, 0x43, 0xc2,
|
|
||||||
0x80, 0x80, 0x80, 0x8c, 0x80, 0x00, 0x00, 0xe0, 0xf8, 0x7e, 0x3f, 0x1f, 0x1f, 0x7d, 0x80, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0x70,
|
|
||||||
0x30, 0x38, 0x19, 0x0f, 0x1e, 0x1c, 0x79, 0xf8, 0xe8, 0xc4, 0x84, 0x08, 0x08, 0x18, 0x1f, 0x1c
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
//assumes 1 frame prep stage
|
|
||||||
void animation_phase(void) {
|
|
||||||
if(get_current_wpm() <=IDLE_SPEED){
|
|
||||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
|
||||||
oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
|
|
||||||
}
|
|
||||||
if(get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED){
|
|
||||||
// oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
|
|
||||||
oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
|
|
||||||
}
|
|
||||||
if(get_current_wpm() >=TAP_SPEED){
|
|
||||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
|
||||||
oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(get_current_wpm() != 000) {
|
|
||||||
oled_on(); // not essential but turns on animation OLED with any alpha keypress
|
|
||||||
if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
|
||||||
anim_timer = timer_read32();
|
|
||||||
animation_phase();
|
|
||||||
}
|
|
||||||
anim_sleep = timer_read32();
|
|
||||||
} else {
|
|
||||||
if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
|
|
||||||
oled_off();
|
|
||||||
} else {
|
|
||||||
if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
|
||||||
anim_timer = timer_read32();
|
|
||||||
animation_phase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void oled_task_user(void) {
|
|
||||||
|
|
||||||
render_anim();
|
|
||||||
oled_set_cursor(0,6);
|
|
||||||
sprintf(wpm_str, " WPM: %03d", get_current_wpm());
|
|
||||||
oled_set_cursor(0,5);
|
|
||||||
oled_write(wpm_str, false);
|
|
||||||
|
|
||||||
render_status();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
/*Copyright 2020 Blake Drayson / Draytronics
|
||||||
|
|
||||||
|
Contact [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"
|
||||||
|
|
||||||
|
#define VENDOR_ID 0x4454 //DT for DrayTronics
|
||||||
|
#define PRODUCT_ID 0x5343 //SC for Scarlet
|
||||||
|
#define DEVICE_VER 0x0001 //Version 1
|
||||||
|
#define MANUFACTURER Draytronics
|
||||||
|
#define PRODUCT SCARLET
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 4
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { A0, A1, A2, A3, A4 }
|
||||||
|
#define MATRIX_COL_PINS { A5, A6, A7, C7 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
/* 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
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/*Copyright 2020 Blake Drayson / Draytronics
|
||||||
|
|
||||||
|
Contact [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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_numpad_5x4(
|
||||||
|
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_P7, KC_P8, KC_P9,
|
||||||
|
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_P1, KC_P2, KC_P3,
|
||||||
|
KC_P0, KC_PDOT, KC_PENT)
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# SCARLET
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](draytronics.co.uk)
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven)
|
||||||
|
* Hardware Supported: SCARLET PCB / ATMega32A
|
||||||
|
* Hardware Availability: [draytronics.co.uk](draytronics.co.uk)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make draytronics/scarlet:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make draytronics/scarlet:default:flash
|
||||||
|
|
||||||
|
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,27 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32a
|
||||||
|
|
||||||
|
# Processor frequency
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = USBasp
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# 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
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = numpad_5x4
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*Copyright 2020 Blake Drayson / Draytronics
|
||||||
|
|
||||||
|
Contact [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 "scarlet.h"
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*Copyright 2020 Blake Drayson / Draytronics
|
||||||
|
|
||||||
|
Contact [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_numpad_5x4( \
|
||||||
|
K00, K01, K02, K03, \
|
||||||
|
K10, K11, K12, \
|
||||||
|
K20, K21, K22, K13, \
|
||||||
|
K30, K31, K32, \
|
||||||
|
K40, K42, K33 \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, }, \
|
||||||
|
{ K10, K11, K12, K13, }, \
|
||||||
|
{ K20, K21, K22, KC_NO, }, \
|
||||||
|
{ K30, K31, K32, K33, }, \
|
||||||
|
{ K40, KC_NO, K42, KC_NO, }, \
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2012 Jun Wako <[email protected]>
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
Copyright 2013 Oleg Kostyuk <[email protected]>
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
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
|
||||||
@@ -21,10 +23,10 @@ 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 0xFEED
|
#define VENDOR_ID 0x3297
|
||||||
#define PRODUCT_ID 0x1307
|
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER ZSA Technology Labs Inc
|
#define MANUFACTURER ZSA Technology Labs
|
||||||
|
#define PRODUCT_ID 0x4974
|
||||||
#define PRODUCT ErgoDox EZ
|
#define PRODUCT ErgoDox EZ
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
@@ -115,7 +117,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
* manufacturer specs.
|
* manufacturer specs.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define USB_MAX_POWER_CONSUMPTION 500
|
|
||||||
|
|
||||||
// RGB backlight
|
// RGB backlight
|
||||||
#define DRIVER_ADDR_1 0b1110100
|
#define DRIVER_ADDR_1 0b1110100
|
||||||
@@ -154,6 +155,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
//#define NO_ACTION_LAYER
|
//#define NO_ACTION_LAYER
|
||||||
//#define NO_ACTION_TAPPING
|
//#define NO_ACTION_TAPPING
|
||||||
//#define NO_ACTION_ONESHOT
|
//#define NO_ACTION_ONESHOT
|
||||||
//#define NO_ACTION_MACRO
|
#define NO_ACTION_MACRO
|
||||||
//#define NO_ACTION_FUNCTION
|
#define NO_ACTION_FUNCTION
|
||||||
//#define DEBUG_MATRIX_SCAN_RATE
|
//#define DEBUG_MATRIX_SCAN_RATE
|
||||||
@@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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 "ergodox_ez.h"
|
#include "ergodox_ez.h"
|
||||||
|
|
||||||
extern inline void ergodox_board_led_on(void);
|
extern inline void ergodox_board_led_on(void);
|
||||||
|
|||||||
@@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
@@ -5,6 +25,12 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
|
|
||||||
|
#if defined(KEYBOARD_ergodox_ez_glow)
|
||||||
|
# include "glow.h"
|
||||||
|
#elif defined(KEYBOARD_ergodox_ez_shine)
|
||||||
|
# include "shine.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// I2C aliases and register addresses (see "mcp23018.md")
|
// I2C aliases and register addresses (see "mcp23018.md")
|
||||||
#define I2C_ADDR 0b0100000
|
#define I2C_ADDR 0b0100000
|
||||||
#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
|
#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#undef PRODUCT_ID
|
||||||
|
#define PRODUCT_ID 0x4976
|
||||||
|
#undef PRODUCT
|
||||||
|
#define PRODUCT ErgoDox EZ Glow
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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 "ergodox_ez.h"
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
RGB_MATRIX_ENABLE = yes
|
||||||
@@ -1,31 +1,27 @@
|
|||||||
/*
|
/*
|
||||||
* light weight WS2812 lib V2.0b
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
*
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
* Controls WS2811/WS2812/WS2812B RGB-LEDs
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
* Author: Tim ([email protected])
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
*
|
|
||||||
* Jan 18th, 2014 v2.0b Initial Version
|
This program is free software: you can redistribute it and/or modify
|
||||||
* Nov 29th, 2015 v2.3 Added SK6812RGBW support
|
it under the terms of the GNU General Public License as published by
|
||||||
*
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
* This program is free software: you can redistribute it and/or modify
|
(at your option) any later version.
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
This program is distributed in the hope that it will be useful,
|
||||||
* (at your option) any later version.
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
*
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* This program is distributed in the hope that it will be useful,
|
GNU General Public License for more details.
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
You should have received a copy of the GNU General Public License
|
||||||
* GNU General Public License for more details.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*/
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
|
||||||
# include "ergodox_ez.h"
|
# include "ergodox_ez.h"
|
||||||
|
|
||||||
extern rgblight_config_t rgblight_config;
|
|
||||||
|
|
||||||
void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) {
|
void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) {
|
||||||
i2c_init();
|
i2c_init();
|
||||||
i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
|
i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
Copyright 2013 Oleg Kostyuk <[email protected]>
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
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
|
||||||
@@ -17,6 +18,7 @@ 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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* scan matrix
|
* scan matrix
|
||||||
*/
|
*/
|
||||||
@@ -235,3 +237,18 @@ static void select_row(uint8_t row) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DO NOT REMOVE
|
||||||
|
// Needed for proper wake/sleep
|
||||||
|
void matrix_power_up(void) {
|
||||||
|
mcp23018_status = init_mcp23018();
|
||||||
|
|
||||||
|
unselect_rows();
|
||||||
|
init_cols();
|
||||||
|
|
||||||
|
// initialize matrix state: all keys off
|
||||||
|
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
||||||
|
matrix[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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
|
#pragma once
|
||||||
|
|
||||||
#if !defined(ERGODOX_LED_15) && !defined(ERGODOX_LED_30)
|
#if !defined(ERGODOX_LED_15) && !defined(ERGODOX_LED_30)
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ The ErgoDox EZ is a mass produced version of the original ErgoDox keyboard, with
|
|||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make ergodox_ez:default:flash
|
make ergodox_ez:default:flash
|
||||||
|
|
||||||
|
For the ErgoDox EZ Shine, and Glow, use one of the following:
|
||||||
|
|
||||||
|
make ergodox_ez/shine:default:flash
|
||||||
|
make ergodox_ez/glow:default:flash
|
||||||
|
|
||||||
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).
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ UNICODE_ENABLE = yes # Unicode
|
|||||||
SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard
|
SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard
|
||||||
SLEEP_LED_ENABLE = no
|
SLEEP_LED_ENABLE = no
|
||||||
API_SYSEX_ENABLE = no
|
API_SYSEX_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = yes
|
|
||||||
|
|
||||||
RGB_MATRIX_ENABLE = no # enable later
|
RGB_MATRIX_ENABLE = no # enable later
|
||||||
DEBOUNCE_TYPE = eager_pr
|
DEBOUNCE_TYPE = eager_pr
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#undef PRODUCT_ID
|
||||||
|
#define PRODUCT_ID 0x4975
|
||||||
|
#undef PRODUCT
|
||||||
|
#define PRODUCT ErgoDox EZ Shine
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||||
|
Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
|
||||||
|
|
||||||
|
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 "ergodox_ez.h"
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 Pierre Constantineau <[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
|
||||||
|
|
||||||
|
/* Use I2C or Serial, not both */
|
||||||
|
|
||||||
|
#define USE_SERIAL
|
||||||
|
// #define USE_I2C
|
||||||
|
|
||||||
|
/* Select hand configuration */
|
||||||
|
|
||||||
|
#define MASTER_LEFT
|
||||||
|
// #define MASTER_RIGHT
|
||||||
|
// #define EE_HANDS
|
||||||
|
|
||||||
|
// #undef RGBLED_NUM
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
// #define RGBLED_NUM 14
|
||||||
|
// #define RGBLIGHT_HUE_STEP 8
|
||||||
|
// #define RGBLIGHT_SAT_STEP 8
|
||||||
|
// #define RGBLIGHT_VAL_STEP 8
|
||||||
|
|
||||||
|
|
||||||
Loaded 100 of 414 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user