-
-
Notifications
You must be signed in to change notification settings - Fork 40.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding encoder-enabled Lily58 keymap #9382
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
This is the c configuration file for the keymap | ||
|
||
Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
Copyright 2015 Jack Humbert | ||
|
||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 2 of the License, or | ||
(at your option) any later version. | ||
|
||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#define MASTER_LEFT | ||
#define USE_SERIAL_PD2 | ||
#define TAPPING_FORCE_HOLD | ||
#define TAPPING_TERM 100 | ||
|
||
// Underglow | ||
#ifdef RGBLIGHT_ENABLE | ||
#undef RGBLED_NUM | ||
#define RGBLED_NUM 10 | ||
#define RGBLIGHT_ANIMATIONS | ||
#define RGBLIGHT_SLEEP | ||
#endif | ||
|
||
// Encoder | ||
#ifdef ENCODER_ENABLE | ||
#define ENCODERS_PAD_A { F5 } | ||
#define ENCODERS_PAD_B { F4 } | ||
// Enable if encoder is on the left side | ||
// #define ENCODER_DIRECTION_FLIP | ||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,231 @@ | ||
#include QMK_KEYBOARD_H | ||
|
||
#ifdef PROTOCOL_LUFA | ||
#include "lufa.h" | ||
#include "split_util.h" | ||
#endif | ||
#ifdef SSD1306OLED | ||
#include "ssd1306.h" | ||
#endif | ||
|
||
#ifdef RGBLIGHT_ENABLE | ||
//Following line allows macro to read current RGB settings | ||
extern rgblight_config_t rgblight_config; | ||
#endif | ||
Comment on lines
+11
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This shouldn't be needed anymore, as there are functions to check all of the rgb config settings, and to write to them. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I never responded to this. I don't think I'll be making that change since it would require touching all the keymaps and changing how the value is read in lib/rgb_state_reader.c, and that is enough effort to warrant a separate PR. |
||
|
||
extern uint8_t is_master; | ||
|
||
#define _QWERTY 0 | ||
#define _LOWER 1 | ||
#define _RAISE 2 | ||
#define _ADJUST 3 | ||
|
||
enum custom_keycodes { | ||
QWERTY = SAFE_RANGE, | ||
LOWER, | ||
RAISE, | ||
ADJUST, | ||
}; | ||
|
||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
|
||
/* QWERTY | ||
* ,-----------------------------------------. ,-----------------------------------------. | ||
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | - | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | | ||
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| | ||
* `-----------------------------------------/ / \ \-----------------------------------------' | ||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
* | | | |/ / \ \ | | | | | ||
* `----------------------------' '------''--------------------' | ||
*/ | ||
|
||
[_QWERTY] = LAYOUT( | ||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, | ||
KC_LCTRL, 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_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, | ||
KC_LALT, KC_LGUI,LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI | ||
), | ||
/* LOWER | ||
* ,-----------------------------------------. ,-----------------------------------------. | ||
* | | | | | | | | | | | | | | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - | | ||
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
* | | | | | | |-------| |-------| | _ | + | { | } | | | | ||
* `-----------------------------------------/ / \ \-----------------------------------------' | ||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
* | | | |/ / \ \ | | | | | ||
* `----------------------------' '------''--------------------' | ||
*/ | ||
[_LOWER] = LAYOUT( | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, | ||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, | ||
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, | ||
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | ||
_______, _______, _______, _______, _______, _______, _______, _______ | ||
), | ||
/* RAISE | ||
* ,-----------------------------------------. ,-----------------------------------------. | ||
* | | | | | | | | | | | | | | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | | | ||
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| | ||
* | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ | | ||
* `-----------------------------------------/ / \ \-----------------------------------------' | ||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
* | | | |/ / \ \ | | | | | ||
* `----------------------------' '------''--------------------' | ||
*/ | ||
|
||
[_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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, | ||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | ||
_______, _______, _______, _______, _______, _______, _______, _______ | ||
), | ||
/* ADJUST | ||
* ,-----------------------------------------. ,-----------------------------------------. | ||
* | | | | | | | | | | | | | | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | | | | | | | | | | | | | | | ||
* |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
* | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ | | ||
* |------+------+------+------+------+------| | | |------+------+------+------+------+------| | ||
* | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- | | ||
* `-----------------------------------------/ / \ \-----------------------------------------' | ||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | | ||
* | | | |/ / \ \ | | | | | ||
* `----------------------------' '------''--------------------' | ||
*/ | ||
[_ADJUST] = LAYOUT( | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, | ||
_______, _______, _______, _______, _______, _______, _______, _______ | ||
) | ||
}; | ||
|
||
int RGB_current_mode; | ||
|
||
// Setting ADJUST layer RGB back to default | ||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { | ||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { | ||
layer_on(layer3); | ||
} else { | ||
layer_off(layer3); | ||
} | ||
} | ||
|
||
void matrix_init_user(void) { | ||
#ifdef RGBLIGHT_ENABLE | ||
RGB_current_mode = rgblight_config.mode; | ||
#endif | ||
} | ||
|
||
//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk | ||
#ifdef OLED_DRIVER_ENABLE | ||
|
||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { | ||
if (!is_keyboard_master()) | ||
return OLED_ROTATION_180; // flips the display 180 degrees if offhand | ||
return rotation; | ||
} | ||
|
||
// When you add source files to SRC in rules.mk, you can use functions. | ||
const char *read_layer_state(void); | ||
const char *read_logo(void); | ||
void set_keylog(uint16_t keycode, keyrecord_t *record); | ||
const char *read_keylog(void); | ||
const char *read_keylogs(void); | ||
|
||
// const char *read_mode_icon(bool swap); | ||
// const char *read_host_led_state(void); | ||
// void set_timelog(void); | ||
// const char *read_timelog(void); | ||
|
||
void oled_task_user(void) { | ||
if (is_keyboard_master()) { | ||
// If you want to change the display of OLED, you need to change here | ||
oled_write_ln(read_layer_state(), false); | ||
oled_write_ln(read_keylog(), false); | ||
oled_write_ln(read_keylogs(), false); | ||
//oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false); | ||
//oled_write_ln(read_host_led_state(), false); | ||
//oled_write_ln(read_timelog(), false); | ||
} else { | ||
oled_write(read_logo(), false); | ||
} | ||
} | ||
#endif // OLED_DRIVER_ENABLE | ||
|
||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
if (record->event.pressed) { | ||
#ifdef OLED_DRIVER_ENABLE | ||
set_keylog(keycode, record); | ||
#endif | ||
// set_timelog(); | ||
} | ||
|
||
switch (keycode) { | ||
case QWERTY: | ||
if (record->event.pressed) { | ||
set_single_persistent_default_layer(_QWERTY); | ||
} | ||
return false; | ||
break; | ||
case LOWER: | ||
if (record->event.pressed) { | ||
layer_on(_LOWER); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} else { | ||
layer_off(_LOWER); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} | ||
return false; | ||
break; | ||
case RAISE: | ||
if (record->event.pressed) { | ||
layer_on(_RAISE); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} else { | ||
layer_off(_RAISE); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} | ||
return false; | ||
break; | ||
case ADJUST: | ||
if (record->event.pressed) { | ||
layer_on(_ADJUST); | ||
} else { | ||
layer_off(_ADJUST); | ||
} | ||
return false; | ||
break; | ||
} | ||
return true; | ||
} | ||
|
||
#ifdef ENCODER_ENABLE | ||
void encoder_update_user(uint8_t index, bool clockwise) { | ||
if (index == 0) { /* First encoder */ | ||
if (clockwise) { | ||
tap_code(KC_VOLU); | ||
} else { | ||
tap_code(KC_VOLD); | ||
} | ||
} | ||
} | ||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
EXTRAKEY_ENABLE = yes | ||
RGBLIGHT_ENABLE = yes | ||
ENCODER_ENABLE = yes | ||
|
||
# If you want to change the display of OLED, you need to change here | ||
SRC += ./lib/rgb_state_reader.c \ | ||
./lib/layer_state_reader.c \ | ||
./lib/logo_reader.c \ | ||
./lib/keylogger.c \ | ||
# ./lib/mode_icon_reader.c \ | ||
# ./lib/host_led_state_reader.c \ | ||
# ./lib/timelogger.c \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fairly sure this block isn't needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's in the original default keymap. If it should be removed from there, then I feel like that should be batched into a separate PR instead of in this one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be removed there, as well, but that would be a separate PR, ideally.
As in, for all the default keymaps that do this.
However, replicating the "bad code" should be avoided, as well.