Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fcd744ddb | ||
|
|
d7ba190cd9 | ||
|
|
66dbcccb48 | ||
|
|
e7e13ebdd7 | ||
|
|
de161493c7 | ||
|
|
58a04162a8 | ||
|
|
424c359109 | ||
|
|
165b1683c1 | ||
|
|
69f757c3a2 | ||
|
|
8f3063402d | ||
|
|
8af1d3ad86 | ||
|
|
8c87274e83 | ||
|
|
eab6546fda | ||
|
|
2485f73f06 | ||
|
|
814118175b | ||
|
|
de6b568177 | ||
|
|
a20e59ac75 | ||
|
|
7870000d89 | ||
|
|
f19d138206 | ||
|
|
a206f3b739 | ||
|
|
75535cdfa3 | ||
|
|
1529f0b2d7 | ||
|
|
b090fe15d7 |
No files matched your search
+6
-1
@@ -114,7 +114,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 custom
|
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 WS2812 custom
|
||||||
|
|
||||||
LED_MATRIX_ENABLE ?= no
|
LED_MATRIX_ENABLE ?= no
|
||||||
ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
|
ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
|
||||||
@@ -172,6 +172,11 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737)
|
|||||||
SRC += i2c_master.c
|
SRC += i2c_master.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812)
|
||||||
|
OPT_DEFS += -DWS2812
|
||||||
|
SRC += ws2812.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||||
OPT_DEFS += -DTAP_DANCE_ENABLE
|
OPT_DEFS += -DTAP_DANCE_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
||||||
|
|||||||
+46
-1
@@ -195,6 +195,49 @@ This will clear all mods currently pressed.
|
|||||||
|
|
||||||
This will clear all keys besides the mods currently pressed.
|
This will clear all keys besides the mods currently pressed.
|
||||||
|
|
||||||
|
## Advanced Example:
|
||||||
|
|
||||||
|
### Super ALT↯TAB
|
||||||
|
|
||||||
|
This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows.
|
||||||
|
|
||||||
|
```c
|
||||||
|
bool is_alt_tab_active = false; # ADD this near the begining of keymap.c
|
||||||
|
uint16_t alt_tab_timer = 0; # we will be using them soon.
|
||||||
|
|
||||||
|
enum custom_keycodes { # Make sure have the awesome keycode ready
|
||||||
|
ALT_TAB = SAFE_RANGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) { # This will do most of the grunt work with the keycodes.
|
||||||
|
case ALT_TAB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (!is_alt_tab_active) {
|
||||||
|
is_alt_tab_active = true;
|
||||||
|
register_code(KC_LALT);
|
||||||
|
}
|
||||||
|
alt_tab_timer = timer_read();
|
||||||
|
register_code(KC_TAB);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_TAB);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) { # The very important timer.
|
||||||
|
if (is_alt_tab_active) {
|
||||||
|
if (timer_elapsed(alt_tab_timer) > 1000) {
|
||||||
|
unregister_code16(LALT(KC_TAB));
|
||||||
|
is_alt_tab_active = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## **(DEPRECATED)** The Old Way: `MACRO()` & `action_get_macro`
|
## **(DEPRECATED)** The Old Way: `MACRO()` & `action_get_macro`
|
||||||
|
|
||||||
@@ -273,7 +316,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Advanced Example: Single-Key Copy/Paste
|
## Advanced Example:
|
||||||
|
|
||||||
|
### Single-Key Copy/Paste
|
||||||
|
|
||||||
This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released.
|
This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released.
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ This feature allows you to use RGB LED matrices driven by external drivers. It h
|
|||||||
If you want to use single color LED's you should use the [LED Matrix Subsystem](feature_led_matrix.md) instead.
|
If you want to use single color LED's you should use the [LED Matrix Subsystem](feature_led_matrix.md) instead.
|
||||||
|
|
||||||
## Driver configuration
|
## Driver configuration
|
||||||
|
---
|
||||||
### IS31FL3731
|
### IS31FL3731
|
||||||
|
|
||||||
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
|
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
|
||||||
@@ -52,6 +52,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
|||||||
|
|
||||||
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](http://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0` or `1` right now).
|
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](http://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0` or `1` right now).
|
||||||
|
|
||||||
|
---
|
||||||
### IS31FL3733/IS31FL3737
|
### IS31FL3733/IS31FL3737
|
||||||
|
|
||||||
!> For the IS31FL3737, replace all instances of `IS31FL3733` below with `IS31FL3737`.
|
!> For the IS31FL3737, replace all instances of `IS31FL3733` below with `IS31FL3737`.
|
||||||
@@ -102,6 +103,27 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
|||||||
|
|
||||||
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](http://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now).
|
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](http://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### WS2812 (AVR only)
|
||||||
|
|
||||||
|
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
|
||||||
|
|
||||||
|
```C
|
||||||
|
RGB_MATRIX_ENABLE = WS2812
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure the hardware via your `config.h`:
|
||||||
|
|
||||||
|
```C
|
||||||
|
// The pin connected to the data pin of the LEDs
|
||||||
|
#define RGB_DI_PIN D7
|
||||||
|
// The number of LEDs connected
|
||||||
|
#define DRIVER_LED_TOTAL 70
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
From this point forward the configuration is the same for all the drivers.
|
From this point forward the configuration is the same for all the drivers.
|
||||||
|
|
||||||
```C
|
```C
|
||||||
|
|||||||
@@ -27,6 +27,12 @@
|
|||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
#if !defined(LED_ARRAY) && defined(RGB_MATRIX_ENABLE)
|
||||||
|
// LED color buffer
|
||||||
|
LED_TYPE led[DRIVER_LED_TOTAL];
|
||||||
|
#define LED_ARRAY led
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGBW_BB_TWI
|
#ifdef RGBW_BB_TWI
|
||||||
|
|
||||||
// Port for the I2C
|
// Port for the I2C
|
||||||
@@ -141,6 +147,25 @@ unsigned char I2C_Write(unsigned char c)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
// Set an led in the buffer to a color
|
||||||
|
void inline ws2812_setled(int i, uint8_t r, uint8_t g, uint8_t b)
|
||||||
|
{
|
||||||
|
led[i].r = r;
|
||||||
|
led[i].g = g;
|
||||||
|
led[i].b = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ws2812_setled_all (uint8_t r, uint8_t g, uint8_t b)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < RGBLED_NUM; i++) {
|
||||||
|
led[i].r = r;
|
||||||
|
led[i].g = g;
|
||||||
|
led[i].b = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Setleds for standard RGB
|
// Setleds for standard RGB
|
||||||
void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds)
|
void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
|
|
||||||
#include "rgblight_types.h"
|
#include "rgblight_types.h"
|
||||||
|
|
||||||
|
|
||||||
/* User Interface
|
/* User Interface
|
||||||
*
|
*
|
||||||
* Input:
|
* Input:
|
||||||
@@ -43,6 +42,10 @@
|
|||||||
* - Send out the LED data
|
* - Send out the LED data
|
||||||
* - Wait 50�s to reset the LEDs
|
* - Wait 50�s to reset the LEDs
|
||||||
*/
|
*/
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
void ws2812_setled (int index, uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
void ws2812_setled_all (uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
#endif
|
||||||
|
|
||||||
void ws2812_setleds (LED_TYPE *ledarray, uint16_t number_of_leds);
|
void ws2812_setleds (LED_TYPE *ledarray, uint16_t number_of_leds);
|
||||||
void ws2812_setleds_pin (LED_TYPE *ledarray, uint16_t number_of_leds,uint8_t pinmask);
|
void ws2812_setleds_pin (LED_TYPE *ledarray, uint16_t number_of_leds,uint8_t pinmask);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"keyboard_name": "Canoe",
|
"keyboard_name": "Canoe",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"url": "",
|
"url": "",
|
||||||
"height": 8,
|
"height": 6,
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_iso": {
|
"LAYOUT_iso": {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "skullydazed",
|
"maintainer": "skullydazed",
|
||||||
"width": 10,
|
"width": 10,
|
||||||
"height": 7,
|
"height": 8,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"height": 4.5,
|
"height": 4.7,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Ergodone",
|
"keyboard_name": "Ergodone",
|
||||||
"maintainer": "Yu He",
|
"maintainer": "Yu He",
|
||||||
"width": 19.5,
|
"width": 17,
|
||||||
"height": 9.375,
|
"height": 8,
|
||||||
|
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_ergodox": {
|
"LAYOUT_ergodox": {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"keyboard_name": "ErgoDox EZ",
|
"keyboard_name": "ErgoDox EZ",
|
||||||
"url": "ergodox-ez.com",
|
"url": "ergodox-ez.com",
|
||||||
"maintainer": "erez",
|
"maintainer": "erez",
|
||||||
"width": 19.5,
|
"width": 17,
|
||||||
"height": 9.375,
|
"height": 8,
|
||||||
|
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_ergodox": {
|
"LAYOUT_ergodox": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Infinity Ergodox",
|
"keyboard_name": "Infinity Ergodox",
|
||||||
"width": 19.5,
|
"width": 17,
|
||||||
"height": 9.375,
|
"height": 8,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_ergodox": {
|
"LAYOUT_ergodox": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"maintainer": "germ",
|
"maintainer": "germ",
|
||||||
"height": 4.75,
|
"height": 5.75,
|
||||||
"width": 19.5,
|
"width": 19.5,
|
||||||
"keyboard_name": "Gergo",
|
"keyboard_name": "Gergo",
|
||||||
"url": "http://gboards.ca",
|
"url": "http://gboards.ca",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"bootloader": "",
|
"bootloader": "",
|
||||||
"width": 20,
|
"width": 20,
|
||||||
"height": 8,
|
"height": 9.5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"keyboard_name": "Not So MiniDox",
|
"keyboard_name": "Not So MiniDox",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 12,
|
"width": 14,
|
||||||
"height": 5.75,
|
"height": 5.75,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 13,
|
"width": 13,
|
||||||
"height": 6,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"keyboard_name": "Prime_EXL",
|
"keyboard_name": "Prime_EXL",
|
||||||
"url": "https://www.primekb.com",
|
"url": "https://www.primekb.com",
|
||||||
"maintainer": "holtenc",
|
"maintainer": "holtenc",
|
||||||
"width": 18,
|
"width": 20.75,
|
||||||
"height": 5,
|
"height": 6,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":6.5,"y":0,"w":1,"h":1}, {"x":7.5,"y":0,"w":1,"h":1}, {"x":8.5,"y":0,"w":1,"h":1}, {"x":9.5,"y":0,"w":1,"h":1}, {"x":10.5,"y":0,"w":1,"h":1}, {"x":11.5,"y":0,"w":1,"h":1}, {"x":13.75,"y":0,"w":1,"h":1}, {"x":14.75,"y":0,"w":1,"h":1}, {"x":15.75,"y":0,"w":1,"h":1}, {"x":16.75,"y":0,"w":1,"h":1}, {"x":17.75,"y":0,"w":1,"h":1}, {"x":18.75,"y":0,"w":2,"h":1}, {"x":0,"y":1,"w":1,"h":1}, {"x":1,"y":1,"w":1,"h":1}, {"x":2,"y":1,"w":1,"h":1}, {"x":3,"y":1,"w":1,"h":1}, {"x":4,"y":1,"w":1,"h":1}, {"x":5,"y":1,"w":1,"h":1}, {"x":6.5,"y":1,"w":1.26,"h":1}, {"x":7.75,"y":1,"w":1,"h":1}, {"x":8.75,"y":1,"w":1,"h":1}, {"x":9.75,"y":1,"w":1,"h":1}, {"x":10.75,"y":1,"w":1,"h":1}, {"x":11.75,"y":1,"w":1,"h":1}, {"x":14,"y":1,"w":1,"h":1}, {"x":15,"y":1,"w":1,"h":1}, {"x":16,"y":1,"w":1,"h":1}, {"x":17,"y":1,"w":1,"h":1}, {"x":18,"y":1,"w":1,"h":1}, {"x":19,"y":1,"w":1.75,"h":1}, {"x":0,"y":2,"w":1,"h":1}, {"x":1,"y":2,"w":1,"h":1}, {"x":2,"y":2,"w":1,"h":1}, {"x":3,"y":2,"w":1,"h":1}, {"x":4,"y":2,"w":1,"h":1}, {"x":5,"y":2,"w":1,"h":1}, {"x":6.5,"y":2,"w":1.75,"h":1}, {"x":8.25,"y":2,"w":1,"h":1}, {"x":9.25,"y":2,"w":1,"h":1}, {"x":10.25,"y":2,"w":1,"h":1}, {"x":11.25,"y":2,"w":1,"h":1}, {"x":12.25,"y":2,"w":1,"h":1}, {"x":13.5,"y":2,"w":1,"h":1}, {"x":14.5,"y":2,"w":1,"h":1}, {"x":15.5,"y":2,"w":1,"h":1}, {"x":16.5,"y":2,"w":1,"h":1}, {"x":17.5,"y":2,"w":1,"h":1}, {"x":18.5,"y":2,"w":1,"h":1}, {"x":19.5,"y":2,"w":1.25,"h":1}, {"x":0,"y":3,"w":1,"h":1}, {"x":1,"y":3,"w":1,"h":1}, {"x":2,"y":3,"w":1,"h":1}, {"x":3,"y":3,"w":1,"h":1}, {"x":4,"y":3,"w":1,"h":1}, {"x":5,"y":3,"w":1,"h":1}, {"x":6.5,"y":3,"w":1.25,"h":1}, {"x":7.75,"y":3,"w":1.25,"h":1}, {"x":9,"y":3,"w":1,"h":1}, {"x":10,"y":3,"w":1,"h":1}, {"x":11,"y":3,"w":2,"h":1}, {"x":13.5,"y":3,"w":2,"h":1}, {"x":15.5,"y":3,"w":1,"h":1}, {"x":16.5,"y":3,"w":1,"h":1}, {"x":17.5,"y":3,"w":1.5,"h":1}, {"x":19,"y":3,"w":1.5,"h":1}, {"x":0,"y":4,"w":1,"h":1}, {"x":1,"y":4,"w":1,"h":1}, {"x":2,"y":4,"w":1,"h":1}, {"x":3,"y":4,"w":1,"h":1}, {"x":4,"y":4,"w":1,"h":1}, {"x":5,"y":4,"w":1,"h":1}]
|
"layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":6.5,"y":0,"w":1,"h":1}, {"x":7.5,"y":0,"w":1,"h":1}, {"x":8.5,"y":0,"w":1,"h":1}, {"x":9.5,"y":0,"w":1,"h":1}, {"x":10.5,"y":0,"w":1,"h":1}, {"x":11.5,"y":0,"w":1,"h":1}, {"x":13.75,"y":0,"w":1,"h":1}, {"x":14.75,"y":0,"w":1,"h":1}, {"x":15.75,"y":0,"w":1,"h":1}, {"x":16.75,"y":0,"w":1,"h":1}, {"x":17.75,"y":0,"w":1,"h":1}, {"x":18.75,"y":0,"w":2,"h":1}, {"x":0,"y":1,"w":1,"h":1}, {"x":1,"y":1,"w":1,"h":1}, {"x":2,"y":1,"w":1,"h":1}, {"x":3,"y":1,"w":1,"h":1}, {"x":4,"y":1,"w":1,"h":1}, {"x":5,"y":1,"w":1,"h":1}, {"x":6.5,"y":1,"w":1.26,"h":1}, {"x":7.75,"y":1,"w":1,"h":1}, {"x":8.75,"y":1,"w":1,"h":1}, {"x":9.75,"y":1,"w":1,"h":1}, {"x":10.75,"y":1,"w":1,"h":1}, {"x":11.75,"y":1,"w":1,"h":1}, {"x":14,"y":1,"w":1,"h":1}, {"x":15,"y":1,"w":1,"h":1}, {"x":16,"y":1,"w":1,"h":1}, {"x":17,"y":1,"w":1,"h":1}, {"x":18,"y":1,"w":1,"h":1}, {"x":19,"y":1,"w":1.75,"h":1}, {"x":0,"y":2,"w":1,"h":1}, {"x":1,"y":2,"w":1,"h":1}, {"x":2,"y":2,"w":1,"h":1}, {"x":3,"y":2,"w":1,"h":1}, {"x":4,"y":2,"w":1,"h":1}, {"x":5,"y":2,"w":1,"h":1}, {"x":6.5,"y":2,"w":1.75,"h":1}, {"x":8.25,"y":2,"w":1,"h":1}, {"x":9.25,"y":2,"w":1,"h":1}, {"x":10.25,"y":2,"w":1,"h":1}, {"x":11.25,"y":2,"w":1,"h":1}, {"x":12.25,"y":2,"w":1,"h":1}, {"x":13.5,"y":2,"w":1,"h":1}, {"x":14.5,"y":2,"w":1,"h":1}, {"x":15.5,"y":2,"w":1,"h":1}, {"x":16.5,"y":2,"w":1,"h":1}, {"x":17.5,"y":2,"w":1,"h":1}, {"x":18.5,"y":2,"w":1,"h":1}, {"x":19.5,"y":2,"w":1.25,"h":1}, {"x":0,"y":3,"w":1,"h":1}, {"x":1,"y":3,"w":1,"h":1}, {"x":2,"y":3,"w":1,"h":1}, {"x":3,"y":3,"w":1,"h":1}, {"x":4,"y":3,"w":1,"h":1}, {"x":5,"y":3,"w":1,"h":1}, {"x":6.5,"y":3,"w":1.25,"h":1}, {"x":7.75,"y":3,"w":1.25,"h":1}, {"x":9,"y":3,"w":1,"h":1}, {"x":10,"y":3,"w":1,"h":1}, {"x":11,"y":3,"w":2,"h":1}, {"x":13.5,"y":3,"w":2,"h":1}, {"x":15.5,"y":3,"w":1,"h":1}, {"x":16.5,"y":3,"w":1,"h":1}, {"x":17.5,"y":3,"w":1.5,"h":1}, {"x":19,"y":3,"w":1.5,"h":1}, {"x":0,"y":4,"w":1,"h":1}, {"x":1,"y":4,"w":1,"h":1}, {"x":2,"y":4,"w":1,"h":1}, {"x":3,"y":4,"w":1,"h":1}, {"x":4,"y":4,"w":1,"h":1}, {"x":5,"y":4,"w":1,"h":1}]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 16,
|
"width": 16,
|
||||||
"height": 5,
|
"height": 4.5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "Flehrad",
|
"maintainer": "Flehrad",
|
||||||
"width": 4.375,
|
"width": 4.375,
|
||||||
"height": 4.375,
|
"height": 4.5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_tradestation": {
|
"LAYOUT_tradestation": {
|
||||||
"layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25, "w":2},{"x":2.25, "y":2.25, "w":2},{"x":0, "y":3.5, "w":2},{"x":2.25, "y":3.5, "w":2}]
|
"layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25, "w":2},{"x":2.25, "y":2.25, "w":2},{"x":0, "y":3.5, "w":2},{"x":2.25, "y":3.5, "w":2}]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"keyboard_name": "kbd4x",
|
"keyboard_name": "kbd4x",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 14,
|
"width": 12,
|
||||||
"height": 4,
|
"height": 4,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_planck_mit": {
|
"LAYOUT_planck_mit": {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"keyboard_name": "Iris",
|
"keyboard_name": "Iris",
|
||||||
"url": "https://keeb.io",
|
"url": "https://keeb.io",
|
||||||
"maintainer": "Keebio",
|
"maintainer": "Keebio",
|
||||||
"width": 14.5,
|
"width": 15,
|
||||||
"height": 5,
|
"height": 5.75,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Monkeebs Orthodox Rev.1",
|
"keyboard_name": "Monkeebs Orthodox Rev.1",
|
||||||
"maintainer": "drashna",
|
"maintainer": "drashna",
|
||||||
"width": 17,
|
"width": 19,
|
||||||
"height": 17.24,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Monkeebs Orthodox Rev.3",
|
"keyboard_name": "Monkeebs Orthodox Rev.3",
|
||||||
"maintainer": "drashna",
|
"maintainer": "drashna",
|
||||||
"width": 17,
|
"width": 19,
|
||||||
"height": 17.24,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Monkeebs Orthodox Rev.3 (Teensy)",
|
"keyboard_name": "Monkeebs Orthodox Rev.3 (Teensy)",
|
||||||
"maintainer": "drashna",
|
"maintainer": "drashna",
|
||||||
"width": 17,
|
"width": 19,
|
||||||
"height": 17.24,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
#define STARTUP_SONG SONG(RICK_ROLL)
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float mushroom[][2] = SONG(MARIO_MUSHROOM);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
// Complex Tapdance hoopla
|
||||||
|
typedef struct {
|
||||||
|
bool is_press_action;
|
||||||
|
int state;
|
||||||
|
} tap;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SINGLE_TAP = 1,
|
||||||
|
SINGLE_HOLD = 2,
|
||||||
|
DOUBLE_TAP = 3,
|
||||||
|
DOUBLE_HOLD = 4,
|
||||||
|
TRIPLE_TAP = 5,
|
||||||
|
TRIPLE_HOLD = 6,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tap dance enums
|
||||||
|
enum {
|
||||||
|
X_AT_FUN = 0,
|
||||||
|
SH_M_LPAREN,
|
||||||
|
SH_M_RPAREN
|
||||||
|
};
|
||||||
|
|
||||||
|
int cur_dance (qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
|
void x_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||||
|
void x_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
bool is_alt_tab_active = false;
|
||||||
|
uint16_t alt_tab_timer = 0;
|
||||||
|
|
||||||
|
// Modified Programmer Dvorak enums
|
||||||
|
|
||||||
|
enum planck_layers {
|
||||||
|
_PDVORAK,
|
||||||
|
_UPPER,
|
||||||
|
_LOWER,
|
||||||
|
_FUNCTION,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
PDVK = SAFE_RANGE,
|
||||||
|
KC_LAST,
|
||||||
|
ALT_TAB
|
||||||
|
};
|
||||||
|
|
||||||
|
// For getting the last arg in shell line (SUPER THANKS to Drashna over on Discord)
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
static uint16_t macro_timer;
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case ALT_TAB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (!is_alt_tab_active) {
|
||||||
|
is_alt_tab_active = true;
|
||||||
|
register_code(KC_LALT);
|
||||||
|
}
|
||||||
|
alt_tab_timer = timer_read();
|
||||||
|
register_code(KC_TAB);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_TAB);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (keycode){
|
||||||
|
case KC_LAST:
|
||||||
|
if(record->event.pressed){
|
||||||
|
macro_timer = timer_read();
|
||||||
|
register_mods(MOD_BIT(KC_LCTRL));
|
||||||
|
} else {
|
||||||
|
unregister_mods(MOD_BIT(KC_LCTRL));
|
||||||
|
if (timer_elapsed(macro_timer) < 150) {
|
||||||
|
SEND_STRING("!$");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
if (is_alt_tab_active) {
|
||||||
|
if (timer_elapsed(alt_tab_timer) > 1000) {
|
||||||
|
unregister_code16(KC_LALT);
|
||||||
|
is_alt_tab_active = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PDVORAK MO(_PDVORAK)
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define UPPER MO(_UPPER)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Programmer Dvorak */
|
||||||
|
[_PDVORAK] = LAYOUT_planck_grid(
|
||||||
|
KC_GESC, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||||
|
KC_LAST, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLASH,
|
||||||
|
KC_LSPO, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC,
|
||||||
|
TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS)
|
||||||
|
),
|
||||||
|
|
||||||
|
[_UPPER] = LAYOUT_planck_grid(
|
||||||
|
KC_GRAVE, KC_AMPR, KC_PERC, KC_LBRC, KC_LCBR, KC_EQL, KC_ASTR, KC_RCBR, KC_RBRC, KC_EXLM, KC_HASH, KC_TRNS,
|
||||||
|
KC_PLUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINUS, KC_BSLASH,
|
||||||
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT_planck_grid(
|
||||||
|
KC_DLR, KC_7, KC_5, KC_3, KC_1, KC_9, KC_0, KC_2, KC_4, KC_6, KC_8, KC_TRNS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, CK_DOWN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[_FUNCTION] = LAYOUT_planck_grid(
|
||||||
|
KC_F11, KC_F7, KC_F5, KC_F3, KC_F1, KC_F9, KC_F12, KC_F2, KC_F4, KC_F6, KC_F8, RESET,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Super crazy tap dancing stuff - see quad dance in feature_tap_dance.md
|
||||||
|
|
||||||
|
int cur_dance (qk_tap_dance_state_t *state) {
|
||||||
|
if (state->count == 1) {
|
||||||
|
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
||||||
|
// key not interrupted, but still held sends 'HOLD'
|
||||||
|
else return SINGLE_HOLD;
|
||||||
|
}
|
||||||
|
else if (state->count == 2) {
|
||||||
|
if (state->interrupted || !state->pressed) return DOUBLE_TAP;
|
||||||
|
else return DOUBLE_HOLD;
|
||||||
|
}
|
||||||
|
else return 8; // magic number that i dont believe works.
|
||||||
|
}
|
||||||
|
|
||||||
|
// instance of tap for the 'X' dance.
|
||||||
|
static tap xtap_state = {
|
||||||
|
.is_press_action = true,
|
||||||
|
.state = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
// registering keypresses
|
||||||
|
void x_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
xtap_state.state = cur_dance(state);
|
||||||
|
switch (xtap_state.state) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_AT); break;
|
||||||
|
case SINGLE_HOLD: set_oneshot_layer(_UPPER, ONESHOT_START); break;
|
||||||
|
case DOUBLE_TAP: set_oneshot_layer(_FUNCTION, ONESHOT_START); break;
|
||||||
|
case DOUBLE_HOLD: reset_keyboard(); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// forgetting keypresses
|
||||||
|
|
||||||
|
void x_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
switch (xtap_state.state) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_AT); break;
|
||||||
|
case SINGLE_HOLD: clear_oneshot_layer_state(ONESHOT_PRESSED); break;
|
||||||
|
case DOUBLE_TAP: clear_oneshot_layer_state(ONESHOT_PRESSED); break;
|
||||||
|
case DOUBLE_HOLD: reset_keyboard(); break;
|
||||||
|
}
|
||||||
|
xtap_state.state = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[X_AT_FUN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset)
|
||||||
|
};
|
||||||
|
|
||||||
|
void shutdown_user(void) { clear_keyboard(); }
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Programmer Dvorak for the Planck (Light)
|
||||||
|
|
||||||
|
|
||||||
|
| Magic | | UPPER |
|
||||||
|
|----------|---------|-------|
|
||||||
|
| | DEFAULT | |
|
||||||
|
| FUNCTION | | LOWER |
|
||||||
|
|
||||||
|
# Layout notes
|
||||||
|
- ALT_TAB = cycle through windows as long as you keep tapping it keeps alt tabbing
|
||||||
|
- LAST = "!$" = is useful for using the last parm in bash/zsh
|
||||||
|
- More to come
|
||||||
|
|
||||||
|
|
||||||
|
# Dvorak base Layer
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
AUDIO_ENABLE = yes
|
||||||
|
COMMAND_ENABLE = no
|
||||||
|
TERMINAL_ENABLE = no
|
||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
@@ -5,8 +5,8 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"processor": "atmega32u4",
|
"processor": "atmega32u4",
|
||||||
"width": 14,
|
"width": 16,
|
||||||
"height": 4,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"key_count": 53,
|
"key_count": 53,
|
||||||
|
|||||||
@@ -4,14 +4,15 @@
|
|||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
|
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||||
LED_ANIMATIONS = yes # LED animations
|
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||||
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
|||||||
@@ -81,8 +81,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define ws2812_PORTREG PORTD
|
#define ws2812_PORTREG PORTD
|
||||||
#define ws2812_DDRREG DDRD
|
#define ws2812_DDRREG DDRD
|
||||||
|
|
||||||
#define DRIVER_COUNT 2
|
#define DRIVER_COUNT 1
|
||||||
#define DRIVER_LED_TOTAL 70
|
|
||||||
// #define RGB_MATRIX_KEYPRESSES
|
// #define RGB_MATRIX_KEYPRESSES
|
||||||
#define BACKLIGHT_PIN B7
|
#define BACKLIGHT_PIN B7
|
||||||
#define BACKLIGHT_LEVELS 5
|
#define BACKLIGHT_LEVELS 5
|
||||||
@@ -92,6 +91,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#else
|
#else
|
||||||
#define RGBLED_NUM 70
|
#define RGBLED_NUM 70
|
||||||
#endif
|
#endif
|
||||||
|
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||||
|
|
||||||
#define RGBLIGHT_RAINBOW_SWIRL_RANGE 1950
|
#define RGBLIGHT_RAINBOW_SWIRL_RANGE 1950
|
||||||
|
|
||||||
@@ -112,6 +112,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
#define LED_HITS_TO_REMEMBER 5
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
||||||
// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
|
// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
|
||||||
// 120 RGBoff, OLEDoff
|
// 120 RGBoff, OLEDoff
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#include "sol.h"
|
#include "sol.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef SSD1306OLED
|
#ifdef SSD1306OLED
|
||||||
void led_set_kb(uint8_t usb_led) {
|
void led_set_kb(uint8_t usb_led) {
|
||||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
@@ -8,8 +7,88 @@ void led_set_kb(uint8_t usb_led) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
// Left Hand Mapped Left to Right
|
||||||
|
{ { 0 | (0 << 4) }, { 0, 0 }, 1},
|
||||||
|
{ { 0 | (1 << 4) }, { 22, 0 }, 0},
|
||||||
|
{ { 0 | (2 << 4) }, { 37, 0 }, 0},
|
||||||
|
{ { 0 | (3 << 4) }, { 37, 0 }, 0},
|
||||||
|
{ { 0 | (4 << 4) }, { 67, 0 }, 0},
|
||||||
|
{ { 0 | (5 << 4) }, { 82, 0 }, 0},
|
||||||
|
{ { 0 | (6 << 4) }, { 104, 0 }, 1},
|
||||||
|
{ { 1 | (0 << 4) }, { 0, 16 }, 1},
|
||||||
|
{ { 1 | (1 << 4) }, { 22, 16 }, 0},
|
||||||
|
{ { 1 | (2 << 4) }, { 37, 16 }, 0},
|
||||||
|
{ { 1 | (3 << 4) }, { 37, 16 }, 0},
|
||||||
|
{ { 1 | (4 << 4) }, { 67, 16 }, 0},
|
||||||
|
{ { 1 | (5 << 4) }, { 82, 16 }, 0},
|
||||||
|
{ { 1 | (6 << 4) }, { 104, 16 }, 1},
|
||||||
|
{ { 2 | (0 << 4) }, { 0, 32 }, 1},
|
||||||
|
{ { 2 | (1 << 4) }, { 22, 32 }, 0},
|
||||||
|
{ { 2 | (2 << 4) }, { 37, 32 }, 0},
|
||||||
|
{ { 2 | (3 << 4) }, { 37, 32 }, 0},
|
||||||
|
{ { 2 | (4 << 4) }, { 67, 32 }, 0},
|
||||||
|
{ { 2 | (5 << 4) }, { 82, 32 }, 0},
|
||||||
|
{ { 2 | (6 << 4) }, { 104, 32 }, 1},
|
||||||
|
{ { 3 | (0 << 4) }, { 0, 48 }, 1},
|
||||||
|
{ { 3 | (1 << 4) }, { 22, 48 }, 0},
|
||||||
|
{ { 3 | (2 << 4) }, { 37, 48 }, 0},
|
||||||
|
{ { 3 | (3 << 4) }, { 37, 48 }, 0},
|
||||||
|
{ { 3 | (4 << 4) }, { 67, 48 }, 0},
|
||||||
|
{ { 3 | (5 << 4) }, { 82, 48 }, 0},
|
||||||
|
{ { 3 | (6 << 4) }, { 104, 48 }, 1},
|
||||||
|
{ { 4 | (0 << 4) }, { 0, 64 }, 1},
|
||||||
|
{ { 4 | (1 << 4) }, { 22, 64 }, 1},
|
||||||
|
{ { 4 | (2 << 4) }, { 37, 64 }, 1},
|
||||||
|
{ { 4 | (3 << 4) }, { 37, 64 }, 1},
|
||||||
|
{ { 4 | (4 << 4) }, { 67, 64 }, 1},
|
||||||
|
// These two control the 4 LEDs in the thumb cluster
|
||||||
|
// Top keys are { 4 | (5 << 4) & { 4 | (6 << 4)
|
||||||
|
{ { 5 | (5 << 4) }, { 89, 45 }, 1},
|
||||||
|
{ { 5 | (6 << 4) }, { 97, 55 }, 1},
|
||||||
|
// Left Hand Mapped Right to Left
|
||||||
|
{ { 6 | (0 << 4) }, { 224, 0 }, 1},
|
||||||
|
{ { 6 | (1 << 4) }, { 202, 0 }, 0},
|
||||||
|
{ { 6 | (2 << 4) }, { 187, 0 }, 0},
|
||||||
|
{ { 6 | (3 << 4) }, { 172, 0 }, 0},
|
||||||
|
{ { 6 | (4 << 4) }, { 157, 0 }, 0},
|
||||||
|
{ { 6 | (5 << 4) }, { 142, 0 }, 0},
|
||||||
|
{ { 6 | (6 << 4) }, { 120, 0 }, 1},
|
||||||
|
{ { 7 | (0 << 4) }, { 224, 16 }, 1},
|
||||||
|
{ { 7 | (1 << 4) }, { 202, 16 }, 0},
|
||||||
|
{ { 7 | (2 << 4) }, { 187, 16 }, 0},
|
||||||
|
{ { 7 | (3 << 4) }, { 172, 16 }, 0},
|
||||||
|
{ { 7 | (4 << 4) }, { 157, 16 }, 0},
|
||||||
|
{ { 7 | (5 << 4) }, { 142, 16 }, 0},
|
||||||
|
{ { 7 | (6 << 4) }, { 120, 16 }, 1},
|
||||||
|
{ { 8 | (0 << 4) }, { 224, 32 }, 1},
|
||||||
|
{ { 8 | (1 << 4) }, { 202, 32 }, 0},
|
||||||
|
{ { 8 | (2 << 4) }, { 187, 32 }, 0},
|
||||||
|
{ { 8 | (3 << 4) }, { 172, 32 }, 0},
|
||||||
|
{ { 8 | (4 << 4) }, { 157, 32 }, 0},
|
||||||
|
{ { 8 | (5 << 4) }, { 142, 32 }, 0},
|
||||||
|
{ { 8 | (6 << 4) }, { 120, 32 }, 1},
|
||||||
|
{ { 9 | (0 << 4) }, { 224, 48 }, 1},
|
||||||
|
{ { 9 | (1 << 4) }, { 202, 48 }, 0},
|
||||||
|
{ { 9 | (2 << 4) }, { 187, 48 }, 0},
|
||||||
|
{ { 9 | (3 << 4) }, { 172, 48 }, 0},
|
||||||
|
{ { 9 | (4 << 4) }, { 157, 48 }, 0},
|
||||||
|
{ { 9 | (5 << 4) }, { 142, 48 }, 0},
|
||||||
|
{ { 9 | (6 << 4) }, { 120, 48 }, 1},
|
||||||
|
{ { 10 | (0 << 4) }, { 224, 64 }, 1},
|
||||||
|
{ { 10 | (1 << 4) }, { 202, 64 }, 1},
|
||||||
|
{ { 10 | (2 << 4) }, { 187, 64 }, 1},
|
||||||
|
{ { 10 | (3 << 4) }, { 172, 64 }, 1},
|
||||||
|
{ { 10 | (4 << 4) }, { 157, 64 }, 1},
|
||||||
|
// These two control the 4 LEDs in the thumb cluster
|
||||||
|
// Top keys are { 10 | (5 << 4) & { 10 | (6 << 4)
|
||||||
|
{ { 11 | (5 << 4) }, { 135, 45 }, 1},
|
||||||
|
{ { 11 | (6 << 4) }, { 127, 55 }, 1}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"bootloader": "",
|
"bootloader": "",
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"height": 6,
|
"height": 6.5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"label":"k00", "x":0, "y":0.375}, {"label":"k01", "x":1, "y":0.375}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.25}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":9, "y":0.5}, {"label":"k07", "x":10, "y":0.25}, {"label":"k08", "x":11, "y":0}, {"label":"k09", "x":12, "y":0.25}, {"label":"k10", "x":13, "y":0.375}, {"label":"k11", "x":14, "y":0.375}, {"label":"k12", "x":0, "y":1.375}, {"label":"k13", "x":1, "y":1.375}, {"label":"k14", "x":2, "y":1.25}, {"label":"k15", "x":3, "y":1}, {"label":"k16", "x":4, "y":1.25}, {"label":"k17", "x":5, "y":1.5}, {"label":"k18", "x":7, "y":2}, {"label":"k19", "x":9, "y":1.5}, {"label":"k20", "x":10, "y":1.25}, {"label":"k21", "x":11, "y":1}, {"label":"k22", "x":12, "y":1.25}, {"label":"k23", "x":13, "y":1.375}, {"label":"k24", "x":14, "y":1.375}, {"label":"k25", "x":0, "y":2.375}, {"label":"k26", "x":1, "y":2.375}, {"label":"k27", "x":2, "y":2.25}, {"label":"k28", "x":3, "y":2}, {"label":"k29", "x":4, "y":2.25}, {"label":"k30", "x":5, "y":2.5}, {"label":"k31", "x":7, "y":3}, {"label":"k32", "x":9, "y":2.5}, {"label":"k33", "x":10, "y":2.25}, {"label":"k34", "x":11, "y":2}, {"label":"k35", "x":12, "y":2.25}, {"label":"k36", "x":13, "y":2.375}, {"label":"k37", "x":14, "y":2.375}, {"label":"k38", "x":0, "y":3.375}, {"label":"k39", "x":1, "y":3.375}, {"label":"k40", "x":2, "y":3.25}, {"label":"k41", "x":3, "y":3}, {"label":"k42", "x":4, "y":3.25}, {"label":"k43", "x":5, "y":3.5}, {"label":"k44", "x":6.5, "y":4}, {"label":"k45", "x":7.5, "y":4}, {"label":"k46", "x":9, "y":3.5}, {"label":"k47", "x":10, "y":3.25}, {"label":"k48", "x":11, "y":3}, {"label":"k49", "x":12, "y":3.25}, {"label":"k50", "x":13, "y":3.375}, {"label":"k51", "x":14, "y":3.375}, {"label":"k52", "x":0, "y":4.375}, {"label":"k53", "x":1, "y":4.375}, {"label":"k54", "x":2, "y":4.25}, {"label":"k55", "x":3, "y":4}, {"label":"k56", "x":4, "y":4.25}, {"label":"k57", "x":5.5, "y":5}, {"label":"k58", "x":6.5, "y":5.5}, {"label":"k59", "x":7.5, "y":5.5}, {"label":"k60", "x":8.5, "y":5}, {"label":"k61", "x":10, "y":4.25}, {"label":"k62", "x":11, "y":4}, {"label":"k63", "x":12, "y":4.25}, {"label":"k64", "x":13, "y":4.375}, {"label":"k65", "x":14, "y":4.375}]
|
"layout": [{"label":"k00", "x":0, "y":0.375}, {"label":"k01", "x":1, "y":0.375}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.25}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":9, "y":0.5}, {"label":"k07", "x":10, "y":0.25}, {"label":"k08", "x":11, "y":0}, {"label":"k09", "x":12, "y":0.25}, {"label":"k10", "x":13, "y":0.375}, {"label":"k11", "x":14, "y":0.375}, {"label":"k12", "x":0, "y":1.375}, {"label":"k13", "x":1, "y":1.375}, {"label":"k14", "x":2, "y":1.25}, {"label":"k15", "x":3, "y":1}, {"label":"k16", "x":4, "y":1.25}, {"label":"k17", "x":5, "y":1.5}, {"label":"k18", "x":7, "y":2}, {"label":"k19", "x":9, "y":1.5}, {"label":"k20", "x":10, "y":1.25}, {"label":"k21", "x":11, "y":1}, {"label":"k22", "x":12, "y":1.25}, {"label":"k23", "x":13, "y":1.375}, {"label":"k24", "x":14, "y":1.375}, {"label":"k25", "x":0, "y":2.375}, {"label":"k26", "x":1, "y":2.375}, {"label":"k27", "x":2, "y":2.25}, {"label":"k28", "x":3, "y":2}, {"label":"k29", "x":4, "y":2.25}, {"label":"k30", "x":5, "y":2.5}, {"label":"k31", "x":7, "y":3}, {"label":"k32", "x":9, "y":2.5}, {"label":"k33", "x":10, "y":2.25}, {"label":"k34", "x":11, "y":2}, {"label":"k35", "x":12, "y":2.25}, {"label":"k36", "x":13, "y":2.375}, {"label":"k37", "x":14, "y":2.375}, {"label":"k38", "x":0, "y":3.375}, {"label":"k39", "x":1, "y":3.375}, {"label":"k40", "x":2, "y":3.25}, {"label":"k41", "x":3, "y":3}, {"label":"k42", "x":4, "y":3.25}, {"label":"k43", "x":5, "y":3.5}, {"label":"k44", "x":6.5, "y":4}, {"label":"k45", "x":7.5, "y":4}, {"label":"k46", "x":9, "y":3.5}, {"label":"k47", "x":10, "y":3.25}, {"label":"k48", "x":11, "y":3}, {"label":"k49", "x":12, "y":3.25}, {"label":"k50", "x":13, "y":3.375}, {"label":"k51", "x":14, "y":3.375}, {"label":"k52", "x":0, "y":4.375}, {"label":"k53", "x":1, "y":4.375}, {"label":"k54", "x":2, "y":4.25}, {"label":"k55", "x":3, "y":4}, {"label":"k56", "x":4, "y":4.25}, {"label":"k57", "x":5.5, "y":5}, {"label":"k58", "x":6.5, "y":5.5}, {"label":"k59", "x":7.5, "y":5.5}, {"label":"k60", "x":8.5, "y":5}, {"label":"k61", "x":10, "y":4.25}, {"label":"k62", "x":11, "y":4}, {"label":"k63", "x":12, "y":4.25}, {"label":"k64", "x":13, "y":4.375}, {"label":"k65", "x":14, "y":4.375}]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 18.25,
|
"width": 18.25,
|
||||||
"height": 7.25,
|
"height": 6.25,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_all": {
|
"LAYOUT_all": {
|
||||||
"layout": [
|
"layout": [
|
||||||
|
|||||||
@@ -28,9 +28,11 @@
|
|||||||
#ifdef IS31FL3731
|
#ifdef IS31FL3731
|
||||||
#include "is31fl3731.h"
|
#include "is31fl3731.h"
|
||||||
#elif defined (IS31FL3733)
|
#elif defined (IS31FL3733)
|
||||||
#include "is31fl3733.h"
|
#include "is31fl3733.h"
|
||||||
#elif defined (IS31FL3737)
|
#elif defined (IS31FL3737)
|
||||||
#include "is31fl3737.h"
|
#include "is31fl3737.h"
|
||||||
|
#elif defined (WS2812)
|
||||||
|
#include "ws2812.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef RGB_MATRIX_LED_FLUSH_LIMIT
|
#ifndef RGB_MATRIX_LED_FLUSH_LIMIT
|
||||||
|
|||||||
@@ -97,4 +97,25 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#elif defined(WS2812)
|
||||||
|
|
||||||
|
extern LED_TYPE led[RGBLED_NUM];
|
||||||
|
|
||||||
|
static void flush( void )
|
||||||
|
{
|
||||||
|
// Assumes use of RGB_DI_PIN
|
||||||
|
ws2812_setleds(led, RGBLED_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init( void )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const rgb_matrix_driver_t rgb_matrix_driver = {
|
||||||
|
.init = init,
|
||||||
|
.flush = flush,
|
||||||
|
.set_color = ws2812_setled,
|
||||||
|
.set_color_all = ws2812_setled_all,
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
@@ -63,7 +63,11 @@ const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90};
|
|||||||
rgblight_config_t rgblight_config;
|
rgblight_config_t rgblight_config;
|
||||||
bool is_rgblight_initialized = false;
|
bool is_rgblight_initialized = false;
|
||||||
|
|
||||||
|
#ifndef LED_ARRAY
|
||||||
LED_TYPE led[RGBLED_NUM];
|
LED_TYPE led[RGBLED_NUM];
|
||||||
|
#define LED_ARRAY led
|
||||||
|
#endif
|
||||||
|
|
||||||
bool rgblight_timer_enabled = false;
|
bool rgblight_timer_enabled = false;
|
||||||
|
|
||||||
static uint8_t clipping_start_pos = 0;
|
static uint8_t clipping_start_pos = 0;
|
||||||
|
|||||||
@@ -11,5 +11,5 @@ MOUSEKEY_ENABLE = no
|
|||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
COMMAND_ENABLE = yes
|
COMMAND_ENABLE = yes
|
||||||
CONSOLE_ENABLE = yes
|
CONSOLE_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = no
|
||||||
RGBLIGHT_ANIMATIONS = yes
|
RGBLIGHT_ANIMATIONS = yes
|
||||||
Reference in new issue
Block a user