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 | } | ||
