9 /* COSPAD ortho matrix layout
10 * ,-------------------.
11 * | 00 | 01 | 02 | 03 |
12 * |----|----|----|----|
13 * | 10 | 11 | 12 | 13 |
14 * |----|----|----|----|
15 * | 20 | 21 | 22 | 23 |
16 * |----|----|----|----|
17 * | 30 | 31 | 32 | 33 |
18 * |----|----|----|----|
19 * | 40 | 41 | 42 | 43 |
20 * |----|----|----|----|
21 * | 50 | 51 | 52 | 53 |
22 * `-------------------'
25 /* COSPAD gamepad matrix layout
26 * ,-------------------.
27 * | 00 | 01 | 02 | 03 |
28 * |----|----|----|----|
29 * | 10 | 11 | 12 | 13 |
30 * |----|----|----|----|
32 * |----|----|----| 23 |
34 * |----|----|----|----|
35 * | 40 | 41 | 42 | 43 |
36 * |----|----|----|----|
37 * | 50 | 51 | 52 | 53 |
38 * `-------------------'
41 /* COSPAD numpad matrix layout
42 * ,-------------------.
43 * | 00 | 01 | 02 | 03 |
44 * |----|----|----|----|
45 * | 10 | 11 | 12 | 13 |
46 * |----|----|----|----|
48 * |----|----|----| 23 |
50 * |----|----|----|----|
52 * |----|----|----| 43 |
54 * `-------------------'
56 // The first section contains all of the arguments
57 // The second converts the arguments into a two-dimensional array
58 #define LAYOUT_ortho_6x4( \
67 {k00, k01, k02, k03}, \
68 {k10, k11, k12, k13}, \
69 {k20, k21, k22, k23}, \
70 {k30, k31, k32, k33}, \
71 {k40, k41, k42, k43}, \
72 {k50, k51, k52, k53} \
75 #define LAYOUT_gamepad_6x4( \
84 {k00, k01, k02, k03}, \
85 {k10, k11, k12, k13}, \
86 {k20, k21, k22, k23}, \
87 {k30, k31, k32, KC_NO}, \
88 {k40, k41, k42, k43}, \
89 {k50, k51, k52, k53} \
92 #define LAYOUT_numpad_6x4( \
101 {k00, k01, k02, k03}, \
102 {k10, k11, k12, k13}, \
103 {k20, k21, k22, k23}, \
104 {k30, k31, k32, KC_NO}, \
105 {k40, k41, k42, k43}, \
106 {k50, KC_NO, k52, KC_NO} \
108 void matrix_init_user(void);
109 void matrix_scan_user(void);
111 inline void cospad_bl_led_on(void) { PORTF &= ~(1<<7); }
112 inline void cospad_bl_led_off(void) { PORTF |= (1<<7); }
114 inline void cospad_bl_led_togg(void) {
115 uint8_t bl_mask = PORTF&(1<<7);