Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
361ac2f32a | ||
|
|
d15a60d2d3 | ||
|
|
73992c68d5 | ||
|
|
8ca4ed9a98 | ||
|
|
640d12d070 | ||
|
|
3beda5c16e | ||
|
|
fb7fc54923 | ||
|
|
179c868059 | ||
|
|
7b11dcce10 | ||
|
|
e2fa05c6d2 | ||
|
|
4c4009c0fd | ||
|
|
e7860d673b | ||
|
|
2fe7e221ec |
No files matched your search
@@ -1,6 +1,6 @@
|
|||||||
# HD44780 LCD Displays
|
# HD44780 LCD Displays
|
||||||
|
|
||||||
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
||||||
|
|
||||||
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
|
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
|
||||||
|
|
||||||
@@ -54,4 +54,4 @@ To do so call `lcd_clrsrc()`.
|
|||||||
|
|
||||||
To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
|
To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
|
||||||
|
|
||||||
There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
||||||
@@ -94,6 +94,7 @@ if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a n
|
|||||||
|`RGBLIGHT_MODE_STATIC_GRADIENT`| 0,1,..,9 |Static gradient |
|
|`RGBLIGHT_MODE_STATIC_GRADIENT`| 0,1,..,9 |Static gradient |
|
||||||
|`RGBLIGHT_MODE_RGB_TEST` | *None* |RGB Test |
|
|`RGBLIGHT_MODE_RGB_TEST` | *None* |RGB Test |
|
||||||
|`RGBLIGHT_MODE_ALTERNATING` | *None* |Alternating |
|
|`RGBLIGHT_MODE_ALTERNATING` | *None* |Alternating |
|
||||||
|
|`RGBLIGHT_MODE_TWINKLE` | 0,1,2,3,4,5 |Twinkle |
|
||||||
|
|
||||||
Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstration.
|
Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstration.
|
||||||
|
|
||||||
@@ -103,8 +104,8 @@ Note: For versions older than 0.6.117, The mode numbers were written directly. I
|
|||||||
|
|
||||||
Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.
|
Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.
|
||||||
|
|
||||||
|Define |Default |Description |
|
|Define |Default |Description |
|
||||||
|------------------------------------|-------------|-------------------------------------------------------------------------------------|
|
|------------------------------------|-------------|-------------------------------------------------------------------------|
|
||||||
|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. |
|
|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. |
|
||||||
|`RGBLIGHT_EFFECT_ALTERNATING` |*Not defined*|Enable alternating animation mode. |
|
|`RGBLIGHT_EFFECT_ALTERNATING` |*Not defined*|Enable alternating animation mode. |
|
||||||
|`RGBLIGHT_EFFECT_BREATHING` |*Not defined*|Enable breathing animation mode. |
|
|`RGBLIGHT_EFFECT_BREATHING` |*Not defined*|Enable breathing animation mode. |
|
||||||
@@ -115,6 +116,7 @@ Use these defines to add or remove animations from the firmware. When you are ru
|
|||||||
|`RGBLIGHT_EFFECT_RGB_TEST` |*Not defined*|Enable RGB test animation mode. |
|
|`RGBLIGHT_EFFECT_RGB_TEST` |*Not defined*|Enable RGB test animation mode. |
|
||||||
|`RGBLIGHT_EFFECT_SNAKE` |*Not defined*|Enable snake animation mode. |
|
|`RGBLIGHT_EFFECT_SNAKE` |*Not defined*|Enable snake animation mode. |
|
||||||
|`RGBLIGHT_EFFECT_STATIC_GRADIENT` |*Not defined*|Enable static gradient mode. |
|
|`RGBLIGHT_EFFECT_STATIC_GRADIENT` |*Not defined*|Enable static gradient mode. |
|
||||||
|
|`RGBLIGHT_EFFECT_TWINKLE` |*Not defined*|Enable twinkle animation mode. |
|
||||||
|
|
||||||
### Effect and Animation Settings
|
### Effect and Animation Settings
|
||||||
|
|
||||||
@@ -131,6 +133,8 @@ The following options are used to tweak the various animations:
|
|||||||
|`RGBLIGHT_EFFECT_KNIGHT_OFFSET` |`0` |The number of LEDs to start the "Knight" animation from the start of the strip by |
|
|`RGBLIGHT_EFFECT_KNIGHT_OFFSET` |`0` |The number of LEDs to start the "Knight" animation from the start of the strip by |
|
||||||
|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`255` |Range adjustment for the rainbow swirl effect to get different swirls |
|
|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`255` |Range adjustment for the rainbow swirl effect to get different swirls |
|
||||||
|`RGBLIGHT_EFFECT_SNAKE_LENGTH` |`4` |The number of LEDs to light up for the "Snake" animation |
|
|`RGBLIGHT_EFFECT_SNAKE_LENGTH` |`4` |The number of LEDs to light up for the "Snake" animation |
|
||||||
|
|`RGBLIGHT_EFFECT_TWINKLE_LIFE` |`75` |Adjusts how quickly each LED brightens and dims when twinkling (in animation steps) |
|
||||||
|
|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
|
||||||
|
|
||||||
### Example Usage to Reduce Memory Footprint
|
### Example Usage to Reduce Memory Footprint
|
||||||
1. Remove `RGBLIGHT_ANIMATIONS` from `config.h`.
|
1. Remove `RGBLIGHT_ANIMATIONS` from `config.h`.
|
||||||
@@ -168,6 +172,9 @@ const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};
|
|||||||
// How long (in milliseconds) to wait between animation steps for each of the "Knight" animations
|
// How long (in milliseconds) to wait between animation steps for each of the "Knight" animations
|
||||||
const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};
|
const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};
|
||||||
|
|
||||||
|
// How long (in milliseconds) to wait between animation steps for each of the "Twinkle" animations
|
||||||
|
const uint8_t RGBLED_TWINKLE_INTERVALS[] PROGMEM = {50, 25, 10};
|
||||||
|
|
||||||
// These control which hues are selected for each of the "Static gradient" modes
|
// These control which hues are selected for each of the "Static gradient" modes
|
||||||
const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
|
const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -479,7 +479,7 @@ void oled_write_ln_P(const char *data, bool invert) {
|
|||||||
void oled_write_raw_P(const char *data, uint16_t size) {
|
void oled_write_raw_P(const char *data, uint16_t size) {
|
||||||
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE;
|
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE;
|
||||||
for (uint16_t i = 0; i < size; i++) {
|
for (uint16_t i = 0; i < size; i++) {
|
||||||
uint8_t c = pgm_read_byte(++data);
|
uint8_t c = pgm_read_byte(data++);
|
||||||
if (oled_buffer[i] == c) continue;
|
if (oled_buffer[i] == c) continue;
|
||||||
oled_buffer[i] = c;
|
oled_buffer[i] = c;
|
||||||
oled_dirty |= (1 << (i / OLED_BLOCK_SIZE));
|
oled_dirty |= (1 << (i / OLED_BLOCK_SIZE));
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Time out one shot layers after 3 seconds
|
||||||
|
#define ONESHOT_TIMEOUT 3000
|
||||||
|
|
||||||
|
#define RGBLED_NUM 16
|
||||||
|
|
||||||
|
|
||||||
|
// Undef and redefine default brightness to half of 255
|
||||||
|
#undef RGBLIGHT_LIMIT_VAL
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 128
|
||||||
|
|
||||||
|
#define TAPPING_TERM 200
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
uint16_t copy_paste_timer;
|
||||||
|
uint16_t enter_timer;
|
||||||
|
|
||||||
|
extern rgblight_config_t rgblight_config;
|
||||||
|
|
||||||
|
// Define custom keycodes
|
||||||
|
enum my_keycodes {
|
||||||
|
KC_CCCV = SAFE_RANGE,
|
||||||
|
KC_2ENTER
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
//Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3,4)
|
||||||
|
[0] = LAYOUT_ortho_4x4(
|
||||||
|
KC_F13, KC_F14, KC_F15, KC_F16,
|
||||||
|
KC_F17, KC_CCCV, KC_F19, KC_F20,
|
||||||
|
KC_F21, KC_F22, KC_F23, KC_2ENTER,
|
||||||
|
OSL(1), OSL(2), OSL(3), TG(4) //Transparent to let you go between layers
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_ortho_4x4(
|
||||||
|
LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16),
|
||||||
|
LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20),
|
||||||
|
LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24),
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||||
|
),
|
||||||
|
|
||||||
|
//Layer 2 - Shift + Function Key Layer
|
||||||
|
[2] = LAYOUT_ortho_4x4(
|
||||||
|
LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16),
|
||||||
|
LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20),
|
||||||
|
LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24),
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||||
|
),
|
||||||
|
|
||||||
|
//Layer 3 - Control + Function Key
|
||||||
|
[3] = LAYOUT_ortho_4x4(
|
||||||
|
LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16),
|
||||||
|
LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20),
|
||||||
|
LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24),
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||||
|
),
|
||||||
|
|
||||||
|
//Layer 4 - Keyboard Lights. Programming and Special Functions
|
||||||
|
[4] = LAYOUT_ortho_4x4(
|
||||||
|
KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
|
||||||
|
RGB_TOG, RGB_MOD, RGB_RMOD, KC_MUTE,
|
||||||
|
TO(0), RESET, EEP_RST, KC_VOLD,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_CCCV: // One key copy/paste
|
||||||
|
if (record->event.pressed) {
|
||||||
|
copy_paste_timer = timer_read();
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||||
|
tap_code16(LCTL(KC_C));
|
||||||
|
} else { // Tap, paste
|
||||||
|
tap_code16(LCTL(KC_V));
|
||||||
|
}
|
||||||
|
} return true;
|
||||||
|
case KC_2ENTER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
enter_timer = timer_read();
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(enter_timer) > TAPPING_TERM) { // Hold, shift+enter
|
||||||
|
tap_code16(LSFT(KC_ENTER));
|
||||||
|
} else { // Tap, enter
|
||||||
|
tap_code16(KC_F24);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
//Enable the LED layers
|
||||||
|
layer_state_set_user(layer_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
rgblight_sethsv_noeeprom(HSV_WHITE);
|
||||||
|
switch(get_highest_layer(state)) {
|
||||||
|
case 1:
|
||||||
|
// Green
|
||||||
|
rgblight_enable_noeeprom();
|
||||||
|
rgblight_sethsv_noeeprom(HSV_GREEN);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
// Red
|
||||||
|
rgblight_enable_noeeprom();
|
||||||
|
rgblight_sethsv_noeeprom(HSV_RED);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// Blue
|
||||||
|
rgblight_enable_noeeprom();
|
||||||
|
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
// Orange
|
||||||
|
rgblight_enable_noeeprom();
|
||||||
|
// rgblight_sethsv_noeeprom(HSV_PURPLE);
|
||||||
|
rgblight_sethsv_noeeprom(HSV_ORANGE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// White
|
||||||
|
//Read RGB Light State
|
||||||
|
rgblight_config.raw = eeconfig_read_rgblight();
|
||||||
|
//If enabled, set white
|
||||||
|
if (rgblight_config.enable) {
|
||||||
|
rgblight_sethsv_noeeprom(HSV_WHITE);
|
||||||
|
} else { //Otherwise go back to disabled
|
||||||
|
rgblight_disable_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# Nick B's Super16 keymap
|
||||||
|
|
||||||
|
A modification of the default keymap to include layer indicators with RGB
|
||||||
|
* Added a time out of 3 seconds to 1 shot layers
|
||||||
|
* Reduced brightness to half to reduce power draw
|
||||||
|
* Added a one key copy/paste keycode
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
RGB_MATRIX_ENABLE = no
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
@@ -4,8 +4,6 @@
|
|||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#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.
|
// 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.
|
// 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
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
@@ -41,6 +39,7 @@ enum planck_keycodes {
|
|||||||
#define ADJUST MO(_ADJUST)
|
#define ADJUST MO(_ADJUST)
|
||||||
#define LOWER MO(_LOWER)
|
#define LOWER MO(_LOWER)
|
||||||
#define RAISE MO(_RAISE)
|
#define RAISE MO(_RAISE)
|
||||||
|
#define MACLOCK LGUI(LCTL(KC_Q))
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Dvorak Layer
|
/* Dvorak Layer
|
||||||
@@ -119,13 +118,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||||
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|
||||||
|------+------+------+------+------| || |------+------+------+------+------|
|
|------+------+------+------+------| || |------+------+------+------+------|
|
||||||
| ~ | | | | Del |------'`------| Ins | | | | |
|
| ~ | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||||
`----------------------------------' `----------------------------------'*/
|
`----------------------------------' `----------------------------------'*/
|
||||||
[_LOWER] = LAYOUT(
|
[_LOWER] = LAYOUT(
|
||||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
||||||
KC_CAPS, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR,
|
KC_CAPS, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR,
|
||||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______,
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______,
|
||||||
KC_TILD, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______
|
KC_TILD, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, MACLOCK
|
||||||
),
|
),
|
||||||
|
|
||||||
/* RAISE Layer
|
/* RAISE Layer
|
||||||
@@ -136,13 +135,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||||
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|
||||||
|------+------+------+------+------| || |------+------+------+------+------|
|
|------+------+------+------+------| || |------+------+------+------+------|
|
||||||
| ` | | | | Del |------'`------| Ins | | | | |
|
| ` | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||||
`----------------------------------' `----------------------------------'*/
|
`----------------------------------' `----------------------------------'*/
|
||||||
[_RAISE] = LAYOUT(
|
[_RAISE] = LAYOUT(
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 ,
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 ,
|
||||||
KC_CAPS, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC,
|
KC_CAPS, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC,
|
||||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, _______,
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, _______,
|
||||||
KC_GRV, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______
|
KC_GRV, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, MACLOCK
|
||||||
),
|
),
|
||||||
|
|
||||||
/* ADJUST Layer
|
/* ADJUST Layer
|
||||||
@@ -190,4 +189,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ Control.
|
|||||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||||
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|
||||||
|------+------+------+------+------| || |------+------+------+------+------|
|
|------+------+------+------+------| || |------+------+------+------+------|
|
||||||
| ~ | | | | Del |------'`------| Ins | | | | |
|
| ~ | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||||
`----------------------------------' `----------------------------------'
|
`----------------------------------' `----------------------------------'
|
||||||
|
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ Control.
|
|||||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||||
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|
||||||
|------+------+------+------+------| || |------+------+------+------+------|
|
|------+------+------+------+------| || |------+------+------+------+------|
|
||||||
| ` | | | | Del |------'`------| Ins | | | | |
|
| ` | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||||
`----------------------------------' `----------------------------------'
|
`----------------------------------' `----------------------------------'
|
||||||
|
|
||||||
### Layer 6: ADJUST layer
|
### Layer 6: ADJUST layer
|
||||||
|
|||||||
@@ -0,0 +1,217 @@
|
|||||||
|
/* Copyright 2019 ENDO Katsuhiro <[email protected]>
|
||||||
|
* Copyright 2020 Masaya Uno
|
||||||
|
*
|
||||||
|
* 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 "board.h"
|
||||||
|
|
||||||
|
enum layer_number {
|
||||||
|
_QWERTY,
|
||||||
|
_COLEMAK,
|
||||||
|
_DVORAK,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Defines the keycodes used by our macros in process_record_user
|
||||||
|
enum custom_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
COLEMAK,
|
||||||
|
DVORAK,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
#define ADJUST MO(_ADJUST)
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||||
|
ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
/* Colemak
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_COLEMAK] = LAYOUT(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||||
|
ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Dvorak
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_DVORAK] = LAYOUT(
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
|
||||||
|
ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Lower
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | - | _ | + | { | } | | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | Home | End | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Raise
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust (Lower + Raise)
|
||||||
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
|
* | | Reset| | | | | | |Qwerty|Colemk|Dvorak| | Ins |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | Caps | | | | | Mac | | Win | - | = |Print |ScLock|Pause |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | KANA | | Home |PageDn|PageUp| End |
|
||||||
|
* `-----------------------------------------' `-----------------------------------------'
|
||||||
|
*/
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS,
|
||||||
|
KC_CAPS, _______, _______, _______, _______, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||||
|
)
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
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 COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_COLEMAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_DVORAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_user(led_t led_state) {
|
||||||
|
board_set_led_by_index(0, LED_YELLOW, led_state.caps_lock);
|
||||||
|
board_set_led_by_index(1, LED_YELLOW, led_state.scroll_lock);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
|
||||||
|
void oled_write_layer_state(void) {
|
||||||
|
oled_write_P(PSTR("Layer: "), false);
|
||||||
|
switch (get_highest_layer(layer_state | default_layer_state)) {
|
||||||
|
case _QWERTY:
|
||||||
|
oled_write_ln_P(PSTR("Qwerty"), false);
|
||||||
|
break;
|
||||||
|
case _COLEMAK:
|
||||||
|
oled_write_ln_P(PSTR("Colemak"), false);
|
||||||
|
break;
|
||||||
|
case _DVORAK:
|
||||||
|
oled_write_ln_P(PSTR("Dvorak"), false);
|
||||||
|
break;
|
||||||
|
case _LOWER:
|
||||||
|
oled_write_ln_P(PSTR("Lower"), false);
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
oled_write_ln_P(PSTR("Raise"), false);
|
||||||
|
break;
|
||||||
|
case _ADJUST:
|
||||||
|
oled_write_ln_P(PSTR("Adjust"), false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
oled_write_ln_P(PSTR("Undef"), false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
// If you want to change the display of OLED, you need to change here
|
||||||
|
oled_write_layer_state();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# An OLED enabled keymap based on the default keymap for chidori
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Enable SSD1306 OLED
|
||||||
|
OLED_DRIVER_ENABLE = yes
|
||||||
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UNDS, KC_PLUS,
|
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS,
|
||||||
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_LBRC, KC_RBRC,
|
KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_LBRC, KC_RBRC,
|
||||||
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT),
|
RESET, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT),
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 Chuck Lauer Vose <[email protected]>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#undef RGBLED_NUM
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 3
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
|
||||||
|
#define RGBLIGHT_SLEEP // Put the keyboard to sleep when USB goes dark
|
||||||
|
|
||||||
|
#define LAYOUT_ortho_half_5x7( \
|
||||||
|
L00, L01, L02, L03, L04, L05, L06, \
|
||||||
|
L10, L11, L12, L13, L14, L15, L16, \
|
||||||
|
L20, L21, L22, L23, L24, L25, L26, \
|
||||||
|
L30, L31, L32, L33, L34, L35, L36, \
|
||||||
|
L40, L41, L42, L43, L44, L45, L46 \
|
||||||
|
) \
|
||||||
|
LAYOUT_ortho_5x14( \
|
||||||
|
L00, L01, L02, L03, L04, L05, L06, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||||
|
L10, L11, L12, L13, L14, L15, L16, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||||
|
L20, L21, L22, L23, L24, L25, L26, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||||
|
L30, L31, L32, L33, L34, L35, L36, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||||
|
L40, L41, L42, L43, L44, L45, L46, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO \
|
||||||
|
)
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "vosechu.h"
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[BASE] = LAYOUT_ortho_half_5x7( // Base layer
|
||||||
|
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_9 ,
|
||||||
|
ALT_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , TT(TT1) ,
|
||||||
|
CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , TT(TT2) ,
|
||||||
|
KC_F13 , KC_Z , KC_X , KC_C , KC_V , KC_B , TT(TT3) ,
|
||||||
|
KC_MEH , CTL_GRV , ALT_TAB , KC_LALT , MO(LWR) , LFT_BK , SFT_SPC
|
||||||
|
),
|
||||||
|
[LWR] = LAYOUT_ortho_half_5x7( // EVE layer
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
A(KC_LEFT), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F9 ,
|
||||||
|
SFT_SPC , A(KC_F1), A(KC_F2), A(KC_F3), A(KC_F4), _______ , _______ ,
|
||||||
|
A(KC_RGHT), C(KC_F1), C(KC_F2), C(KC_F3), C(KC_F4), _______ , _______ ,
|
||||||
|
_______ , RESET , _______ , _______ , _LAYER_ , KC_DEL , KC_ENT
|
||||||
|
),
|
||||||
|
[LFT] = LAYOUT_ortho_half_5x7( // Media
|
||||||
|
_______ , KC_F10 , KC_F11 , KC_F12 , KC_PSCR , KC_SLCK , KC_PAUS ,
|
||||||
|
_______ , KC_F7 , KC_F8 , KC_F9 , KC_INS , KC_HOME , KC_PGUP ,
|
||||||
|
RGB_TOG , KC_F4 , KC_F5 , KC_F6 , KC_DEL , KC_END , KC_PGDN ,
|
||||||
|
_______ , KC_F1 , KC_F2 , KC_F3 , KC_VOLU , KC_VOLD , KC_MUTE ,
|
||||||
|
_______ , _______ , _______ , _______ , PSWD , _LAYER_ , PSWD_ALT
|
||||||
|
),
|
||||||
|
[TT1] = LAYOUT_ortho_half_5x7( // Override WASD with arrows
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
_______ , _______ , KC_UP , _______ , _______ , _______ , _______ ,
|
||||||
|
_______ , KC_LEFT , KC_DOWN , KC_RGHT , _______ , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______
|
||||||
|
),
|
||||||
|
[TT2] = LAYOUT_ortho_half_5x7( // Browser layer
|
||||||
|
C(KC_W) , C(KC_1) , C(KC_T) , C(KC_9) , _______ , _______ , _______ ,
|
||||||
|
WBWSRBK , WTABLFT , KC_UP , WTABRGT , WBWSRFW , _______ , _______ ,
|
||||||
|
KC_ESC , KC_LEFT , KC_DOWN , KC_RGHT , C(KC_R) , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , TT(T23X),
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______
|
||||||
|
),
|
||||||
|
[TT3] = LAYOUT_ortho_half_5x7( // OS X override layer
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , TT(T23X),
|
||||||
|
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , KC_LGUI , _______ , _______ , _______
|
||||||
|
),
|
||||||
|
[T23X] = LAYOUT_ortho_half_5x7( // Browser layer
|
||||||
|
G(KC_W) , G(KC_1) , G(KC_T) , G(KC_9) , _______ , SLACKTB , _______ ,
|
||||||
|
BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , SLACKUP , _______ ,
|
||||||
|
KC_ESC , KC_LEFT , KC_DOWN , KC_RGHT , G(KC_R) , SLACKDN , _______ ,
|
||||||
|
_______ , _______ , KC_Q , KC_J , KC_K , _______ , _______ ,
|
||||||
|
_______ , _______ , _______ , KC_LGUI , _______ , _______ , _______
|
||||||
|
),
|
||||||
|
// [_EMPTY] = LAYOUT(
|
||||||
|
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||||
|
// _______ , _______ , _______ , _______ , _______ , _______ , _______
|
||||||
|
// ),
|
||||||
|
};
|
||||||
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
// Call the post init code.
|
||||||
|
rgblight_enable_noeeprom(); // enables Rgb, without saving settings
|
||||||
|
rgblight_mode_noeeprom(0);
|
||||||
|
rgblight_sethsv_noeeprom(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
switch (get_highest_layer(state)) {
|
||||||
|
case TT1:
|
||||||
|
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||||
|
break;
|
||||||
|
case TT2:
|
||||||
|
rgblight_sethsv_noeeprom(HSV_PURPLE);
|
||||||
|
break;
|
||||||
|
case T23X:
|
||||||
|
rgblight_sethsv_noeeprom(HSV_GOLD);
|
||||||
|
break;
|
||||||
|
case TT3:
|
||||||
|
rgblight_sethsv_noeeprom(HSV_GREEN);
|
||||||
|
break;
|
||||||
|
default: // for any other layers, or the default layer
|
||||||
|
rgblight_sethsv_noeeprom(0, 0, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/* Copyright 2020 Team Mechlovin'
|
||||||
|
*
|
||||||
|
* 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 "adelais.h"
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
led_config_t g_led_config = { {
|
||||||
|
//Key Matrix to LED Index
|
||||||
|
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16},
|
||||||
|
{18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0},
|
||||||
|
{33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, NO_LED, 45, 17},
|
||||||
|
{46, NO_LED, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 60, 32},
|
||||||
|
{61, NO_LED, 62, NO_LED, 63, NO_LED, 64, NO_LED, 65, NO_LED, 66, NO_LED, NO_LED, 57, 67}
|
||||||
|
}, {
|
||||||
|
//LED Index to Physical Positon
|
||||||
|
{0,0}, { 17, 0}, { 34, 0 }, { 51, 0 }, { 69, 0}, { 86, 0}, {100, 0}, {103, 0}, { 120, 0}, { 138, 0}, { 155, 0}, { 172, 0}, { 189, 0}, {207, 0}, {215, 0}, {223, 0}, {224, 0},
|
||||||
|
{0,16}, { 17, 16}, { 34,16 }, { 51,16 }, { 69,16}, { 86,16}, {103,16}, { 120,16}, { 138,16}, { 155,16}, { 172,16}, { 189,16}, {207, 16}, {215, 16}, {224,16},
|
||||||
|
{0,32}, { 17, 32}, { 34,32 }, { 51,32 }, { 69,32}, { 86,32}, {103,32}, { 120,32}, { 138,32}, { 155,32}, { 172,32}, { 189,32}, {207, 32}, {224,32},
|
||||||
|
{ 17, 48}, { 34,48 }, { 51,48 }, { 69,48}, { 86,48}, {103,48}, { 120,48}, { 138,48}, { 155,48}, { 172,48}, { 189,48}, {207, 48}, {215, 48}, {224,48}, {224,48},
|
||||||
|
{ 17, 64}, { 51,64 }, { 86,64}, { 103,64}, { 138,64}, { 172,64}, {224, 64},
|
||||||
|
{100,0}, { 69,0}, { 24, 0}, { 0,3}, { 0,16}, { 0,32}, { 0,51}, { 15,64 }, { 34,64}, { 69,64}, { 103,64}, {110,64}, { 120,64}, { 155,64}, { 189,64}, { 192,64}, { 224,58}, { 224,32}, { 224,16}, { 224,0}, { 207,0}, { 172,0}, { 138,0},
|
||||||
|
}, {
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
|
} };
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
led_init_ports();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_init_ports(void) {
|
||||||
|
setPinOutput(B2);
|
||||||
|
writePinLow(B2);
|
||||||
|
setPinOutput(C15);
|
||||||
|
writePinLow(C15);
|
||||||
|
setPinOutput(B9);
|
||||||
|
writePinLow(B9);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
if(led_update_user(led_state)) {
|
||||||
|
writePin(B2, led_state.caps_lock);
|
||||||
|
writePin(B9, led_state.scroll_lock);
|
||||||
|
writePin(C12, led_state.num_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/* Copyright 2020 Team Mechlovin
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
|
||||||
|
K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
|
||||||
|
K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
|
||||||
|
K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
|
||||||
|
K40, K42, K44, K46, K48, K4A, K4E \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
|
||||||
|
{ K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Team Mechlovin
|
||||||
|
|
||||||
|
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 0x4D4C // "ML"
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Team.Mechlovin
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2}
|
||||||
|
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A15 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Adelais",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "Team Mechlovin'",
|
||||||
|
"width": 18.5,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"key_count": 66,
|
||||||
|
"layout": [
|
||||||
|
{"label":"K1E", "x":0, "y":0},
|
||||||
|
{"label":"K00", "x":1.5, "y":0},
|
||||||
|
{"label":"K01", "x":2.5, "y":0},
|
||||||
|
{"label":"K02", "x":3.5, "y":0},
|
||||||
|
{"label":"K03", "x":4.5, "y":0},
|
||||||
|
{"label":"K04", "x":5.5, "y":0},
|
||||||
|
{"label":"K05", "x":6.5, "y":0},
|
||||||
|
{"label":"K06", "x":7.5, "y":0},
|
||||||
|
{"label":"K07", "x":10.5, "y":0},
|
||||||
|
{"label":"K08", "x":11.5, "y":0},
|
||||||
|
{"label":"K09", "x":12.5, "y":0},
|
||||||
|
{"label":"K0A", "x":13.5, "y":0},
|
||||||
|
{"label":"K0B", "x":14.5, "y":0},
|
||||||
|
{"label":"K0C", "x":15.5, "y":0},
|
||||||
|
{"label":"K0D", "x":16.5, "y":0},
|
||||||
|
{"label":"K0E", "x":17.5, "y":0},
|
||||||
|
{"label":"K2E", "x":0, "y":1},
|
||||||
|
{"label":"K10", "x":1.5, "y":1, "w":1.5},
|
||||||
|
{"label":"K11", "x":3, "y":1},
|
||||||
|
{"label":"K12", "x":4, "y":1},
|
||||||
|
{"label":"K13", "x":5, "y":1},
|
||||||
|
{"label":"K14", "x":6, "y":1},
|
||||||
|
{"label":"K15", "x":7, "y":1},
|
||||||
|
{"label":"K16", "x":10, "y":1},
|
||||||
|
{"label":"K17", "x":11, "y":1},
|
||||||
|
{"label":"K18", "x":12, "y":1},
|
||||||
|
{"label":"K19", "x":13, "y":1},
|
||||||
|
{"label":"K1A", "x":14, "y":1},
|
||||||
|
{"label":"K1B", "x":15, "y":1},
|
||||||
|
{"label":"K1C", "x":16, "y":1},
|
||||||
|
{"label":"K1D", "x":17, "y":1, "w":1.5},
|
||||||
|
{"label":"K3E", "x":0, "y":2},
|
||||||
|
{"label":"K20", "x":1.5, "y":2, "w":1.75},
|
||||||
|
{"label":"K21", "x":3.25, "y":2},
|
||||||
|
{"label":"K22", "x":4.25, "y":2},
|
||||||
|
{"label":"K23", "x":5.25, "y":2},
|
||||||
|
{"label":"K24", "x":6.25, "y":2},
|
||||||
|
{"label":"K25", "x":7.25, "y":2},
|
||||||
|
{"label":"K26", "x":10.25, "y":2},
|
||||||
|
{"label":"K27", "x":11.25, "y":2},
|
||||||
|
{"label":"K28", "x":12.25, "y":2},
|
||||||
|
{"label":"K29", "x":13.25, "y":2},
|
||||||
|
{"label":"K2A", "x":14.25, "y":2},
|
||||||
|
{"label":"K2B", "x":15.25, "y":2},
|
||||||
|
{"label":"K2D", "x":16.25, "y":2, "w":2.25},
|
||||||
|
{"label":"K30", "x":1.5, "y":3, "w":2.25},
|
||||||
|
{"label":"K32", "x":3.75, "y":3},
|
||||||
|
{"label":"K33", "x":4.75, "y":3},
|
||||||
|
{"label":"K34", "x":5.75, "y":3},
|
||||||
|
{"label":"K35", "x":6.75, "y":3},
|
||||||
|
{"label":"K36", "x":7.75, "y":3},
|
||||||
|
{"label":"K37", "x":9.75, "y":3},
|
||||||
|
{"label":"K38", "x":10.75, "y":3},
|
||||||
|
{"label":"K39", "x":11.75, "y":3},
|
||||||
|
{"label":"K3A", "x":12.75, "y":3},
|
||||||
|
{"label":"K3B", "x":13.75, "y":3},
|
||||||
|
{"label":"K4D", "x":14.75, "y":3},
|
||||||
|
{"label":"K3C", "x":15.75, "y":3, "w":1.75},
|
||||||
|
{"label":"K3D", "x":17.5, "y":3},
|
||||||
|
{"label":"K40", "x":1.5, "y":4, "w":1.5},
|
||||||
|
{"label":"K42", "x":4.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K44", "x":5.75, "y":4, "w":2.25},
|
||||||
|
{"label":"K46", "x":8, "y":4, "w":1.25},
|
||||||
|
{"label":"K48", "x":9.75, "y":4, "w":2.75},
|
||||||
|
{"label":"K4A", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K4E", "x":17, "y":4, "w":1.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/* Copyright 2020 Team Mechlovin
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
KC_SPC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||||
|
KC_SPC, 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_SLSH,
|
||||||
|
KC_SPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSLS, MO(1), KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for adelais
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/* Copyright 2020 Team Mechlovin
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
KC_SPC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||||
|
KC_SPC, 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_SLSH,
|
||||||
|
KC_SPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSLS, MO(1), KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
||||||
|
[3] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The VIA keymap for adelais
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Adelais / Adelais En Ciel
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Compatible with TGR Alice and all clone variants.
|
||||||
|
`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered.
|
||||||
|
`rgb_led` (Adelais En Ciel) comes with per-key RGB LEDs pre-soldered.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
|
||||||
|
* Hardware Supported: Adelais, Adelais En Ciel
|
||||||
|
* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/fr7smq/gb_team_mechlovin_adelais_tgr_alice_clones/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make mechlovin/adelais/standard_led:default
|
||||||
|
make mechlovin/adelais/rgb_led:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define PRODUCT_ID 0xAEC1
|
||||||
|
#define PRODUCT Adelais En Ciel
|
||||||
|
#define DESCRIPTION Team.Mechlovin Adelais En Ciel
|
||||||
|
|
||||||
|
#define RGB_DI_PIN A7
|
||||||
|
#define DRIVER_LED_TOTAL 91
|
||||||
|
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||||
|
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
||||||
|
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||||
|
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
|
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
|
||||||
|
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
|
||||||
|
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
|
||||||
|
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
RGB_MATRIX_ENABLE = WS2812
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = STM32F303
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
|
||||||
|
DEFAULT_FOLDER = mechlovin/adelais/standard_led
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define PRODUCT_ID 0xAD01
|
||||||
|
#define PRODUCT Adelais
|
||||||
|
#define DESCRIPTION Team.Mechlovin Adelais
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B0
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_PWM_DRIVER PWMD3
|
||||||
|
#define BACKLIGHT_PWM_CHANNEL 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN A7
|
||||||
|
#define RGBLED_NUM 23
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
BACKLIGHT_DRIVER = pwm
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x6666
|
||||||
|
#define PRODUCT_ID 0x6668
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Pabile
|
||||||
|
#define PRODUCT P18 Macro Pad
|
||||||
|
#define DESCRIPTION An 18-key DIY macropad kit
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 5
|
||||||
|
|
||||||
|
/* pin-out for PROMICRO */
|
||||||
|
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
|
||||||
|
#define MATRIX_COL_PINS { D2, D7, E6, B4, B5 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* Encoder position for PROMICRO */
|
||||||
|
#define ENCODERS_PAD_A { B6, F6 }
|
||||||
|
#define ENCODERS_PAD_B { F4, F5 }
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Pabile 18",
|
||||||
|
"url": "https://pabileonline.blogspot.com/",
|
||||||
|
"maintainer": "Pabile",
|
||||||
|
"width": 5.25,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":1.25, "y":0},
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":1.25, "y":1},
|
||||||
|
{"x":2.25, "y":1},
|
||||||
|
{"x":3.25, "y":1},
|
||||||
|
{"x":4.25, "y":1},
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1.25, "y":2},
|
||||||
|
{"x":2.25, "y":2},
|
||||||
|
{"x":3.25, "y":2},
|
||||||
|
{"x":4.25, "y":2},
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1.25, "y":3},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||||
|
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_MUTE, KC_P1, KC_P2, KC_P3, KC_TAB,
|
||||||
|
KC_ESC, KC_DEL, KC_P0, KC_PDOT, KC_PENT
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) { /* First encoder below the controller */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLD); /*volume down*/
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLU); /*volume up*/
|
||||||
|
}
|
||||||
|
} else if (index == 1) { /* Second encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_WH_U); /*mouse wheel up*/
|
||||||
|
} else {
|
||||||
|
tap_code(KC_WH_D); /*mouse wheel down*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "p18.h"
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
k01, k02, k03, k04, \
|
||||||
|
k11, k12, k13, k14, \
|
||||||
|
k20, k21, k22, k23, k24, \
|
||||||
|
k30, k31, k32, k33, k34 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{KC_NO, k04, k03, k02, k01}, \
|
||||||
|
{KC_NO, k14, k13, k12, k11}, \
|
||||||
|
{k20, k24, k23, k22, k21}, \
|
||||||
|
{k30, k34, k33, k32, k31} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# P18
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A 18-key DIY Hotswap Macropad that accepts both Pro Micro and Adafruit Feather 32u4 Bluefruit LE.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [pabile](https://github.com/pabile)
|
||||||
|
* Hardware Supported: Pabile P18 PCB with Pro Micro or Adafruit Feather 32u4 Bluefruit LE
|
||||||
|
* Hardware Availability: [Info at pabileonline.blogspot.com](https://pabileonline.blogspot.com/search/label/pabile18)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make pabile/p18:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
UNICODE_ENABLE = yes # Unicode
|
||||||
|
IOS_DEVICE_ENABLE = no # connect to IOS Device
|
||||||
|
ENCODER_ENABLE = yes
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x6666
|
||||||
|
#define PRODUCT_ID 0x6667
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Pabile
|
||||||
|
#define PRODUCT P20
|
||||||
|
#define DESCRIPTION 5x4 Macropad
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 4
|
||||||
|
|
||||||
|
/* pin-out */
|
||||||
|
#define MATRIX_ROW_PINS { B3, B4, B5, D7, E6 }
|
||||||
|
#define MATRIX_COL_PINS { D0, B2, D4, B6 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define ENCODERS_PAD_A { F5, F7 }
|
||||||
|
#define ENCODERS_PAD_B { F6, B1 }
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_ortho_5x4(
|
||||||
|
KC_PSLS, KC_PMNS, KC_PAST, KC_MPLY,
|
||||||
|
KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||||
|
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_P1, KC_P2, KC_P3, KC_TAB,
|
||||||
|
LT(2,KC_P0), KC_PCMM, KC_PDOT, LT(1,KC_PENT)),
|
||||||
|
[1] = LAYOUT_ortho_5x4(
|
||||||
|
KC_NLCK, KC_UNDS, KC_NO, KC_NO,
|
||||||
|
KC_AMPR, KC_ASTR, KC_LPRN, KC_EQL,
|
||||||
|
KC_DLR, KC_PERC, KC_CIRC, KC_NO,
|
||||||
|
KC_EXLM, KC_AT, KC_HASH, KC_NO,
|
||||||
|
KC_RPRN, KC_NO, KC_PSLS, KC_NO),
|
||||||
|
[2] = LAYOUT_ortho_5x4(
|
||||||
|
KC_NLCK, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_BTN1, KC_MS_U, KC_BTN2, KC_NO,
|
||||||
|
KC_MS_L, KC_MS_D, KC_MS_R, KC_TAB,
|
||||||
|
KC_WH_U, KC_NO, KC_WH_D, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_DEL, KC_ESC)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) { /* First encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_WH_U); /*mouse wheel up*/
|
||||||
|
} else {
|
||||||
|
tap_code(KC_WH_D); /*mouse wheel down */
|
||||||
|
}
|
||||||
|
} else if (index == 1) { /* Second encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLD); /*volume down*/
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLU); /*volume up*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "p20.h"
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_ortho_5x4( \
|
||||||
|
k00, k01, k02, k03, \
|
||||||
|
k10, k11, k12, k13, \
|
||||||
|
k20, k21, k22, k23, \
|
||||||
|
k30, k31, k32, k33, \
|
||||||
|
k40, k41, k42, k43 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, k03}, \
|
||||||
|
{k10, k11, k12, k13}, \
|
||||||
|
{k20, k21, k22, k23}, \
|
||||||
|
{k30, k31, k32, k33}, \
|
||||||
|
{k40, k41, k42, k43} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# P20
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
A 5x4 grid keyboard with 2 rotary encoders.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [pabile](https://github.com/pabile)
|
||||||
|
* Hardware Supported: Pabile P20 PCB, Pro Micro
|
||||||
|
* Hardware Availability: [Info at pabileonline.blogspot.com](https://pabileonline.blogspot.com/search/label/pabile20)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make pabile/p20:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
UNICODE_ENABLE = yes # Unicode
|
||||||
|
IOS_DEVICE_ENABLE = no # connect to IOS Device
|
||||||
|
ENCODER_ENABLE = yes
|
||||||
|
|
||||||
|
LAYOUTS = ortho_5x4
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x6666
|
||||||
|
#define PRODUCT_ID 0x6666
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Pabile
|
||||||
|
#define PRODUCT P40 Keyboard
|
||||||
|
#define DESCRIPTION 4x10 staggered keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
|
||||||
|
/* pin-out
|
||||||
|
for PCB ver0.01 452019 */
|
||||||
|
#define MATRIX_ROW_PINS { F6, B3, B2, B6 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, B5, B4, E6, D7, C6, D4, D0, D1 }
|
||||||
|
/*
|
||||||
|
for pro micro facing back of pcb
|
||||||
|
#define MATRIX_ROW_PINS { D4, E6, B4, B5 }
|
||||||
|
#define MATRIX_COL_PINS { D1, D0, B6, B2, B3, B1, F7, F6, F5, F4 }
|
||||||
|
*/
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Pabile 40",
|
||||||
|
"url": "https://pabileonline.blogspot.com/",
|
||||||
|
"maintainer": "Pabile",
|
||||||
|
"width": 10.75,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_4x10": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":0.25, "y":1},
|
||||||
|
{"x":1.25, "y":1},
|
||||||
|
{"x":2.25, "y":1},
|
||||||
|
{"x":3.25, "y":1},
|
||||||
|
{"x":4.25, "y":1},
|
||||||
|
{"x":5.25, "y":1},
|
||||||
|
{"x":6.25, "y":1},
|
||||||
|
{"x":7.25, "y":1},
|
||||||
|
{"x":8.25, "y":1},
|
||||||
|
{"x":9.25, "y":1},
|
||||||
|
{"x":0.5, "y":2},
|
||||||
|
{"x":1.5, "y":2},
|
||||||
|
{"x":2.5, "y":2},
|
||||||
|
{"x":3.5, "y":2},
|
||||||
|
{"x":4.5, "y":2},
|
||||||
|
{"x":5.5, "y":2},
|
||||||
|
{"x":6.5, "y":2},
|
||||||
|
{"x":7.5, "y":2},
|
||||||
|
{"x":8.5, "y":2},
|
||||||
|
{"x":9.5, "y":2},
|
||||||
|
{"x":0.75, "y":3},
|
||||||
|
{"x":1.75, "y":3},
|
||||||
|
{"x":2.75, "y":3},
|
||||||
|
{"x":3.75, "y":3},
|
||||||
|
{"x":4.75, "y":3},
|
||||||
|
{"x":5.75, "y":3},
|
||||||
|
{"x":6.75, "y":3},
|
||||||
|
{"x":7.75, "y":3},
|
||||||
|
{"x":8.75, "y":3},
|
||||||
|
{"x":9.75, "y":3}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_ortho_4x10(
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(3,KC_MINS),
|
||||||
|
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(4,KC_SLSH),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, LT(2,KC_BSPC), LT(1,KC_SPC), KC_ENT, KC_APP, KC_DEL, KC_ESC),
|
||||||
|
[1] = LAYOUT_ortho_4x10(
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||||
|
KC_TAB, KC_NO, KC_NO, KC_GRV, KC_LBRC, KC_RBRC, KC_BSLS, KC_SCLN, KC_QUOT, KC_MINS,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_EQL, KC_MINS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[2] = LAYOUT_ortho_4x10(
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||||
|
KC_TAB, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_CAPS, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NLCK, KC_NO, KC_VOLD, KC_VOLU, KC_MUTE,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
|
||||||
|
[3] = LAYOUT_ortho_4x10(
|
||||||
|
KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_INS, KC_PGUP, KC_UP, KC_PGDN, KC_DEL,
|
||||||
|
KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
|
||||||
|
[4] = LAYOUT_ortho_4x10(
|
||||||
|
KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_DEL,
|
||||||
|
KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "p40.h"
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_ortho_4x10( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09}, \
|
||||||
|
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19}, \
|
||||||
|
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29}, \
|
||||||
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# P40
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A compact 4x10 (40%) staggered DIY keyboard kit.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [pabile](https://github.com/pabile)
|
||||||
|
* Hardware Supported: Pabile P40 PCB, Pro Micro
|
||||||
|
* Hardware Availability: [Info at pabileonline.blogspot.com](https://pabileonline.blogspot.com/search/label/pabile40)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make pabile/p40:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
UNICODE_ENABLE = yes # Unicode
|
||||||
|
IOS_DEVICE_ENABLE = no # connect to IOS Device
|
||||||
|
|
||||||
|
LAYOUTS = ortho_4x10
|
||||||
+63
-1
@@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#ifdef __AVR__
|
#ifdef __AVR__
|
||||||
# include <avr/eeprom.h>
|
# include <avr/eeprom.h>
|
||||||
# include <avr/interrupt.h>
|
# include <avr/interrupt.h>
|
||||||
@@ -561,7 +562,7 @@ void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index) {
|
|||||||
rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
|
rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RGBLIGHT_EFFECT_BREATHING) || defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) || defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) || defined(RGBLIGHT_EFFECT_SNAKE) || defined(RGBLIGHT_EFFECT_KNIGHT)
|
#if defined(RGBLIGHT_EFFECT_BREATHING) || defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) || defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) || defined(RGBLIGHT_EFFECT_SNAKE) || defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_TWINKLE)
|
||||||
|
|
||||||
static uint8_t get_interval_time(const uint8_t *default_interval_address, uint8_t velocikey_min, uint8_t velocikey_max) {
|
static uint8_t get_interval_time(const uint8_t *default_interval_address, uint8_t velocikey_min, uint8_t velocikey_max) {
|
||||||
return
|
return
|
||||||
@@ -904,6 +905,12 @@ void rgblight_task(void) {
|
|||||||
interval_time = 500;
|
interval_time = 500;
|
||||||
effect_func = (effect_func_t)rgblight_effect_alternating;
|
effect_func = (effect_func_t)rgblight_effect_alternating;
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
|
# ifdef RGBLIGHT_EFFECT_TWINKLE
|
||||||
|
else if (rgblight_status.base_mode == RGBLIGHT_MODE_TWINKLE) {
|
||||||
|
interval_time = get_interval_time(&RGBLED_TWINKLE_INTERVALS[delta % 3], 5, 50);
|
||||||
|
effect_func = (effect_func_t)rgblight_effect_twinkle;
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
if (animation_status.restart) {
|
if (animation_status.restart) {
|
||||||
animation_status.restart = false;
|
animation_status.restart = false;
|
||||||
@@ -1189,3 +1196,58 @@ void rgblight_effect_alternating(animation_status_t *anim) {
|
|||||||
anim->pos = (anim->pos + 1) % 2;
|
anim->pos = (anim->pos + 1) % 2;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_EFFECT_TWINKLE
|
||||||
|
__attribute__((weak)) const uint8_t RGBLED_TWINKLE_INTERVALS[] PROGMEM = {50, 25, 10};
|
||||||
|
|
||||||
|
typedef struct PACKED {
|
||||||
|
HSV hsv;
|
||||||
|
uint8_t life;
|
||||||
|
bool up;
|
||||||
|
} TwinkleState;
|
||||||
|
|
||||||
|
static TwinkleState led_twinkle_state[RGBLED_NUM];
|
||||||
|
|
||||||
|
void rgblight_effect_twinkle(animation_status_t *anim) {
|
||||||
|
bool random_color = anim->delta / 3;
|
||||||
|
bool restart = anim->pos == 0;
|
||||||
|
anim->pos = 1;
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < rgblight_ranges.effect_num_leds; i++) {
|
||||||
|
TwinkleState *t = &(led_twinkle_state[i]);
|
||||||
|
HSV * c = &(t->hsv);
|
||||||
|
if (restart) {
|
||||||
|
// Restart
|
||||||
|
t->life = 0;
|
||||||
|
t->hsv.v = 0;
|
||||||
|
} else if (t->life) {
|
||||||
|
// This LED is already on, either brightening or dimming
|
||||||
|
t->life--;
|
||||||
|
uint8_t on = t->up ? RGBLIGHT_EFFECT_TWINKLE_LIFE - t->life : t->life;
|
||||||
|
c->v = (uint16_t)rgblight_config.val * on / RGBLIGHT_EFFECT_TWINKLE_LIFE;
|
||||||
|
if (t->life == 0 && t->up) {
|
||||||
|
t->up = false;
|
||||||
|
t->life = RGBLIGHT_EFFECT_TWINKLE_LIFE;
|
||||||
|
}
|
||||||
|
if (!random_color) {
|
||||||
|
c->h = rgblight_config.hue;
|
||||||
|
c->s = rgblight_config.sat;
|
||||||
|
}
|
||||||
|
} else if (rand() < RAND_MAX * RGBLIGHT_EFFECT_TWINKLE_PROBABILITY) {
|
||||||
|
// This LED is off, but was randomly selected to start brightening
|
||||||
|
c->h = random_color ? rand() % 0xFF : rgblight_config.hue;
|
||||||
|
c->s = random_color ? (rand() % (rgblight_config.sat / 2)) + (rgblight_config.sat / 2) : rgblight_config.sat;
|
||||||
|
c->v = 0;
|
||||||
|
t->life = RGBLIGHT_EFFECT_TWINKLE_LIFE;
|
||||||
|
t->up = true;
|
||||||
|
} else {
|
||||||
|
// This LED is off, and was NOT selected to start brightening
|
||||||
|
}
|
||||||
|
|
||||||
|
LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
|
||||||
|
sethsv(c->h, c->s, c->v, ledp);
|
||||||
|
}
|
||||||
|
|
||||||
|
rgblight_set();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
+19
-1
@@ -59,6 +59,12 @@
|
|||||||
| 34 | RGBLIGHT_MODE_STATIC_GRADIENT + 9 |
|
| 34 | RGBLIGHT_MODE_STATIC_GRADIENT + 9 |
|
||||||
| 35 | RGBLIGHT_MODE_RGB_TEST |
|
| 35 | RGBLIGHT_MODE_RGB_TEST |
|
||||||
| 36 | RGBLIGHT_MODE_ALTERNATING |
|
| 36 | RGBLIGHT_MODE_ALTERNATING |
|
||||||
|
| 37 | RGBLIGHT_MODE_TWINKLE |
|
||||||
|
| 38 | RGBLIGHT_MODE_TWINKLE + 1 |
|
||||||
|
| 39 | RGBLIGHT_MODE_TWINKLE + 2 |
|
||||||
|
| 40 | RGBLIGHT_MODE_TWINKLE + 3 |
|
||||||
|
| 41 | RGBLIGHT_MODE_TWINKLE + 4 |
|
||||||
|
| 42 | RGBLIGHT_MODE_TWINKLE + 5 |
|
||||||
|-----------------|-----------------------------------|
|
|-----------------|-----------------------------------|
|
||||||
*****/
|
*****/
|
||||||
|
|
||||||
@@ -73,6 +79,7 @@
|
|||||||
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
# define RGBLIGHT_EFFECT_RGB_TEST
|
# define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
# define RGBLIGHT_EFFECT_ALTERNATING
|
# define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
# define RGBLIGHT_EFFECT_TWINKLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RGBLIGHT_STATIC_PATTERNS
|
#ifdef RGBLIGHT_STATIC_PATTERNS
|
||||||
@@ -89,7 +96,8 @@
|
|||||||
|| defined(RGBLIGHT_EFFECT_KNIGHT) \
|
|| defined(RGBLIGHT_EFFECT_KNIGHT) \
|
||||||
|| defined(RGBLIGHT_EFFECT_CHRISTMAS) \
|
|| defined(RGBLIGHT_EFFECT_CHRISTMAS) \
|
||||||
|| defined(RGBLIGHT_EFFECT_RGB_TEST) \
|
|| defined(RGBLIGHT_EFFECT_RGB_TEST) \
|
||||||
|| defined(RGBLIGHT_EFFECT_ALTERNATING)
|
|| defined(RGBLIGHT_EFFECT_ALTERNATING) \
|
||||||
|
|| defined(RGBLIGHT_EFFECT_TWINKLE)
|
||||||
# define RGBLIGHT_USE_TIMER
|
# define RGBLIGHT_USE_TIMER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -141,6 +149,14 @@ enum RGBLIGHT_EFFECT_MODE {
|
|||||||
# define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2
|
# define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# ifndef RGBLIGHT_EFFECT_TWINKLE_LIFE
|
||||||
|
# define RGBLIGHT_EFFECT_TWINKLE_LIFE 75
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef RGBLIGHT_EFFECT_TWINKLE_PROBABILITY
|
||||||
|
# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 127
|
||||||
|
# endif
|
||||||
|
|
||||||
# ifndef RGBLIGHT_HUE_STEP
|
# ifndef RGBLIGHT_HUE_STEP
|
||||||
# define RGBLIGHT_HUE_STEP 8
|
# define RGBLIGHT_HUE_STEP 8
|
||||||
# endif
|
# endif
|
||||||
@@ -208,6 +224,7 @@ extern const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[3] PROGMEM;
|
|||||||
extern const uint8_t RGBLED_SNAKE_INTERVALS[3] PROGMEM;
|
extern const uint8_t RGBLED_SNAKE_INTERVALS[3] PROGMEM;
|
||||||
extern const uint8_t RGBLED_KNIGHT_INTERVALS[3] PROGMEM;
|
extern const uint8_t RGBLED_KNIGHT_INTERVALS[3] PROGMEM;
|
||||||
extern const uint16_t RGBLED_RGBTEST_INTERVALS[1] PROGMEM;
|
extern const uint16_t RGBLED_RGBTEST_INTERVALS[1] PROGMEM;
|
||||||
|
extern const uint8_t RGBLED_TWINKLE_INTERVALS[3] PROGMEM;
|
||||||
extern bool is_rgblight_initialized;
|
extern bool is_rgblight_initialized;
|
||||||
|
|
||||||
// Should stay in sycn with rgb matrix config as we reuse eeprom storage for both (for now)
|
// Should stay in sycn with rgb matrix config as we reuse eeprom storage for both (for now)
|
||||||
@@ -398,6 +415,7 @@ void rgblight_effect_knight(animation_status_t *anim);
|
|||||||
void rgblight_effect_christmas(animation_status_t *anim);
|
void rgblight_effect_christmas(animation_status_t *anim);
|
||||||
void rgblight_effect_rgbtest(animation_status_t *anim);
|
void rgblight_effect_rgbtest(animation_status_t *anim);
|
||||||
void rgblight_effect_alternating(animation_status_t *anim);
|
void rgblight_effect_alternating(animation_status_t *anim);
|
||||||
|
void rgblight_effect_twinkle(animation_status_t *anim);
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,14 @@ _RGBM_SINGLE_DYNAMIC(RGB_TEST)
|
|||||||
# ifdef RGBLIGHT_EFFECT_ALTERNATING
|
# ifdef RGBLIGHT_EFFECT_ALTERNATING
|
||||||
_RGBM_SINGLE_DYNAMIC(ALTERNATING)
|
_RGBM_SINGLE_DYNAMIC(ALTERNATING)
|
||||||
# endif
|
# endif
|
||||||
|
# ifdef RGBLIGHT_EFFECT_TWINKLE
|
||||||
|
_RGBM_MULTI_DYNAMIC(TWINKLE)
|
||||||
|
_RGBM_TMP_DYNAMIC(twinkle_38, TWINKLE)
|
||||||
|
_RGBM_TMP_DYNAMIC(twinkle_39, TWINKLE)
|
||||||
|
_RGBM_TMP_DYNAMIC(twinkle_40, TWINKLE)
|
||||||
|
_RGBM_TMP_DYNAMIC(twinkle_41, TWINKLE)
|
||||||
|
_RGBM_TMP_DYNAMIC(TWINKLE_end, TWINKLE)
|
||||||
|
# endif
|
||||||
//// Add a new mode here.
|
//// Add a new mode here.
|
||||||
// #ifdef RGBLIGHT_EFFECT_<name>
|
// #ifdef RGBLIGHT_EFFECT_<name>
|
||||||
// _RGBM_<SINGLE|MULTI>_<STATIC|DYNAMIC>( <name> )
|
// _RGBM_<SINGLE|MULTI>_<STATIC|DYNAMIC>( <name> )
|
||||||
|
|||||||
+8
-5
@@ -156,17 +156,20 @@ dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size
|
|||||||
define EXEC_AVRDUDE
|
define EXEC_AVRDUDE
|
||||||
USB= ;\
|
USB= ;\
|
||||||
if $(GREP) -q -s Microsoft /proc/version; then \
|
if $(GREP) -q -s Microsoft /proc/version; then \
|
||||||
echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using AVRDUDE, AVRDUDESS, or XLoader.'; \
|
echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using QMK Toolbox, AVRDUDE, AVRDUDESS, or XLoader.'; \
|
||||||
else \
|
else \
|
||||||
printf "Detecting USB port, reset your controller now."; \
|
printf "Detecting USB port, reset your controller now."; \
|
||||||
ls /dev/tty* > /tmp/1; \
|
TMP1=`mktemp`; \
|
||||||
|
TMP2=`mktemp`; \
|
||||||
|
ls /dev/tty* > $$TMP1; \
|
||||||
while [ -z $$USB ]; do \
|
while [ -z $$USB ]; do \
|
||||||
sleep 0.5; \
|
sleep 0.5; \
|
||||||
printf "."; \
|
printf "."; \
|
||||||
ls /dev/tty* > /tmp/2; \
|
ls /dev/tty* > $$TMP2; \
|
||||||
USB=`comm -13 /tmp/1 /tmp/2 | $(GREP) -o '/dev/tty.*'`; \
|
USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \
|
||||||
mv /tmp/2 /tmp/1; \
|
mv $$TMP2 $$TMP1; \
|
||||||
done; \
|
done; \
|
||||||
|
rm $$TMP2 $$TMP1; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo "Device $$USB has appeared; assuming it is the controller."; \
|
echo "Device $$USB has appeared; assuming it is the controller."; \
|
||||||
if $(GREP) -q -s 'MINGW\|MSYS' /proc/version; then \
|
if $(GREP) -q -s 'MINGW\|MSYS' /proc/version; then \
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ uint8_t layer_switch_get_layer(keypos_t key) {
|
|||||||
|
|
||||||
layer_state_t layers = layer_state | default_layer_state;
|
layer_state_t layers = layer_state | default_layer_state;
|
||||||
/* check top layer first */
|
/* check top layer first */
|
||||||
for (int8_t i = sizeof(layer_state_t) * 8 - 1; i >= 0; i--) {
|
for (int8_t i = MAX_LAYER - 1; i >= 0; i--) {
|
||||||
if (layers & (1UL << i)) {
|
if (layers & (1UL << i)) {
|
||||||
action = action_for_key(i, key);
|
action = action_for_key(i, key);
|
||||||
if (action.code != ACTION_TRANSPARENT) {
|
if (action.code != ACTION_TRANSPARENT) {
|
||||||
|
|||||||
@@ -23,12 +23,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#if defined(LAYER_STATE_8BIT)
|
#if defined(LAYER_STATE_8BIT)
|
||||||
typedef uint8_t layer_state_t;
|
typedef uint8_t layer_state_t;
|
||||||
|
# define MAX_LAYER_BITS 3
|
||||||
|
# ifndef MAX_LAYER
|
||||||
|
# define MAX_LAYER 8
|
||||||
|
# endif
|
||||||
# define get_highest_layer(state) biton(state)
|
# define get_highest_layer(state) biton(state)
|
||||||
#elif defined(LAYER_STATE_16BIT)
|
#elif defined(LAYER_STATE_16BIT)
|
||||||
typedef uint16_t layer_state_t;
|
typedef uint16_t layer_state_t;
|
||||||
|
# define MAX_LAYER_BITS 4
|
||||||
|
# ifndef MAX_LAYER
|
||||||
|
# define MAX_LAYER 16
|
||||||
|
# endif
|
||||||
# define get_highest_layer(state) biton16(state)
|
# define get_highest_layer(state) biton16(state)
|
||||||
#else
|
#else
|
||||||
typedef uint32_t layer_state_t;
|
typedef uint32_t layer_state_t;
|
||||||
|
# define MAX_LAYER_BITS 5
|
||||||
|
# ifndef MAX_LAYER
|
||||||
|
# define MAX_LAYER 32
|
||||||
|
# endif
|
||||||
# define get_highest_layer(state) biton32(state)
|
# define get_highest_layer(state) biton32(state)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -96,8 +108,7 @@ layer_state_t layer_state_set_kb(layer_state_t state);
|
|||||||
|
|
||||||
/* pressed actions cache */
|
/* pressed actions cache */
|
||||||
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
|
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
|
||||||
/* The number of bits needed to represent the layer number: log2(32). */
|
|
||||||
# define MAX_LAYER_BITS 5
|
|
||||||
void update_source_layers_cache(keypos_t key, uint8_t layer);
|
void update_source_layers_cache(keypos_t key, uint8_t layer);
|
||||||
uint8_t read_source_layers_cache(keypos_t key);
|
uint8_t read_source_layers_cache(keypos_t key);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+19
-1
@@ -10,8 +10,13 @@ enum userspace_custom_layers {
|
|||||||
RSE,
|
RSE,
|
||||||
LWR,
|
LWR,
|
||||||
LFT,
|
LFT,
|
||||||
MOUSE
|
MOUSE,
|
||||||
|
TT1,
|
||||||
|
TT2,
|
||||||
|
TT3,
|
||||||
|
T23X
|
||||||
};
|
};
|
||||||
|
#define BASE DV
|
||||||
|
|
||||||
enum userspace_custom_keycodes {
|
enum userspace_custom_keycodes {
|
||||||
PAWFIVE = SAFE_RANGE,
|
PAWFIVE = SAFE_RANGE,
|
||||||
@@ -34,9 +39,14 @@ enum userspace_custom_keycodes {
|
|||||||
// == Macro keys for commonly used apps
|
// == Macro keys for commonly used apps
|
||||||
// -- Slack
|
// -- Slack
|
||||||
// Move one conversation up/down
|
// Move one conversation up/down
|
||||||
|
#define SLACKTB LGUI(LSFT(KC_T))
|
||||||
#define SLACKUP LALT(LSFT(KC_UP))
|
#define SLACKUP LALT(LSFT(KC_UP))
|
||||||
#define SLACKDN LALT(LSFT(KC_DOWN))
|
#define SLACKDN LALT(LSFT(KC_DOWN))
|
||||||
|
|
||||||
|
// -- 1password
|
||||||
|
#define PSWD LCTL(KC_BSLS)
|
||||||
|
#define PSWD_ALT LCTL(LALT(KC_BSLS))
|
||||||
|
|
||||||
// -- Browser and OS X
|
// -- Browser and OS X
|
||||||
// Activate one tab left/right
|
// Activate one tab left/right
|
||||||
#define TAB_LFT LGUI(LSFT(KC_LBRC))
|
#define TAB_LFT LGUI(LSFT(KC_LBRC))
|
||||||
@@ -52,6 +62,14 @@ enum userspace_custom_keycodes {
|
|||||||
// Make window fill the whole monitor
|
// Make window fill the whole monitor
|
||||||
#define SCR_FUL HYPR(KC_F)
|
#define SCR_FUL HYPR(KC_F)
|
||||||
|
|
||||||
|
// -- Windows variants of browser commanads
|
||||||
|
// Activate one tab left/right
|
||||||
|
#define WTABLFT LCTL(LSFT(KC_TAB))
|
||||||
|
#define WTABRGT LCTL(KC_TAB)
|
||||||
|
// Go back/forward in history
|
||||||
|
#define WBWSRBK LALT(KC_LEFT)
|
||||||
|
#define WBWSRFW LALT(KC_RGHT)
|
||||||
|
|
||||||
// == Extended alpha layer toggles
|
// == Extended alpha layer toggles
|
||||||
// -- Dvorak
|
// -- Dvorak
|
||||||
// Pressing U opens up the LWR layer (numpad)
|
// Pressing U opens up the LWR layer (numpad)
|
||||||
|
|||||||
Reference in new issue
Block a user