diff options
author | 66f9e4eae <99080777+66f94eae@users.noreply.github.com> | 2022-02-22 01:09:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-21 09:09:19 -0800 |
commit | 249eb871028aaaaf508136088ef25fb67a83b28e (patch) | |
tree | 55cae2844f4672b9bb9ac6ff4c5840c795227f23 | |
parent | b1f86225136247177858203f08e7a3af09c4ad63 (diff) | |
download | qmk_firmware-249eb871028aaaaf508136088ef25fb67a83b28e.tar.gz qmk_firmware-249eb871028aaaaf508136088ef25fb67a83b28e.zip |
[Keyboard] [redox_w] add dvorak layout and white led support (#16259)
Co-authored-by: Drashna Jaelre <drashna@live.com>
-rw-r--r-- | keyboards/redox_w/keymaps/dvorak/keymap.c | 128 | ||||
-rw-r--r-- | keyboards/redox_w/keymaps/dvorak/readme.md | 38 | ||||
-rw-r--r-- | keyboards/redox_w/redox_w.c | 13 | ||||
-rw-r--r-- | keyboards/redox_w/redox_w.h | 27 |
4 files changed, 188 insertions, 18 deletions
diff --git a/keyboards/redox_w/keymaps/dvorak/keymap.c b/keyboards/redox_w/keymaps/dvorak/keymap.c new file mode 100644 index 000000000..f2c2d85f0 --- /dev/null +++ b/keyboards/redox_w/keymaps/dvorak/keymap.c | |||
@@ -0,0 +1,128 @@ | |||
1 | /* Copyright 2021 66f94eae(66f94eae@gmail.com) | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #include QMK_KEYBOARD_H | ||
18 | |||
19 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
20 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
21 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
22 | // entirely and just use numbers. | ||
23 | enum layers { | ||
24 | _DVORAK, | ||
25 | _SYMB, | ||
26 | _QWERTY, | ||
27 | _ADJUST, | ||
28 | }; | ||
29 | |||
30 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
31 | |||
32 | [_DVORAK] = LAYOUT( | ||
33 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ | ||
34 | KC_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC , | ||
35 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
36 | KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC, KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_SLSH , | ||
37 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
38 | KC_LCTL ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I ,KC_MINS, KC_EQL ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS , | ||
39 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
40 | KC_LSFT ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_PGUP ,KC_HOME , KC_END ,KC_PGDN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_RSFT , | ||
41 | //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ | ||
42 | KC_CAPS ,KC_APP ,KC_LALT ,KC_LGUI , LT(3,KC_MUTE), KC_SPC ,KC_INS , KC_DEL ,KC_ENT , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT | ||
43 | //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ | ||
44 | ), | ||
45 | |||
46 | [_SYMB] = LAYOUT( | ||
47 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ | ||
48 | KC_GESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_BSPC , | ||
49 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
50 | KC_TAB , KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_WH_U ,KC_COPY ,KC_F6 , KC_F7 ,KC_COPY ,KC_P7 ,KC_P8 ,KC_P9 ,KC_MPRV ,KC_PPLS , | ||
51 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
52 | KC_LCTL ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,KC_CUT ,KC_VOLD , KC_VOLU ,KC_CUT ,KC_P4 ,KC_P5 ,KC_P6 ,KC_MNXT ,KC_PMNS , | ||
53 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
54 | KC_LSFT ,KC_WH_L ,KC_UP ,KC_WH_R ,KC_LGUI ,KC_PSTE ,KC_WH_U ,KC_SLCK , KC_NLCK ,KC_WH_D ,KC_PSTE ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PEQL ,KC_PAST , | ||
55 | //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ | ||
56 | KC_CAPS ,KC_LEFT ,KC_DOWN ,KC_RGHT, LT(3,KC_MUTE) ,KC_SPC ,KC_ESC , KC_DEL ,KC_ENT , KC_APP , KC_P0 ,KC_PDOT ,KC_PENT ,KC_PSLS | ||
57 | //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ | ||
58 | ), | ||
59 | |||
60 | [_QWERTY] = LAYOUT( | ||
61 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ | ||
62 | KC_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC, | ||
63 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
64 | KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS , | ||
65 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
66 | KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT , | ||
67 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
68 | KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_HOME ,KC_PGUP , KC_PGDN ,KC_END ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT , | ||
69 | //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ | ||
70 | KC_CAPS ,KC_LGUI ,KC_LALT , KC_APP ,LT(3,KC_MUTE) , KC_SPC ,KC_INS , KC_DEL ,KC_ENT , KC_APP , KC_LEFT ,KC_UP ,KC_DOWN ,KC_RGHT | ||
71 | //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ | ||
72 | ), | ||
73 | |||
74 | [_ADJUST] = LAYOUT( | ||
75 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ | ||
76 | KC_GESC ,TO(0) ,TO(1) ,TO(2) ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , | ||
77 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
78 | KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , | ||
79 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
80 | KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , | ||
81 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ | ||
82 | KC_LSFT ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_RSFT , | ||
83 | //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ | ||
84 | KC_NO ,KC_NO ,KC_NO ,KC_LGUI ,LT(3,KC_MUTE), KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_APP ,KC_NO ,KC_NO ,KC_NO ,KC_NO | ||
85 | //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ | ||
86 | ) | ||
87 | |||
88 | }; | ||
89 | |||
90 | layer_state_t layer_state_set_user(layer_state_t state) | ||
91 | { | ||
92 | switch (get_highest_layer(state)) { | ||
93 | case _DVORAK: | ||
94 | blu_led_off; | ||
95 | grn_led_off; | ||
96 | break; | ||
97 | case _SYMB: | ||
98 | blu_led_on; | ||
99 | grn_led_off; | ||
100 | break; | ||
101 | case _QWERTY: | ||
102 | blu_led_off; | ||
103 | grn_led_on; | ||
104 | break; | ||
105 | case _ADJUST: | ||
106 | blu_led_on; | ||
107 | grn_led_on; | ||
108 | break; | ||
109 | default: | ||
110 | break; | ||
111 | } | ||
112 | return state; | ||
113 | } | ||
114 | |||
115 | bool led_update_user(led_t led_state) | ||
116 | { | ||
117 | if (led_state.caps_lock) { | ||
118 | red_led_on; | ||
119 | } else { | ||
120 | red_led_off; | ||
121 | } | ||
122 | if (led_state.num_lock) { | ||
123 | wht_led_on; | ||
124 | } else { | ||
125 | wht_led_off; | ||
126 | } | ||
127 | return false; | ||
128 | } | ||
diff --git a/keyboards/redox_w/keymaps/dvorak/readme.md b/keyboards/redox_w/keymaps/dvorak/readme.md new file mode 100644 index 000000000..cdc90976a --- /dev/null +++ b/keyboards/redox_w/keymaps/dvorak/readme.md | |||
@@ -0,0 +1,38 @@ | |||
1 | ### fork from default layout,and support dvorak layout[defalut layer] | ||
2 | |||
3 | ##### only use 3 layers | ||
4 | |||
5 | ``` | ||
6 | Keymap: 3 Layers | ||
7 | ----------------- | ||
8 | stack of layers | ||
9 | ____________ precedence | ||
10 | / / | high | ||
11 | 31 /___________// | | ||
12 | : _:_:_:_:_:__ | | ||
13 | 3 /___________// | --- adjust | ||
14 | 2 /___________// | --- qwerty | ||
15 | 1 /___________// | --- symb | ||
16 | 0 /___________/ | --- dvorak[default] | ||
17 | ``` | ||
18 | |||
19 | defalut LED indicators | ||
20 | |||
21 | RED --------- CAPS LOCK | ||
22 | |||
23 | BLUE ------- SYMB layer | ||
24 | |||
25 | GREEN----- QWERTY layer | ||
26 | |||
27 | WHITE------ NUM LOCK *in my test case,this is inefficient on mac os* | ||
28 | |||
29 | > BLUE and GREEN as a bit flag | ||
30 | > | ||
31 | > 0 0 | ||
32 | |||
33 | | BLUE(0) | GREEN(0) | STATUS | DESCRIBE | | ||
34 | |:-------:|:--------:|:------:|:--------------------------------------------------- | | ||
35 | | 0 | 0 | 0 | layer 0[dvorak] is active,and blue,green led is off | | ||
36 | | 1 | 0 | 1 | layer1[symb] is active, and blue led is on | | ||
37 | | 0 | 1 | 2 | layer 2[qwerty] is active,and green led is on | | ||
38 | | 1 | 1 | 3 | layer 3[adjust] is active,and blue,green led is on | | ||
diff --git a/keyboards/redox_w/redox_w.c b/keyboards/redox_w/redox_w.c index 5b8634453..48ea7d3be 100644 --- a/keyboards/redox_w/redox_w.c +++ b/keyboards/redox_w/redox_w.c | |||
@@ -1,10 +1,15 @@ | |||
1 | #include "redox_w.h" | 1 | #include "redox_w.h" |
2 | 2 | ||
3 | void led_init(void) { | 3 | void led_init(void) { |
4 | DDRD |= (1<<1); | 4 | setPinOutput(D0); |
5 | PORTD |= (1<<1); | 5 | setPinOutput(D1); |
6 | DDRF |= (1<<4) | (1<<5); | 6 | setPinOutput(F4); |
7 | PORTF |= (1<<4) | (1<<5); | 7 | setPinOutput(F5); |
8 | |||
9 | writePinHigh(D0); | ||
10 | writePinHigh(D1); | ||
11 | writePinHigh(F4); | ||
12 | writePinHigh(F5); | ||
8 | } | 13 | } |
9 | 14 | ||
10 | 15 | ||
diff --git a/keyboards/redox_w/redox_w.h b/keyboards/redox_w/redox_w.h index 727c3050d..1ed42c845 100644 --- a/keyboards/redox_w/redox_w.h +++ b/keyboards/redox_w/redox_w.h | |||
@@ -2,21 +2,20 @@ | |||
2 | 2 | ||
3 | #include "quantum.h" | 3 | #include "quantum.h" |
4 | 4 | ||
5 | #define red_led_off PORTF |= (1<<5) | 5 | #define red_led_off writePinHigh(F5) |
6 | #define red_led_on PORTF &= ~(1<<5) | 6 | #define red_led_on writePinLow(F5) |
7 | #define blu_led_off PORTF |= (1<<4) | 7 | #define blu_led_off writePinHigh(F4) |
8 | #define blu_led_on PORTF &= ~(1<<4) | 8 | #define blu_led_on writePinLow(F4) |
9 | #define grn_led_off PORTD |= (1<<1) | 9 | #define grn_led_off writePinHigh(D1) |
10 | #define grn_led_on PORTD &= ~(1<<1) | 10 | #define grn_led_on writePinLow(D1) |
11 | #define wht_led_off writePinHigh(D0) | ||
12 | #define wht_led_on writePinLow(D0) | ||
11 | 13 | ||
12 | #define set_led_off red_led_off; grn_led_off; blu_led_off | 14 | #define set_led_off red_led_off; grn_led_off; blu_led_off; wht_led_off |
13 | #define set_led_red red_led_on; grn_led_off; blu_led_off | 15 | #define set_led_red red_led_on; grn_led_off; blu_led_off; wht_led_off |
14 | #define set_led_blue red_led_off; grn_led_off; blu_led_on | 16 | #define set_led_blue red_led_off; grn_led_off; blu_led_on; wht_led_off |
15 | #define set_led_green red_led_off; grn_led_on; blu_led_off | 17 | #define set_led_green red_led_off; grn_led_on; blu_led_off; wht_led_off |
16 | #define set_led_yellow red_led_on; grn_led_on; blu_led_off | 18 | #define set_led_white red_led_off; grn_led_off; blu_led_off; wht_led_on |
17 | #define set_led_magenta red_led_on; grn_led_off; blu_led_on | ||
18 | #define set_led_cyan red_led_off; grn_led_on; blu_led_on | ||
19 | #define set_led_white red_led_on; grn_led_on; blu_led_on | ||
20 | 19 | ||
21 | // This a shortcut to help you visually see your layout. | 20 | // This a shortcut to help you visually see your layout. |
22 | // The first section contains all of the arguements | 21 | // The first section contains all of the arguements |