aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/scrabblepad/keymaps/random/keymap.c75
-rw-r--r--keyboards/scrabblepad/keymaps/random/readme.md5
2 files changed, 80 insertions, 0 deletions
diff --git a/keyboards/scrabblepad/keymaps/random/keymap.c b/keyboards/scrabblepad/keymaps/random/keymap.c
new file mode 100644
index 000000000..8e7825966
--- /dev/null
+++ b/keyboards/scrabblepad/keymaps/random/keymap.c
@@ -0,0 +1,75 @@
1#include "scrabblepad.h"
2#include <stdlib.h>
3
4static uint16_t keystroke;
5static bool shift_pressed;
6
7static int lower = (int) KC_A;
8static int upper = (int) KC_Z;
9
10uint16_t random_keycode(void) {
11 return lower + (rand() % (upper - lower + 1));
12};
13
14enum custom_keycodes {
15 RND_KEY = SAFE_RANGE
16};
17
18bool process_record_user(uint16_t keycode, keyrecord_t *record) {
19 switch(keycode) {
20 case RND_KEY:
21 if (record->event.pressed) {
22 keystroke = random_keycode();
23 if (rand() % 2 > 0) {
24 shift_pressed = 1;
25 register_code(KC_LSHIFT);
26 }
27 register_code(keystroke);
28 } else {
29 if (shift_pressed > 0) {
30 unregister_code(KC_LSHIFT);
31 }
32 unregister_code(keystroke);
33 }
34
35 return false;
36
37 default:
38 return true;
39 }
40
41 return true;
42}
43
44const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45[0] = LAYOUT( /* Base */
46 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
47 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
48 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
49 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
50 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
51 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
52 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
53 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RESET, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
54 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
55 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
56 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
57 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
58 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
59 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
60 RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY
61),
62};
63
64
65void matrix_init_user(void) {
66
67}
68
69void matrix_scan_user(void) {
70
71}
72
73void led_set_user(uint8_t usb_led) {
74
75}
diff --git a/keyboards/scrabblepad/keymaps/random/readme.md b/keyboards/scrabblepad/keymaps/random/readme.md
new file mode 100644
index 000000000..e719adaeb
--- /dev/null
+++ b/keyboards/scrabblepad/keymaps/random/readme.md
@@ -0,0 +1,5 @@
1# Scrabblepad keymap with every key press random
2
3Every key produces a random key press, except the middle key, which is reserved for resetting the board.
4
5The random key press is selected between KC_A and KC_Z keycodes.