From e335d62eda6f9c295c1717cf7511dfb74a436f03 Mon Sep 17 00:00:00 2001 From: jack <0x6A73@pm.me> Date: Wed, 23 Mar 2022 23:23:40 -0600 Subject: [PATCH 1/2] [Keyboard] Add keyboard level encoder function for GMMK Pro (#16721) --- keyboards/gmmk/pro/pro.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/keyboards/gmmk/pro/pro.c b/keyboards/gmmk/pro/pro.c index 816d089a58..6aed1d6e18 100644 --- a/keyboards/gmmk/pro/pro.c +++ b/keyboards/gmmk/pro/pro.c @@ -14,3 +14,17 @@ * along with this program. If not, see . */ #include "pro.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + return false; +} +#endif From 980a1b05629e351d19ff9ddc1bb5a1d38bab6414 Mon Sep 17 00:00:00 2001 From: Nathan Johnson Date: Thu, 24 Mar 2022 00:24:02 -0500 Subject: [PATCH 2/2] [Keymap] ergodox: updating osx_whiskey_tango_foxtrot_capslock to use process_record_user (#16715) --- .../keymap.c | 45 ++++++++++++++++++- .../rules.mk | 2 + 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/rules.mk diff --git a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c index 54e1183e9f..2285aa4a94 100644 --- a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c +++ b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c @@ -15,6 +15,10 @@ enum layer_names { typedef enum onoff_t {OFF, ON} onoff; +#define caps_led_on ergodox_right_led_2_on +#define caps_led_off ergodox_right_led_2_off + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * @@ -123,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND TENKEY [MDIA] = LAYOUT_ergodox( - KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, KC_F15, + QK_BOOT, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, KC_F15, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, @@ -142,6 +146,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS ), }; +#ifndef NO_FAKE_CAPS +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static onoff caps_state = OFF; + + switch (keycode) { + case KC_CAPS: + if (record->event.pressed) { + if (caps_state == OFF) { + caps_led_on(); + caps_state = ON; + } else { + caps_led_off(); + caps_state = OFF; + } + } + break; + default: + if (keycode < KC_A || keycode > KC_Z) { + // This isn't an alpha or a KC_CAPS, continue on as usual. + return true; + } + if (record->event.pressed) { + bool shifted = (caps_state == ON && get_mods() == 0); + if (shifted) { + register_code(KC_LSFT); + } + register_code(keycode); + if (shifted) { + unregister_code(KC_LSFT); + } + } else { + unregister_code(keycode); + } + break; + } + // If we get here, we've already handled the keypresses. + return false; +} +#endif // Runs constantly in the background, in a loop. void matrix_scan_user(void) { diff --git a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/rules.mk b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/rules.mk new file mode 100644 index 0000000000..e8242c2695 --- /dev/null +++ b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/rules.mk @@ -0,0 +1,2 @@ +# uncomment below to disable fake capslock +# OPT_DEFS += -DNO_FAKE_CAPS