diff options
Diffstat (limited to 'quantum/send_string.c')
-rw-r--r-- | quantum/send_string.c | 56 |
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 | |||
254 | void send_dword(uint32_t number) { | ||
255 | send_word(number >> 16); | ||
256 | send_word(number & 0xFFFFUL); | ||
257 | } | ||
258 | |||
259 | void send_word(uint16_t number) { | ||
260 | send_byte(number >> 8); | ||
261 | send_byte(number & 0xFF); | ||
262 | } | ||
263 | |||
264 | void send_byte(uint8_t number) { | ||
265 | send_nibble(number >> 4); | ||
266 | send_nibble(number & 0xF); | ||
267 | } | ||
268 | |||
269 | void 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 | |||
280 | void 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 | } | ||