Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d8253b83e8 | ||
|
|
0a03f7cff7 | ||
|
|
21fc6be41b | ||
|
|
989c2094f8 | ||
|
|
fd48f687b1 | ||
|
|
4211252117 | ||
|
|
0694decfa1 | ||
|
|
da1f05fbc1 | ||
|
|
cf215487ba | ||
|
|
e717dcaa09 | ||
|
|
38fdf7a2d2 | ||
|
|
663ca6ba9d |
@@ -13,8 +13,6 @@ env:
|
||||
- MAKEFLAGS="-j3 --output-sync"
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
- docker build -t qmkfm/qmk_firmware .
|
||||
install:
|
||||
- npm install -g moxygen
|
||||
script:
|
||||
|
||||
24
Dockerfile
24
Dockerfile
@@ -1,26 +1,4 @@
|
||||
FROM debian:9
|
||||
|
||||
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||
avr-libc \
|
||||
avrdude \
|
||||
binutils-arm-none-eabi \
|
||||
binutils-avr \
|
||||
build-essential \
|
||||
dfu-programmer \
|
||||
dfu-util \
|
||||
gcc \
|
||||
gcc-avr \
|
||||
git \
|
||||
libnewlib-arm-none-eabi \
|
||||
software-properties-common \
|
||||
unzip \
|
||||
wget \
|
||||
zip \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# upgrade gcc-arm-none-eabi from the default 5.4.1 to 6.3.1 due to ARM runtime issues
|
||||
RUN wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 -O - | \
|
||||
tar xj --strip-components=1 -C /
|
||||
FROM qmkfm/base_container
|
||||
|
||||
VOLUME /qmk_firmware
|
||||
WORKDIR /qmk_firmware
|
||||
|
||||
@@ -87,6 +87,7 @@ Size after:
|
||||
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
|
||||
firmware repeatedly and continually; that'll burn the EEPROM
|
||||
eventually.
|
||||
|
||||
## NKRO Doesn't work
|
||||
First you have to compile firmware with this build option `NKRO_ENABLE` in **Makefile**.
|
||||
|
||||
|
||||
@@ -127,9 +127,7 @@ Once it does this, you'll want to reset the controller. It should then show out
|
||||
>>> dfu-programmer atmega32u4 reset
|
||||
```
|
||||
|
||||
If you have any issues with this, you may need to this:
|
||||
|
||||
sudo make <my_keyboard>:<my_keymap>:dfu
|
||||
?> If you have any issues with this - such as `dfu-programmer: no device present` - please see the [Frequently Asked Build Questions](faq_build.md).
|
||||
|
||||
#### DFU commands
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc |
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bkspc |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
@@ -17,8 +17,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
*/
|
||||
|
||||
LAYOUT_directional(
|
||||
KC_GRAVE, 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_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSLS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, _______, RSFT_T(KC_SLSH) , KC_UP, KC_ESCAPE,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
|
||||
@@ -12,6 +12,7 @@ Settings:
|
||||
* RESET is available as `Fn`+ ` ESC`
|
||||
* Underglow toggle is available as `Fn` + `Q`. Yes your keyboard has lights even if you didn't get the LEDs. Bonus!
|
||||
* vim-style arrow key bindings H J K L in layer 1
|
||||
* The `Bkspc` and `\` keys have been swapped, the reach was too great to have backspace on the top row
|
||||
|
||||
### Initial Installation
|
||||
|
||||
@@ -35,16 +36,16 @@ A hex file `dz60_billiams.hex` will be created in the base qmk_firmware director
|
||||
5. Holding those keys down, plug the keyboard into your computer, which will put the keyboard in bootlegger mode
|
||||
6. If you are using [QMK toolbox](https://github.com/qmk/qmk_toolbox/releases), upload the .hex file you made above, select it and hit the flash button. For the love of all that is good and holy on Earth, don't hit the load button, that will load the default keymap and that's not what you want! Unless it is, in which case click away.
|
||||
|
||||
Note: If you didn't follow my instructions in 4 and accidentally loaded the default keymap, then to `RESET` the keyboard and kick it into bootleg mode again, hold the `down arrow` key and `\`. The default layout is Build 1 and sets the `MENU` key on that build to `Fn`. `MENU` corresponds to `down arrow` in build 4. Note that you don't have to unplug the keyboard.
|
||||
Note: If you didn't follow my instructions in 4 and accidentally loaded the default keymap, then to `RESET` the keyboard and kick it into bootleg mode again, hold the `down arrow` key and `\`. The default layout is Build 1 and sets the `MENU` key on that build to `Fn`. `MENU` corresponds to `down arrow` in build 4. Note that you don't have to unplug the keyboard.
|
||||
|
||||
Hope this helps!
|
||||
|
||||
### 0 Qwerty
|
||||
```
|
||||
,-----------------------------------------------------------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc |
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |
|
||||
|-----------------------------------------------------------------------------------------+
|
||||
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bkspc |
|
||||
|-----------------------------------------------------------------------------------------+
|
||||
| Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||
|-----------------------------------------------------------------------------------------+
|
||||
@@ -69,4 +70,3 @@ FN Layer
|
||||
| | | | | | | HOME | PG_DN | END |
|
||||
`-----------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ void rgb_matrix_indicators_user(void)
|
||||
break;
|
||||
|
||||
case _RGB: {
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
HSV hsv = { rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v };
|
||||
HSV hui = hsv;
|
||||
HSV hud = hsv;
|
||||
HSV sai = hsv;
|
||||
|
||||
67
keyboards/ivy/config.h
Normal file
67
keyboards/ivy/config.h
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x1337
|
||||
#define PRODUCT_ID 0x6012
|
||||
#define MANUFACTURER Maple Computing
|
||||
#define PRODUCT Ivy
|
||||
#define DESCRIPTION A 3 key macro pad
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 3
|
||||
#define MATRIX_COLS 3
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define BACKLIGHT_PIN D2
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
1
keyboards/ivy/ivy.c
Normal file
1
keyboards/ivy/ivy.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "ivy.h"
|
||||
7
keyboards/ivy/ivy.h
Normal file
7
keyboards/ivy/ivy.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef KEYBOARD_ivy_rev1
|
||||
#include "rev1.h"
|
||||
#endif
|
||||
|
||||
#include "quantum.h"
|
||||
46
keyboards/ivy/keymaps/default/keymap.c
Normal file
46
keyboards/ivy/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,46 @@
|
||||
#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.
|
||||
|
||||
enum pad_layers {
|
||||
_L1,
|
||||
_FUNC
|
||||
};
|
||||
|
||||
// Defines for task manager and such
|
||||
#define CALTDEL LCTL(LALT(KC_DEL))
|
||||
#define TSKMGR LCTL(LSFT(KC_ESC))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Layer 1
|
||||
* ,------.
|
||||
* | 1 |
|
||||
* |------|
|
||||
* | 2 |
|
||||
* |------|
|
||||
* | FN |
|
||||
* `------'
|
||||
*/
|
||||
[_L1] = LAYOUT( \
|
||||
KC_1, \
|
||||
KC_2, \
|
||||
MO(_FUNC) \
|
||||
),
|
||||
|
||||
[_FUNC] = LAYOUT( \
|
||||
CALTDEL, \
|
||||
TSKMGR, \
|
||||
_______ \
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
void matrix_init_user(void) {
|
||||
|
||||
}
|
||||
22
keyboards/ivy/keymaps/default/rules.mk
Normal file
22
keyboards/ivy/keymaps/default/rules.mk
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = 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 = no # Enable WS2812 RGB underlight.
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
15
keyboards/ivy/readme.md
Normal file
15
keyboards/ivy/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
IVY
|
||||
===
|
||||
|
||||

|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ivy/rev1:default
|
||||
|
||||
Install examples:
|
||||
|
||||
make ivy/rev1:default:dfu
|
||||
|
||||
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).
|
||||
27
keyboards/ivy/rev1/config.h
Normal file
27
keyboards/ivy/rev1/config.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define DEVICE_VER 0x0001
|
||||
|
||||
/* Let's Macro V2 pin-out */
|
||||
#define MATRIX_ROW_PINS { F1, B2, D3 }
|
||||
#define MATRIX_COL_PINS { F5, B3, D5 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
5
keyboards/ivy/rev1/rev1.c
Normal file
5
keyboards/ivy/rev1/rev1.c
Normal file
@@ -0,0 +1,5 @@
|
||||
#include "ivy.h"
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
};
|
||||
14
keyboards/ivy/rev1/rev1.h
Normal file
14
keyboards/ivy/rev1/rev1.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "ivy.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K00, \
|
||||
K01, \
|
||||
K02 \
|
||||
) \
|
||||
{ \
|
||||
{ K00, KC_NO, KC_NO }, \
|
||||
{ KC_NO, K01, KC_NO }, \
|
||||
{ KC_NO, KC_NO, K02 }, \
|
||||
}
|
||||
3
keyboards/ivy/rev1/rules.mk
Normal file
3
keyboards/ivy/rev1/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
AUDIO_ENABLE = no
|
||||
67
keyboards/ivy/rules.mk
Normal file
67
keyboards/ivy/rules.mk
Normal file
@@ -0,0 +1,67 @@
|
||||
# MCU name
|
||||
#MCU = at90usb1287
|
||||
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
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI 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 = no # Enable WS2812 RGB underlight.
|
||||
API_SYSEX_ENABLE = no
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
DEFAULT_FOLDER = ivy/rev1
|
||||
@@ -10,6 +10,7 @@ enum layers_keymap {
|
||||
};
|
||||
|
||||
void eeconfig_init_keymap(void) {
|
||||
rgblight_sethsv(MODERN_DOLCH_RED.h, MODERN_DOLCH_RED.s, MODERN_DOLCH_RED.v);
|
||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||
}
|
||||
|
||||
@@ -81,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
|
||||
* │ │Mv←│Mv↓│Mv→│TNx│ │ │ │ │ │ │ │ │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
|
||||
* │ │RTg│RV-│RV+│ │ │ │ │M4 │M5 │ │ │ │
|
||||
* │ │RTg│RV-│RV+│RMd│ │ │ │M4 │M5 │ │ │ │
|
||||
* └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
|
||||
* │DPR│DstNA│ │ │ │
|
||||
* └───┴─────┴───────────────────────────┴─────┴───┘
|
||||
@@ -90,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLEAR,
|
||||
_______, TOP, MV_UP, BOTTOM, TAB_PRV, _______, _______, _______, _______, _______, _______, _______, _______, DEL_NXT,
|
||||
_______, MV_LEFT, MV_DOWN, MV_RGHT, TAB_NXT, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_BTN4, KC_BTN5, _______, _______, _______,
|
||||
_______, RGB_TOG, RGB_VAD, RGB_VAI, RGB_MOD, _______, _______, _______, KC_BTN4, KC_BTN5, _______, _______, _______,
|
||||
XXXXXXX, DST_P_R, DST_N_A, _______, _______, _______, XXXXXXX
|
||||
),
|
||||
};
|
||||
|
||||
@@ -4,14 +4,17 @@ extern keymap_config_t keymap_config;
|
||||
|
||||
enum layer_names {
|
||||
_QWERTY,
|
||||
_WORKMAN,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
LOWER = SAFE_RANGE,
|
||||
RAISE,
|
||||
QWERTY = SAFE_RANGE,
|
||||
WORKMAN,
|
||||
LOWER,
|
||||
RAISE
|
||||
};
|
||||
|
||||
#define KC_ KC_TRNS
|
||||
@@ -33,9 +36,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
LCTL, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
|
||||
LSFT, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
LSFT, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RSFT,
|
||||
LECL, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
LGUI,LOWR,ENT , SPC ,RASE,RALT
|
||||
// `----+----+----' `----+----+----'
|
||||
),
|
||||
|
||||
[_WORKMAN] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
|
||||
GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
TAB , Q , D , R , W , B , J , F , U , P ,SCLN,BSLS,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
LSFT, A , S , H , T , G , Y , N , E , O ,I ,QUOT,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
LECL, Z , X , M , C , V ,LBRC, RBRC, K , L ,COMM,DOT ,SLSH,RGHT,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
LGUI,LOWR,ENT , SPC ,RASE,RALT
|
||||
// `----+----+----' `----+----+----'
|
||||
@@ -45,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
|
||||
TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
, , UP , , , , , ,BTN1, , , ,
|
||||
, , , , , , , ,BTN1, , , ,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
,LEFT,DOWN,RGHT, , , MS_L,MS_D,MS_U,MS_R, , ,
|
||||
, , , , , , MS_L,MS_D,MS_U,MS_R, , ,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
, , , , , , , , , , , , , ,
|
||||
, , , , , UP , , , , , , , , ,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
, , , , ,
|
||||
// `----+----+----' `----+----+----'
|
||||
@@ -63,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
,MPLY,VOLD,MNXT, ,LPRN, RPRN,MINS,EQL , , , ,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
, , , , , , , , , , , , , ,
|
||||
, , , , , , , ,DOWN, , , , , ,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
, , , , ,
|
||||
// `----+----+----' `----+----+----'
|
||||
@@ -71,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@@ -91,6 +108,16 @@ float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||
|
||||
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;
|
||||
case WORKMAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_WORKMAN);
|
||||
}
|
||||
return false;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
@@ -100,7 +127,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
@@ -110,7 +136,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||

|
||||
|
||||
- mouse keys enabled
|
||||
- WASD as arrow keys, and same ones for media
|
||||
- includes a QWERTY and a WORKMAN layout now
|
||||
- keys that I need, while removing keys that I don't
|
||||
- more updates with the layout coming soon
|
||||
- the enter needs to move elsewhere, not yet sure where
|
||||
|
||||
See keymap.c for layouts
|
||||
|
||||
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_P7, KC_P8, KC_P9,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3,
|
||||
KC_P0, KC_PDOT, KC_PENT
|
||||
KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
@@ -35,15 +35,15 @@
|
||||
#define LAYOUT_numpad_5x4( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, \
|
||||
k20, k21, k22, k13, \
|
||||
k20, k21, k22, k23, \
|
||||
k30, k31, k32, \
|
||||
k40, k42, k33 \
|
||||
k41, k42, k43 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03 }, \
|
||||
{ k10, k11, k12, k13 }, \
|
||||
{ k20, k21, k22, KC_NO }, \
|
||||
{ k30, k31, k32, k33 }, \
|
||||
{ k40, KC_NO, k42, KC_NO } \
|
||||
{ k00, k01, k02, k03 }, \
|
||||
{ k10, k11, k12, KC_NO }, \
|
||||
{ k20, k21, k22, k23 }, \
|
||||
{ k30, k31, k32, KC_NO }, \
|
||||
{ KC_NO, k41, k42, k43 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_ortho_5x4( \
|
||||
|
||||
@@ -135,7 +135,7 @@ void rgb_matrix_indicators_user(void)
|
||||
break;
|
||||
|
||||
case _FNC: {
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
HSV hsv = { rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v };
|
||||
HSV hui = hsv;
|
||||
HSV hud = hsv;
|
||||
HSV sai = hsv;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "konstantin.h"
|
||||
|
||||
static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
|
||||
static const HSV *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
|
||||
static const size_t cnum = sizeof colors / sizeof *colors;
|
||||
static size_t cidx = 0;
|
||||
|
||||
|
||||
@@ -46,9 +46,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
@@ -64,9 +64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Colemak
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
@@ -82,9 +82,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
@@ -100,9 +100,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
@@ -118,9 +118,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Raise
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
@@ -136,9 +136,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Plover layer (http://opensteno.org)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | # | # | # | # | # | # | # | # | # | # | # | # |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | S | T | P | H | * | * | F | P | L | T | D |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | S | K | W | R | * | * | R | B | G | S | Z |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Exit | | | A | O | | E | U | | | |
|
||||
@@ -154,9 +154,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | Reset| | | | | | | | | | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RCTL)))
|
||||
|
||||
#define LAYER_FN
|
||||
#define LAYER_NUMPAD
|
||||
|
||||
14
keyboards/winkeyless/bface/keymaps/p3lim/README.md
Normal file
14
keyboards/winkeyless/bface/keymaps/p3lim/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# p3lim's b.face layout
|
||||
|
||||

|
||||
|
||||
My layout using the winkeyless b.face X2 PCB. The keys indicated with a gray color was not supported by the layout so a custom one was made.
|
||||
|
||||
### Building & Flashing
|
||||
|
||||
- Hold <kbd>LCTRL</kbd> while connecting to put in flashing mode
|
||||
- Follow instructions in the main _bface_ directory
|
||||
|
||||
### Layout notes
|
||||
|
||||
The two additional keys were on pins 22+41 and 22+42, C3+B1 and C3+B2, which is mapped to col 10 row 1 and col 10 row 2 in the matrix.
|
||||
156
keyboards/winkeyless/bface/keymaps/p3lim/keymap.c
Normal file
156
keyboards/winkeyless/bface/keymaps/p3lim/keymap.c
Normal file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
Copyright 2019 Adrian L Lange <legal@p3lim.net>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_p3lim(\
|
||||
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, \
|
||||
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, \
|
||||
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KC2, KD2, \
|
||||
K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, KC1, \
|
||||
K00, K10, K20, K56, K57, KB0, KC0 \
|
||||
){ \
|
||||
{ K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB0, KC0, KC_NO, KC_NO }, \
|
||||
{ K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC1, KC_NO, KC_NO }, \
|
||||
{ K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC2, KD2, KC_NO }, \
|
||||
{ K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KC_NO, KC_NO }, \
|
||||
{ K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \
|
||||
{ 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, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB6, KC6, KD6, KE6 }, \
|
||||
{ KC_NO, K17, K27, K37, K47, K57, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB7, KC7, KD7, KE7 } \
|
||||
}
|
||||
|
||||
enum my_keycodes {
|
||||
C_ESC0 = SAFE_RANGE, // layer 0 esc
|
||||
C_ESC1 // layer 1 esc
|
||||
};
|
||||
|
||||
// use compiler macros for simpler stuff
|
||||
#define C_NO1 RALT(KC_QUOT)
|
||||
#define C_NO2 RALT(KC_SCLN)
|
||||
#define C_NO3 RALT(KC_LBRC)
|
||||
#define C_KVM1 LCA(KC_1)
|
||||
#define C_KVM2 LCA(KC_2)
|
||||
#define C_KVM3 LCA(KC_3)
|
||||
#define C_KVM4 LCA(KC_4)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* QWERTY
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | |
|
||||
* |---------------------------------------------------------------------------------| Enter |
|
||||
* | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | \ | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Del |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | FN1 | Alt | GUI | Space | FN2 | Alt | Ctrl |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT_p3lim(
|
||||
C_ESC0, 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
|
||||
MO(1), KC_LALT, KC_LGUI, KC_SPC, MO(2), KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
/* FN1
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Caps | Home| Up | End | PgUp| | | | | | | | | |
|
||||
* |---------------------------------------------------------------------------------| |
|
||||
* | | Left| Down|Right| PgDn| | | | | | | | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | KVM1| KVM2| KVM3| KVM4| | | | | | | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[1] = LAYOUT_p3lim(
|
||||
C_ESC1, 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_CAPS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, C_KVM1, C_KVM2, C_KVM3, C_KVM4, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_NO, _______, _______
|
||||
),
|
||||
|
||||
/* FN2
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | | | | | | Å | | |
|
||||
* |---------------------------------------------------------------------------------| |
|
||||
* | | | | | | | | | | | Ø | Æ | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | | | | | | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[2] = LAYOUT_p3lim(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_NO3, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_NO2, C_NO1, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_NO, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/*
|
||||
[n] = LAYOUT_p3lim(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record){
|
||||
switch(keycode){
|
||||
case C_ESC0: // layer 0
|
||||
if(record->event.pressed){
|
||||
if(get_mods() & MOD_MASK_SHIFT)
|
||||
register_code(KC_GRAVE);
|
||||
else
|
||||
register_code(KC_ESCAPE);
|
||||
} else {
|
||||
if(get_mods() & MOD_MASK_SHIFT)
|
||||
unregister_code(KC_GRAVE);
|
||||
else
|
||||
unregister_code(KC_ESCAPE);
|
||||
}
|
||||
return false;
|
||||
case C_ESC1: // layer 1
|
||||
if(record->event.pressed){
|
||||
if(get_mods() & MOD_MASK_SHIFT)
|
||||
register_code(KC_ESCAPE);
|
||||
else
|
||||
register_code(KC_GRAVE);
|
||||
} else {
|
||||
if(get_mods() & MOD_MASK_SHIFT)
|
||||
unregister_code(KC_ESCAPE);
|
||||
else
|
||||
unregister_code(KC_GRAVE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -128,9 +128,7 @@ void eeconfig_update_rgb_matrix_default(void) {
|
||||
dprintf("eeconfig_update_rgb_matrix_default\n");
|
||||
rgb_matrix_config.enable = 1;
|
||||
rgb_matrix_config.mode = RGB_MATRIX_STARTUP_MODE;
|
||||
rgb_matrix_config.hue = 0;
|
||||
rgb_matrix_config.sat = UINT8_MAX;
|
||||
rgb_matrix_config.val = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
|
||||
rgb_matrix_config.hsv = (HSV){ 0, UINT8_MAX, RGB_MATRIX_MAXIMUM_BRIGHTNESS };
|
||||
rgb_matrix_config.speed = UINT8_MAX / 2;
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
@@ -139,9 +137,9 @@ void eeconfig_debug_rgb_matrix(void) {
|
||||
dprintf("rgb_matrix_config eprom\n");
|
||||
dprintf("rgb_matrix_config.enable = %d\n", rgb_matrix_config.enable);
|
||||
dprintf("rgb_matrix_config.mode = %d\n", rgb_matrix_config.mode);
|
||||
dprintf("rgb_matrix_config.hue = %d\n", rgb_matrix_config.hue);
|
||||
dprintf("rgb_matrix_config.sat = %d\n", rgb_matrix_config.sat);
|
||||
dprintf("rgb_matrix_config.val = %d\n", rgb_matrix_config.val);
|
||||
dprintf("rgb_matrix_config.hsv.h = %d\n", rgb_matrix_config.hsv.h);
|
||||
dprintf("rgb_matrix_config.hsv.s = %d\n", rgb_matrix_config.hsv.s);
|
||||
dprintf("rgb_matrix_config.hsv.v = %d\n", rgb_matrix_config.hsv.v);
|
||||
dprintf("rgb_matrix_config.speed = %d\n", rgb_matrix_config.speed);
|
||||
}
|
||||
|
||||
@@ -492,34 +490,34 @@ void rgb_matrix_step_reverse(void) {
|
||||
}
|
||||
|
||||
void rgb_matrix_increase_hue(void) {
|
||||
rgb_matrix_config.hue += RGB_MATRIX_HUE_STEP;
|
||||
rgb_matrix_config.hsv.h += RGB_MATRIX_HUE_STEP;
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
|
||||
void rgb_matrix_decrease_hue(void) {
|
||||
rgb_matrix_config.hue -= RGB_MATRIX_HUE_STEP;
|
||||
rgb_matrix_config.hsv.h -= RGB_MATRIX_HUE_STEP;
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
|
||||
void rgb_matrix_increase_sat(void) {
|
||||
rgb_matrix_config.sat = qadd8(rgb_matrix_config.sat, RGB_MATRIX_SAT_STEP);
|
||||
rgb_matrix_config.hsv.s = qadd8(rgb_matrix_config.hsv.s, RGB_MATRIX_SAT_STEP);
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
|
||||
void rgb_matrix_decrease_sat(void) {
|
||||
rgb_matrix_config.sat = qsub8(rgb_matrix_config.sat, RGB_MATRIX_SAT_STEP);
|
||||
rgb_matrix_config.hsv.s = qsub8(rgb_matrix_config.hsv.s, RGB_MATRIX_SAT_STEP);
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
|
||||
void rgb_matrix_increase_val(void) {
|
||||
rgb_matrix_config.val = qadd8(rgb_matrix_config.val, RGB_MATRIX_VAL_STEP);
|
||||
if (rgb_matrix_config.val > RGB_MATRIX_MAXIMUM_BRIGHTNESS)
|
||||
rgb_matrix_config.val = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
|
||||
rgb_matrix_config.hsv.v = qadd8(rgb_matrix_config.hsv.v, RGB_MATRIX_VAL_STEP);
|
||||
if (rgb_matrix_config.hsv.v > RGB_MATRIX_MAXIMUM_BRIGHTNESS)
|
||||
rgb_matrix_config.hsv.v = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
|
||||
void rgb_matrix_decrease_val(void) {
|
||||
rgb_matrix_config.val = qsub8(rgb_matrix_config.val, RGB_MATRIX_VAL_STEP);
|
||||
rgb_matrix_config.hsv.v = qsub8(rgb_matrix_config.hsv.v, RGB_MATRIX_VAL_STEP);
|
||||
eeconfig_update_rgb_matrix(rgb_matrix_config.raw);
|
||||
}
|
||||
|
||||
@@ -561,9 +559,9 @@ void rgb_matrix_sethsv(uint16_t hue, uint8_t sat, uint8_t val) {
|
||||
}
|
||||
|
||||
void rgb_matrix_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val) {
|
||||
rgb_matrix_config.hue = hue;
|
||||
rgb_matrix_config.sat = sat;
|
||||
rgb_matrix_config.val = val;
|
||||
if (rgb_matrix_config.val > RGB_MATRIX_MAXIMUM_BRIGHTNESS)
|
||||
rgb_matrix_config.val = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
|
||||
rgb_matrix_config.hsv.h = hue;
|
||||
rgb_matrix_config.hsv.s = sat;
|
||||
rgb_matrix_config.hsv.v = val;
|
||||
if (rgb_matrix_config.hsv.v > RGB_MATRIX_MAXIMUM_BRIGHTNESS)
|
||||
rgb_matrix_config.hsv.v = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ RGB_MATRIX_EFFECT(ALPHAS_MODS)
|
||||
bool ALPHAS_MODS(effect_params_t* params) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
RGB rgb1 = hsv_to_rgb(hsv);
|
||||
hsv.h += rgb_matrix_config.speed;
|
||||
RGB rgb2 = hsv_to_rgb(hsv);
|
||||
|
||||
@@ -5,9 +5,9 @@ RGB_MATRIX_EFFECT(BREATHING)
|
||||
bool BREATHING(effect_params_t* params) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
uint16_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 8);
|
||||
uint8_t val = scale8(abs8(sin8(time) - 128) * 2, rgb_matrix_config.val);
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, val };
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(BAND_PINWHEEL_SAT)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void BAND_PINWHEEL_SAT_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
hsv->s = scale8(rgb_matrix_config.sat - time - atan2_8(dy, dx) * 3, rgb_matrix_config.sat);
|
||||
static HSV BAND_PINWHEEL_SAT_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
hsv.s = scale8(hsv.s - time - atan2_8(dy, dx) * 3, hsv.s);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool BAND_PINWHEEL_SAT(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(BAND_PINWHEEL_VAL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void BAND_PINWHEEL_VAL_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
hsv->v = scale8(rgb_matrix_config.val - time - atan2_8(dy, dx) * 3, rgb_matrix_config.val);
|
||||
static HSV BAND_PINWHEEL_VAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
hsv.v = scale8(hsv.v - time - atan2_8(dy, dx) * 3, hsv.v);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool BAND_PINWHEEL_VAL(effect_params_t* params) {
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
RGB_MATRIX_EFFECT(BAND_SAT)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void BAND_SAT_math(HSV* hsv, uint8_t i, uint8_t time) {
|
||||
int16_t s = rgb_matrix_config.sat - abs(scale8(g_led_config.point[i].x, 228) + 28 - time) * 8;
|
||||
hsv->s = scale8(s < 0 ? 0 : s, rgb_matrix_config.sat);
|
||||
static HSV BAND_SAT_math(HSV hsv, uint8_t i, uint8_t time) {
|
||||
int16_t s = hsv.s - abs(scale8(g_led_config.point[i].x, 228) + 28 - time) * 8;
|
||||
hsv.s = scale8(s < 0 ? 0 : s, hsv.s);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool BAND_SAT(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(BAND_SPIRAL_SAT)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void BAND_SPIRAL_SAT_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv->s = scale8(rgb_matrix_config.sat + dist - time - atan2_8(dy, dx), rgb_matrix_config.sat);
|
||||
static HSV BAND_SPIRAL_SAT_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv.s = scale8(hsv.s + dist - time - atan2_8(dy, dx), hsv.s);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool BAND_SPIRAL_SAT(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(BAND_SPIRAL_VAL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void BAND_SPIRAL_VAL_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv->v = scale8(rgb_matrix_config.val + dist - time - atan2_8(dy, dx), rgb_matrix_config.val);
|
||||
static HSV BAND_SPIRAL_VAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv.v = scale8(hsv.v + dist - time - atan2_8(dy, dx), hsv.v);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool BAND_SPIRAL_VAL(effect_params_t* params) {
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
RGB_MATRIX_EFFECT(BAND_VAL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void BAND_VAL_math(HSV* hsv, uint8_t i, uint8_t time) {
|
||||
int16_t v = rgb_matrix_config.val - abs(scale8(g_led_config.point[i].x, 228) + 28 - time) * 8;
|
||||
hsv->v = scale8(v < 0 ? 0 : v, rgb_matrix_config.val);
|
||||
static HSV BAND_VAL_math(HSV hsv, uint8_t i, uint8_t time) {
|
||||
int16_t v = hsv.v - abs(scale8(g_led_config.point[i].x, 228) + 28 - time) * 8;
|
||||
hsv.v = scale8(v < 0 ? 0 : v, hsv.v);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool BAND_VAL(effect_params_t* params) {
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_ALL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_ALL_math(HSV* hsv, uint8_t i, uint8_t time)
|
||||
{
|
||||
hsv->h = time;
|
||||
static HSV CYCLE_ALL_math(HSV hsv, uint8_t i, uint8_t time){
|
||||
hsv.h = time;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_ALL(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_LEFT_RIGHT)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_LEFT_RIGHT_math(HSV* hsv, uint8_t i, uint8_t time) {
|
||||
hsv->h = g_led_config.point[i].x - time;
|
||||
static HSV CYCLE_LEFT_RIGHT_math(HSV hsv, uint8_t i, uint8_t time) {
|
||||
hsv.h = g_led_config.point[i].x - time;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_LEFT_RIGHT(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_OUT_IN)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_OUT_IN_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv->h = 3 * dist / 2 + time;
|
||||
static HSV CYCLE_OUT_IN_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv.h = 3 * dist / 2 + time;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_OUT_IN(effect_params_t* params) {
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_OUT_IN_DUAL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_OUT_IN_DUAL_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
static HSV CYCLE_OUT_IN_DUAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
dx = (k_rgb_matrix_center.x / 2) - abs8(dx);
|
||||
uint8_t dist = sqrt16(dx * dx + dy * dy);
|
||||
hsv->h = 3 * dist + time;
|
||||
hsv.h = 3 * dist + time;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_OUT_IN_DUAL(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_PINWHEEL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_PINWHEEL_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
hsv->h = atan2_8(dy, dx) + time;
|
||||
static HSV CYCLE_PINWHEEL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) {
|
||||
hsv.h = atan2_8(dy, dx) + time;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_PINWHEEL(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_SPIRAL)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_SPIRAL_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv->h = dist - time - atan2_8(dy, dx);
|
||||
static HSV CYCLE_SPIRAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
|
||||
hsv.h = dist - time - atan2_8(dy, dx);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_SPIRAL(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(CYCLE_UP_DOWN)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void CYCLE_UP_DOWN_math(HSV* hsv, uint8_t i, uint8_t time) {
|
||||
hsv->h = g_led_config.point[i].y - time;
|
||||
static HSV CYCLE_UP_DOWN_math(HSV hsv, uint8_t i, uint8_t time) {
|
||||
hsv.h = g_led_config.point[i].y - time;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool CYCLE_UP_DOWN(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(DUAL_BEACON)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void DUAL_BEACON_math(HSV* hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
|
||||
hsv->h = ((g_led_config.point[i].y - k_rgb_matrix_center.y) * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * sin) / 128 + rgb_matrix_config.hue;
|
||||
static HSV DUAL_BEACON_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
|
||||
hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * sin) / 128;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool DUAL_BEACON(effect_params_t* params) {
|
||||
|
||||
@@ -5,13 +5,13 @@ RGB_MATRIX_EFFECT(GRADIENT_UP_DOWN)
|
||||
bool GRADIENT_UP_DOWN(effect_params_t* params) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { 0, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
uint8_t scale = scale8(64, rgb_matrix_config.speed);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
// The y range will be 0..64, map this to 0..4
|
||||
// Relies on hue being 8-bit and wrapping
|
||||
hsv.h = rgb_matrix_config.hue + scale * (g_led_config.point[i].y >> 4);
|
||||
hsv.h = rgb_matrix_config.hsv.h + scale * (g_led_config.point[i].y >> 4);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ RGB_MATRIX_EFFECT(JELLYBEAN_RAINDROPS)
|
||||
|
||||
static void jellybean_raindrops_set_color(int i, effect_params_t* params) {
|
||||
if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return;
|
||||
HSV hsv = { rand() & 0xFF , rand() & 0xFF, rgb_matrix_config.val };
|
||||
HSV hsv = { rand() & 0xFF , rand() & 0xFF, rgb_matrix_config.hsv.v };
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(RAINBOW_BEACON)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void RAINBOW_BEACON_math(HSV* hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
|
||||
hsv->h = ((g_led_config.point[i].y - k_rgb_matrix_center.y) * 2 * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * 2 * sin) / 128 + rgb_matrix_config.hue;
|
||||
static HSV RAINBOW_BEACON_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
|
||||
hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * 2 * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * 2 * sin) / 128;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool RAINBOW_BEACON(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(RAINBOW_MOVING_CHEVRON)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void RAINBOW_MOVING_CHEVRON_math(HSV* hsv, uint8_t i, uint8_t time) {
|
||||
hsv->h = abs8(g_led_config.point[i].y - k_rgb_matrix_center.y) + (g_led_config.point[i].x - time) + rgb_matrix_config.hue;
|
||||
static HSV RAINBOW_MOVING_CHEVRON_math(HSV hsv, uint8_t i, uint8_t time) {
|
||||
hsv.h += abs8(g_led_config.point[i].y - k_rgb_matrix_center.y) + (g_led_config.point[i].x - time);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool RAINBOW_MOVING_CHEVRON(effect_params_t* params) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
RGB_MATRIX_EFFECT(PINWHEELS)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void PINWHEELS_math(HSV* hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
|
||||
hsv->h = ((g_led_config.point[i].y - k_rgb_matrix_center.y) * 3 * cos + (56 - abs8(g_led_config.point[i].x - k_rgb_matrix_center.x)) * 3 * sin) / 128 + rgb_matrix_config.hue;
|
||||
static HSV PINWHEELS_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
|
||||
hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * 3 * cos + (56 - abs8(g_led_config.point[i].x - k_rgb_matrix_center.x)) * 3 * sin) / 128;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool PINWHEELS(effect_params_t* params) {
|
||||
|
||||
@@ -4,17 +4,17 @@ RGB_MATRIX_EFFECT(RAINDROPS)
|
||||
|
||||
static void raindrops_set_color(int i, effect_params_t* params) {
|
||||
if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return;
|
||||
HSV hsv = { 0 , rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
HSV hsv = { 0 , rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v };
|
||||
|
||||
// Take the shortest path between hues
|
||||
int16_t deltaH = ((rgb_matrix_config.hue + 180) % 360 - rgb_matrix_config.hue) / 4;
|
||||
int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4;
|
||||
if (deltaH > 127) {
|
||||
deltaH -= 256;
|
||||
} else if (deltaH < -127) {
|
||||
deltaH += 256;
|
||||
}
|
||||
|
||||
hsv.h = rgb_matrix_config.hue + (deltaH * (rand() & 0x03));
|
||||
hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03));
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
@@ -4,8 +4,7 @@ RGB_MATRIX_EFFECT(SOLID_COLOR)
|
||||
bool SOLID_COLOR(effect_params_t* params) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = hsv_to_rgb(rgb_matrix_config.hsv);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
RGB_MATRIX_EFFECT(SOLID_REACTIVE)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void SOLID_REACTIVE_math(HSV* hsv, uint16_t offset) {
|
||||
hsv->h = rgb_matrix_config.hue + qsub8(130, offset);
|
||||
static HSV SOLID_REACTIVE_math(HSV hsv, uint16_t offset) {
|
||||
hsv.h += qsub8(130, offset);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool SOLID_REACTIVE(effect_params_t* params) {
|
||||
|
||||
@@ -11,7 +11,7 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTICROSS)
|
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void SOLID_REACTIVE_CROSS_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
static HSV SOLID_REACTIVE_CROSS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
uint16_t effect = tick + dist;
|
||||
dx = dx < 0 ? dx * -1 : dx;
|
||||
dy = dy < 0 ? dy * -1 : dy;
|
||||
@@ -20,7 +20,8 @@ static void SOLID_REACTIVE_CROSS_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t
|
||||
effect += dx > dy ? dy : dx;
|
||||
if (effect > 255)
|
||||
effect = 255;
|
||||
hsv->v = qadd8(hsv->v, 255 - effect);
|
||||
hsv.v = qadd8(hsv.v, 255 - effect);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
|
||||
@@ -11,7 +11,7 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTINEXUS)
|
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void SOLID_REACTIVE_NEXUS_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
static HSV SOLID_REACTIVE_NEXUS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
uint16_t effect = tick - dist;
|
||||
if (effect > 255)
|
||||
effect = 255;
|
||||
@@ -19,8 +19,9 @@ static void SOLID_REACTIVE_NEXUS_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t
|
||||
effect = 255;
|
||||
if ((dx > 8 || dx < -8) && (dy > 8 || dy < -8))
|
||||
effect = 255;
|
||||
hsv->v = qadd8(hsv->v, 255 - effect);
|
||||
hsv->h = rgb_matrix_config.hue + dy / 4;
|
||||
hsv.v = qadd8(hsv.v, 255 - effect);
|
||||
hsv.h = rgb_matrix_config.hsv.h + dy / 4;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
RGB_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE)
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void SOLID_REACTIVE_SIMPLE_math(HSV* hsv, uint16_t offset) {
|
||||
hsv->v = scale8(255 - offset, rgb_matrix_config.val);
|
||||
static HSV SOLID_REACTIVE_SIMPLE_math(HSV hsv, uint16_t offset) {
|
||||
hsv.v = scale8(255 - offset, hsv.v);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) {
|
||||
|
||||
@@ -11,11 +11,12 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE)
|
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
static void SOLID_REACTIVE_WIDE_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
static HSV SOLID_REACTIVE_WIDE_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
uint16_t effect = tick + dist * 5;
|
||||
if (effect > 255)
|
||||
effect = 255;
|
||||
hsv->v = qadd8(hsv->v, 255 - effect);
|
||||
hsv.v = qadd8(hsv.v, 255 - effect);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
|
||||
@@ -11,11 +11,12 @@ RGB_MATRIX_EFFECT(SOLID_MULTISPLASH)
|
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
void SOLID_SPLASH_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
HSV SOLID_SPLASH_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
uint16_t effect = tick - dist;
|
||||
if (effect > 255)
|
||||
effect = 255;
|
||||
hsv->v = qadd8(hsv->v, 255 - effect);
|
||||
hsv.v = qadd8(hsv.v, 255 - effect);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
|
||||
@@ -11,12 +11,13 @@ RGB_MATRIX_EFFECT(MULTISPLASH)
|
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
void SPLASH_math(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
HSV SPLASH_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
|
||||
uint16_t effect = tick - dist;
|
||||
if (effect > 255)
|
||||
if (effect > 255)
|
||||
effect = 255;
|
||||
hsv->h += effect;
|
||||
hsv->v = qadd8(hsv->v, 255 - effect);
|
||||
hsv.h += effect;
|
||||
hsv.v = qadd8(hsv.v, 255 - effect);
|
||||
return hsv;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_RGB_MATRIX_SPLASH
|
||||
|
||||
@@ -59,7 +59,7 @@ bool TYPING_HEATMAP(effect_params_t* params) {
|
||||
if (!HAS_ANY_FLAGS(g_led_config.flags[led[j]], params->flags))
|
||||
continue;
|
||||
|
||||
HSV hsv = { 170 - qsub8(val, 85), rgb_matrix_config.sat, scale8((qadd8(170, val) - 170) * 3, rgb_matrix_config.val) };
|
||||
HSV hsv = { 170 - qsub8(val, 85), rgb_matrix_config.hsv.s, scale8((qadd8(170, val) - 170) * 3, rgb_matrix_config.hsv.v) };
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(led[j], rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
typedef void (*dx_dy_f)(HSV* hsv, int16_t dx, int16_t dy, uint8_t time);
|
||||
typedef HSV (*dx_dy_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t time);
|
||||
|
||||
bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 2);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x;
|
||||
int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y;
|
||||
effect_func(&hsv, dx, dy, time);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time));
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
return led_max < DRIVER_LED_TOTAL;
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
typedef void (*dx_dy_dist_f)(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time);
|
||||
typedef HSV (*dx_dy_dist_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time);
|
||||
|
||||
bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 2);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x;
|
||||
int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y;
|
||||
uint8_t dist = sqrt16(dx * dx + dy * dy);
|
||||
effect_func(&hsv, dx, dy, dist, time);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, dist, time));
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
return led_max < DRIVER_LED_TOTAL;
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
typedef void (*i_f)(HSV* hsv, uint8_t i, uint8_t time);
|
||||
typedef HSV (*i_f)(HSV hsv, uint8_t i, uint8_t time);
|
||||
|
||||
bool effect_runner_i(effect_params_t* params, i_f effect_func) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 4);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
effect_func(&hsv, i, time);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time));
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
return led_max < DRIVER_LED_TOTAL;
|
||||
|
||||
@@ -2,12 +2,11 @@
|
||||
|
||||
#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
|
||||
|
||||
typedef void (*reactive_f)(HSV* hsv, uint16_t offset);
|
||||
typedef HSV (*reactive_f)(HSV hsv, uint16_t offset);
|
||||
|
||||
bool effect_runner_reactive(effect_params_t* params, reactive_f effect_func) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
uint16_t max_tick = 65535 / rgb_matrix_config.speed;
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
@@ -21,8 +20,7 @@ bool effect_runner_reactive(effect_params_t* params, reactive_f effect_func) {
|
||||
}
|
||||
|
||||
uint16_t offset = scale16by8(tick, rgb_matrix_config.speed);
|
||||
effect_func(&hsv, offset);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, offset));
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
return led_max < DRIVER_LED_TOTAL;
|
||||
|
||||
@@ -2,25 +2,24 @@
|
||||
|
||||
#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
|
||||
|
||||
typedef void (*reactive_splash_f)(HSV* hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick);
|
||||
typedef HSV (*reactive_splash_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick);
|
||||
|
||||
bool effect_runner_reactive_splash(uint8_t start, effect_params_t* params, reactive_splash_f effect_func) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { 0, rgb_matrix_config.sat, 0 };
|
||||
uint8_t count = g_last_hit_tracker.count;
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
hsv.h = rgb_matrix_config.hue;
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
hsv.v = 0;
|
||||
for (uint8_t j = start; j < count; j++) {
|
||||
int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j];
|
||||
int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j];
|
||||
uint8_t dist = sqrt16(dx * dx + dy * dy);
|
||||
uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], rgb_matrix_config.speed);
|
||||
effect_func(&hsv, dx, dy, dist, tick);
|
||||
hsv = effect_func(hsv, dx, dy, dist, tick);
|
||||
}
|
||||
hsv.v = scale8(hsv.v, rgb_matrix_config.val);
|
||||
hsv.v = scale8(hsv.v, rgb_matrix_config.hsv.v);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
typedef void (*sin_cos_i_f)(HSV* hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time);
|
||||
typedef HSV (*sin_cos_i_f)(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time);
|
||||
|
||||
bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
uint16_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 4);
|
||||
int8_t cos_value = cos8(time) - 128;
|
||||
int8_t sin_value = sin8(time) - 128;
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
effect_func(&hsv, cos_value, sin_value, i, time);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time));
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
return led_max < DRIVER_LED_TOTAL;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "color.h"
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#define PACKED __attribute__ ((__packed__))
|
||||
@@ -81,10 +82,8 @@ typedef union {
|
||||
struct PACKED {
|
||||
uint8_t enable :2;
|
||||
uint8_t mode :6;
|
||||
uint8_t hue :8;
|
||||
uint8_t sat :8;
|
||||
uint8_t val :8;
|
||||
uint8_t speed :8;//EECONFIG needs to be increased to support this
|
||||
HSV hsv;
|
||||
uint8_t speed; //EECONFIG needs to be increased to support this
|
||||
};
|
||||
} rgb_config_t;
|
||||
|
||||
|
||||
@@ -1,24 +1,25 @@
|
||||
#include "rgb.h"
|
||||
|
||||
#ifdef RGBLIGHT_EFFECT_BREATHING
|
||||
const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {20, 30, 5, 10};
|
||||
const uint8_t PROGMEM RGBLED_BREATHING_INTERVALS[] = { 20, 30, 5, 10 };
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {20, 50, 100};
|
||||
const uint8_t PROGMEM RGBLED_RAINBOW_MOOD_INTERVALS[] = { 20, 50, 100 };
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {20, 50, 100};
|
||||
const uint8_t PROGMEM RGBLED_RAINBOW_SWIRL_INTERVALS[] = { 20, 50, 100 };
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_EFFECT_SNAKE
|
||||
const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {20, 50, 100};
|
||||
const uint8_t PROGMEM RGBLED_SNAKE_INTERVALS[] = { 20, 50, 100 };
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_EFFECT_KNIGHT
|
||||
const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {20, 50, 100};
|
||||
const uint8_t PROGMEM RGBLED_KNIGHT_INTERVALS[] = { 20, 50, 100 };
|
||||
#endif
|
||||
|
||||
const hsv_t GODSPEED_BLUE = { .h = 280, .s = 68, .v = RGBLIGHT_LIMIT_VAL };
|
||||
const hsv_t GODSPEED_YELLOW = { .h = 38, .s = 153, .v = RGBLIGHT_LIMIT_VAL };
|
||||
const HSV GODSPEED_BLUE = { .h = 198, .s = 68, .v = 255 };
|
||||
const HSV GODSPEED_YELLOW = { .h = 27, .s = 153, .v = 255 };
|
||||
const HSV MODERN_DOLCH_RED = { .h = 252, .s = 255, .v = 144 };
|
||||
|
||||
@@ -2,17 +2,6 @@
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
typedef struct {
|
||||
uint16_t h; // 0–360
|
||||
uint8_t s; // 0–255
|
||||
uint8_t v; // 0–255
|
||||
} hsv_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t r; // 0–255
|
||||
uint8_t g; // 0–255
|
||||
uint8_t b; // 0–255
|
||||
} rgb_t;
|
||||
|
||||
extern const hsv_t GODSPEED_BLUE;
|
||||
extern const hsv_t GODSPEED_YELLOW;
|
||||
extern const HSV GODSPEED_BLUE;
|
||||
extern const HSV GODSPEED_YELLOW;
|
||||
extern const HSV MODERN_DOLCH_RED;
|
||||
|
||||
@@ -110,6 +110,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_RAL_LAL] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_LALT),
|
||||
[TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI),
|
||||
[TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT),
|
||||
[TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RSFT, KC_RCTL),
|
||||
|
||||
[TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN),
|
||||
[TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN),
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define RAL_LAL TD(TD_RAL_LAL)
|
||||
#define RAL_RGU TD(TD_RAL_RGU)
|
||||
#define RCT_RSF TD(TD_RCT_RSF)
|
||||
#define RSF_RCT TD(TD_RSF_RCT)
|
||||
|
||||
#define LSFT_FN TD(TD_LSFT_FN)
|
||||
#define RCTL_FN TD(TD_RCTL_FN)
|
||||
@@ -18,6 +19,7 @@ enum tap_dance {
|
||||
TD_RAL_LAL,
|
||||
TD_RAL_RGU,
|
||||
TD_RCT_RSF,
|
||||
TD_RSF_RCT,
|
||||
|
||||
TD_LSFT_FN,
|
||||
TD_RCTL_FN,
|
||||
|
||||
@@ -80,7 +80,7 @@ static void render_status(void)
|
||||
oled_set_cursor(0, oled_max_lines() - 7);
|
||||
oled_write_P(PSTR("-----"), false);
|
||||
static char buffer[26] = {0};
|
||||
snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d\n", rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val, rgb_matrix_config.speed, rgb_matrix_config.mode);
|
||||
snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d\n", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode);
|
||||
oled_write(buffer, false);
|
||||
#elif defined(RGBLIGHT_ENABLE)
|
||||
oled_set_cursor(0, oled_max_lines() - 7);
|
||||
@@ -137,7 +137,7 @@ static void render_status(void)
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
static char buffer[20] = {0};
|
||||
snprintf(buffer, sizeof(buffer), " h%3d s%3d v%3d\n", rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val);
|
||||
snprintf(buffer, sizeof(buffer), " h%3d s%3d v%3d\n", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v);
|
||||
oled_write(buffer, false);
|
||||
#elif defined(RGBLIGHT_ENABLE)
|
||||
static char buffer[20] = {0};
|
||||
|
||||
@@ -46,5 +46,5 @@ fi
|
||||
dir=$(pwd -W 2>/dev/null) || dir=$PWD # Use Windows path if on Windows
|
||||
|
||||
# Run container and build firmware
|
||||
docker run --rm -it $usb_args -v "$dir":/qmk_firmware qmkfm/qmk_firmware \
|
||||
docker run --rm -it $usb_args -w /qmk_firmware/ -v "$dir":/qmk_firmware qmkfm/base_container \
|
||||
make "$keyboard${keymap:+:$keymap}${target:+:$target}"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# if docker is installed - call make within the qmk docker image
|
||||
if command -v docker >/dev/null; then
|
||||
function make() {
|
||||
docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/qmk_firmware make "$@"
|
||||
docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ fi
|
||||
# if docker is installed - call make within the qmk docker image
|
||||
if command -v docker >/dev/null; then
|
||||
function make() {
|
||||
docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/qmk_firmware make "$@"
|
||||
docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user