aboutsummaryrefslogtreecommitdiff
path: root/quantum/send_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/send_string.c')
-rw-r--r--quantum/send_string.c56
1 files changed, 55 insertions, 1 deletions
diff --git a/quantum/send_string.c b/quantum/send_string.c
index 0e8902ca3..7d096b427 100644
--- a/quantum/send_string.c
+++ b/quantum/send_string.c
@@ -249,4 +249,58 @@ void send_char(char ascii_code) {
249 if (is_dead) { 249 if (is_dead) {
250 tap_code(KC_SPACE); 250 tap_code(KC_SPACE);
251 } 251 }
252} \ No newline at end of file 252}
253
254void send_dword(uint32_t number) {
255 send_word(number >> 16);
256 send_word(number & 0xFFFFUL);
257}
258
259void send_word(uint16_t number) {
260 send_byte(number >> 8);
261 send_byte(number & 0xFF);
262}
263
264void send_byte(uint8_t number) {
265 send_nibble(number >> 4);
266 send_nibble(number & 0xF);
267}
268
269void send_nibble(uint8_t number) {
270 switch (number & 0xF) {
271 case 0 ... 9:
272 send_char(number + '0');
273 break;
274 case 10 ... 15:
275 send_char(number - 10 + 'a');
276 break;
277 }
278}
279
280void tap_random_base64(void) {
281#if defined(__AVR_ATmega32U4__)
282 uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64;
283#else
284 uint8_t key = rand() % 64;
285#endif
286 switch (key) {
287 case 0 ... 25:
288 send_char(key + 'A');
289 break;
290 case 26 ... 51:
291 send_char(key - 26 + 'a');
292 break;
293 case 52:
294 send_char('0');
295 break;
296 case 53 ... 61:
297 send_char(key - 53 + '1');
298 break;
299 case 62:
300 send_char('+');
301 break;
302 case 63:
303 send_char('/');
304 break;
305 }
306}