aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author66f9e4eae <99080777+66f94eae@users.noreply.github.com>2022-02-22 01:09:19 +0800
committerGitHub <noreply@github.com>2022-02-21 09:09:19 -0800
commit249eb871028aaaaf508136088ef25fb67a83b28e (patch)
tree55cae2844f4672b9bb9ac6ff4c5840c795227f23
parentb1f86225136247177858203f08e7a3af09c4ad63 (diff)
downloadqmk_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.c128
-rw-r--r--keyboards/redox_w/keymaps/dvorak/readme.md38
-rw-r--r--keyboards/redox_w/redox_w.c13
-rw-r--r--keyboards/redox_w/redox_w.h27
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.
23enum layers {
24 _DVORAK,
25 _SYMB,
26 _QWERTY,
27 _ADJUST,
28};
29
30const 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
90layer_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
115bool 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```
6Keymap: 3 Layers
7-----------------
8stack of layers
9 ____________ precedence
10 / / | high
11 31 /___________// |
12 : _:_:_:_:_:__ |
13 3 /___________// | --- adjust
14 2 /___________// | --- qwerty
15 1 /___________// | --- symb
16 0 /___________/ | --- dvorak[default]
17```
18
19defalut LED indicators
20
21RED --------- CAPS LOCK
22
23BLUE ------- SYMB layer
24
25GREEN----- QWERTY layer
26
27WHITE------ 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
3void led_init(void) { 3void 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