Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da6c58175a | ||
|
|
b3f6aa9480 | ||
|
|
285ed08867 | ||
|
|
45a4a0a7fc | ||
|
|
3907ed034b | ||
|
|
9d949389f9 | ||
|
|
a398d2cece | ||
|
|
a6c85f1c23 | ||
|
|
a7d46f1b0f |
No files matched your search
@@ -140,6 +140,7 @@ These are the effects that are currently available:
|
|||||||
RGB_MATRIX_RAINBOW_PINWHEELS,
|
RGB_MATRIX_RAINBOW_PINWHEELS,
|
||||||
RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
|
RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
|
||||||
RGB_MATRIX_JELLYBEAN_RAINDROPS,
|
RGB_MATRIX_JELLYBEAN_RAINDROPS,
|
||||||
|
RGB_MATRIX_DIGITAL_RAIN,
|
||||||
#ifdef RGB_MATRIX_KEYPRESSES
|
#ifdef RGB_MATRIX_KEYPRESSES
|
||||||
RGB_MATRIX_SOLID_REACTIVE,
|
RGB_MATRIX_SOLID_REACTIVE,
|
||||||
RGB_MATRIX_SPLASH,
|
RGB_MATRIX_SPLASH,
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
There are quite a few different types of bootloaders that keyboards use, and just about all of the use a different flashing method. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to be compatible with all the different types without having to think about it much, but this article will describe the different types of bootloaders, and available methods for flashing them.
|
There are quite a few different types of bootloaders that keyboards use, and just about all of the use a different flashing method. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to be compatible with all the different types without having to think about it much, but this article will describe the different types of bootloaders, and available methods for flashing them.
|
||||||
|
|
||||||
If you have a bootloader selected with the `BOOTLOADER` variable in your `rules.mk`, QMK will automatically calculate if your .hex file is the right size to be flashed to the device, and output the total size it bytes (along with the max). To run this process manually, compile with the target `check-size`, eg `make planck/rev4:default:check-size`.
|
If you have a bootloader selected with the `BOOTLOADER` variable in your `rules.mk`, QMK will automatically calculate if your .hex file is the right size to be flashed to the device, and output the total size in bytes (along with the max). To run this process manually, compile with the target `check-size`, eg `make planck/rev4:default:check-size`.
|
||||||
|
|
||||||
## DFU
|
## DFU
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define DISABLE_SPACE_CADET_ROLLOVER
|
||||||
@@ -0,0 +1,233 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "version.h"
|
||||||
|
#include "bootmagic.h"
|
||||||
|
|
||||||
|
#define QWERTY 0 // qwerty layer
|
||||||
|
#define COLEMAK 1 // colemak layer
|
||||||
|
#define FN 2 // function layer
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
QWRTY = SAFE_RANGE, // can always be here
|
||||||
|
CLMK,
|
||||||
|
VRSN,
|
||||||
|
FNCTN
|
||||||
|
};
|
||||||
|
|
||||||
|
/* false: Caps Lock LED is off
|
||||||
|
true: Caps Lock LED is on */
|
||||||
|
bool CAPS_LED = false;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap 0: Qwerty layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Tab | Q | W | E | R | T | Mute | | { | Y | U | I | O | P | \ |
|
||||||
|
* |--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------|
|
||||||
|
* | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||||
|
* |--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------|
|
||||||
|
* | LShift | Z | X | C | V | B | | | ] | N | M | , | . | / | RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | Caps | LGui | | Ins | Del |
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* | Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
* | |ace | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||||
|
// Otherwise, it needs KC_*
|
||||||
|
[QWERTY] = LAYOUT_ergodox( // layer 0 : qwerty
|
||||||
|
// left hand
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_COPY,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MUTE,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_FN1,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_RGHT,
|
||||||
|
KC_CAPS, KC_LGUI,
|
||||||
|
KC_HOME,
|
||||||
|
KC_SPC, KC_BSPC, KC_END,
|
||||||
|
// right hand
|
||||||
|
KC_PASTE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLEP,
|
||||||
|
KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE,
|
||||||
|
KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
|
||||||
|
KC_DOWN, KC_UP, KC_MINS, KC_EQL, KC_RCTL,
|
||||||
|
KC_INS, KC_DEL,
|
||||||
|
KC_PGUP,
|
||||||
|
KC_PGDN, KC_TAB, KC_ENT
|
||||||
|
),
|
||||||
|
/* Keymap 1: Colemak layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Tab | Q | W | F | P | B | Mute | | { | J | L | U | Y | ; | \ |
|
||||||
|
* |--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------|
|
||||||
|
* | Esc | A | R | S | T | G |------| |------| M | N | E | I | O | ' |
|
||||||
|
* |--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------|
|
||||||
|
* | LShift | Z | X | C | D | V | | | ] | K | H | , | . | / | RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | Caps | LGui | | Ins | Del |
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* | Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
* | |ace | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
[COLEMAK] = LAYOUT_ergodox( // layer 1 : colemak
|
||||||
|
// left hand
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_COPY,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_MUTE,
|
||||||
|
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G,
|
||||||
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_FN1,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_RGHT,
|
||||||
|
KC_CAPS, KC_LGUI,
|
||||||
|
KC_HOME,
|
||||||
|
KC_SPC, KC_BSPC, KC_END,
|
||||||
|
// right hand
|
||||||
|
KC_PASTE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLEP,
|
||||||
|
KC_LBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
|
||||||
|
KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE,
|
||||||
|
KC_RBRC, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
|
||||||
|
KC_DOWN, KC_UP, KC_MINS, KC_EQL, KC_RCTL,
|
||||||
|
KC_INS, KC_DEL,
|
||||||
|
KC_PGUP,
|
||||||
|
KC_PGDN, KC_TAB, KC_ENT
|
||||||
|
),
|
||||||
|
/* Keymap 2: Function Layer
|
||||||
|
*
|
||||||
|
* ,---------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* |Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
|
||||||
|
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | | | Prev | Play | Next | | | | | | | | | |
|
||||||
|
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | |VolDn | VolUp|------| |------| |QWRTY | CLMK | | | |
|
||||||
|
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// Functions
|
||||||
|
[FN] = LAYOUT_ergodox(
|
||||||
|
// left hand
|
||||||
|
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU,
|
||||||
|
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,
|
||||||
|
// right hand
|
||||||
|
KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, QWRTY, CLMK, 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
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(FN) // FN1 - Momentary Layer 1
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case VRSN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case QWRTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case CLMK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(COLEMAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_CAPS:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// Turn LED1 On/Off for Caps Lock
|
||||||
|
if (CAPS_LED) {
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
CAPS_LED = false;
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
CAPS_LED = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Set LED according to the default layer
|
||||||
|
void default_layer_led_set(void) {
|
||||||
|
switch (biton32(eeconfig_read_default_layer())) {
|
||||||
|
case COLEMAK:
|
||||||
|
// LED2 for COLEMAK
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
case QWERTY:
|
||||||
|
// LED3 for QWERTY
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
default_layer_led_set();
|
||||||
|
};
|
||||||
|
|
||||||
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
|
ergodox_led_all_off();
|
||||||
|
switch (biton32(state)) {
|
||||||
|
case FN:
|
||||||
|
// Red led on Pro Micro for Fn layer
|
||||||
|
ergodox_board_led_on();
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (CAPS_LED) {
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
}
|
||||||
|
|
||||||
|
default_layer_led_set();
|
||||||
|
|
||||||
|
return state;
|
||||||
|
};
|
||||||
|
|
||||||
|
void suspend_power_down_user(void) {
|
||||||
|
ergodox_led_all_off();
|
||||||
|
};
|
||||||
|
|
||||||
|
void suspend_wakeup_init_user(void) {
|
||||||
|
default_layer_led_set();
|
||||||
|
};
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
# Erovia's ErdoDone Keymap
|
||||||
|
|
||||||
|
My personal ErgoDone keymap based on the *default* keymap.
|
||||||
|
|
||||||
|
**Features**
|
||||||
|
|
||||||
|
* Qwerty and Colemak Mod-DH support
|
||||||
|
* Space Cadet Shift
|
||||||
|
* LED indicator for: active layout, CapsLock, Function layer
|
||||||
|
|
||||||
|
## QWERTY (Normal) Layer
|
||||||
|
```
|
||||||
|
,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
| ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep |
|
||||||
|
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
| Tab | Q | W | E | R | T | Mute | | { | Y | U | I | O | P | \ |
|
||||||
|
|--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------|
|
||||||
|
| Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||||
|
|--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------|
|
||||||
|
| LShift | Z | X | C | V | B | | | ] | N | M | , | . | / | RShift |
|
||||||
|
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
|LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl |
|
||||||
|
`----------------------------------' `----------------------------------'
|
||||||
|
,-------------. ,-------------.
|
||||||
|
| Caps | LGui | | Ins | Del |
|
||||||
|
,------|------|------| |------+--------+------.
|
||||||
|
| | | Home | | PgUp | | |
|
||||||
|
| Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
| |ace | End | | PgDn | | |
|
||||||
|
`--------------------' `----------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Colemak Layer
|
||||||
|
Switch from `Fn1` layer.
|
||||||
|
```
|
||||||
|
,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
| ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep |
|
||||||
|
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
| Tab | Q | W | F | P | B | Mute | | { | J | L | U | Y | ; | \ |
|
||||||
|
|--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------|
|
||||||
|
| Esc | A | R | S | T | G |------| |------| M | N | E | I | O | ' |
|
||||||
|
|--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------|
|
||||||
|
| LShift | Z | X | C | D | V | | | ] | K | H | , | . | / | RShift |
|
||||||
|
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
|LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl |
|
||||||
|
`----------------------------------' `----------------------------------'
|
||||||
|
,-------------. ,-------------.
|
||||||
|
| Caps | LGui | | Ins | Del |
|
||||||
|
,------|------|------| |------+--------+------.
|
||||||
|
| | | Home | | PgUp | | |
|
||||||
|
| Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
| |ace | End | | PgDn | | |
|
||||||
|
`--------------------' `----------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Function Layer
|
||||||
|
```
|
||||||
|
,---------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
|Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
|
||||||
|
|---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||||
|
| | | | Prev | Play | Next | | | | | | | | | |
|
||||||
|
|---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
| | | | |VolDn | VolUp|------| |------| |QWRTY | CLMK | | | |
|
||||||
|
|---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
`---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
| | | | | | | | | | | |
|
||||||
|
`-----------------------------------' `----------------------------------'
|
||||||
|
,-------------. ,-------------.
|
||||||
|
| | | | | |
|
||||||
|
,------|------|------| |------+------+------.
|
||||||
|
| | | | | | | |
|
||||||
|
| | |------| |------| | |
|
||||||
|
| | | | | | | |
|
||||||
|
`--------------------' `--------------------'
|
||||||
|
```
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 Danny Nguyen <[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 18
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "keymap_swedish.h"
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _LOWER 1
|
||||||
|
#define _RAISE 2
|
||||||
|
#define _ADJUST 16
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
LOWER,
|
||||||
|
RAISE,
|
||||||
|
ADJUST
|
||||||
|
};
|
||||||
|
|
||||||
|
#define KC_ KC_TRNS
|
||||||
|
|
||||||
|
#define KC_LOWER LOWER
|
||||||
|
#define KC_RAISE RAISE
|
||||||
|
#define KC_ADJ ADJUST
|
||||||
|
#define KC_RST RESET
|
||||||
|
|
||||||
|
#define KC_AA NO_AA
|
||||||
|
#define KC_AE NO_AE
|
||||||
|
#define KC_OE NO_OSLH
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_QWERTY] = 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,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
LT(_LOWER, KC_TAB),KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AA,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_OE, KC_AE,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, RAISE, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
|
||||||
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
||||||
|
KC_LGUI, KC_LALT, KC_SPC, KC_ENT, ADJUST, KC_RALT
|
||||||
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
NO_TILD, KC_EXLM, NO_AT, KC_HASH, NO_DLR, KC_PERC, NO_CIRC, NO_AMPR, NO_ASTR, NO_SLSH, NO_LPRN, NO_RPRN,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDOWN, NO_LCBR, NO_RCBR,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, NO_BSLS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, NO_LBRC, NO_RBRC,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_GRAVE, KC_CIRC, KC_QUOTE, NO_LESS, NO_GRTR,
|
||||||
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
NO_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, NO_MINS, NO_ASTR,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, NO_PLUS, NO_SLSH,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_0, KC_TRNS,
|
||||||
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
BL_TOGG, BL_STEP, BL_BRTG, RGB_TOG, RGB_RMOD, RGB_MOD, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
BL_DEC, _______, BL_INC, RGB_VAD, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void persistent_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case LOWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RAISE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case ADJUST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Iris Nordic Layout
|
||||||
|
### by Oliver Granlund
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is for those who insist to use keyboard with ÅÄÖ. Also thought about the
|
||||||
|
gaming aspect with this keyboard, therefore space on left side.
|
||||||
|
|
||||||
|
At first I thought about having backspace in the upper right corner of the
|
||||||
|
slave side, but that made it really clunky to fix your text. Thumbs should take
|
||||||
|
care of this job instead.
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
BACKLIGHT_ENABLE = yes
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define PERMISSIVE_HOLD // https://docs.qmk.fm/#/feature_advanced_keycodes?id=permissive-hold
|
||||||
|
|
||||||
|
// Enable single-color backlighting
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 5
|
||||||
|
#define BREATHING_PERIOD 4
|
||||||
@@ -0,0 +1,393 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include <sendstring_dvorak.h>
|
||||||
|
//#include <sendstring_colemak.h>
|
||||||
|
#include <print.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
** LAYER DEFINITIONS **
|
||||||
|
**********************/
|
||||||
|
enum layers_keymap {
|
||||||
|
// BASE LAYERS
|
||||||
|
_QWERTY = 0,
|
||||||
|
_DVORAK,
|
||||||
|
_COLEMAK,
|
||||||
|
_MAC,
|
||||||
|
_QUAKE2,
|
||||||
|
_QUAKE2_DVORAK,
|
||||||
|
_QUAKE2_CONSOLE,
|
||||||
|
|
||||||
|
// FUNCTION LAYERS
|
||||||
|
_FUNCWIN,
|
||||||
|
_FUNCMAC,
|
||||||
|
_FUNCQ2,
|
||||||
|
|
||||||
|
// OTHER LAYERS
|
||||||
|
_NUMPAD,
|
||||||
|
_MACROS,
|
||||||
|
_SYSTEM
|
||||||
|
};
|
||||||
|
|
||||||
|
// LAYER SHORT CODES
|
||||||
|
#define _QW _QWERTY
|
||||||
|
#define _DV _DVORAK
|
||||||
|
#define _CM _COLEMAK
|
||||||
|
#define _MC _MAC
|
||||||
|
#define _Q2 _QUAKE2
|
||||||
|
#define _QD _QUAKE2_DVORAK
|
||||||
|
#define _QC _QUAKE2_CONSOLE
|
||||||
|
#define _FW _FUNCWIN
|
||||||
|
#define _FM _FUNCMAC
|
||||||
|
#define _FQ _FUNCQ2
|
||||||
|
#define _NP _NUMPAD
|
||||||
|
#define _MA _MACROS
|
||||||
|
#define _SY _SYSTEM
|
||||||
|
|
||||||
|
|
||||||
|
// KEYCODE DEFINITIONS
|
||||||
|
#define NO_CHNG KC_TRNS // Note for me for keys I need to leave as Pass-through
|
||||||
|
|
||||||
|
#define FW_CAPS LT(_FUNCWIN, KC_CAPS) // _FUNCWIN when held, Caps Lock when tapped
|
||||||
|
#define FM_CAPS LT(_FUNCMAC, KC_CAPS) // _FUNCMAC when held, Caps Lock when tapped
|
||||||
|
#define Q2_CAPS LT(_FUNCQ2, KC_CAPS) // _FUNCQ2 when held, Caps Lock when tapped
|
||||||
|
|
||||||
|
#define WN_SALL LCTL(DV_A) // Windows/Linux Select All
|
||||||
|
#define WN_UNDO LCTL(DV_Z) // Windows/Linux Undo
|
||||||
|
#define WN_CUT LCTL(DV_X) // Windows/Linux Cut
|
||||||
|
#define WN_COPY LCTL(DV_C) // Windows/Linux Copy
|
||||||
|
#define WN_PSTE LCTL(DV_V) // Windows/Linux Paste
|
||||||
|
|
||||||
|
#define MC_PSCR LGUI(LSFT(KC_3)) // MacOS Print Screen (Command + Shift + 3)
|
||||||
|
#define MC_HOME LGUI(KC_LEFT) // MacOS Home (Command + Left Arrow)
|
||||||
|
#define MC_END LGUI(KC_RGHT) // MacOS End (Command + Right Arrow)
|
||||||
|
#define MC_SALL LGUI(KC_A) // MacOS Select All
|
||||||
|
//#define MC_UNDO LGUI(KC_Z) // MacOS Undo // replaced by macro
|
||||||
|
#define MC_CUT LGUI(KC_X) // MacOS Cut
|
||||||
|
#define MC_COPY LGUI(KC_C) // MacOS Copy
|
||||||
|
//#define MC_PSTE LGUI(KC_V) // MacOS Paste // replaced by macro
|
||||||
|
|
||||||
|
|
||||||
|
// MACRO DEFINITIONS
|
||||||
|
enum custom_keycodes {
|
||||||
|
F_CAPS = SAFE_RANGE,
|
||||||
|
T_L3DED,
|
||||||
|
G_PUSH,
|
||||||
|
G_FTCH,
|
||||||
|
G_COMM,
|
||||||
|
G_RST,
|
||||||
|
G_C10R,
|
||||||
|
G_BRCH,
|
||||||
|
SIGNA,
|
||||||
|
GO_Q2,
|
||||||
|
Q2_ON,
|
||||||
|
Q2_OFF,
|
||||||
|
Q2_ESC,
|
||||||
|
Q2_GRV,
|
||||||
|
MC_UNDO,
|
||||||
|
MC_PSTE
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// define modifiers
|
||||||
|
#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||||
|
#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
|
||||||
|
#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
#define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
uint8_t modifiers = get_mods();
|
||||||
|
switch(keycode) {
|
||||||
|
// these are our macros!
|
||||||
|
case F_CAPS:
|
||||||
|
/*
|
||||||
|
Objective: write a macro that checks the current layers that are
|
||||||
|
enabled, and activates the appropriate function layer.
|
||||||
|
*/
|
||||||
|
if ( biton32(layer_state) == _MAC ) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_FUNCMAC);
|
||||||
|
} else {
|
||||||
|
layer_off(_FUNCMAC);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_FUNCWIN);
|
||||||
|
} else {
|
||||||
|
layer_off(_FUNCWIN);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case T_L3DED:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("lavak3DED ");
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case G_PUSH:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("git push origin ");
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case G_FTCH:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("git fetch upstream");
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case G_COMM:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("git commit -m \"\"" SS_TAP(X_LEFT));
|
||||||
|
layer_off(_MACROS);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case G_RST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("git histt -n 10" SS_TAP(X_ENTER) "git reset --soft ");
|
||||||
|
layer_off(_MACROS);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case G_C10R:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("cf/");
|
||||||
|
layer_off(_MACROS);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case G_BRCH:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("$(git branch-name)");
|
||||||
|
layer_off(_MACROS);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case SIGNA:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("\\- @noroadsleft" SS_TAP(X_ENTER));
|
||||||
|
layer_off(_MACROS);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case GO_Q2:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
//default_layer_set(_QWERTY);
|
||||||
|
layer_move(_QWERTY); // TO(_QWERTY);
|
||||||
|
layer_on(_QUAKE2);
|
||||||
|
//layer_off(_SYSTEM);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case Q2_ON:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_TAP(X_ENTER));
|
||||||
|
layer_on(_DVORAK);
|
||||||
|
layer_on(_QUAKE2_DVORAK);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case Q2_OFF:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_TAP(X_ENTER));
|
||||||
|
layer_move(_QWERTY); // TO(_QWERTY);
|
||||||
|
layer_on(_QUAKE2);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case Q2_ESC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_TAP(X_ESCAPE));
|
||||||
|
layer_move(_QWERTY); // TO(_QWERTY);
|
||||||
|
layer_on(_QUAKE2);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case Q2_GRV:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_TAP(X_GRAVE));
|
||||||
|
layer_on(_DVORAK);
|
||||||
|
layer_on(_QUAKE2_DVORAK);
|
||||||
|
layer_on(_QUAKE2_CONSOLE);
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case MC_UNDO:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if ( modifiers & MODS_SHIFT_MASK ) {
|
||||||
|
SEND_STRING( SS_DOWN(X_LSHIFT) SS_DOWN(X_LGUI) SS_TAP(X_Z) SS_UP(X_LGUI) SS_UP(X_LSHIFT) );
|
||||||
|
} else {
|
||||||
|
SEND_STRING( SS_DOWN(X_LGUI) SS_TAP(X_Z) SS_UP(X_LGUI) );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case MC_PSTE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if ( modifiers & MODS_SHIFT_MASK ) {
|
||||||
|
SEND_STRING( SS_DOWN(X_LSHIFT) SS_DOWN(X_LGUI) SS_DOWN(X_LALT) SS_TAP(X_V) SS_UP(X_LALT) SS_UP(X_LGUI) SS_UP(X_LSHIFT) );
|
||||||
|
} else {
|
||||||
|
SEND_STRING( SS_DOWN(X_LGUI) SS_TAP(X_V) SS_UP(X_LGUI) );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
} // switch()
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// KEYMAPS
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/****************
|
||||||
|
** BASE LAYERS **
|
||||||
|
****************/
|
||||||
|
|
||||||
|
/* QWERTY */
|
||||||
|
[_QWERTY] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
|
FW_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FW), KC_RCTL \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Dvorak */
|
||||||
|
[_DVORAK] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, \
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, \
|
||||||
|
FW_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FW), KC_RCTL \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Colemak */
|
||||||
|
[_COLEMAK] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
|
FW_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FW), KC_RCTL \
|
||||||
|
),
|
||||||
|
|
||||||
|
/****************
|
||||||
|
** OS OVERLAYS **
|
||||||
|
****************/
|
||||||
|
|
||||||
|
/* Mac */
|
||||||
|
[_MAC] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
FM_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, MO(_FM), _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
** QUAKE 2 OVERLAYS **
|
||||||
|
*********************/
|
||||||
|
|
||||||
|
/* Quake 2 */
|
||||||
|
[_QUAKE2] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ON, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, MO(_FQ), _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
[_QUAKE2_DVORAK] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
Q2_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_OFF, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, MO(_FQ), _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
[_QUAKE2_CONSOLE] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
Q2_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, MO(_FQ), _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/********************
|
||||||
|
** FUNCTION LAYERS **
|
||||||
|
********************/
|
||||||
|
|
||||||
|
/* Windows Fn layer */
|
||||||
|
[_FUNCWIN] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
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_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||||
|
NO_CHNG, WN_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PENT, \
|
||||||
|
_______, WN_UNDO, WN_CUT, WN_COPY, WN_PSTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TG(_SY), _______, \
|
||||||
|
_______, _______, _______, TG(_NP), _______, TG(_MA), NO_CHNG, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* MacOS Fn layer */
|
||||||
|
[_FUNCMAC] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_INS, MC_HOME, KC_UP, MC_END, KC_PGUP, MC_PSCR, _______, _______, \
|
||||||
|
NO_CHNG, MC_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, \
|
||||||
|
_______, MC_UNDO, MC_CUT, MC_COPY, MC_PSTE, _______, _______, _______, _______, _______, TG(_SY), _______, \
|
||||||
|
_______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Quake 2 Fn layer */
|
||||||
|
[_FUNCQ2] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
Q2_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||||
|
NO_CHNG, _______, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_ENT, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_SY), _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, NO_CHNG, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/*****************
|
||||||
|
** OTHER LAYERS **
|
||||||
|
*****************/
|
||||||
|
|
||||||
|
/* Numpad layer */
|
||||||
|
[_NUMPAD] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, \
|
||||||
|
_______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT, \
|
||||||
|
_______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______, \
|
||||||
|
_______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Macro layer */
|
||||||
|
[_MACROS] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
TG(_MA), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, G_RST, G_FTCH, G_COMM, _______, _______, _______, _______, T_L3DED, _______, _______, _______, \
|
||||||
|
_______, _______, _______, G_C10R, _______, G_BRCH, SIGNA, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, NO_CHNG, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* System layer */
|
||||||
|
[_SYSTEM] = LAYOUT_60_ansi(
|
||||||
|
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||||
|
TG(_SY), TO(_QW), TO(_DV), TO(_CM), GO_Q2, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, TG(_MC), 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, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NO_CHNG, XXXXXXX \
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# @noroadsleft's KC60 keymap
|
||||||
|
|
||||||
|
### Last updated: September 2, 2018, 1:03 PM UTC-0700
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
I am a full-time Dvorak typist, and occasional semi-serious FPS gamer. The layers are oriented towards a mix of typing and gaming.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
# Outline
|
||||||
|
|
||||||
|
- [Base Layers](./readme_ch1.md)
|
||||||
|
- Layer 0: QWERTY `_QW`
|
||||||
|
- Layer 1: Hardware Dvorak `_DV`
|
||||||
|
- Layer 2: Hardware Colemak `_CM`
|
||||||
|
- [OS Overlays](./readme_ch2.md)
|
||||||
|
- Layer 3: MacOS Overlay `_MC`
|
||||||
|
- [Quake 2 Overlays](./readme_ch3.md)
|
||||||
|
- Layers 4, 5 and 6: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
|
||||||
|
- [Function Layers](./readme_ch4.md)
|
||||||
|
- Layer 7: Windows Fn layer `_FW`
|
||||||
|
- Layer 8: MacOS-oriented Fn layer `_FM`
|
||||||
|
- Layer 9: Quake 2 Fn layer `_FQ`
|
||||||
|
- [Other Layers](./readme_ch5.md)
|
||||||
|
- Layer 10: Numpad layer `_NP`
|
||||||
|
- Layer 11: Macro layer `_MA`
|
||||||
|
- Layer 12: System layer `_SY`
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# @noroadsleft's KC60 keymap
|
||||||
|
|
||||||
|
- [Table of Contents](./readme.md)
|
||||||
|
1. **Base Layers**
|
||||||
|
2. [**OS Overlays**](./readme_ch2.md)
|
||||||
|
3. [Quake 2 Overlays](./readme_ch3.md)
|
||||||
|
4. [Function Layers](./readme_ch4.md)
|
||||||
|
5. [Other Layers](./readme_ch5.md)
|
||||||
|
|
||||||
|
### Last updated: September 2, 2018, 1:03 PM UTC-0700
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 0: QWERTY - `_QW`
|
||||||
|
|
||||||
|
Standard QWERTY layout, with three QMK features:
|
||||||
|
|
||||||
|
- The `Menu` key has been replaced by `MO(_FW)`, which moves to my Windows Fn layer when held.
|
||||||
|
- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Windows Fn layer when held, and is `Caps Lock` when tapped
|
||||||
|
- The `Escape` key has been replaced with a `KC_GESC` `` ` ~ `` key when used with a `Fn` key or a `Shift` key
|
||||||
|
|
||||||
|
###### For the rest of this readme, the physical location of keys will be referred to by their function in a US QWERTY layout.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Keycode(s) Sent | Notes
|
||||||
|
:---------------------------------------------------- | :----
|
||||||
|
[`KC_GESC`](https://docs.qmk.fm/#/feature_grave_esc) | `Esc` when tapped alone, `` ` ~ `` when used with a `Shift` or `GUI` key.
|
||||||
|
`LT(_FW, KC_CAPS)` | Opens the Windows Fn layer when held; toggles Caps Lock when tapped.
|
||||||
|
`MO(_FW)` | Opens the Windows Fn layer when held.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 1: Hardware Dvorak - `_DV`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`.
|
||||||
|
|
||||||
|
A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared computer that runs MacOS Sierra, in US QWERTY layout. In this layer, I can leave the system in QWERTY, plug my keyboard in, and still type in Dvorak.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Keycode(s) Sent | Notes
|
||||||
|
:---------------------------------------------------- | :----
|
||||||
|
[`KC_GESC`](https://docs.qmk.fm/#/feature_grave_esc) | `Esc` when tapped alone, `` ` ~ `` when used with a `Shift` or `GUI` key.
|
||||||
|
`LT(_FW, KC_CAPS)` | Opens the Windows Fn layer when held; toggles Caps Lock when tapped.
|
||||||
|
`MO(_FW)` | Opens the Windows Fn layer when held.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 2: Hardware Colemak `_CM`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`.
|
||||||
|
|
||||||
|
A hardware-based Colemak layout. Been thinking of trying it, so it's here.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Keycode(s) Sent | Notes
|
||||||
|
:---------------------------------------------------- | :----
|
||||||
|
[`KC_GESC`](https://docs.qmk.fm/#/feature_grave_esc) | `Esc` when tapped alone, `` ` ~ `` when used with a `Shift` or `GUI` key.
|
||||||
|
`LT(_FW, KC_CAPS)` | Opens the Windows Fn layer when held; toggles Caps Lock when tapped.
|
||||||
|
`MO(_FW)` | Opens the Windows Fn layer when held.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Next Chapter: [OS Overlays](./readme_ch2.md)
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# @noroadsleft's KC60 keymap
|
||||||
|
|
||||||
|
- [Table of Contents](./readme.md)
|
||||||
|
1. [Base Layers](./readme_ch1.md)
|
||||||
|
2. **OS Overlays**
|
||||||
|
3. [Quake 2 Overlays](./readme_ch3.md)
|
||||||
|
4. [Function Layers](./readme_ch4.md)
|
||||||
|
5. [Other Layers](./readme_ch5.md)
|
||||||
|
|
||||||
|
### Last updated: September 2, 2018, 1:03 PM UTC-0700
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 3: Layer 3: MacOS Overlay `_MC`
|
||||||
|
|
||||||
|
### Toggled by holding either `Fn` and tapping `/?` key, then tapping `W`.
|
||||||
|
|
||||||
|
This layer overrides the `Fn` keys on whichever base layer is currently enabled, sending the keyboard to the MacOS-oriented Fn layer `_FM`, instead of the Windows Fn layer `_FW`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Next Chapter: [Quake 2 Overlays](./readme_ch3.md)
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# @noroadsleft's KC60 keymap
|
||||||
|
|
||||||
|
- [Table of Contents](./readme.md)
|
||||||
|
1. [Base Layers](./readme_ch1.md)
|
||||||
|
2. [OS Overlays](./readme_ch2.md)
|
||||||
|
3. **Quake 2 Overlays**
|
||||||
|
4. [Function Layers](./readme_ch4.md)
|
||||||
|
5. [Other Layers](./readme_ch5.md)
|
||||||
|
|
||||||
|
### Last updated: September 2, 2018, 1:03 PM UTC-0700
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layers 4, 5 and 6: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$`
|
||||||
|
|
||||||
|
These layers were born out of the confusion I have had trying to use the in-game chat and the console in [Quake 2](https://en.wikipedia.org/wiki/Quake_II). When Quake 2 came out, alternate keyboard layouts weren't really a thing. As a result, all in-game text input is hard-locked to US QWERTY, regardless of what the operating system is using for its input method.
|
||||||
|
|
||||||
|
I'm attempting to solve this by some creative use of QMK's macro feature. The keycode in the System layer that enables these layers, [`GO_Q2`](./keymap.c#L386), is a [macro](./keymap.c#L175-183) that sets the default layer to the QWERTY layer, then turns the Quake 2 layer `_Q2` on. The result is a partially-overwritten QWERTY layer, that has some keycodes with some creative layer switching.
|
||||||
|
|
||||||
|
When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L184-L191) I've created sends the keycode for `Enter`, then follows with enabling the Hardware Dvorak layer and its corresponding overlay. Now the game is in text chat mode, and my keyboard is in Dvorak. When I hit `Enter` again, another `Enter` [keycode macro](./keymap.c#L192-L199) is sent, which sends the message, then the macro brings me back to the standard QWERTY+Quake 2 setup. Hitting `Escape` instead runs a [macro](./keymap.c#L200-L207) that cancels the sending of the message, and undoes the layers.
|
||||||
|
|
||||||
|
I have been testing this configuration for a few months. Sometimes I end up still in Dvorak mode without any text input systems (in-game chat or the console) running, but it pretty much always happens when I'm focused on the game, so I don't know the cause yet.
|
||||||
|
|
||||||
|
### Layer 4: Quake 2
|
||||||
|

|
||||||
|
|
||||||
|
### Layer 5: Quake 2 Dvorak
|
||||||
|

|
||||||
|
|
||||||
|
### Layer 6: Quake 2 Console
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Next Chapter: [Function Layers](./readme_ch4.md)
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# @noroadsleft's KC60 keymap
|
||||||
|
|
||||||
|
- [Table of Contents](./readme.md)
|
||||||
|
1. [Base Layers](./readme_ch1.md)
|
||||||
|
2. [OS Overlays](./readme_ch2.md)
|
||||||
|
3. [Quake 2 Overlays](./readme_ch3.md)
|
||||||
|
4. **Function Layers**
|
||||||
|
5. [Other Layers](./readme_ch5.md)
|
||||||
|
|
||||||
|
### Last updated: September 2, 2018, 1:03 PM UTC-0700
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 7: Windows Fn layer - `_FW`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` key in Layer 0
|
||||||
|
|
||||||
|
Arrows, Navigation keys (Insert, Home, Page Up, etc.), and Function keys are here. Also has keys for Calculator, Menu, Volume Control, and shortcuts for Select All, Undo, Cut, Copy, and Paste. Numpad Enter for when I'm working in Adobe Photoshop, because it treats Numpad Enter differently from the regular Enter key.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 8: MacOS-oriented Fn layer - `_FM`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` key in Layer 1
|
||||||
|
|
||||||
|
Based on my Windows Fn layer, but swaps a few functions for a MacOS environment. Arrow, Navigation, and Function keys are basically unchanged from Layer 2. This layer enables using either `Fn` key as a sort of simulated `Command` key, which I find easier to reach and use.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 9: Quake 2 Fn layer - `_FQ`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` key while either Quake 2 overlay is active.
|
||||||
|
|
||||||
|
Based on the Windows function layer, but removes some functions that are pointless to have while in the game.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Keycode(s) Sent | Notes
|
||||||
|
:-------------------------------- | :----
|
||||||
|
[`Q2_GRV`](./keymap.c#L208-L216) | Sends `KC_GRV`, then enables the Dvorak, Quake 2 Dvorak, and Quake 2 Console layers.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Next Chapter: [Other Layers](./readme_ch5.md)
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# @noroadsleft's KC60 keymap
|
||||||
|
|
||||||
|
- [Table of Contents](./readme.md)
|
||||||
|
1. [Base Layers](./readme_ch1.md)
|
||||||
|
2. [OS Overlays](./readme_ch2.md)
|
||||||
|
3. [Quake 2 Overlays](./readme_ch3.md)
|
||||||
|
4. [Function Layers](./readme_ch4.md)
|
||||||
|
5. **Other Layers**
|
||||||
|
|
||||||
|
### Last updated: September 2, 2018, 1:03 PM UTC-0700
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 10: Numpad layer - `_NP`
|
||||||
|
|
||||||
|
### Accessed by holding either `Fn` key and tapping `Space`, from any of the Base Layers
|
||||||
|
|
||||||
|
Puts a Numpad on the right-hand side of the keyboard. A through F included for hexadecimal input. Tapping `Space` returns to the previous Base Layer.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Layer 11: Macro layer - `_MA`
|
||||||
|
|
||||||
|
### Accessed by holding the `Fn` key and tapping the right-side `Win` key
|
||||||
|
|
||||||
|
Has some macros that I use in Git, and some frequently-typed strings.
|
||||||
|
|
||||||
|
Tapping `Esc` exits the Macro layer, if the macro used doesn't do it automatically.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### Macros
|
||||||
|
|
||||||
|
[](./keymap.c#L122-L127)
|
||||||
|
Inputs: `lavak3DED `
|
||||||
|
Twitch emote for [a streamer I watch a lot](https://www.twitch.tv/lavak3_).
|
||||||
|
|
||||||
|
[G_PUSH](./keymap.c#L128-L133)
|
||||||
|
Inputs: `git push origin `
|
||||||
|
Everything from here down is related to Git or GitHub.
|
||||||
|
|
||||||
|
[G_FTCH](./keymap.c#L134-L139)
|
||||||
|
Inputs: `git fetch upstream`
|
||||||
|
|
||||||
|
[G_COMM](./keymap.c#L140-L146)
|
||||||
|
Inputs: `git commit -m ""` `[Left]`
|
||||||
|
Readies a `git commit` command, moves the cursor between the quotation marks, then disables the Macro layer.
|
||||||
|
|
||||||
|
[G_RST](./keymap.c#L147-L153)
|
||||||
|
Inputs: `git histt -n 10`, Enter, `git reset --soft `
|
||||||
|
Runs a [git alias](./readme_git.md) that shows my last ten commits, then readies a `git reset --soft`. For when I commit something too soon. Disables the Macro layer when complete.
|
||||||
|
|
||||||
|
[G_C10R](./keymap.c#L154-L160)
|
||||||
|
Inputs: `cf/`
|
||||||
|
A branch prefix I use for my current work in QMK. Disables the Macro layer when finished.
|
||||||
|
|
||||||
|
[G_BRCH](./keymap.c#L161-L167)
|
||||||
|
Inputs: `$(git branch-name)`
|
||||||
|
A [git alias](./readme_git.md) that returns the name of the current branch. Disables the Macro layer when finished.
|
||||||
|
|
||||||
|
[SIGNA](./keymap.c#L168-L174)
|
||||||
|
Inputs: `\- @noroadsleft` `[Enter]`
|
||||||
|
Sometimes on GitHub, I sign my comments. Types my GitHub name in Markdown syntax, and then taps the `Enter` key. Disables the Macro layer when finished.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### Layer 12: System layer - `_SY`
|
||||||
|
|
||||||
|
#### Accessed by holding either `Fn` key and tapping the `/?` key
|
||||||
|
|
||||||
|
This is where I change my keyboard function. Base layer select on `1` through `3`, Backlight controls on `C` through `N`, Reset on `8*`, Debug on `0)`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
[Back to the index.](./)
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# @noroadsleft's Git aliases
|
||||||
|
|
||||||
|
[Return to the directory index.](./)
|
||||||
|
|
||||||
|
```
|
||||||
|
[alias]
|
||||||
|
# change branches
|
||||||
|
co = checkout
|
||||||
|
cob = checkout -b
|
||||||
|
|
||||||
|
# sync master
|
||||||
|
sync = "!f() { if [ $(git branch-name) != "master" ]; then git checkout master; fi; git pull upstream master; git push origin master; }; f"
|
||||||
|
|
||||||
|
# Return the last five commits on the branch, in a more compact format
|
||||||
|
hist = log --pretty=format:\"%C(yellow)%h%Creset %Cgreen%ad%Creset%n %w(100,0,3)%s%d [%an]%n\" --graph --date=iso-local -n 5
|
||||||
|
histm = log --pretty=format:\"%C(yellow)%h%Creset %w(100,0,3)%s%d [%an]\" --graph --date=iso-local -n 5
|
||||||
|
histt = log --pretty=format:\"%C(yellow)%h%Creset %<(88,trunc)%s [%an]\" --graph --date=iso-local -n 5
|
||||||
|
histb = log --reverse --pretty=format:\"- %<(98,trunc)%s [%an]\" --date=iso-local -n 5
|
||||||
|
|
||||||
|
# compact diff
|
||||||
|
df = "diff --compact-summary"
|
||||||
|
|
||||||
|
# Short-form status
|
||||||
|
st = "!git status --short"
|
||||||
|
|
||||||
|
# Returns the name of the current branch
|
||||||
|
branch-name = "!git rev-parse --abbrev-ref HEAD"
|
||||||
|
|
||||||
|
# short-form of the above
|
||||||
|
bn = "!git branch-name"
|
||||||
|
|
||||||
|
po = "push origin ($(git branch-name))"
|
||||||
|
|
||||||
|
# List the stashes
|
||||||
|
sl = "stash list"
|
||||||
|
|
||||||
|
# Show the contents of a numbered stash
|
||||||
|
# Syntax:
|
||||||
|
# git st-show <int>
|
||||||
|
st-show = "!f() { git stash show stash@{$1} -p; }; f"
|
||||||
|
|
||||||
|
# Apply a stash, without deleting it from the list of stashes
|
||||||
|
# Syntax:
|
||||||
|
# git st-copy <int>
|
||||||
|
st-copy = "!f() { git stash apply stash@{$1}; }; f"
|
||||||
|
|
||||||
|
# Unstage a file
|
||||||
|
unstage = "reset HEAD"
|
||||||
|
|
||||||
|
# Restore a file to the state it was in when checked out
|
||||||
|
restore = "checkout --"
|
||||||
|
|
||||||
|
# Compare local master repo to its upstream branch. If anything is returned, local branch has diverged from upstream.
|
||||||
|
cm = "!f() { git fetch upstream master; git diff $(git branch-name) upstream/master --compact-summary; }; f"
|
||||||
|
cml = "!f() { git fetch upstream master; git diff $(git branch-name) upstream/master; }; f"
|
||||||
|
```
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# https://github.com/qmk/qmk_firmware/issues/3448#issuecomment-406636125
|
||||||
|
EXTRAFLAGS += -flto
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Luddite
|
||||||
|
|
||||||
|
Luddite 60% keyboard with backlight and RGB underglow.
|
||||||
|
|
||||||
|
* [The original TMK firmware](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/luddite)
|
||||||
|
|
||||||
|
Keyboard Maintainer: QMK Community
|
||||||
|
Hardware Supported: Luddite PCB
|
||||||
|
Hardware Availability: [Luddite project on 40% Keyboards](http://www.40percent.club/search/label/luddite)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make luddite: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).
|
||||||
|
|
||||||
|
First pass at adding support for the luddite keyboard. Compiles but completely
|
||||||
|
untested. Intended to kick-start development.
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x0A0C
|
||||||
|
#define DEVICE_VER 0x1001
|
||||||
|
#define MANUFACTURER di0ib
|
||||||
|
#define PRODUCT Luddite
|
||||||
|
#define DESCRIPTION Luddite Keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
|
/* key matrix pins */
|
||||||
|
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4, C6, D7, E6 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
#define BACKLIGHT_PIN B5
|
||||||
|
#ifdef BACKLIGHT_PIN
|
||||||
|
#define BACKLIGHT_LEVELS 4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN B4
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 8 // Number of LEDs
|
||||||
|
// #define RGBLIGHT_HUE_STEP 10
|
||||||
|
// #define RGBLIGHT_SAT_STEP 17
|
||||||
|
// #define RGBLIGHT_VAL_STEP 17
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
#define _BASE 0
|
||||||
|
#define _FN1 1
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_60_ansi(
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||||
|
KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , KC_RGUI , MO(_FN1) , KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
[_FN1] = LAYOUT_60_ansi(
|
||||||
|
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, \
|
||||||
|
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
||||||
|
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
KC_GRV, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "luddite.h"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K10, K11, K12, K13, K14, K15, \
|
||||||
|
K16, K17, K20, K21, K22, K23, K24, K25, K26, K27, K30, K31, K32, K33, \
|
||||||
|
K34, K35, K36, K37, K40, K41, K42, K43, K44, K45, K46, K47, K50, \
|
||||||
|
K51, K52, K53, K54, K55, K56, K57, K60, K61, K62, K63, K64, \
|
||||||
|
K65, K66, K67, K70, K71, K72, K73, K74\
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
|
||||||
|
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
|
||||||
|
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \
|
||||||
|
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
|
||||||
|
{ K70, K71, K72, K73, K74 }, \
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Bootloader
|
||||||
|
# This definition is optional, and if your keyboard supports multiple bootloaders of
|
||||||
|
# different sizes, comment this out, and the correct address will be loaded
|
||||||
|
# automatically (+60). See bootloader.mk for all options.
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# comment out to disable the options.
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
AUDIO_ENABLE = no
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|
||||||
|
LAYOUTS = 60_ansi
|
||||||
@@ -1 +0,0 @@
|
|||||||
# The default keymap for macropad
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#define RGB_DIGITAL_RAIN_DROPS 18
|
||||||
#define USB_MAX_POWER_CONSUMPTION 100
|
#define USB_MAX_POWER_CONSUMPTION 100
|
||||||
#define ONESHOT_TAP_TOGGLE 2
|
#define ONESHOT_TAP_TOGGLE 2
|
||||||
#define ONESHOT_TIMEOUT 3000
|
#define ONESHOT_TIMEOUT 3000
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#define RGB_DIGITAL_RAIN_DROPS 24
|
||||||
#define USB_MAX_POWER_CONSUMPTION 100
|
#define USB_MAX_POWER_CONSUMPTION 100
|
||||||
#define ONESHOT_TAP_TOGGLE 2
|
#define ONESHOT_TAP_TOGGLE 2
|
||||||
#define ONESHOT_TIMEOUT 3000
|
#define ONESHOT_TIMEOUT 3000
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// Backlight configuration
|
||||||
|
#undef BACKLIGHT_LEVELS
|
||||||
|
#define BACKLIGHT_LEVELS 10
|
||||||
|
|
||||||
|
// Underlight configuration
|
||||||
|
#undef RGB_DI_PIN
|
||||||
|
#define RGB_DI_PIN B2
|
||||||
|
#undef RGBLED_NUM
|
||||||
|
#define RGBLED_NUM 16 // Number of LEDs
|
||||||
|
#undef RGBLIGHT_HUE_STEP
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#undef RGBLIGHT_SAT_STEP
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#undef RGBLIGHT_VAL_STEP
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#define BASE 0 // Default layer
|
||||||
|
#define MOUSE 1 // Space layer
|
||||||
|
#define NUMPAD 2 // Alt layer
|
||||||
|
#define CAPS 3 // Caps layer
|
||||||
|
|
||||||
|
// General shortenings
|
||||||
|
#define ESCA KC_ESC
|
||||||
|
#define MINS KC_MINS
|
||||||
|
#define EQUL KC_EQL
|
||||||
|
#define BSPC KC_BSPC
|
||||||
|
#define DELE KC_DEL
|
||||||
|
#define LBRC KC_LBRC
|
||||||
|
#define RBRC KC_RBRC
|
||||||
|
#define ALTR KC_RALT
|
||||||
|
#define SCLN KC_SCLN
|
||||||
|
#define QUOT KC_QUOT
|
||||||
|
#define NUHS KC_NUHS
|
||||||
|
#define ENTE KC_ENT
|
||||||
|
#define NUBS KC_NUBS // Less/ greater sign
|
||||||
|
#define COMM KC_COMM // Comma
|
||||||
|
#define FSTO KC_DOT // Full stop
|
||||||
|
#define SLSH KC_SLSH
|
||||||
|
#define ALTL KC_LALT
|
||||||
|
#define GUIL KC_LGUI
|
||||||
|
#define GUIR KC_RGUI
|
||||||
|
#define MENO KC_MENU
|
||||||
|
|
||||||
|
// Special Actions and Media Keys
|
||||||
|
#define INSE KC_INS // Insert here
|
||||||
|
#define HOME KC_HOME // Go to beginning of line
|
||||||
|
#define ENDI KC_END // go to end of line
|
||||||
|
#define PSCR KC_PSCR // Print Screen
|
||||||
|
#define SLCK KC_SLCK // go to end of line
|
||||||
|
#define PGDN KC_PGDN // go to end of line
|
||||||
|
#define PGUP KC_PGUP // go to end of line
|
||||||
|
#define PLPS KC_MPLY // Play/Pause
|
||||||
|
#define PAUS KC_PAUS // Pause button
|
||||||
|
#define MUTE KC_MUTE // Mute sound
|
||||||
|
#define VOLU KC_VOLU // Volume increase
|
||||||
|
#define VOLD KC_VOLD // Volume decrease
|
||||||
|
#define MNXT KC_MNXT // next track
|
||||||
|
#define MPRV KC_MPRV // prev track
|
||||||
|
#define MSTP KC_MSTP // stop playing
|
||||||
|
#define MSEL KC_MSEL // Select media (Start playing it)
|
||||||
|
#define MAIL KC_MAIL // Open default mail app
|
||||||
|
#define CALC KC_CALC // Open default calculator app
|
||||||
|
#define MYCM KC_MYCM // Open default file manager
|
||||||
|
|
||||||
|
// increase readability
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXX KC_NO
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Keymap BASE: (Base Layer) Default Layer
|
||||||
|
* ,-----------------------------------------------------------.
|
||||||
|
* |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| R |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| # | R |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* |Shft| \ | Z| X| C| V| B| N| M| ,| .| /|Shift |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl |
|
||||||
|
* `-----------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
[ BASE ] = KEYMAP_ISO_SPLITRSHIFT(
|
||||||
|
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, XXXXX, \
|
||||||
|
LT(CAPS, 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, XXXXX, \
|
||||||
|
KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(CAPS), TG(NUMPAD), TG(MOUSE)),
|
||||||
|
|
||||||
|
[ MOUSE ] = KEYMAP( // Mouse controls
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXX,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, _______, _______, _______, _______,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXX,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[ NUMPAD ] = KEYMAP( //Numpad and alt shortcuts
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXX,\
|
||||||
|
_______, BL_TOGG, BL_DEC, BL_INC, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, _______,\
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, _______,\
|
||||||
|
_______, _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_7, KC_8, KC_9, KC_0, _______, _______, XXXXX,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[ CAPS ] = KEYMAP( // Main "function" key, arrows, media control
|
||||||
|
KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, XXXXX,\
|
||||||
|
_______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, PGDN, KC_UP, PGUP, PSCR, SLCK, PAUS, _______,\
|
||||||
|
_______, KC__VOLDOWN, KC__MUTE, KC__VOLUP, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXX,\
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# ISO layout for the Satan GH60
|
||||||
|
### Originally by Ben James, forked by Oliver Granlund
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
I've wanted to make this as close to a P0ker as possible, but some macros in
|
||||||
|
the P0ker don't make sense...
|
||||||
|
|
||||||
|
Some of the features:
|
||||||
|
* Caps activates special features when held:
|
||||||
|
* Arrow keys directly under right hand
|
||||||
|
* Volume control
|
||||||
|
* Fn keys on number row
|
||||||
|
* PageUp/PageDn/Home/other general buttons
|
||||||
|
* Mouse control
|
||||||
|
* Numpad (works so much better if this would be ortho)
|
||||||
|
### RGB-strip
|
||||||
|

|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
@@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define PRODUCT_ID 0x0000
|
#define PRODUCT_ID 0x0000
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER Treasure
|
#define MANUFACTURER Treasure
|
||||||
#define PRODUCT Macropad Type 9
|
#define PRODUCT Type 9
|
||||||
#define DESCRIPTION A custom macropad
|
#define DESCRIPTION A custom macropad
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Macropad",
|
"keyboard_name": "Type-9",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 3,
|
"width": 3,
|
||||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for Type-9
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# Macropad
|
# Type-9
|
||||||
|
|
||||||
3x3 Macropad.
|
3x3 Macropad.
|
||||||
|
|
||||||
@@ -8,6 +8,6 @@ Hardware Availability: [Treasure](http://macropad.co/)
|
|||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make macropad:default
|
make treasure/type9: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).
|
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).
|
||||||
File renamed without changes.
@@ -13,7 +13,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "macropad.h"
|
#include "type9.h"
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
@@ -13,8 +13,8 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef MACROPAD_H
|
#ifndef TYPE9_H
|
||||||
#define MACROPAD_H
|
#define TYPE9_H
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
#include "ymdk_np21.h"
|
#include QMK_KEYBOARD_H
|
||||||
#include "action_layer.h"
|
|
||||||
|
|
||||||
#define _NP 0
|
#define _NP 0
|
||||||
#define _BL 1
|
#define _BL 1
|
||||||
@@ -21,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Enter| Enter| + | + | - | FN |
|
* | Enter| Enter| + | + | - | FN |
|
||||||
* `-----------------------------------------'
|
* `-----------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_NP] = KEYMAP( \
|
[_NP] = LAYOUT( \
|
||||||
KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_NUMLOCK, KC_ESC, \
|
KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_NUMLOCK, KC_ESC, \
|
||||||
KC_DOT, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_TAB, \
|
KC_DOT, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_TAB, \
|
||||||
KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_BSPACE, \
|
KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_BSPACE, \
|
||||||
@@ -38,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | BL_DEC | BL_DEC | BL_INC | BL_INC | | |
|
* | BL_DEC | BL_DEC | BL_INC | BL_INC | | |
|
||||||
* `---------------------------------------------'
|
* `---------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_BL] = KEYMAP( \
|
[_BL] = LAYOUT( \
|
||||||
BL_BRTG, _______, _______, _______, _______, _______, \
|
BL_BRTG, _______, _______, _______, _______, _______, \
|
||||||
_______, BL_OFF, BL_TOGG, BL_ON, _______, _______, \
|
_______, BL_OFF, BL_TOGG, BL_ON, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, \
|
||||||
|
|||||||
@@ -91,12 +91,23 @@ uint8_t matrix_scan(void) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_scan_user(void) {};
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
void matrix_scan_kb(void) {
|
void matrix_scan_kb(void) {
|
||||||
// Looping keyboard code goes here
|
// Looping keyboard code goes here
|
||||||
// This runs every cycle (a lot)
|
// This runs every cycle (a lot)
|
||||||
matrix_scan_user();
|
matrix_scan_user();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_user(void) {};
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
// declarations
|
// declarations
|
||||||
void matrix_set_row_status(uint8_t row) {
|
void matrix_set_row_status(uint8_t row) {
|
||||||
DDRB = (1 << row);
|
DDRB = (1 << row);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ extern rgblight_config_t rgblight_config;
|
|||||||
// @Override
|
// @Override
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
// call user level keymaps, if any
|
// call user level keymaps, if any
|
||||||
// matrix_init_user();
|
matrix_init_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BACKLIGHT_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
@@ -67,7 +67,7 @@ void rgblight_set(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool rgb_init = false;
|
bool rgb_init = false;
|
||||||
void matrix_scan_user(void) {
|
void matrix_scan_kb(void) {
|
||||||
// if LEDs were previously on before poweroff, turn them back on
|
// if LEDs were previously on before poweroff, turn them back on
|
||||||
if (rgb_init == false && rgblight_config.enable) {
|
if (rgb_init == false && rgblight_config.enable) {
|
||||||
i2c_init();
|
i2c_init();
|
||||||
@@ -77,4 +77,6 @@ void matrix_scan_user(void) {
|
|||||||
|
|
||||||
rgblight_task();
|
rgblight_task();
|
||||||
/* Nothing else for now. */
|
/* Nothing else for now. */
|
||||||
|
|
||||||
|
matrix_scan_user();
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
void matrix_init_user(void); // TODO port this to other PS2AVRGB boards
|
void matrix_init_user(void); // TODO port this to other PS2AVRGB boards
|
||||||
|
|
||||||
#define KEYMAP_GRID( \
|
#define LAYOUT( \
|
||||||
K01, K02, K03, K04, K05, K06, \
|
K01, K02, K03, K04, K05, K06, \
|
||||||
K11, K12, K13, K14, K15, K16, \
|
K11, K12, K13, K14, K15, K16, \
|
||||||
K21, K22, K23, K24, K25, K26, \
|
K21, K22, K23, K24, K25, K26, \
|
||||||
@@ -38,6 +38,4 @@ void matrix_init_user(void); // TODO port this to other PS2AVRGB boards
|
|||||||
{ K36, K35, K34, K33, K32, K31 } \
|
{ K36, K35, K34, K33, K32, K31 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define KEYMAP KEYMAP_GRID
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -16,6 +16,10 @@
|
|||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
#include "action_tapping.h"
|
#include "action_tapping.h"
|
||||||
|
|
||||||
|
#ifndef TAPPING_TERM
|
||||||
|
#define TAPPING_TERM 200
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef NO_ACTION_ONESHOT
|
#ifndef NO_ACTION_ONESHOT
|
||||||
uint8_t get_oneshot_mods(void);
|
uint8_t get_oneshot_mods(void);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+4
-2
@@ -31,7 +31,7 @@
|
|||||||
#include "backlight.h"
|
#include "backlight.h"
|
||||||
#endif
|
#endif
|
||||||
#if !defined(RGBLIGHT_ENABLE) && !defined(RGB_MATRIX_ENABLE)
|
#if !defined(RGBLIGHT_ENABLE) && !defined(RGB_MATRIX_ENABLE)
|
||||||
#include "rgb.h"
|
#include "rgb.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#include "rgblight.h"
|
#include "rgblight.h"
|
||||||
@@ -108,7 +108,9 @@ extern uint32_t default_layer_state;
|
|||||||
#include "process_unicodemap.h"
|
#include "process_unicodemap.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "process_tap_dance.h"
|
#ifdef TAP_DANCE_ENABLE
|
||||||
|
#include "process_tap_dance.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef PRINTING_ENABLE
|
#ifdef PRINTING_ENABLE
|
||||||
#include "process_printer.h"
|
#include "process_printer.h"
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ rgb_config_t rgb_matrix_config;
|
|||||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
|
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef RGB_DIGITAL_RAIN_DROPS
|
||||||
|
// lower the number for denser effect/wider keyboard
|
||||||
|
#define RGB_DIGITAL_RAIN_DROPS 24
|
||||||
|
#endif
|
||||||
|
|
||||||
bool g_suspend_state = false;
|
bool g_suspend_state = false;
|
||||||
|
|
||||||
// Global tick at 20 Hz
|
// Global tick at 20 Hz
|
||||||
@@ -466,7 +471,6 @@ void rgb_matrix_jellybean_raindrops( bool initialize ) {
|
|||||||
void rgb_matrix_digital_rain( const bool initialize ) {
|
void rgb_matrix_digital_rain( const bool initialize ) {
|
||||||
// algorithm ported from https://github.com/tremby/Kaleidoscope-LEDEffect-DigitalRain
|
// algorithm ported from https://github.com/tremby/Kaleidoscope-LEDEffect-DigitalRain
|
||||||
const uint8_t drop_ticks = 28;
|
const uint8_t drop_ticks = 28;
|
||||||
const uint8_t new_drop_probability = 24;
|
|
||||||
const uint8_t pure_green_intensity = 0xd0;
|
const uint8_t pure_green_intensity = 0xd0;
|
||||||
const uint8_t max_brightness_boost = 0xc0;
|
const uint8_t max_brightness_boost = 0xc0;
|
||||||
const uint8_t max_intensity = 0xff;
|
const uint8_t max_intensity = 0xff;
|
||||||
@@ -481,7 +485,7 @@ void rgb_matrix_digital_rain( const bool initialize ) {
|
|||||||
}
|
}
|
||||||
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
||||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||||
if (row == 0 && drop == 0 && rand() < RAND_MAX / new_drop_probability) {
|
if (row == 0 && drop == 0 && rand() < RAND_MAX / RGB_DIGITAL_RAIN_DROPS) {
|
||||||
// top row, pixels have just fallen and we're
|
// top row, pixels have just fallen and we're
|
||||||
// making a new rain drop in this column
|
// making a new rain drop in this column
|
||||||
map[col][row] = max_intensity;
|
map[col][row] = max_intensity;
|
||||||
|
|||||||
Reference in new issue
Block a user