summaryrefslogtreecommitdiff
path: root/keyboards/winry
diff options
context:
space:
mode:
authorjack <0x6A73@pm.me>2023-06-19 09:46:27 -0600
committerGitHub <noreply@github.com>2023-06-19 09:46:27 -0600
commitc4a67d3f3302f3096bb6b15921c9587643164ba9 (patch)
treebf10e469333ba42b708e76cfc085eb450d92359e /keyboards/winry
parent74fbd5a0313769655914166bc872d41461509bd3 (diff)
Remove encoder in-matrix workaround code (#20389)
Diffstat (limited to 'keyboards/winry')
-rw-r--r--keyboards/winry/winry315/keymaps/via/encoder_actions.c80
-rw-r--r--keyboards/winry/winry315/keymaps/via/encoder_actions.h21
-rw-r--r--keyboards/winry/winry315/keymaps/via/keymap.c27
-rw-r--r--keyboards/winry/winry315/keymaps/via/rules.mk3
4 files changed, 12 insertions, 119 deletions
diff --git a/keyboards/winry/winry315/keymaps/via/encoder_actions.c b/keyboards/winry/winry315/keymaps/via/encoder_actions.c
deleted file mode 100644
index d24d13bb26..0000000000
--- a/keyboards/winry/winry315/keymaps/via/encoder_actions.c
+++ /dev/null
@@ -1,80 +0,0 @@
1/* Copyright 2020 Neil Brian Ramirez
2 * Copyright 2021 drashna jael're (@drashna)
3 * Copyright 2022 Sergey Vlasov (@sigprof)
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#include "encoder_actions.h"
20
21#if defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
22
23# ifndef ENCODER_TAP_DURATION_MS
24# define ENCODER_TAP_DURATION_MS 10
25# endif
26
27# define ENCODER_STATE_CW 0x01
28# define ENCODER_STATE_CCW 0x02
29
30static uint8_t encoder_state[NUM_ENCODERS] = {0};
31static uint16_t encoder_timer[NUM_ENCODERS] = {0};
32static keypos_t encoder_cw[NUM_ENCODERS] = ENCODERS_CW_KEY;
33static keypos_t encoder_ccw[NUM_ENCODERS] = ENCODERS_CCW_KEY;
34
35static void exec_encoder_action(uint8_t index, bool clockwise, bool pressed) {
36 // clang-format off
37 keyevent_t encoder_event = (keyevent_t) {
38 .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
39 .pressed = pressed,
40 .time = timer_read(),
41 .type = KEY_EVENT
42 };
43 // clang-format on
44 action_exec(encoder_event);
45}
46
47void encoder_action_unregister(void) {
48 for (int index = 0; index < NUM_ENCODERS; ++index) {
49 if (encoder_state[index] && (timer_elapsed(encoder_timer[index]) >= ENCODER_TAP_DURATION_MS)) {
50 bool clockwise = !!(encoder_state[index] & ENCODER_STATE_CW);
51 encoder_state[index] = 0;
52 exec_encoder_action(index, clockwise, false);
53 }
54 }
55}
56
57void encoder_action_register(uint8_t index, bool clockwise) {
58 if (encoder_state[index]) {
59 bool was_clockwise = !!(encoder_state[index] & ENCODER_STATE_CW);
60 encoder_state[index] = 0;
61 exec_encoder_action(index, was_clockwise, false);
62 }
63 encoder_state[index] = clockwise ? ENCODER_STATE_CW : ENCODER_STATE_CCW;
64 encoder_timer[index] = timer_read();
65 exec_encoder_action(index, clockwise, true);
66}
67
68void matrix_scan_kb(void) {
69 encoder_action_unregister();
70 matrix_scan_user();
71}
72
73bool encoder_update_kb(uint8_t index, bool clockwise) {
74 encoder_action_register(index, clockwise);
75 // don't return user actions, because they are in the keymap
76 // encoder_update_user(index, clockwise);
77 return true;
78};
79
80#endif
diff --git a/keyboards/winry/winry315/keymaps/via/encoder_actions.h b/keyboards/winry/winry315/keymaps/via/encoder_actions.h
deleted file mode 100644
index 2484af52ae..0000000000
--- a/keyboards/winry/winry315/keymaps/via/encoder_actions.h
+++ /dev/null
@@ -1,21 +0,0 @@
1/* Copyright 2020 Neil Brian Ramirez
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18
19void encoder_action_unregister(void);
20
21void encoder_action_register(uint8_t index, bool clockwise);
diff --git a/keyboards/winry/winry315/keymaps/via/keymap.c b/keyboards/winry/winry315/keymaps/via/keymap.c
index 67598ac337..25d545f50b 100644
--- a/keyboards/winry/winry315/keymaps/via/keymap.c
+++ b/keyboards/winry/winry315/keymaps/via/keymap.c
@@ -5,36 +5,23 @@
5 5
6// clang-format off 6// clang-format off
7 7
8#define LAYOUT_via( \
9 k17, k15, k16, \
10 k23,k22, k19,k18, k21,k20, \
11 k00, k01, k02, k03, k04, \
12 k05, k06, k07, k08, k09, \
13 k10, k11, k12, k13, k14 \
14) { \
15 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23 } \
16}
17
18#define U_LTESC LT(1, KC_ESC) 8#define U_LTESC LT(1, KC_ESC)
19 9
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 10const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_via( 11 [0] = LAYOUT_top(
22 KC_HOME, KC_MUTE, KC_MPLY, 12 KC_HOME, KC_MUTE, KC_MPLY,
23 KC_PGUP, KC_PGDN, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT,
24 KC_1, KC_2, KC_3, KC_4, KC_5, 13 KC_1, KC_2, KC_3, KC_4, KC_5,
25 KC_6, KC_7, KC_8, KC_9, KC_0, 14 KC_6, KC_7, KC_8, KC_9, KC_0,
26 U_LTESC, KC_TAB, KC_SPC, KC_BSPC, KC_ENT 15 U_LTESC, KC_TAB, KC_SPC, KC_BSPC, KC_ENT
27 ), 16 ),
28 [1] = LAYOUT_via( 17 [1] = LAYOUT_top(
29 RGB_M_P, RGB_M_B, RGB_M_R, 18 RGB_M_P, RGB_M_B, RGB_M_R,
30 RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI,
31 RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, 19 RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI,
32 RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, 20 RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD,
33 KC_TRNS, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_R 21 KC_TRNS, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_R
34 ), 22 ),
35 [2 ... 7] = LAYOUT_via( 23 [2 ... 7] = LAYOUT_top(
36 KC_TRNS, KC_TRNS, KC_TRNS, 24 KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 25 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 26 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS 27 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
@@ -42,3 +29,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42}; 29};
43 30
44// clang-format on 31// clang-format on
32
33#ifdef ENCODER_MAP_ENABLE
34const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
35 [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
36 [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
37 [2 ... 7] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }
38};
39#endif
diff --git a/keyboards/winry/winry315/keymaps/via/rules.mk b/keyboards/winry/winry315/keymaps/via/rules.mk
index 6098ef3ad8..1189f4ad19 100644
--- a/keyboards/winry/winry315/keymaps/via/rules.mk
+++ b/keyboards/winry/winry315/keymaps/via/rules.mk
@@ -1,4 +1,3 @@
1VIA_ENABLE = yes 1VIA_ENABLE = yes
2LTO_ENABLE = yes 2LTO_ENABLE = yes
3 3ENCODER_MAP_ENABLE = yes
4SRC += encoder_actions.c