aboutsummaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_auto_shift.c
diff options
context:
space:
mode:
authorskullY <skullydazed@gmail.com>2019-08-30 11:19:03 -0700
committerskullydazed <skullydazed@users.noreply.github.com>2019-08-30 15:01:52 -0700
commitb624f32f944acdc59dcb130674c09090c5c404cb (patch)
treebc13adbba137d122d9a2c2fb2fafcbb08ac10e25 /quantum/process_keycode/process_auto_shift.c
parent61af76a10d00aba185b8338604171de490a13e3b (diff)
downloadqmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.tar.gz
qmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.zip
clang-format changes
Diffstat (limited to 'quantum/process_keycode/process_auto_shift.c')
-rw-r--r--quantum/process_keycode/process_auto_shift.c296
1 files changed, 143 insertions, 153 deletions
diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c
index 0d0930ee6..4ae3fe446 100644
--- a/quantum/process_keycode/process_auto_shift.c
+++ b/quantum/process_keycode/process_auto_shift.c
@@ -16,195 +16,185 @@
16 16
17#ifdef AUTO_SHIFT_ENABLE 17#ifdef AUTO_SHIFT_ENABLE
18 18
19#include <stdio.h> 19# include <stdio.h>
20 20
21#include "process_auto_shift.h" 21# include "process_auto_shift.h"
22 22
23#define TAP(key) \ 23# define TAP(key) \
24 register_code(key); \ 24 register_code(key); \
25 unregister_code(key) 25 unregister_code(key)
26 26
27#define TAP_WITH_MOD(mod, key) \ 27# define TAP_WITH_MOD(mod, key) \
28 register_code(mod); \ 28 register_code(mod); \
29 register_code(key); \ 29 register_code(key); \
30 unregister_code(key); \ 30 unregister_code(key); \
31 unregister_code(mod) 31 unregister_code(mod)
32 32
33uint16_t autoshift_time = 0; 33uint16_t autoshift_time = 0;
34uint16_t autoshift_timeout = AUTO_SHIFT_TIMEOUT; 34uint16_t autoshift_timeout = AUTO_SHIFT_TIMEOUT;
35uint16_t autoshift_lastkey = KC_NO; 35uint16_t autoshift_lastkey = KC_NO;
36 36
37void autoshift_timer_report(void) { 37void autoshift_timer_report(void) {
38 char display[8]; 38 char display[8];
39 39
40 snprintf(display, 8, "\n%d\n", autoshift_timeout); 40 snprintf(display, 8, "\n%d\n", autoshift_timeout);
41 41
42 send_string((const char *)display); 42 send_string((const char *)display);
43} 43}
44 44
45void autoshift_on(uint16_t keycode) { 45void autoshift_on(uint16_t keycode) {
46 autoshift_time = timer_read(); 46 autoshift_time = timer_read();
47 autoshift_lastkey = keycode; 47 autoshift_lastkey = keycode;
48} 48}
49 49
50void autoshift_flush(void) { 50void autoshift_flush(void) {
51 if (autoshift_lastkey != KC_NO) { 51 if (autoshift_lastkey != KC_NO) {
52 uint16_t elapsed = timer_elapsed(autoshift_time); 52 uint16_t elapsed = timer_elapsed(autoshift_time);
53 53
54 if (elapsed > autoshift_timeout) { 54 if (elapsed > autoshift_timeout) {
55 register_code(KC_LSFT); 55 register_code(KC_LSFT);
56 } 56 }
57 57
58 register_code(autoshift_lastkey); 58 register_code(autoshift_lastkey);
59 unregister_code(autoshift_lastkey); 59 unregister_code(autoshift_lastkey);
60 60
61 if (elapsed > autoshift_timeout) { 61 if (elapsed > autoshift_timeout) {
62 unregister_code(KC_LSFT); 62 unregister_code(KC_LSFT);
63 } 63 }
64 64
65 autoshift_time = 0; 65 autoshift_time = 0;
66 autoshift_lastkey = KC_NO; 66 autoshift_lastkey = KC_NO;
67 } 67 }
68} 68}
69 69
70bool autoshift_enabled = true; 70bool autoshift_enabled = true;
71 71
72void autoshift_enable(void) { 72void autoshift_enable(void) { autoshift_enabled = true; }
73 autoshift_enabled = true;
74}
75void autoshift_disable(void) { 73void autoshift_disable(void) {
76 autoshift_enabled = false;
77 autoshift_flush();
78}
79
80void autoshift_toggle(void) {
81 if (autoshift_enabled) {
82 autoshift_enabled = false; 74 autoshift_enabled = false;
83 autoshift_flush(); 75 autoshift_flush();
84 }
85 else {
86 autoshift_enabled = true;
87 }
88} 76}
89 77
90bool autoshift_state(void) { 78void autoshift_toggle(void) {
91 return autoshift_enabled; 79 if (autoshift_enabled) {
80 autoshift_enabled = false;
81 autoshift_flush();
82 } else {
83 autoshift_enabled = true;
84 }
92} 85}
93 86
94bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { 87bool autoshift_state(void) { return autoshift_enabled; }
95#ifndef AUTO_SHIFT_MODIFIERS
96 static uint8_t any_mod_pressed;
97#endif
98
99 if (record->event.pressed) {
100 switch (keycode) {
101 case KC_ASUP:
102 autoshift_timeout += 5;
103 return false;
104
105 case KC_ASDN:
106 autoshift_timeout -= 5;
107 return false;
108
109 case KC_ASRP:
110 autoshift_timer_report();
111 return false;
112
113 case KC_ASTG:
114 autoshift_toggle();
115 return false;
116 case KC_ASON:
117 autoshift_enable();
118 return false;
119 case KC_ASOFF:
120 autoshift_disable();
121 return false;
122
123#ifndef NO_AUTO_SHIFT_ALPHA
124 case KC_A:
125 case KC_B:
126 case KC_C:
127 case KC_D:
128 case KC_E:
129 case KC_F:
130 case KC_G:
131 case KC_H:
132 case KC_I:
133 case KC_J:
134 case KC_K:
135 case KC_L:
136 case KC_M:
137 case KC_N:
138 case KC_O:
139 case KC_P:
140 case KC_Q:
141 case KC_R:
142 case KC_S:
143 case KC_T:
144 case KC_U:
145 case KC_V:
146 case KC_W:
147 case KC_X:
148 case KC_Y:
149 case KC_Z:
150#endif
151#ifndef NO_AUTO_SHIFT_NUMERIC
152 case KC_1:
153 case KC_2:
154 case KC_3:
155 case KC_4:
156 case KC_5:
157 case KC_6:
158 case KC_7:
159 case KC_8:
160 case KC_9:
161 case KC_0:
162#endif
163#ifndef NO_AUTO_SHIFT_SPECIAL
164 case KC_MINUS:
165 case KC_EQL:
166 case KC_TAB:
167 case KC_LBRC:
168 case KC_RBRC:
169 case KC_BSLS:
170 case KC_SCLN:
171 case KC_QUOT:
172 case KC_COMM:
173 case KC_DOT:
174 case KC_SLSH:
175 case KC_GRAVE:
176 case KC_NONUS_BSLASH:
177 case KC_NONUS_HASH:
178#endif
179 88
180 autoshift_flush(); 89bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
181 if (!autoshift_enabled) return true; 90# ifndef AUTO_SHIFT_MODIFIERS
182 91 static uint8_t any_mod_pressed;
183#ifndef AUTO_SHIFT_MODIFIERS 92# endif
184 any_mod_pressed = get_mods() & ( 93
185 MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)| 94 if (record->event.pressed) {
186 MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)| 95 switch (keycode) {
187 MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTL)| 96 case KC_ASUP:
188 MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT) 97 autoshift_timeout += 5;
189 ); 98 return false;
190 99
191 if (any_mod_pressed) { 100 case KC_ASDN:
192 return true; 101 autoshift_timeout -= 5;
102 return false;
103
104 case KC_ASRP:
105 autoshift_timer_report();
106 return false;
107
108 case KC_ASTG:
109 autoshift_toggle();
110 return false;
111 case KC_ASON:
112 autoshift_enable();
113 return false;
114 case KC_ASOFF:
115 autoshift_disable();
116 return false;
117
118# ifndef NO_AUTO_SHIFT_ALPHA
119 case KC_A:
120 case KC_B:
121 case KC_C:
122 case KC_D:
123 case KC_E:
124 case KC_F:
125 case KC_G:
126 case KC_H:
127 case KC_I:
128 case KC_J:
129 case KC_K:
130 case KC_L:
131 case KC_M:
132 case KC_N:
133 case KC_O:
134 case KC_P:
135 case KC_Q:
136 case KC_R:
137 case KC_S:
138 case KC_T:
139 case KC_U:
140 case KC_V:
141 case KC_W:
142 case KC_X:
143 case KC_Y:
144 case KC_Z:
145# endif
146# ifndef NO_AUTO_SHIFT_NUMERIC
147 case KC_1:
148 case KC_2:
149 case KC_3:
150 case KC_4:
151 case KC_5:
152 case KC_6:
153 case KC_7:
154 case KC_8:
155 case KC_9:
156 case KC_0:
157# endif
158# ifndef NO_AUTO_SHIFT_SPECIAL
159 case KC_MINUS:
160 case KC_EQL:
161 case KC_TAB:
162 case KC_LBRC:
163 case KC_RBRC:
164 case KC_BSLS:
165 case KC_SCLN:
166 case KC_QUOT:
167 case KC_COMM:
168 case KC_DOT:
169 case KC_SLSH:
170 case KC_GRAVE:
171 case KC_NONUS_BSLASH:
172 case KC_NONUS_HASH:
173# endif
174
175 autoshift_flush();
176 if (!autoshift_enabled) return true;
177
178# ifndef AUTO_SHIFT_MODIFIERS
179 any_mod_pressed = get_mods() & (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI) | MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL) | MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
180
181 if (any_mod_pressed) {
182 return true;
183 }
184# endif
185
186 autoshift_on(keycode);
187 return false;
188
189 default:
190 autoshift_flush();
191 return true;
193 } 192 }
194#endif 193 } else {
195
196 autoshift_on(keycode);
197 return false;
198
199 default:
200 autoshift_flush(); 194 autoshift_flush();
201 return true;
202 } 195 }
203 } else {
204 autoshift_flush();
205 }
206 196
207 return true; 197 return true;
208} 198}
209 199
210#endif 200#endif