Compare commits

...
13 Commits
Author SHA1 Message Date
Alex Ong 361ac2f32a Optimization for scanning less layers. (#8311)
* Optimization for scanning less layers.

* Rename NUM_LAYERS to MAX_LAYER.
2020-05-11 01:04:38 +01:00
pabile d15a60d2d3 [Keyboard] Add P40, P20 and P18 Keyboards by pabile (#8759)
* Add files via upload

* removed

* Add files via upload

* Rename pabile40.c to p40.c

* Rename pabile40.h to p40.h

* Add files via upload

* Update p40.c

* Update p40.h

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Updated readme file

* Updated readme file

* Add files via upload

* modified:   keyboards/pabile/p18/config.h
	modified:   keyboards/pabile/p18/keymaps/default/keymap.c
	modified:   keyboards/pabile/p18/p18.h
	modified:   keyboards/pabile/p18/rules.mk
	modified:   keyboards/pabile/p40/config.h
	modified:   keyboards/pabile/p40/keymaps/default/keymap.c

* config update

* Delete README.md.save

* Delete keymap.c.save

* Delete keymaps.c

* modified:   keyboards/pabile/p18/keymaps/default/keymap.c

* Update p18.h

* testing layout config

* Create info.json

* Create info.json

* Create readme.md

* Update readme.md

* Updated description

* Updated description

* Update config.h

updated vendor ID to 0000

* Update keymap.c

removed unnecessary comments

* Update keyboards/pabile/p18/p18.h

* Update keyboards/pabile/p18/p18.h

* Update p18.h

removed unnecessary comments

* Update keyboards/pabile/p18/rules.mk

* Update keyboards/pabile/p18/rules.mk

* Update config.h

updated vendor id and removed unnecessary comments

* Update keyboards/pabile/p40/info.json

* Update keyboards/pabile/p40/keymaps/default/keymap.c

* Update keyboards/pabile/p40/p40.h

* Update keyboards/pabile/p40/p40.h

* Update keyboards/pabile/p40/p40.h

* Update keyboards/pabile/p40/rules.mk

* Update keyboards/pabile/p40/rules.mk

* Added p20 macropad

* Update README.md

* Updated VID and PID

* Updated VID and PID

* Update rules.mk

* Update config.h

* Update config.h

* Update config.h

* Update keymap.c

* Replaced blank keys with KC_NO

* Update keyboards/pabile/p18/keymaps/default/keymap.c

* Update keyboards/pabile/p18/p18.h

* Update keyboards/pabile/p18/rules.mk

* Update keyboards/pabile/p20/keymaps/default/keymap.c

* Update keymap.c

* Update keymap.c

* Update keyboards/pabile/p20/rules.mk

* Update keyboards/pabile/p40/info.json

* Update keyboards/pabile/p20/p20.h

* Updated product ID

* Updated product ID

* Update keyboards/pabile/p20/config.h

* Update keyboards/pabile/p20/p20.h

* Update keyboards/pabile/p20/p20.h

* Update keyboards/pabile/p20/keymaps/default/keymap.c

* Update keyboards/pabile/p18/readme.md

* Update keyboards/pabile/p20/README.md

* Update keyboards/pabile/p20/rules.mk

* Update keyboards/pabile/p20/rules.mk

* Update keyboards/pabile/p20/rules.mk

* Update keyboards/pabile/p20/rules.mk

* Update keyboards/pabile/p40/README.md

* Update keyboards/pabile/p40/rules.mk

* Update keyboards/pabile/p40/rules.mk

* Update keyboards/pabile/p18/rules.mk

* Update keyboards/pabile/p18/rules.mk

* Update keyboards/pabile/p40/config.h

* Update keyboards/pabile/p40/config.h

* Update keyboards/pabile/p18/readme.md

* Changed to lowercase filename

* Rename README.md to readme.md

* Update keyboards/pabile/p18/rules.mk
2020-05-09 21:46:17 -07:00
Chuck Lauer VoseandJoel Challis 73992c68d5 Add one-handed Viterbi layout for gaming (#8963)
* Add one-handed Viterbi layout for gaming

* fixes for pr feedback

* Update keyboards/keebio/viterbi/keymaps/vosechu/config.h

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-05-10 04:53:32 +01:00
Brian Mock 8ca4ed9a98 Fix off by one error with oled_write_raw_P (#9045) 2020-05-10 04:14:07 +01:00
Zach WhiteandJoel Challis 640d12d070 Improve security of avrdude by eliminating the use of well-known names. (#9026)
* Improve security by eliminating the use of well-known names.

* Add an additional $ so the shell expands $TMP1 and $TMP2

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-05-10 04:08:13 +01:00
Xyverz 3beda5c16e [Keymap] Added MACLOCK macro (#9037)
* Added MACLOCK macro

Added my MACLOCK macro to my Atreus keymap.

* Updated comments & readme

Documented where in the layout I added the MACLOCK macro.
2020-05-09 19:21:32 -07:00
TheFourthCow fb7fc54923 [Keymap] added shifted symbols support (#9059)
* added shifted symbols to default keymap
2020-05-09 19:06:44 -07:00
Nick Blyumbergandridingqwerty 179c868059 [Keymap] Add nblyumberg 1upkeyboards super16 keymap (#8902)
* Updated with my super16 version for my keypad

* Added my folder to super16

* Set max LED brightness to 50%

* Added custom keycodes for enter/shift+enter and copy/paste on one key

* Fixed the boot up layer color

* Renamed folder

* Revert changes to root super16 files

* Update keymap config.h and rules.mk files

* Restore deleted 15game keymap files

* Corrected the hold keycode for CCCV

* Removed unnecessary comments

* Update keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c

Co-Authored-By: ridingqwerty <[email protected]>

* Update keyboards/1upkeyboards/super16/keymaps/nblyumberg/config.h

Co-Authored-By: ridingqwerty <[email protected]>

* Update keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c

Co-Authored-By: ridingqwerty <[email protected]>

* Rewriting the layer color functionality

* Revisions

* Fixed the layer switching

* Fixed the default layer color problem

* Added a function suggested by Drashna but it won't compile

* Cleaned up the code for PR

* Removed unnecessary define for layer colors

Co-authored-by: ridingqwerty <[email protected]>
2020-05-09 22:52:58 +01:00
James Young 7b11dcce10 Docs: fix links in feature_hd44780.md (#9053)
The referenced site was moved.
2020-05-09 22:47:11 +01:00
1m38 e2fa05c6d2 [Keymap] Add Chidori OLED-enabled sample keymap (#8446)
* create chidori/oled_sample keymap

* Implement OLED enabled keymap

* Update readme.md

* Update keyboards/chidori/keymaps/oled_sample/keymap.c

* Update keyboards/chidori/keymaps/oled_sample/keymap.c

* delete chidori:oled_sample/config.h

* use oled_write_ln_P to print layer state

* delete unnecessary include

* merge nested switches in oled_write_layer_state()
2020-05-09 10:48:17 -07:00
mechlovinandvuhopkep 4c4009c0fd [Keyboard] add adelais PCB (#8945)
* add adelais PCB

* clean up

* merger

* update

* Update readme.md

* Update config.h

* update

* update

* move keymap folder

* Update info.json

* Update info.json

* Update info.json

Co-authored-by: vuhopkep <[email protected]>
2020-05-09 02:38:19 -07:00
QMK Bot e7860d673b format code according to conventions [skip ci] 2020-05-09 09:31:49 +00:00
Joshua Diamond 2fe7e221ec New RGB Lighting effect: Twinkle (#8887)
* Add twinkle RGB Lighting effect

* 2nd twinkle algo - double-buffering

* Further refinement: Per-LED twinkle

* Add documentation for Twinkle RBG Lighting mode

* Bias twinkle saturation closer to the set value

* Fix whitespace
2020-05-09 01:56:16 -07:00
58 changed files with 1505 additions and 28 deletions

No files matched your search

+2 -2
View File
@@ -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)
+9 -2
View File
@@ -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};
``` ```
+1 -1
View File
@@ -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
+6 -7
View File
@@ -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;
} }
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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
+69
View File
@@ -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;
}
+33
View File
@@ -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 }, \
}
+46
View File
@@ -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
+81
View File
@@ -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
+18
View File
@@ -0,0 +1,18 @@
# Adelais / Adelais En Ciel
![adelais](https://i.imgur.com/6U1IfZe.png)
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
+23
View File
@@ -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
+27
View File
@@ -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
+31
View File
@@ -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*/
}
}
}
+1
View File
@@ -0,0 +1 @@
#include "p18.h"
+16
View File
@@ -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} \
}
+15
View File
@@ -0,0 +1,15 @@
# P18
![render](https://i.imgur.com/CPtGiSL.png)
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).
+35
View File
@@ -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
+26
View File
@@ -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*/
}
}
}
+1
View File
@@ -0,0 +1 @@
#include "p20.h"
+18
View File
@@ -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} \
}
+16
View File
@@ -0,0 +1,16 @@
# P20
![Linear grid](https://github.com/pabile/Pabile20/blob/master/_bak/layout-grid.jpg)
![Numeric pad](https://github.com/pabile/Pabile20/blob/master/_bak/layout-numpad.jpg)
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).
+37
View File
@@ -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
+29
View File
@@ -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
+52
View File
@@ -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)
};
+1
View File
@@ -0,0 +1 @@
#include "p40.h"
+16
View File
@@ -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} \
}
+15
View File
@@ -0,0 +1,15 @@
# P40
![prototype photo1](https://github.com/pabile/Pabile40/blob/master/_bak/web-DSCN9033.jpg)
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).
+36
View File
@@ -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
View File
@@ -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
View File
@@ -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
+8
View File
@@ -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
View File
@@ -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 \
+1 -1
View File
@@ -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) {
+13 -2
View File
@@ -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
View File
@@ -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)