aboutsummaryrefslogtreecommitdiff
path: root/users/miles2go/babblePaste.c
diff options
context:
space:
mode:
authormilestogo <milestogo@users.noreply.github.com>2021-03-14 12:23:30 -0700
committerGitHub <noreply@github.com>2021-03-14 12:23:30 -0700
commit7b7689d30796c977b95197091c16e8bb97000101 (patch)
treedc81a91d109041e34a90940fdceaeede7d512e4f /users/miles2go/babblePaste.c
parentaa73411c14487465d7af9d9f1ca7cb5d157e9343 (diff)
downloadqmk_firmware-7b7689d30796c977b95197091c16e8bb97000101.tar.gz
qmk_firmware-7b7689d30796c977b95197091c16e8bb97000101.zip
[Keymap] miles2go userspace update, add functions for babblepaste library, add prime_e keybard keymap (#9196)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Diffstat (limited to 'users/miles2go/babblePaste.c')
-rw-r--r--users/miles2go/babblePaste.c130
1 files changed, 114 insertions, 16 deletions
diff --git a/users/miles2go/babblePaste.c b/users/miles2go/babblePaste.c
index 2a32024cd..cd032882b 100644
--- a/users/miles2go/babblePaste.c
+++ b/users/miles2go/babblePaste.c
@@ -12,13 +12,14 @@ and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jee
12#ifdef USE_BABBLEPASTE 12#ifdef USE_BABBLEPASTE
13# include "babblePaste.h" 13# include "babblePaste.h"
14 14
15// small function that we might also want to call from a keymap.
16
17// GLOBAL variable to determine mode. Sets startup default if no eeppom 15// GLOBAL variable to determine mode. Sets startup default if no eeppom
18uint8_t babble_mode = 0; 16uint8_t babble_mode = 0;
19 17
20// function to tell the user that the mode has changed 18// functions to tell the user that the mode has changed
21__attribute__((weak)) void babble_led_user(void) {} 19__attribute__((weak)) void babble_modeswitch_user(uint8_t mode) {}
20__attribute__((weak)) void babble_modeswitch_kb(uint8_t mode) { babble_modeswitch_user( mode); }
21
22
22 23
23void set_babble_mode(uint8_t id) { babble_mode = id; } 24void set_babble_mode(uint8_t id) { babble_mode = id; }
24 25
@@ -27,6 +28,7 @@ void babble_mode_increment() {
27 if (babble_mode >= BABL_MODEMAX) { 28 if (babble_mode >= BABL_MODEMAX) {
28 babble_mode = 0; 29 babble_mode = 0;
29 } 30 }
31 babble_modeswitch_kb(babble_mode);
30} 32}
31 33
32void babble_mode_decrement() { 34void babble_mode_decrement() {
@@ -35,21 +37,97 @@ void babble_mode_decrement() {
35 } else { 37 } else {
36 babble_mode = BABL_MODEMAX - 1; 38 babble_mode = BABL_MODEMAX - 1;
37 } 39 }
40 babble_modeswitch_kb(babble_mode);
38} 41}
39 42
40/* this function runs the appropriate babblepaste macro, given 43/* this function runs the appropriate babblepaste macro, given
41the global babble_mode and a keycode defined in the babble_keycodes enum. 44the global babble_mode and a keycode defined in the babble_keycodes enum.
42 45
43This could be made faster by splitting into two functions sorted by keycode range 46This could be made faster by splitting into functions sorted by keycode range
44But that makes for a *lot* of ifdefs. 47But that makes for a *lot* of ifdefs.
45*/ 48*/
46bool babblePaste(uint16_t keycode) { 49bool babblePaste(uint16_t keycode, bool is_pressed ) {
47 // handle the OS/mode switching first 50 // handle keys that have up & down behavior first, then OS/mode switching, then macros
51
52// This is the key used for cut & paste (Propeller on Mac, Control elsewhere)
53# ifdef BABL_MODSWAP
54 // WARNING, this assumes you have BABL_MAC_MODE defined.
55 if (keycode == BABL_PRIMARY_OS_MOD ) {
56 if (babble_mode == BABL_MAC_MODE) {
57 if (is_pressed) {
58 register_code(KC_LGUI);
59 } else {
60 unregister_code(KC_LGUI);
61 }
62 } else { // everybody else
63
64 if (is_pressed) {
65 register_code(KC_LCTL);
66 } else {
67 unregister_code(KC_LCTL);
68 }
69 }
70 }
71
72// This is the os key not used in cut & paste. (CTRL on mac, GUI elsewhere)
73 if (keycode == BABL_SECONDARY_OS_MOD ) {
74 if (babble_mode == BABL_MAC_MODE) {
75 if (is_pressed) {
76 register_code(KC_LCTL);
77 } else {
78 unregister_code(KC_LCTL);
79 }
80
81 } else { // everybody else
82 if (is_pressed) {
83 register_code(KC_LGUI);
84 } else {
85 unregister_code(KC_LGUI);
86 }
87 }
88 }
89
90// This is the alt key in most OSes. Mostly useful if you want to do hyper on one OS, Meh on another.
91 if (keycode == BABL_TERTIARY_OS_MOD ) {
92 if (babble_mode == BABL_MAC_MODE) {
93 if (is_pressed) {
94 register_code(KC_LALT);
95 } else {
96 unregister_code(KC_LALT);
97 }
98 } else { // everybody else
99
100 if (is_pressed) {
101 register_code(KC_LALT);
102 } else {
103 unregister_code(KC_LALT);
104 }
105 }
106 }
107
108# endif
109
110// below here we are only running macros - don't serve any key up events.
111 if (is_pressed == 0 ) {
112 return true;
113 }
114
115// handle increment functions.
116
117if (keycode == BABL_MODE_INCREMENT) {
118 babble_mode_increment();
119 return true;
120}
121
122if (keycode == BABL_MODE_DECREMENT) {
123 babble_mode_decrement();
124 return true;
125}
48 126
49# ifdef BABL_MAC 127# ifdef BABL_MAC
50 if (keycode == BABL_DO_MAC) { 128 if (keycode == BABL_DO_MAC) {
51 set_babble_mode(BABL_MAC_MODE); 129 set_babble_mode(BABL_MAC_MODE);
52 babble_led_user(); 130 babble_modeswitch_kb(babble_mode);
53 return true; 131 return true;
54 } 132 }
55 133
@@ -61,7 +139,7 @@ bool babblePaste(uint16_t keycode) {
61# ifdef BABL_VI 139# ifdef BABL_VI
62 if (keycode == BABL_DO_VI) { 140 if (keycode == BABL_DO_VI) {
63 set_babble_mode(BABL_VI_MODE); 141 set_babble_mode(BABL_VI_MODE);
64 babble_led_user(); 142 babble_modeswitch_kb(babble_mode);
65 return true; 143 return true;
66 } 144 }
67 if (babble_mode == BABL_VI_MODE) { 145 if (babble_mode == BABL_VI_MODE) {
@@ -71,7 +149,7 @@ bool babblePaste(uint16_t keycode) {
71# ifdef BABL_WINDOWS 149# ifdef BABL_WINDOWS
72 if (keycode == BABL_DO_WINDOWS) { 150 if (keycode == BABL_DO_WINDOWS) {
73 set_babble_mode(BABL_WINDOWS_MODE); 151 set_babble_mode(BABL_WINDOWS_MODE);
74 babble_led_user(); 152 babble_modeswitch_kb(babble_mode);
75 return true; 153 return true;
76 } 154 }
77 if (babble_mode == BABL_WINDOWS_MODE) { 155 if (babble_mode == BABL_WINDOWS_MODE) {
@@ -81,7 +159,7 @@ bool babblePaste(uint16_t keycode) {
81# ifdef BABL_LINUX 159# ifdef BABL_LINUX
82 if (keycode == BABL_DO_LINUX) { 160 if (keycode == BABL_DO_LINUX) {
83 set_babble_mode(BABL_LINUX_MODE); 161 set_babble_mode(BABL_LINUX_MODE);
84 babble_led_user(); 162 babble_modeswitch_kb(babble_mode);
85 return true; 163 return true;
86 } 164 }
87 if (babble_mode == BABL_LINUX_MODE) { 165 if (babble_mode == BABL_LINUX_MODE) {
@@ -91,27 +169,47 @@ bool babblePaste(uint16_t keycode) {
91# ifdef BABL_EMACS 169# ifdef BABL_EMACS
92 if (keycode == BABL_DO_EMACS) { 170 if (keycode == BABL_DO_EMACS) {
93 set_babble_mode(BABL_EMACS_MODE); 171 set_babble_mode(BABL_EMACS_MODE);
94 babble_led_user(); 172 babble_modeswitch_kb(babble_mode);
95 return true; 173 return true;
96 } 174 }
97 if (babble_mode == BABL_EMACS_MODE) { 175 if (babble_mode == BABL_EMACS_MODE) {
98 babblePaste_emacs(keycode); 176 babblePaste_emacs(keycode);
99 } 177 }
100# endif 178# endif
101# ifdef BABL_CHROME 179# ifdef BABL_NANO
180 if (keycode == BABL_DO_NANO) {
181 set_babble_mode(BABL_NANO_MODE);
182 babble_modeswitch_kb(babble_mode);
183 return true;
184 }
185 if (babble_mode == BABL_NANO_MODE) {
186 babblePaste_nano(keycode);
187 }
188# endif
189# ifdef BABL_KITTY
190 if (keycode == BABL_DO_KITTY) {
191 set_babble_mode(BABL_KITTY_MODE);
192 babble_modeswitch_kb(babble_mode);
193 return true;
194 }
195 if (babble_mode == BABL_KITTY_MODE) {
196 babblePaste_kitty(keycode);
197 }
198# endif
199# ifdef BABL_CHROMEOS
102 if (keycode == BABL_DO_CHROMEOS) { 200 if (keycode == BABL_DO_CHROMEOS) {
103 set_babble_mode(BABL_CHROMEOS_MODE); 201 set_babble_mode(BABL_CHROMEOS_MODE);
104 babble_led_user(); 202 babble_modeswitch_kb(babble_mode);
105 return true; 203 return true;
106 } 204 }
107 if (babble_mode == BABL_CHROMEOS_MODE) { 205 if (babble_mode == BABL_CHROMEOS_MODE) {
108 babblePaste_readmux(keycode); 206 babblePaste_chromeos(keycode);
109 } 207 }
110# endif 208# endif
111# ifdef BABL_READMUX 209# ifdef BABL_READMUX
112 if (keycode == BABL_DO_READMUX) { 210 if (keycode == BABL_DO_READMUX) {
113 set_babble_mode(BABL_READMUX_MODE); 211 set_babble_mode(BABL_READMUX_MODE);
114 babble_led_user(); 212 babble_modeswitch_kb(babble_mode);
115 return true; 213 return true;
116 } 214 }
117 if (babble_mode == BABL_READMUX_MODE) { 215 if (babble_mode == BABL_READMUX_MODE) {