aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLui Wolff <62627597+lmlask@users.noreply.github.com>2021-09-18 16:06:46 +0000
committerGitHub <noreply@github.com>2021-09-18 09:06:46 -0700
commit2c4660e40d7897c60e7f0718f25f866e33137334 (patch)
treee9d80c1ccb8b24288d4ddc7b3116b753c007566d
parentc681c1a6a84a378ecc6c04174aafadd5f3d1b31f (diff)
downloadqmk_firmware-2c4660e40d7897c60e7f0718f25f866e33137334.tar.gz
qmk_firmware-2c4660e40d7897c60e7f0718f25f866e33137334.zip
[Keymap] Added Brazilian keymap for BM40RGB (#14431)
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c164
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md35
2 files changed, 199 insertions, 0 deletions
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c
new file mode 100644
index 000000000..daffb61e7
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c
@@ -0,0 +1,164 @@
1/* Copyright 2021 lmlmask
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#include "keymap_br_abnt2.h"
19
20enum layers {
21 _WORKMAN,
22 _QWERTY,
23 _DVORAK,
24 _COLEMAK,
25 _SYM,
26 _FUNCTION,
27 _MIDI,
28 _NAV,
29 _NUM,
30 _ADJUST
31
32};
33
34enum planck_keycodes {
35 WORKMAN = SAFE_RANGE,
36 QWERTY,
37 DVORAK,
38 COLEMAK,
39 MIDI
40};
41
42#define SYM MO(_SYM)
43#define FUN LT(_FUNCTION, KC_ENT)
44#define MYTAB LT(_NAV, KC_TAB)
45#define MYNAV LT(_NAV, KC_DEL)
46#define MYNUM LT(_NUM, KC_BSPC)
47
48const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
49
50//qwerty base layer ok
51[_QWERTY] = LAYOUT_planck_mit(
52 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BR_TILD,
53 MYTAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCED, BR_ACUT,
54 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, BR_SLSH, KC_RSPC,
55 KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT)
56),
57
58//workman base layer ok
59[_WORKMAN] = LAYOUT_planck_mit(
60 KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, BR_CCED, BR_TILD,
61 MYTAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, BR_ACUT,
62 KC_LSPO, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, BR_SLSH, KC_RSPC,
63 KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT)
64),
65
66//dvorak base layer ok
67[_DVORAK] = LAYOUT_planck_mit(
68 KC_ESC, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, BR_SLSH, BR_TILD,
69 MYTAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, BR_ACUT,
70 KC_LSPO, BR_CCED, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC,
71 KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT)
72),
73
74//colemak base layer ok
75[_COLEMAK] = LAYOUT_planck_mit(
76 KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, BR_CCED, BR_TILD,
77 MYTAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, BR_ACUT,
78 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, BR_SLSH, KC_RSPC,
79 KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT)
80),
81
82//navigation and utility layer ok
83[_NAV] = LAYOUT_planck_mit(
84 KC_TRNS, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU,
85 _______, _______, _______, _______, BR_QUOT, _______, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD,
86 KC_TRNS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, _______, KC_BSPC, KC_DEL, _______, _______, KC_TRNS,
87 KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, MYNUM, _______, KC_MPRV, KC_MPLY, KC_MNXT
88),
89
90//symbols layer ok
91[_SYM] = LAYOUT_planck_mit(
92 BR_DQUO, BR_EXLM, BR_AT, BR_HASH, BR_DLR, BR_PERC, BR_DIAE, BR_AMPR, BR_ASTR, BR_LPRN, BR_RPRN, BR_COLN,
93 BR_QUOT, BR_PIPE, _______, _______, _______, _______, _______, BR_PLUS, BR_UNDS, BR_LBRC, BR_RBRC, BR_SCLN,
94 KC_TRNS, BR_BSLS, _______, _______, _______, _______, _______, BR_EQL, BR_MINS, BR_LCBR, BR_RCBR, KC_TRNS,
95 KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, KC_TRNS
96),
97
98//numbers layer ok
99[_NUM] = LAYOUT_planck_mit(
100 KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, BR_MINS,
101 _______, BR_ASTR, BR_SLSH, BR_MINS, BR_PLUS, _______, _______, KC_4, KC_5, KC_6, BR_COMM, BR_PLUS,
102 KC_TRNS, BR_PERC, BR_EQL, BR_DOT, BR_COMM, _______, _______, KC_1, KC_2, KC_3, BR_DOT, KC_TRNS,
103 KC_TRNS, KC_TRNS, KC_TRNS, _______, MYNAV, _______, _______, KC_0, KC_0, KC_COMM, KC_ENT
104),
105
106//FN layer
107[_FUNCTION] = LAYOUT_planck_mit(
108 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_INS,
109 KC_PSCR, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, KC_F17, KC_F18, KC_F19, KC_F20, KC_PAUS,
110 KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS,
111 KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, KC_TRNS
112),
113
114// adjust layer ok
115[_ADJUST] = LAYOUT_planck_mit(
116 RESET, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______,
117 KC_CAPS, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, QWERTY, DVORAK, COLEMAK, WORKMAN, MIDI,
118 _______, MI_ON, MI_OFF, MI_TOG, MU_ON, MU_OFF, MU_TOG, MU_MOD, AU_ON, AU_OFF, _______, _______,
119 RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
120),
121
122// midi layer
123[_MIDI] = LAYOUT_planck_mit(
124 MI_Cs, MI_Ds, _______, MI_Fs, MI_Gs, MI_As, _______, MI_Cs, MI_Ds, _______, MI_Fs, MI_Gs,
125 MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C, MI_D, MI_E, MI_F, MI_G,
126 MI_BENDU,MI_OCTU, MI_TRNSU,MI_VELU, _______, _______, _______, _______, _______, MI_ON, MI_CHU, MI_TOG,
127 MI_BENDD,MI_OCTD, MI_TRNSD,MI_VELD, MYNAV, MI_SUS, MYNUM, _______, MI_OFF, MI_CHD, MI_ALLOFF
128)
129};
130
131bool process_record_user(uint16_t keycode, keyrecord_t *record) {
132 switch (keycode) {
133 case QWERTY:
134 if (record->event.pressed) {
135 set_single_persistent_default_layer(_QWERTY);
136 }
137 return false;
138 case WORKMAN:
139 if (record->event.pressed) {
140 set_single_persistent_default_layer(_WORKMAN);
141 }
142 return false;
143 case DVORAK:
144 if (record->event.pressed) {
145 set_single_persistent_default_layer(_DVORAK);
146 }
147 return false;
148 case COLEMAK:
149 if (record->event.pressed) {
150 set_single_persistent_default_layer(_COLEMAK);
151 }
152 return false;
153 case MIDI:
154 if (record->event.pressed) {
155 set_single_persistent_default_layer(_MIDI);
156 }
157 return false;
158 }
159 return true;
160}
161
162layer_state_t layer_state_set_user(layer_state_t state) {
163 return update_tri_layer_state(state, _NAV, _NUM, _ADJUST);
164}
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md
new file mode 100644
index 000000000..b647e1e41
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md
@@ -0,0 +1,35 @@
1# Brazilian keymap for the BM40RGB keyboard
2
3![qwerty](https://user-images.githubusercontent.com/62627597/133505514-466192cf-c58f-4b6f-9b7c-53ec36078401.png)
4
5This keymap deviates somewhat from the generally used conventions of Planck style keyboards.
6It's built on the following principles:
7
81. Availability of different base layers. QWERTY, Dvorak, Colemak and Workman are available. They can be chosen with the four right hand home row keys on the ADJUST layer (NAV + NUM keys). The base layout you choose gets stored on the keyboard EEPROM, so it will still be set if you unplug or reset the keyboard. I use Workman, so it's the default, but you can change to QWERTY easily with NAV + NUM + J (the J in QWERTY).
92. Frequent use of navigation keys such as the arrow keys, home, end, and hotkeys using those keycodes. For that reason, it keeps the navigation keys on a dedicated nav layer, on the home row, under the right hand. The nav layer gets the highly accessible layer toggle button usually used for the LOWER layer on most Planck style keymaps. I find this much better than using dedicated arrow keys on the bottom right of the keyboard, as the very reason I swapped to a 40% is to move my hands less.
103. Accessibility of the ´ ` ^ ~ ç symbols. There are several blank spaces left on the symbols layer, if you need access to other symbols or diacritics.
114. Proper touch typing, and hotkey access, with the Ctrl, Shift, Win/Super and Alt modifiers on both sides. I found my hands very much expect Ctrl to be on the edge of the keyboard, and as such I've kept both bottom corner keys as Ctrl. Using those keys as layer modifiers, albeit common in many keymaps, is something I found to be somewhat awkward, as it makes it basically impossible to use the hand used to press them.
125. Numbers and navigation keys should be slightly more accessible than symbols and function keys. If you use symbols more often, consider swapping the NUM and SYM layer toggle keys.
136. It's easier to remember layers when they make sense conceptually. Hence, there are dedicated layers for navigation/utility (NAV), numbers (NUM), symbols (SYM) and function keys (FN). There's a dedicated MIDI layer. Don't forget to add #define MIDI_ADVANCED to your config.h if you plan on using it.
147. Tap hold is a good tool and you should use it if you can. Backspace and Delete are set as tap functions on the two more accessible layer toggle keys.
15
16It will only work as intended if your system keyboard layout is set to Brazilian ABNT2. It may work with other international layouts, but some keys, including brackets and the ´ ` ~ ^ keys, will get broken.
17
18# Layers and functions
19
20In each key:
21Top left: Symbols;
22Top right: Functions;
23Bottom left: Navigation;
24Bottom right: Numbers;
25Bottom: secondary function (tap/hold)
26
27# BASE (Qwerty, Dvorak, Colemak, Workman)
28![qwerty](https://user-images.githubusercontent.com/62627597/133505788-e8410162-8491-4f52-bc94-62dacb752171.png)
29
30# Adjust (NAV+NUM)
31![adjust](https://user-images.githubusercontent.com/62627597/133182475-1994e733-71a2-42ee-88fe-9a15e711b938.png)
32
33# MIDI
34![midi](https://user-images.githubusercontent.com/62627597/133505599-8ae3ea32-5f8f-451f-b191-f74c514d22c0.png)
35