aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/chimera_ortho/chimera_ortho.c31
-rw-r--r--keyboards/chimera_ortho/chimera_ortho.h66
-rw-r--r--keyboards/chimera_ortho/config.h87
-rw-r--r--keyboards/chimera_ortho/keymaps/default/keymap.c193
-rw-r--r--keyboards/chimera_ortho/matrix.c164
-rw-r--r--keyboards/chimera_ortho/rules.mk78
-rw-r--r--keyboards/eco/eco.h17
-rw-r--r--keyboards/eco/keymaps/hexwire/keymap.c120
-rw-r--r--keyboards/eco/keymaps/hexwire/rules.mk25
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/README.md25
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c568
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c345
-rw-r--r--keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c275
-rw-r--r--keyboards/ergodox_infinity/keymaps/nordic_ergo/readme.md9
-rw-r--r--keyboards/ergodox_infinity/readme.md2
-rw-r--r--keyboards/frosty_flake/keymaps/QFR_JM/config.h3
-rw-r--r--keyboards/frosty_flake/keymaps/QFR_JM/keymap.c32
-rw-r--r--keyboards/frosty_flake/keymaps/QFR_JM/readme.md53
-rw-r--r--keyboards/gh60/keymaps/maxr1998/keymap.c2
-rw-r--r--keyboards/handwired/terminus_mini/config.h2
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/config.h2
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/keymap.c12
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/readme.md191
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/README.md226
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/config.h3
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/keymap.c33
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/config.h48
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/keymap.c191
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/readme.md22
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/rules.mk10
-rw-r--r--keyboards/planck/keymaps/gunp/keymap.c21
-rw-r--r--keyboards/planck/keymaps/gunp/readme.md8
-rw-r--r--keyboards/ps2avrGB/README.md17
-rwxr-xr-xkeyboards/ps2avrGB/program3
-rw-r--r--keyboards/tada68/keymaps/isoish/keymap.c48
-rw-r--r--keyboards/tada68/keymaps/isoish/readme.md3
-rw-r--r--keyboards/tada68/keymaps/isoish/rules.mk21
-rwxr-xr-xkeyboards/tada68/tada68.h33
38 files changed, 2718 insertions, 271 deletions
diff --git a/keyboards/chimera_ortho/chimera_ortho.c b/keyboards/chimera_ortho/chimera_ortho.c
new file mode 100644
index 000000000..2a602cf2f
--- /dev/null
+++ b/keyboards/chimera_ortho/chimera_ortho.c
@@ -0,0 +1,31 @@
1#include "chimera_ortho.h"
2
3void uart_init(void) {
4 SERIAL_UART_INIT();
5}
6
7void led_init(void) {
8 DDRD |= (1<<1);
9 PORTD |= (1<<1);
10 DDRF |= (1<<4) | (1<<5);
11 PORTF |= (1<<4) | (1<<5);
12}
13
14
15void matrix_init_kb(void) {
16 // put your keyboard start-up code here
17 // runs once when the firmware starts up
18 matrix_init_user();
19 uart_init();
20 led_init();
21}
22
23void matrix_scan_kb(void) {
24 // put your looping keyboard code here
25 // runs every cycle (a lot)
26 matrix_scan_user();
27}
28
29void led_set_kb(uint8_t usb_led) {
30
31}
diff --git a/keyboards/chimera_ortho/chimera_ortho.h b/keyboards/chimera_ortho/chimera_ortho.h
new file mode 100644
index 000000000..c21b37ff8
--- /dev/null
+++ b/keyboards/chimera_ortho/chimera_ortho.h
@@ -0,0 +1,66 @@
1#ifndef CHIMERA_ORTHO_H
2#define CHIMERA_ORTHO_H
3
4#include "quantum.h"
5#include "matrix.h"
6#include "backlight.h"
7#include <stddef.h>
8
9#define red_led_off PORTF |= (1<<5)
10#define red_led_on PORTF &= ~(1<<5)
11#define blu_led_off PORTF |= (1<<4)
12#define blu_led_on PORTF &= ~(1<<4)
13#define grn_led_off PORTD |= (1<<1)
14#define grn_led_on PORTD &= ~(1<<1)
15
16#define set_led_off red_led_off; grn_led_off; blu_led_off
17#define set_led_red red_led_on; grn_led_off; blu_led_off
18#define set_led_blue red_led_off; grn_led_off; blu_led_on
19#define set_led_green red_led_off; grn_led_on; blu_led_off
20#define set_led_yellow red_led_on; grn_led_on; blu_led_off
21#define set_led_magenta red_led_on; grn_led_off; blu_led_on
22#define set_led_cyan red_led_off; grn_led_on; blu_led_on
23#define set_led_white red_led_on; grn_led_on; blu_led_on
24
25/*
26#define LED_B 5
27#define LED_R 6
28#define LED_G 7
29
30#define all_leds_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
31
32#define red_led_on PORTF |= (1<<LED_R)
33#define red_led_off PORTF &= ~(1<<LED_R)
34#define grn_led_on PORTF |= (1<<LED_G)
35#define grn_led_off PORTF &= ~(1<<LED_G)
36#define blu_led_on PORTF |= (1<<LED_B)
37#define blu_led_off PORTF &= ~(1<<LED_B)
38
39#define set_led_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
40#define set_led_red PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_G) | (1<<LED_R)
41#define set_led_blue PORTF = PORTF & ~(1<<LED_G) & ~(1<<LED_R) | (1<<LED_B)
42#define set_led_green PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_R) | (1<<LED_G)
43#define set_led_yellow PORTF = PORTF & ~(1<<LED_B) | (1<<LED_R) | (1<<LED_G)
44#define set_led_magenta PORTF = PORTF & ~(1<<LED_G) | (1<<LED_R) | (1<<LED_B)
45#define set_led_cyan PORTF = PORTF & ~(1<<LED_R) | (1<<LED_B) | (1<<LED_G)
46#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
47*/
48
49// This a shortcut to help you visually see your layout.
50// The first section contains all of the arguements
51// The second converts the arguments into a two-dimensional array
52#define KEYMAP( \
53 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
54 k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
55 k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
56 k45, k46, k47, k48 \
57) \
58{ \
59 { KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
60 { KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
61 { KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
62 { KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
63 { KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO }, \
64}
65
66#endif
diff --git a/keyboards/chimera_ortho/config.h b/keyboards/chimera_ortho/config.h
new file mode 100644
index 000000000..44c6212b1
--- /dev/null
+++ b/keyboards/chimera_ortho/config.h
@@ -0,0 +1,87 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24
25#define VENDOR_ID 0xFEED
26#define PRODUCT_ID 0x6060
27#define DEVICE_VER 0x0001
28#define MANUFACTURER unknown
29#define PRODUCT Chimera Ortho
30#define DESCRIPTION q.m.k. keyboard firmware for Chimera Ortho
31
32/* key matrix size */
33#define MATRIX_ROWS 5
34#define MATRIX_COLS 10
35
36/* define if matrix has ghost */
37//#define MATRIX_HAS_GHOST
38
39/* number of backlight levels */
40//#define BACKLIGHT_LEVELS 3
41
42#define ONESHOT_TIMEOUT 500
43
44
45/* key combination for command */
46#define IS_COMMAND() ( \
47 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
48)
49
50/*
51 * Feature disable options
52 * These options are also useful to firmware size reduction.
53 */
54
55#define PREVENT_STUCK_MODIFIERS
56
57/* disable debug print */
58//#define NO_DEBUG
59
60/* disable print */
61//#define NO_PRINT
62
63/* disable action features */
64//#define NO_ACTION_LAYER
65//#define NO_ACTION_TAPPING
66//#define NO_ACTION_ONESHOT
67//#define NO_ACTION_MACRO
68//#define NO_ACTION_FUNCTION
69
70//UART settings for communication with the RF microcontroller
71#define SERIAL_UART_BAUD 1000000
72#define SERIAL_UART_DATA UDR1
73#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
74#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
75#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
76#define SERIAL_UART_INIT() do { \
77 /* baud rate */ \
78 UBRR1L = SERIAL_UART_UBRR; \
79 /* baud rate */ \
80 UBRR1H = SERIAL_UART_UBRR >> 8; \
81 /* enable TX and RX */ \
82 UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
83 /* 8-bit data */ \
84 UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
85 } while(0)
86
87#endif
diff --git a/keyboards/chimera_ortho/keymaps/default/keymap.c b/keyboards/chimera_ortho/keymaps/default/keymap.c
new file mode 100644
index 000000000..ef477e652
--- /dev/null
+++ b/keyboards/chimera_ortho/keymaps/default/keymap.c
@@ -0,0 +1,193 @@
1// this is the style you want to emulate.
2// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
3
4#include "chimera_ortho.h"
5
6// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name.
8// Layer names don't all need to be of the same length, obviously, and you can also skip them
9// entirely and just use numbers.
10enum chimera_ortho_layers
11{
12 _QWERTY,
13 _CAPS,
14 _NUMPAD,
15 _SYMBOLS,
16 _MACROS,
17 _NAV
18};
19
20#define KC_NMPD TG(_NUMPAD)
21#define KC_SYMB TG(_SYMBOLS)
22#define KC_SPFN LT(_NAV,KC_EQL)
23#define KC_SCTL MT(MOD_LCTL, KC_LBRC)
24#define KC_SCTR MT(MOD_LCTL, KC_RBRC)
25#define KC_SPLT MT(MOD_LALT, KC_MINS)
26#define KC_SPRT MT(MOD_LALT, KC_1)
27#define KC_GBRC MT(MOD_RGUI, KC_8)
28#define KC_GQOT MT(MOD_LGUI, KC_QUOT)
29#define KC_MESC LT(_MACROS, KC_ESC)
30#define KC_INCL M(0)
31#define KC_PULL M(1)
32#define KC_PUSH M(2)
33#define KC_SCAP M(3)
34#define KC_SCOF M(4)
35#define KC_CAD LALT(LCTL(KC_DEL))
36
37#define LONGPRESS_DELAY 150
38//#define LAYER_TOGGLE_DELAY 300
39
40// Fillers to make layering more clear
41#define _______ KC_TRNS
42#define XXXXXXX KC_NO
43#define KC_ KC_TRNS
44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47 [_QWERTY] = KEYMAP(
48 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
49 MESC, Q , W , E , R , T ,SCTL, SCTR, Y , U , I , O , P ,QUOT,
50 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
51 TAB , A , S , D , F , G ,SPLT, SPRT, H , J , K , L ,SCLN,ENT ,
52 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
53 LSPO, Z , X , C , V , B ,SPFN, GBRC, N , M ,COMM,DOT ,SLSH,RSPC,
54 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
55 NMPD,BSPC, SPC ,SYMB
56 // \------------------+----+----+---/ \---+----+----+-------------------/
57 ),
58
59 [_CAPS] = KEYMAP(
60 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
61 , , , , , , , , , , , , , ,
62 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
63 , , , , , ,UNDS, , , , , ,COLN, ,
64 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
65 SCOF, , , , , , , , , , , , ,SCOF,
66 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
67 , , ,
68 // \------------------+----+----+---/ \---+----+----+-------------------/
69 ),
70
71 [_NUMPAD] = KEYMAP(
72 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
73 , ,COLN , , , , , , , 7 , 8 , 9 ,ASTR,MINS,
74 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
75 , ,DOT , , , , , , , 4 , 5 , 6 ,PLUS, ,
76 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
77 , , , , , , , , , 1 , 2 , 3 ,SLSH, ,
78 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
79 , , , 0
80 // \------------------+----+----+---/ \---+----+----+-------------------/
81 ),
82
83 [_SYMBOLS] = KEYMAP(
84 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
85 ,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LPRN,RPRN,BSLS,
86 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
87 , F1 , F2 , F3 , F4 , F5 , , ,TILD,COLN,UNDS,LCBR,RCBR, ,
88 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
89 , F6 , F7 , F8 , F9 ,F10 , , ,GRV ,SCLN,MINS,LBRC,RBRC, ,
90 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
91 PIPE, , ,
92 // \------------------+----+----+---/ \---+----+----+-------------------/
93 ),
94
95 [_NAV] = KEYMAP(
96 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
97 , , , , , , , , , , UP , ,PSCR, ,
98 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
99 , , , , , , , , ,LEFT,DOWN,RGHT, , ,
100 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
101 , , , , , , , , ,PGUP,PGDN, , , ,
102 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
103 ,DEL , ,
104 // \------------------+----+----+---/ \---+----+----+-------------------/
105 ),
106
107 [_MACROS] = KEYMAP(
108 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
109 , , , , , , , , , ,INCL, , , ,
110 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
111 , , ,CAD , , , , , , , , , , ,
112 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
113 SCAP, , , , , , , , , ,PULL,PUSH, ,SCAP,
114 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
115 , , ,
116 // \------------------+----+----+---/ \---+----+----+-------------------/
117 )
118
119};
120
121
122const uint16_t PROGMEM fn_actions[] = {
123
124};
125
126const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
127{
128 switch(id) {
129 /* include some kind of library or header */
130 case 0:
131 if (record->event.pressed) {
132 SEND_STRING("#include <>");
133 return MACRO( T(LEFT), END);
134 }
135 break;
136 case 1:
137 if (record->event.pressed) {
138 SEND_STRING("git pull");
139 return MACRO( T(ENT), END );
140 }
141 break;
142 case 2:
143 if (record->event.pressed){
144 SEND_STRING("git push");
145 return MACRO( T(ENT), END );
146 }
147 break;
148 case 3:
149 if (record->event.pressed){
150 layer_on(_CAPS);
151 register_code(KC_CAPSLOCK);
152 unregister_code(KC_CAPSLOCK);
153 }
154 break;
155 case 4:
156 if (record->event.pressed){
157 layer_off(_CAPS);
158 register_code(KC_CAPSLOCK);
159 unregister_code(KC_CAPSLOCK);
160 }
161 break;
162 }
163 return MACRO_NONE;
164};
165
166
167void matrix_scan_user(void) {
168 uint8_t layer = biton32(layer_state);
169
170 switch (layer) {
171 case _QWERTY:
172 set_led_green;
173 break;
174 case _CAPS:
175 set_led_white;
176 break;
177 case _NUMPAD:
178 set_led_blue;
179 break;
180 case _SYMBOLS:
181 set_led_red;
182 break;
183 case _NAV:
184 set_led_magenta;
185 break;
186 case _MACROS:
187 set_led_cyan;
188 break;
189 default:
190 set_led_green;
191 break;
192 }
193};
diff --git a/keyboards/chimera_ortho/matrix.c b/keyboards/chimera_ortho/matrix.c
new file mode 100644
index 000000000..0d046339e
--- /dev/null
+++ b/keyboards/chimera_ortho/matrix.c
@@ -0,0 +1,164 @@
1/*
2Copyright 2012 Jun Wako
3Copyright 2014 Jack Humbert
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18#include <stdint.h>
19#include <stdbool.h>
20#if defined(__AVR__)
21#include <avr/io.h>
22#endif
23#include "wait.h"
24#include "print.h"
25#include "debug.h"
26#include "util.h"
27#include "matrix.h"
28#include "timer.h"
29
30#if (MATRIX_COLS <= 8)
31# define print_matrix_header() print("\nr/c 01234567\n")
32# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
33# define matrix_bitpop(i) bitpop(matrix[i])
34# define ROW_SHIFTER ((uint8_t)1)
35#elif (MATRIX_COLS <= 16)
36# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
37# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
38# define matrix_bitpop(i) bitpop16(matrix[i])
39# define ROW_SHIFTER ((uint16_t)1)
40#elif (MATRIX_COLS <= 32)
41# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
42# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
43# define matrix_bitpop(i) bitpop32(matrix[i])
44# define ROW_SHIFTER ((uint32_t)1)
45#endif
46
47/* matrix state(1:on, 0:off) */
48static matrix_row_t matrix[MATRIX_ROWS];
49
50__attribute__ ((weak))
51void matrix_init_quantum(void) {
52 matrix_init_kb();
53}
54
55__attribute__ ((weak))
56void matrix_scan_quantum(void) {
57 matrix_scan_kb();
58}
59
60__attribute__ ((weak))
61void matrix_init_kb(void) {
62 matrix_init_user();
63}
64
65__attribute__ ((weak))
66void matrix_scan_kb(void) {
67 matrix_scan_user();
68}
69
70__attribute__ ((weak))
71void matrix_init_user(void) {
72}
73
74__attribute__ ((weak))
75void matrix_scan_user(void) {
76}
77
78inline
79uint8_t matrix_rows(void) {
80 return MATRIX_ROWS;
81}
82
83inline
84uint8_t matrix_cols(void) {
85 return MATRIX_COLS;
86}
87
88void matrix_init(void) {
89
90 matrix_init_quantum();
91}
92
93uint8_t matrix_scan(void)
94{
95 SERIAL_UART_INIT();
96
97 uint32_t timeout = 0;
98
99 //the s character requests the RF slave to send the matrix
100 SERIAL_UART_DATA = 's';
101
102 //trust the external keystates entirely, erase the last data
103 uint8_t uart_data[11] = {0};
104
105 //there are 10 bytes corresponding to 10 columns, and an end byte
106 for (uint8_t i = 0; i < 11; i++) {
107 //wait for the serial data, timeout if it's been too long
108 //this only happened in testing with a loose wire, but does no
109 //harm to leave it in here
110 while(!SERIAL_UART_RXD_PRESENT){
111 timeout++;
112 if (timeout > 10000){
113 break;
114 }
115 }
116 uart_data[i] = SERIAL_UART_DATA;
117 }
118
119 //check for the end packet, the key state bytes use the LSBs, so 0xE0
120 //will only show up here if the correct bytes were recieved
121 if (uart_data[10] == 0xE0)
122 {
123 //shifting and transferring the keystates to the QMK matrix variable
124 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
125 matrix[i] = (uint16_t) uart_data[i*2] | (uint16_t) uart_data[i*2+1] << 5;
126 }
127 }
128
129
130 matrix_scan_quantum();
131 return 1;
132}
133
134inline
135bool matrix_is_on(uint8_t row, uint8_t col)
136{
137 return (matrix[row] & ((matrix_row_t)1<col));
138}
139
140inline
141matrix_row_t matrix_get_row(uint8_t row)
142{
143 return matrix[row];
144}
145
146void matrix_print(void)
147{
148 print_matrix_header();
149
150 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
151 phex(row); print(": ");
152 print_matrix_row(row);
153 print("\n");
154 }
155}
156
157uint8_t matrix_key_count(void)
158{
159 uint8_t count = 0;
160 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
161 count += matrix_bitpop(i);
162 }
163 return count;
164}
diff --git a/keyboards/chimera_ortho/rules.mk b/keyboards/chimera_ortho/rules.mk
new file mode 100644
index 000000000..098bf28fa
--- /dev/null
+++ b/keyboards/chimera_ortho/rules.mk
@@ -0,0 +1,78 @@
1
2OPT_DEFS += -DCHIMERA_ORTHO_PROMICRO
3OPT_DEFS += -DCATERINA_BOOTLOADER
4CHIMERA_ORTHO_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
5 avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
6
7# # project specific files
8SRC = matrix.c
9
10
11# MCU name
12#MCU = at90usb1287
13MCU = atmega32u4
14
15# Processor frequency.
16# This will define a symbol, F_CPU, in all source code files equal to the
17# processor frequency in Hz. You can then use this symbol in your source code to
18# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
19# automatically to create a 32-bit value in your source code.
20#
21# This will be an integer division of F_USB below, as it is sourced by
22# F_USB after it has run through any CPU prescalers. Note that this value
23# does not *change* the processor frequency - it should merely be updated to
24# reflect the processor speed set externally so that the code can use accurate
25# software delays.
26F_CPU = 16000000
27
28
29#
30# LUFA specific
31#
32# Target architecture (see library "Board Types" documentation).
33ARCH = AVR8
34
35# Input clock frequency.
36# This will define a symbol, F_USB, in all source code files equal to the
37# input clock frequency (before any prescaling is performed) in Hz. This value may
38# differ from F_CPU if prescaling is used on the latter, and is required as the
39# raw input clock is fed directly to the PLL sections of the AVR for high speed
40# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
41# at the end, this will be done automatically to create a 32-bit value in your
42# source code.
43#
44# If no clock division is performed on the input clock inside the AVR (via the
45# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
46F_USB = $(F_CPU)
47
48# Interrupt driven control endpoint task(+60)
49OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
50
51
52# Boot Section Size in *bytes*
53# Teensy halfKay 512
54# Teensy++ halfKay 1024
55# Atmel DFU loader 4096
56# LUFA bootloader 4096
57# USBaspLoader 2048
58OPT_DEFS += -DBOOTLOADER_SIZE=4096
59
60
61# Build Options
62# comment out to disable the options.
63#
64#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
65MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
66EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
67CONSOLE_ENABLE = yes # Console for debug(+400)
68COMMAND_ENABLE = yes # Commands for debug and configuration
69CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
70# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
71# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
72NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
73# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
74# MIDI_ENABLE = YES # MIDI controls
75UNICODE_ENABLE = YES # Unicode
76# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
77
78USB = /dev/ttyACM0
diff --git a/keyboards/eco/eco.h b/keyboards/eco/eco.h
index 4f8cfabd8..2615ac1ae 100644
--- a/keyboards/eco/eco.h
+++ b/keyboards/eco/eco.h
@@ -8,7 +8,20 @@
8 #include "rev2.h" 8 #include "rev2.h"
9#endif 9#endif
10 10
11
12#include "quantum.h" 11#include "quantum.h"
13 12
14#endif \ No newline at end of file 13// Used to create a keymap using only KC_ prefixed keys
14#define KC_KEYMAP( \
15 k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014, \
16 k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114, \
17 k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214, \
18 k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 \
19 ) \
20 { \
21 { KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k010, KC_##k011, KC_##k012, KC_##k013, KC_##k014 }, \
22 { KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k110, KC_##k111, KC_##k112, KC_##k113, KC_##k114 }, \
23 { KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k210, KC_##k211, KC_##k212, KC_##k213, KC_##k214 }, \
24 { KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k310, KC_##k311, KC_##k312, KC_##k313, KC_##k314 } \
25 }
26
27#endif
diff --git a/keyboards/eco/keymaps/hexwire/keymap.c b/keyboards/eco/keymaps/hexwire/keymap.c
new file mode 100644
index 000000000..c20d45c2b
--- /dev/null
+++ b/keyboards/eco/keymaps/hexwire/keymap.c
@@ -0,0 +1,120 @@
1
2// Default ECO Layout
3// KLE here : http://www.keyboard-layout-editor.com/#/gists/0733eca6b4cb88ff9d7de746803f4039
4
5#include "eco.h"
6#include "action_layer.h"
7#include "eeconfig.h"
8
9extern keymap_config_t keymap_config;
10
11// Each layer gets a name for readability, which is then used in the keymap matrix below.
12// The underscores don't mean anything - you can have a layer called STUFF or any other name.
13// Layer names don't all need to be of the same length, obviously, and you can also skip them
14// entirely and just use numbers.
15#define _QWERTY 0
16#define _LOWER 1
17#define _RAISE 2
18#define _FN3 3
19
20enum eco_keycodes {
21 QWERTY = SAFE_RANGE,
22 LOWER,
23 RAISE,
24};
25
26// Fillers to make layering more clear
27#define KC_ KC_TRNS
28#define _______ KC_TRNS
29#define XXXXXXX KC_NO
30
31#define KC_RST RESET
32#define KC_DBUG DEBUG
33#define KC_LOWR MO(_LOWER)
34#define KC_RASE MO(_RAISE)
35#define KC_ENTS MT(MOD_LSFT, KC_ENT)
36#define KC_ESCC MT(MOD_LCTL, KC_ESC)
37#define KC_GRVF LT(_FN3, KC_GRV)
38#define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen
39#define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen
40#define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen
41#define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen
42#define KC_RTOG RGB_TOG
43#define KC_RMOD RGB_MOD
44#define KC_RHUI RGB_HUI
45#define KC_RHUD RGB_HUD
46#define KC_RSAI RGB_SAI
47#define KC_RSAD RGB_SAD
48#define KC_RVAI RGB_VAI
49#define KC_RVAD RGB_VAD
50
51const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
52
53 [_QWERTY] = KC_KEYMAP(
54 //,----+----+----+----+----+----+----+----+----+----+----+----+----+----.
55 TAB , Q , W , E , R , T ,LPRN,RPRN, Y , U , I , O , P ,MINS,
56 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
57 ESCC, A , S , D , F , G ,LBRC,RBRC, H , J , K , L ,SCLN,QUOT,
58 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
59 LSFT, Z , X , C , V , B ,LCBR,RCBR, N , M ,COMM,DOT ,SLSH,ENTS,
60 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
61 GRVF,LCTL,LALT,LGUI,LOWR,SPC ,SPC ,BSPC,BSPC,RASE,LEFT,DOWN, UP ,RGHT
62 //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
63 ),
64
65
66 [_LOWER] = KC_KEYMAP(
67 //,----+----+----+----+----+----+----+----+----+----+----+----+----+----.
68 , 1 , 2 , 3 , 4 , 5 ,LPRN,RPRN, 6 , 7 , 8 , 9 , 0 , ,
69 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
70 DEL ,CAPP,LEFT,RGHT, UP ,LBRC,LBRC,RBRC,RBRC, P4 , P5 , P6 ,PLUS,PIPE,
71 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
72 ,CPYP, , ,DOWN,LCBR,LCBR,RCBR,RCBR, P1 , P2 , P3 ,MINS, ,
73 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
74 , , , , , , ,DEL ,DEL , , P0 ,PDOT, ,
75 //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
76 ),
77
78 [_RAISE] = KC_KEYMAP(
79 //,----+----+----+----+----+----+----+----+----+----+----+----+----+----.
80 ,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LPRN,RPRN, ,
81 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
82 DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, , ,EQL ,HOME, , , ,BSLS,
83 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
84 MUTE,MSTP,MPLY,VOLD,PGDN,MINS, , ,PLUS,END , , , , ,
85 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
86 , , , , , , , , , , , , ,
87 //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
88 ),
89
90 [_FN3] = KC_KEYMAP(
91 //,----+----+----+----+----+----+----+----+----+----+----+----+----+----.
92 F12 , F1 , F2 , F3 , F4 , F5 , , , F6 , F7 , F8 , F9 ,F10 ,F11 ,
93 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
94 RTOG,RMOD,RHUI,RSAI,RVAI, , , , , , , , , ,
95 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
96 RST ,DBUG,RHUD,RSAD,RVAD, , , , , , , , , ,
97 //|----+----+----+----+----+----+----+----+----+----+----+----+----+----|
98 , , , , , , , , , , , , ,
99 //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
100 ),
101
102};
103
104void persistant_default_layer_set(uint16_t default_layer) {
105 eeconfig_update_default_layer(default_layer);
106 default_layer_set(default_layer);
107}
108
109bool process_record_user(uint16_t keycode, keyrecord_t *record) {
110 switch (keycode) {
111 case QWERTY:
112 if (record->event.pressed) {
113 persistant_default_layer_set(1UL<<_QWERTY);
114 }
115 return false;
116 break;
117 }
118 return true;
119}
120
diff --git a/keyboards/eco/keymaps/hexwire/rules.mk b/keyboards/eco/keymaps/hexwire/rules.mk
new file mode 100644
index 000000000..7dab97942
--- /dev/null
+++ b/keyboards/eco/keymaps/hexwire/rules.mk
@@ -0,0 +1,25 @@
1
2
3# Build Options
4# change to "no" to disable the options, or define them in the Makefile in
5# the appropriate keymap folder that will get included automatically
6#
7BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
8MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
9EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
10CONSOLE_ENABLE = no # Console for debug(+400)
11COMMAND_ENABLE = no # Commands for debug and configuration
12NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
13BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
14MIDI_ENABLE = no # MIDI controls
15AUDIO_ENABLE = no # Audio output on port C6
16UNICODE_ENABLE = no # Unicode
17BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
18RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
19
20# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
21SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
22
23ifndef QUANTUM_DIR
24 include ../../../../Makefile
25endif
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/README.md b/keyboards/ergodox_infinity/keymaps/dudeofawesome/README.md
new file mode 100644
index 000000000..98eb7abb2
--- /dev/null
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/README.md
@@ -0,0 +1,25 @@
1# DudeOfAwesome's ErgoDox Infinity Layout
2
3A basic ErgoDox layout with Planck-like tri-layer support.
4
5![ErgoDox Layout](https://i.imgur.com/9zfKPV7.png)
6
7## Features
8
9- Planck-like tri-layer
10- Workman layout
11- In-progress gaming layer
12- Numpad
13- LCD colors are linked together, like the default KLL firmware
14
15## Building and flashing
16
171. Put your board in DFU mode with either the button on the bottom, or with a software key in your current firmware
181. Flash left half:
19 ```bash
20 $ make ergodox_infinity:dudeofawesome:dfu-util
21 ```
221. Flash right half:
23 ```bash
24 $ make ergodox_infinity:dudeofawesome:dfu-util MASTER=right
25 ```
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
new file mode 100644
index 000000000..7d76b25a4
--- /dev/null
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
@@ -0,0 +1,568 @@
1#include QMK_KEYBOARD_H
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6enum custom_layers {
7 _QWERTY,
8 _DVORAK,
9 _WORKMAN,
10 _GAME,
11 _MOUSE,
12 _NUM,
13 _LOWER,
14 _RAISE,
15 _ADJUST,
16};
17
18enum custom_keycodes {
19 QWERTY = SAFE_RANGE,
20 DVORAK,
21 WORKMAN,
22 LOWER,
23 RAISE,
24 GAME,
25 MOUSE,
26 NUM,
27 EPRM,
28 VRSN,
29 RGB_SLD
30};
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33/* Keymap 0: Basic QWERTY layer
34 *
35 * ,---------------------------------------------. ,---------------------------------------------.
36 * | - | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
37 * |--------+-----+-----+-----+-----+------------| |------+-----+-----+-----+-----+-----+--------|
38 * | Tab | Q | W | E | R | T | [{ | | ]} | Y | U | I | O | P | BSPC |
39 * |--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
40 * | ESC | A | S | D | F | G |------| |------| H | J | K | L | ; | '" |
41 * |--------+-----+-----+-----+-----+-----| L1 | | L1 |-----+-----+-----+-----+-----+--------|
42 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | Enter |
43 * `--------+-----+-----+-----+-----+------------' `------------+-----+-----+-----+-----+--------'
44 * | Num |Ctrl | Alt |LGUI |Lower| |Raise|Left |Down | Up |Right |
45 * `------------------------------' `------------------------------'
46 * ,------------. ,------------.
47 * |Play |Mouse | | Num |Mouse|
48 * ,----|-----|------| |------+-----+-----.
49 * | | | Alt | | Alt | | |
50 * |BSPC|LOWER|------| |------|RAISE|Space|
51 * | | | LGUI | | LGUI | | |
52 * `-----------------' `------------------'
53 */
54[_QWERTY] = LAYOUT_ergodox(
55 // left hand
56 KC_MINUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
57 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRACKET,
58 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
59 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_FN1,
60 TG(_NUM), KC_LCTL, KC_LALT, KC_LGUI, LOWER,
61
62 KC_MPLY, TG(_MOUSE),
63 KC_LALT,
64 LOWER, KC_BSPACE, KC_LGUI,
65
66 // right hand
67 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
68 KC_RBRACKET, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE,
69 KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE,
70 KC_FN1, KC_N, KC_M, KC_COMM, KC_DOT, LT(_MOUSE, KC_SLSH), KC_ENTER,
71 RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,
72
73 TG(_NUM), TG(_MOUSE),
74 KC_LALT,
75 KC_LGUI, KC_SPACE, RAISE
76),
77
78/* Keymap 0: Basic Dvorak layer
79 *
80 * ,---------------------------------------------. ,--------------------------------------------.
81 * | - | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
82 * |--------+-----+-----+-----+-----+------------| |------+-----+-----+-----+-----+-----+--------|
83 * | Tab | ' | , | . | P | Y | [{ | | ]} | F | G | C | R | L | BSPC |
84 * |--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
85 * | ESC | A | O | E | U | I |------| |------| D | H | T | N | S | / |
86 * |--------+-----+-----+-----+-----+-----| L1 | | L1 |-----+-----+-----+-----+-----+--------|
87 * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | Enter |
88 * `--------+-----+-----+-----+-----+------------' `------------+-----+-----+-----+-----+--------'
89 * | Num |Ctrl | Alt |LGUI |Lower| |Raise|Left |Down | Up |Right |
90 * `------------------------------' `------------------------------'
91 * ,------------. ,------------.
92 * |Play |Mouse | | Num |Mouse|
93 * ,----|-----|------| |------+-----+-----.
94 * | | | Alt | | Alt | | |
95 * |BSPC|LOWER|------| |------|RAISE|Space|
96 * | | | LGUI | | LGUI | | |
97 * `-----------------' `------------------'
98 */
99[_DVORAK] = LAYOUT_ergodox(
100 // left hand
101 KC_MINUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
102 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_LBRACKET,
103 KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I,
104 KC_LSPO, KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, KC_FN1,
105 TG(_NUM), KC_LCTL, KC_LALT, KC_LGUI, LOWER,
106
107 KC_MPLY, TG(_MOUSE),
108 KC_LALT,
109 KC_BSPACE, LOWER, KC_LGUI,
110
111 // right hand
112 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
113 KC_RBRACKET, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPACE,
114 KC_D, KC_H, KC_T, KC_N, KC_S, LT(MOUSE, KC_SLSH),
115 KC_FN1, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENTER,
116 RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,
117
118 TG(_NUM), TG(_MOUSE),
119 KC_LALT,
120 KC_LGUI, RAISE, KC_SPACE
121),
122
123/* Keymap 0: Basic Workman layer
124 *
125 * ,---------------------------------------------. ,--------------------------------------------.
126 * | - | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
127 * |--------+-----+-----+-----+-----+------------| |------+-----+-----+-----+-----+-----+--------|
128 * | Tab | Q | D | R | W | B | [{ | | ]} | J | F | U | P | ; | BSPC |
129 * |--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
130 * | ESC | A | S | H | T | G |------| |------| Y | N | E | O | I | '" |
131 * |--------+-----+-----+-----+-----+-----| L1 | | L1 |-----+-----+-----+-----+-----+--------|
132 * | LShift | Z | X | M | C | V | | | | K | L | , | . | / | Enter |
133 * `--------+-----+-----+-----+-----+------------' `------------+-----+-----+-----+-----+--------'
134 * | Num |Ctrl | Alt |LGUI |Lower| |Raise|Left |Down | Up |Right |
135 * `------------------------------' `------------------------------'
136 * ,------------. ,------------.
137 * |Play |Mouse | | Num |Mouse|
138 * ,----|-----|------| |------+-----+-----.
139 * | | | Alt | | Alt | | |
140 * |BSPC|LOWER|------| |------|RAISE|Space|
141 * | | | LGUI | | LGUI | | |
142 * `-----------------' `------------------'
143 */
144[_WORKMAN] = LAYOUT_ergodox(
145 // left hand
146 KC_MINUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
147 KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_LBRACKET,
148 KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G,
149 KC_LSPO, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_FN1,
150 TG(_NUM), KC_LCTL, KC_LALT, KC_LGUI, LOWER,
151
152 KC_MPLY, TG(_MOUSE),
153 KC_LALT,
154 KC_BSPACE, LOWER, KC_LGUI,
155
156 // right hand
157 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
158 KC_RBRACKET, KC_J, KC_F, KC_U, KC_P, KC_SCOLON, KC_BSPACE,
159 KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOTE,
160 KC_FN1, KC_K, KC_L, KC_COMM, KC_DOT, LT(_MOUSE, KC_SLSH), KC_ENTER,
161 RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,
162
163 NUM, TG(_MOUSE),
164 KC_LALT,
165 KC_LGUI, RAISE, KC_SPACE
166),
167
168/* Lower
169 *
170 * ,---------------------------------------------------. ,--------------------------------------------------.
171 * | Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
172 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
173 * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | |
174 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
175 * | Del | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | _ | + | { | } | | |
176 * |---------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
177 * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | Home | End | |
178 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
179 * | | | | | | | | Next | Vol- | Vol+ | Play |
180 * `-----------------------------------' `----------------------------------'
181 * ,-------------. ,-------------.
182 * |Animat| | |Toggle|Solid |
183 * ,------|------|------| |------+------+------.
184 * |Bright|Bright| | | |Hue- |Hue+ |
185 * |ness- |ness+ |------| |------| | |
186 * | | | | | | | |
187 * `--------------------' `--------------------'
188 */
189[_LOWER] = LAYOUT_ergodox(
190 // left hand
191 VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
192 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
193 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
194 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
195 _______, _______, _______, _______, _______,
196
197 _______, _______,
198 _______,
199 _______, _______, _______,
200
201 // right hand
202 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
203 _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
204 KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
205 _______, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
206 _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
207
208 _______, _______,
209 _______,
210 _______, _______, _______
211),
212
213/* Raise
214 *
215 * ,---------------------------------------------------. ,--------------------------------------------------.
216 * | Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | F11 |
217 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
218 * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
219 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
220 * | Del | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | - | = | [ | ] | \ |
221 * |---------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
222 * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
223 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
224 * | | | | | | | | Next | Vol- | Vol+ | Play |
225 * `-----------------------------------' `----------------------------------'
226 * ,-------------. ,-------------.
227 * |Animat| | |Toggle|Solid |
228 * ,------|------|------| |------+------+------.
229 * |Bright|Bright| | | |Hue- |Hue+ |
230 * |ness- |ness+ |------| |------| | |
231 * | | | | | | | |
232 * `--------------------' `--------------------'
233 */
234[_RAISE] = LAYOUT_ergodox(
235 // left hand
236 VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
237 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______,
238 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
239 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
240 _______, _______, _______, _______, _______,
241
242 _______, _______,
243 _______,
244 _______, _______, _______,
245
246 // right hand
247 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
248 _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
249 KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
250 _______, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
251 _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
252
253 _______, _______,
254 _______,
255 _______, _______, _______
256),
257
258/* Adjust
259 *
260 * ,--------------------------------------------------. ,--------------------------------------------------.
261 * |Version | | | | | | | | | | | | | | |
262 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
263 * | |Reset |Debug | | | | | | | |TRM on|TRMoff| | | Del |
264 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
265 * | | | | | |AG Nrm|------| |------|AG Swp|QWERTY|Wrkman|Dvorak| | |
266 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
267 * | | | | | | | | | | | | Prev | Next | | |
268 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
269 * | | | | | | |VolUp |VolDn | Mute | | |
270 * `----------------------------------' `----------------------------------'
271 * ,-------------. ,-------------.
272 * | | | | | |
273 * ,------|------|------| |------+------+------.
274 * | | | | | | | |
275 * | | |------| |------| | |
276 * | | | | | | | |
277 * `--------------------' `--------------------'
278 */
279[_ADJUST] = LAYOUT_ergodox(
280 // left hand
281 VRSN, _______, _______, _______, _______, _______, _______,
282 _______, RESET, DEBUG, _______, _______, _______, _______,
283 _______, _______, _______, _______, _______, AG_NORM,
284 _______, _______, _______, _______, _______, _______, _______,
285 _______, _______, _______, _______, _______,
286
287 _______, _______,
288 _______,
289 _______, _______, _______,
290
291 // right hand
292 _______, _______, _______, _______, _______, _______, _______,
293 _______, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
294 AG_SWAP, QWERTY, WORKMAN, DVORAK, _______, _______,
295 _______, _______, _______, _______, _______, _______, _______,
296 _______, _______, _______, _______, _______,
297
298 _______, _______,
299 _______,
300 _______, _______, _______
301),
302
303/* Keymap 2: Media and mouse keys
304 *
305 * ,--------------------------------------------------. ,--------------------------------------------------.
306 * | | | | | | | | | | | | | | | |
307 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
308 * | | | Lclk | MsUp | Rclk |Wh Up | | | | | | | | | |
309 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
310 * | | |MsLeft|MsDown|MsRght|Wh Dn |------| |------| | | | | | Play |
311 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
312 * | | | | | | | | | | | | Prev | Next | | |
313 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
314 * | | | | | | |VolUp |VolDn | Mute | | |
315 * `----------------------------------' `----------------------------------'
316 * ,-------------. ,-------------.
317 * | | | | | |
318 * ,------|------|------| |------+------+------.
319 * | | | | | |Brwser|Brwser|
320 * | Lclk | Rclk |------| |------|Back |Fwd |
321 * | | | | | | | |
322 * `--------------------' `--------------------'
323 */
324// MOUSE
325[_MOUSE] = LAYOUT_ergodox(
326 // left hand
327 _______, _______, _______, _______, _______, _______, _______,
328 _______, _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_D, _______,
329 _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U,
330 _______, _______, KC_WH_L, KC_BTN3, KC_WH_R, _______, TO(_GAME),
331 _______, _______, _______, _______, _______,
332
333 _______, _______,
334 KC_WH_D,
335 KC_BTN1, KC_BTN2, KC_WH_U,
336
337 // right hand
338 _______, _______, _______, _______, _______, _______, _______,
339 _______, _______, _______, _______, _______, _______, _______,
340 _______, _______, _______, _______, _______, KC_MPLY,
341 TO(_GAME), _______, _______, KC_MPRV, KC_MNXT, _______, _______,
342 KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
343
344 _______, _______,
345 _______,
346 _______, KC_WBAK, KC_WFWD
347),
348
349/* Keymap 2: GAME
350 *
351 * ,--------------------------------------------------. ,--------------------------------------------------.
352 * | | | | | | | | | | | | | | | |
353 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
354 * | | | Lclk | MsUp | Rclk | | | | | | | | | | |
355 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
356 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
357 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
358 * | | | | | | | | | | | | Prev | Next | | |
359 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
360 * | | | | | | |VolUp |VolDn | Mute | | |
361 * `----------------------------------' `----------------------------------'
362 * ,-------------. ,-------------.
363 * | | | | | |
364 * ,------|------|------| |------+------+------.
365 * | | | | | |Brwser|Brwser|
366 * | Lclk | Rclk |------| |------|Back |Fwd |
367 * | | | | | | | |
368 * `--------------------' `--------------------'
369 */
370[_GAME] = LAYOUT_ergodox(
371 // left hand
372 _______, _______, _______, _______, _______, _______, _______,
373 _______, _______, _______, _______, _______, _______, _______,
374 _______, _______, _______, _______, _______, _______,
375 _______, _______, _______, _______, _______, _______, _______,
376 _______, _______, _______, _______, _______,
377
378 _______, _______,
379 _______,
380 KC_SPACE, KC_LGUI, KC_LALT,
381
382 // right hand
383 _______, _______, _______, _______, _______, _______, _______,
384 _______, _______, _______, _______, _______, _______, _______,
385 _______, _______, _______, _______, _______, _______,
386 _______, _______, _______, _______, _______, _______, _______,
387 _______, _______, _______, _______, _______,
388
389 TG(_MOUSE), TG(_NUM),
390 _______,
391 _______, _______, _______
392),
393
394
395/* Keymap 2: NUMPAD
396 *
397 * ,--------------------------------------------------. ,--------------------------------------------------.
398 * | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
399 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
400 * | | ! | @ | { | } | | | | | | | 7 | 8 | 9 | * | |
401 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
402 * | | # | $ | ( | ) | ` |------| |------| | 4 | 5 | 6 | + | |
403 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
404 * | | % | ^ | [ | ] | ~ | | | | | 1 | 2 | 3 | \ | |
405 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
406 * | | | | | | | . | 0 | 0 | = | |
407 * `----------------------------------' `----------------------------------'
408 * ,-------------. ,-------------.
409 * | | | | | |
410 * ,------|------|------| |------+------+------.
411 * | | | | | | | |
412 * | | |------| |------| | |
413 * | | | | | | | |
414 * `--------------------' `--------------------'
415 */
416[_NUM] = LAYOUT_ergodox(
417 // left hand
418 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
419 _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______,
420 _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
421 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______,
422 _______, _______, _______, _______, _______,
423
424 _______, _______,
425 _______,
426 _______, _______, _______,
427
428 // right hand
429 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
430 _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, _______,
431 _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______,
432 _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______,
433 KC_KP_DOT, KC_KP_0, KC_KP_0, KC_KP_EQUAL, _______,
434
435 _______, _______,
436 _______,
437 _______, _______, _______
438),
439
440};
441
442const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
443{
444 // MACRODOWN only works in this function
445 switch(id) {
446 case 0:
447 if (record->event.pressed) {
448 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
449 }
450 break;
451 case 1:
452 if (record->event.pressed) { // For resetting EEPROM
453 eeconfig_init();
454 }
455 break;
456 }
457 return MACRO_NONE;
458};
459
460bool process_record_user(uint16_t keycode, keyrecord_t *record) {
461 switch (keycode) {
462 case QWERTY:
463 if (record->event.pressed) {
464 print("mode just switched to qwerty and this is a huge string\n");
465 set_single_persistent_default_layer(_QWERTY);
466 }
467 return false;
468 break;
469 case WORKMAN:
470 if (record->event.pressed) {
471 set_single_persistent_default_layer(_WORKMAN);
472 }
473 return false;
474 break;
475 case DVORAK:
476 if (record->event.pressed) {
477 set_single_persistent_default_layer(_DVORAK);
478 }
479 return false;
480 break;
481 case LOWER:
482 if (record->event.pressed) {
483 layer_on(_LOWER);
484 update_tri_layer(_LOWER, _RAISE, _ADJUST);
485 if (IS_LAYER_ON(_ADJUST)) {
486 layer_off(_LOWER);
487 layer_off(_RAISE);
488 }
489 } else {
490 layer_off(_LOWER);
491 if (IS_LAYER_ON(_ADJUST)) {
492 layer_off(_ADJUST);
493 layer_on(_RAISE);
494 }
495 }
496 return false;
497 break;
498 case RAISE:
499 if (record->event.pressed) {
500 layer_on(_RAISE);
501 update_tri_layer(_LOWER, _RAISE, _ADJUST);
502 if (IS_LAYER_ON(_ADJUST)) {
503 layer_off(_RAISE);
504 layer_off(_LOWER);
505 }
506 } else {
507 layer_off(_RAISE);
508 if (IS_LAYER_ON(_ADJUST)) {
509 layer_off(_ADJUST);
510 layer_on(_LOWER);
511 }
512 }
513 return false;
514 break;
515 case EPRM:
516 if (record->event.pressed) {
517 eeconfig_init();
518 }
519 return false;
520 break;
521 case VRSN:
522 if (record->event.pressed) {
523 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
524 }
525 return false;
526 break;
527 case RGB_SLD:
528 if (record->event.pressed) {
529 #ifdef RGBLIGHT_ENABLE
530 rgblight_mode(1);
531 #endif
532 }
533 return false;
534 break;
535 }
536 return true;
537}
538
539/**
540 * Runs just one time when the keyboard initializes.
541 */
542void matrix_init_user(void) {
543
544};
545
546/**
547 * Runs constantly in the background, in a loop.
548 */
549void matrix_scan_user(void) {
550 uint8_t layer = biton32(layer_state);
551
552 ergodox_board_led_off();
553 ergodox_right_led_1_off();
554 ergodox_right_led_2_off();
555 ergodox_right_led_3_off();
556
557 switch (layer) {
558 case _LOWER:
559 ergodox_right_led_1_on();
560 break;
561 case _RAISE:
562 ergodox_right_led_2_on();
563 break;
564 case _ADJUST:
565 ergodox_right_led_3_on();
566 break;
567 }
568};
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c
new file mode 100644
index 000000000..034f15270
--- /dev/null
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c
@@ -0,0 +1,345 @@
1/*
2Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18/**
19 * Currently we are assuming that both the backlight and LCD are enabled
20 * But it's entirely possible to write a custom visualizer that use only
21 * one of them
22 */
23#ifndef LCD_BACKLIGHT_ENABLE
24#error This visualizer needs that LCD backlight is enabled
25#endif
26
27#ifndef LCD_ENABLE
28#error This visualizer needs that LCD is enabled
29#endif
30
31#include "visualizer.h"
32#include "visualizer_keyframes.h"
33#include "lcd_keyframes.h"
34#include "lcd_backlight_keyframes.h"
35#include "system/serial_link.h"
36#include "default_animations.h"
37
38static const uint32_t logo_background_color = LCD_COLOR(0, 0, 255);
39static const uint32_t initial_color = LCD_COLOR(84, 255, 255);
40
41static const uint32_t led_emulation_colors[4] = {
42 LCD_COLOR(0, 0, 255),
43 LCD_COLOR(141, 255, 255),
44 LCD_COLOR(18, 255, 255),
45 LCD_COLOR(194, 255, 255),
46};
47
48static uint32_t next_led_target_color = 0;
49
50typedef enum {
51 LCD_STATE_INITIAL,
52 LCD_STATE_LAYER_BITMAP,
53 LCD_STATE_BITMAP_AND_LEDS,
54} lcd_state_t;
55
56static lcd_state_t lcd_state = LCD_STATE_INITIAL;
57
58typedef struct {
59 uint8_t led_on;
60 uint8_t led1;
61 uint8_t led2;
62 uint8_t led3;
63} visualizer_user_data_t;
64
65/**
66 * Don't access from visualization function, use the visualizer state instead
67 */
68static visualizer_user_data_t user_data_keyboard = {
69 .led_on = 0,
70 .led1 = LED_BRIGHTNESS_HI,
71 .led2 = LED_BRIGHTNESS_HI,
72 .led3 = LED_BRIGHTNESS_HI,
73};
74
75_Static_assert(sizeof(visualizer_user_data_t) <= VISUALIZER_USER_DATA_SIZE,
76 "Please increase the VISUALIZER_USER_DATA_SIZE");
77
78// Feel free to modify the animations below, or even add new ones if needed
79
80// The color animation animates the LCD color when you change layers
81static keyframe_animation_t one_led_color = {
82 .num_frames = 1,
83 .loop = false,
84 .frame_lengths = {gfxMillisecondsToTicks(0)},
85 .frame_functions = {lcd_backlight_keyframe_set_color},
86};
87
88bool swap_led_target_color(keyframe_animation_t* animation, visualizer_state_t* state) {
89 uint32_t temp = next_led_target_color;
90 next_led_target_color = state->target_lcd_color;
91 state->target_lcd_color = temp;
92 return false;
93}
94
95// The color animation animates the LCD color when you change layers
96static keyframe_animation_t two_led_colors = {
97 .num_frames = 2,
98 .loop = true,
99 .frame_lengths = {gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(0)},
100 .frame_functions = {lcd_backlight_keyframe_set_color, swap_led_target_color},
101};
102
103/**
104 * The LCD animation alternates between the layer name display and a
105 * bitmap that displays all active layers
106 */
107static keyframe_animation_t lcd_bitmap_animation = {
108 .num_frames = 1,
109 .loop = false,
110 .frame_lengths = {gfxMillisecondsToTicks(0)},
111 .frame_functions = {lcd_keyframe_display_layer_bitmap},
112};
113
114static keyframe_animation_t lcd_bitmap_leds_animation = {
115 .num_frames = 2,
116 .loop = true,
117 .frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)},
118 .frame_functions = {lcd_keyframe_display_layer_bitmap, lcd_keyframe_display_led_states},
119};
120
121void initialize_user_visualizer(visualizer_state_t* state) {
122 /**
123 * The brightness will be dynamically adjustable in the future
124 * But for now, change it here.
125 */
126 lcd_backlight_brightness(180);
127 state->current_lcd_color = initial_color;
128 state->target_lcd_color = logo_background_color;
129 lcd_state = LCD_STATE_INITIAL;
130 start_keyframe_animation(&default_startup_animation);
131}
132
133static inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
134 return user_data->led_on & (1u << num);
135}
136
137static uint8_t get_led_index_master(visualizer_user_data_t* user_data) {
138 for (int i=0; i < 4; i++) {
139 if (is_led_on(user_data, i)) {
140 return i + 1;
141 }
142 }
143 return 0;
144}
145
146static uint8_t get_led_index_slave(visualizer_user_data_t* user_data) {
147 uint8_t master_index = get_led_index_master(user_data);
148 if (master_index!=0) {
149 for (int i=master_index; i < 4; i++) {
150 if (is_led_on(user_data, i)) {
151 return i + 1;
152 }
153 }
154 }
155
156 return 0;
157}
158
159static uint8_t get_secondary_led_index(visualizer_user_data_t* user_data) {
160 if (
161 is_led_on(user_data, 0) &&
162 is_led_on(user_data, 1) &&
163 is_led_on(user_data, 2)
164 ) {
165 return 3;
166 }
167 return 0;
168}
169
170static uint8_t get_brightness(visualizer_user_data_t* user_data, uint8_t index) {
171 switch (index) {
172 case 1:
173 return user_data->led1;
174 case 2:
175 return user_data->led2;
176 case 3:
177 return user_data->led3;
178 }
179 return 0;
180}
181
182static void update_emulated_leds(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
183 visualizer_user_data_t* user_data_new = (visualizer_user_data_t*)state->status.user_data;
184 visualizer_user_data_t* user_data_old = (visualizer_user_data_t*)prev_status->user_data;
185
186 uint8_t new_index;
187 uint8_t old_index;
188
189 if (true || is_serial_link_master()) {
190 new_index = get_led_index_master(user_data_new);
191 old_index = get_led_index_master(user_data_old);
192 } else {
193 new_index = get_led_index_slave(user_data_new);
194 old_index = get_led_index_slave(user_data_old);
195 }
196
197 uint8_t new_secondary_index = get_secondary_led_index(user_data_new);
198 uint8_t old_secondary_index = get_secondary_led_index(user_data_old);
199
200 uint8_t new_brightness = get_brightness(user_data_new, new_index);
201 uint8_t old_brightness = get_brightness(user_data_old, old_index);
202
203 uint8_t new_secondary_brightness = get_brightness(user_data_new, new_secondary_index);
204 uint8_t old_secondary_brightness = get_brightness(user_data_old, old_secondary_index);
205
206 if (
207 lcd_state == LCD_STATE_INITIAL ||
208 new_index != old_index ||
209 new_secondary_index != old_secondary_index ||
210 new_brightness != old_brightness ||
211 new_secondary_brightness != old_secondary_brightness
212 ) {
213 if (new_secondary_index != 0) {
214 state->target_lcd_color = change_lcd_color_intensity(
215 led_emulation_colors[new_index], new_brightness);
216 next_led_target_color = change_lcd_color_intensity(
217 led_emulation_colors[new_secondary_index], new_secondary_brightness);
218
219 stop_keyframe_animation(&one_led_color);
220 start_keyframe_animation(&two_led_colors);
221 } else {
222 state->target_lcd_color = change_lcd_color_intensity(
223 led_emulation_colors[new_index], new_brightness);
224
225 stop_keyframe_animation(&two_led_colors);
226 start_keyframe_animation(&one_led_color);
227 }
228 }
229}
230
231static void update_lcd_text(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
232 if (state->status.leds) {
233 if (
234 lcd_state != LCD_STATE_BITMAP_AND_LEDS ||
235 state->status.leds != prev_status->leds ||
236 state->status.layer != prev_status->layer ||
237 state->status.default_layer != prev_status->default_layer
238 ) {
239 // NOTE: that it doesn't matter if the animation isn't playing, stop will do nothing in that case
240 stop_keyframe_animation(&lcd_bitmap_animation);
241
242 lcd_state = LCD_STATE_BITMAP_AND_LEDS;
243 /**
244 * For information:
245 * The logic in this function makes sure that this doesn't happen, but if you call start on an
246 * animation that is already playing it will be restarted.
247 */
248 start_keyframe_animation(&lcd_bitmap_leds_animation);
249 }
250 } else {
251 if (
252 lcd_state != LCD_STATE_LAYER_BITMAP ||
253 state->status.layer != prev_status->layer ||
254 state->status.default_layer != prev_status->default_layer
255 ) {
256 stop_keyframe_animation(&lcd_bitmap_leds_animation);
257
258 lcd_state = LCD_STATE_LAYER_BITMAP;
259 start_keyframe_animation(&lcd_bitmap_animation);
260 }
261 }
262}
263
264void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
265 /**
266 * Check the status here to start and stop animations
267 * You might have to save some state, like the current animation here so that you can start the right
268 * This function is called every time the status changes
269 *
270 * NOTE that this is called from the visualizer thread, so don't access anything else outside the status
271 * This is also important because the slave won't have access to the active layer for example outside the
272 * status.
273 */
274
275 update_emulated_leds(state, prev_status);
276 update_lcd_text(state, prev_status);
277}
278
279void user_visualizer_suspend(visualizer_state_t* state) {
280 state->layer_text = "Suspending...";
281 uint8_t hue = LCD_HUE(state->current_lcd_color);
282 uint8_t sat = LCD_SAT(state->current_lcd_color);
283 state->target_lcd_color = LCD_COLOR(hue, sat, 0);
284 start_keyframe_animation(&default_suspend_animation);
285}
286
287void user_visualizer_resume(visualizer_state_t* state) {
288 state->current_lcd_color = initial_color;
289 state->target_lcd_color = logo_background_color;
290 lcd_state = LCD_STATE_INITIAL;
291 start_keyframe_animation(&default_startup_animation);
292}
293
294void ergodox_board_led_on(void){
295 // No board led support
296}
297
298void ergodox_right_led_1_on(void){
299 user_data_keyboard.led_on |= (1u << 0);
300 visualizer_set_user_data(&user_data_keyboard);
301}
302
303void ergodox_right_led_2_on(void){
304 user_data_keyboard.led_on |= (1u << 1);
305 visualizer_set_user_data(&user_data_keyboard);
306}
307
308void ergodox_right_led_3_on(void){
309 user_data_keyboard.led_on |= (1u << 2);
310 visualizer_set_user_data(&user_data_keyboard);
311}
312
313void ergodox_board_led_off(void){
314 // No board led support
315}
316
317void ergodox_right_led_1_off(void){
318 user_data_keyboard.led_on &= ~(1u << 0);
319 visualizer_set_user_data(&user_data_keyboard);
320}
321
322void ergodox_right_led_2_off(void){
323 user_data_keyboard.led_on &= ~(1u << 1);
324 visualizer_set_user_data(&user_data_keyboard);
325}
326
327void ergodox_right_led_3_off(void){
328 user_data_keyboard.led_on &= ~(1u << 2);
329 visualizer_set_user_data(&user_data_keyboard);
330}
331
332void ergodox_right_led_1_set(uint8_t n) {
333 user_data_keyboard.led1 = n;
334 visualizer_set_user_data(&user_data_keyboard);
335}
336
337void ergodox_right_led_2_set(uint8_t n) {
338 user_data_keyboard.led2 = n;
339 visualizer_set_user_data(&user_data_keyboard);
340}
341
342void ergodox_right_led_3_set(uint8_t n) {
343 user_data_keyboard.led3 = n;
344 visualizer_set_user_data(&user_data_keyboard);
345}
diff --git a/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c b/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c
new file mode 100644
index 000000000..72ee2bc6f
--- /dev/null
+++ b/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c
@@ -0,0 +1,275 @@
1// Nordic layout for Ergodox infinity
2
3#include QMK_KEYBOARD_H
4#include "debug.h"
5#include "action_layer.h"
6#include "version.h"
7#include "keymap_nordic.h"
8#include "keymap_german.h"
9
10// Layer names
11#define BASE 0 // default layer
12#define FUNCL 1 // function layer
13#define SYMB 2 // symbol layer
14#define MDIA 3 // media keys
15
16#define _______ KC_TRNS
17
18enum custom_keycodes {
19 PLACEHOLDER = SAFE_RANGE, // can always be here
20 EPRM,
21 VRSN,
22 RGB_SLD
23};
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26/* Keymap 0: Basic layer
27 *
28 *
29 *
30 * ,--------------------------------------------------. ,--------------------------------------------------.
31 * | Esc | 1 | 2 | 3 | 4 | 5 | §½ | | PRSC | 6 | 7 | 8 | 9 | 0 | - |
32 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
33 * | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Å |
34 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
35 * | Caps | A | S | D | F | G |------| |------| H | J | K | L | Ö | Ä |
36 * |--------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
37 * | LShift | Z | X | C | V | B | | | | N | M | , | . | - | RShift |
38 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
39 * | Ctrl | ¨^ | <|> | Alt | LGui| | Ctrl | Alt | ´` | + | RGui |
40 * `----------------------------------' `----------------------------------'
41 * ,-------------. ,-------------.
42 * | LEFT |RIGHT | | DOWN | UP |
43 * ,------+------+------| |------+--------+------.
44 * | | | Home | | PgUp | | |
45 * | Space|Del |------| |------| Enter | Bkspc|
46 * | | | End | | PgDn | | |
47 * `--------------------' `----------------------'
48 */
49
50[BASE] = LAYOUT_ergodox( // layer 0 : default
51 // left hand
52 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV,
53 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1),
54 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
55 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(2),
56 KC_LCTRL, KC_RBRC, KC_NONUS_BSLASH, KC_LALT, KC_LGUI,
57 KC_LEFT, KC_RIGHT,
58 KC_HOME,
59 KC_SPC,KC_DELT,KC_END,
60 // right hand
61 KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
62 TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
63 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
64 MO(2), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
65 KC_RCTRL, KC_RALT, KC_BSLS, KC_EQL, KC_RGUI,
66 KC_DOWN, KC_UP,
67 KC_PGUP,
68 KC_PGDN, KC_ENT, KC_BSPC
69 ),
70
71/* Keymap 1: Basic layer with functions
72 *
73 *
74 *
75 * ,--------------------------------------------------. ,--------------------------------------------------.
76 * | Esc | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | 0 | - |
77 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
78 * | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Å |
79 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
80 * | Caps | A | S | D | F | G |------| |------| H | J | K | L | Ö | Ä |
81 * |--------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
82 * | LShift | Z | X | C | V | B | | | | N | M | , | . | - | RShift |
83 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
84 * | Ctrl | ¨^ | <|> | Alt | LGui| | Ctrl | Alt | ´` | + | RGui |
85 * `----------------------------------' `----------------------------------'
86 * ,-------------. ,-------------.
87 * | LEFT |RIGHT | | DOWN | UP |
88 * ,------+------+------| |------+--------+------.
89 * | | | Home | | PgUp | | |
90 * | Space|Del |------| |------| Enter | Bkspc|
91 * | | | End | | PgDn | | |
92 * `--------------------' `----------------------'
93 */
94
95[FUNCL] = LAYOUT_ergodox( // layer 1 : functions
96 // left hand
97 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
98 _______, _______, _______, _______, _______, _______, _______,
99 _______, _______, _______, _______, _______, _______,
100 _______, _______, _______, _______, _______, _______, _______,
101 _______, _______, _______, _______, _______,
102 _______, _______,
103 _______,
104 _______,_______,_______,
105 // right hand
106 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
107 _______, _______, _______, _______, _______, _______, _______,
108 _______, _______, _______, _______, _______, _______,
109 _______, _______, _______, _______, _______, _______, _______,
110 _______, _______, _______, _______, _______,
111 _______, _______,
112 _______,
113 _______, _______, _______
114),
115
116/* Keymap 2: Symbol Layer
117 *
118 * ,--------------------------------------------------. ,--------------------------------------------------.
119 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
120 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
121 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
122 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
123 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
124 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
125 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
126 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
127 * | | | | | | | | . | 0 | = | |
128 * `----------------------------------' `----------------------------------'
129 * ,-------------. ,-------------.
130 * |Animat| BLTOG| |Toggle|Solid |
131 * ,------|------|------| |------+------+------.
132 * |Bright|Bright| BL+ | | |Hue- |Hue+ |
133 * |ness- |ness+ |------| |------| | |
134 * | | | BL- | | | | |
135 * `--------------------' `--------------------'
136 */
137// SYMBOLS
138[SYMB] = LAYOUT_ergodox(
139 // left hand
140 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
141 KC_TRNS,DE_EXLM,DE_AT, DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
142 KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
143 KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
144 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
145 RGB_MOD,BL_TOGG,
146 BL_INC,
147 RGB_VAD,RGB_VAI,BL_DEC,
148 // right hand
149 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
150 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, DE_ASTR, KC_F12,
151 KC_DOWN, KC_4, KC_5, KC_6, DE_PLUS, KC_TRNS,
152 KC_TRNS, DE_AMPR, KC_1, KC_2, KC_3, DE_BSLS, KC_TRNS,
153 KC_TRNS,KC_DOT, KC_0, DE_EQL, KC_TRNS,
154 RGB_TOG, RGB_SLD,
155 KC_TRNS,
156 KC_TRNS, RGB_HUD, RGB_HUI
157),
158
159/* Keymap 3: Media and mouse keys
160 *
161 * ,--------------------------------------------------. ,--------------------------------------------------.
162 * | RESET | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
163 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
164 * | | | Lclk | MsUp | Rclk | | | | | |VolDwn| Mute |VolUp | | F12 |
165 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
166 * | | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------| |------| | Prev | Stop | Play | Next | |
167 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
168 * | |WhRght|WhDown| WhUp |WhLeft|WhClk | | | |BwSrch|BwBack|BwHome|BwRefr|BwFwd | |
169 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
170 * | | |MsAcl0|MsAcl1|MsAcl2| | | | | | |
171 * `----------------------------------' `----------------------------------'
172 * ,-------------. ,-------------.
173 * | | | | | |
174 * ,------|------|------| |------+------+------.
175 * | | | | | |Brwser|Brwser|
176 * | Lclk | Rclk |------| |------|Back |Forwd |
177 * | | | | | | | |
178 * `--------------------' `--------------------'
179 */
180// MEDIA AND MOUSE
181[MDIA] = LAYOUT_ergodox(
182 RESET, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS,
183 KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
184 KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
185 KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
186 KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
187 KC_TRNS, KC_TRNS,
188 KC_TRNS,
189 KC_BTN1, KC_BTN2, KC_TRNS,
190 // right hand
191 KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11,
192 KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
193 KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
194 KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
195 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
196 KC_TRNS, KC_TRNS,
197 KC_TRNS,
198 KC_TRNS, KC_WBAK, KC_WFWD
199),
200};
201
202const uint16_t PROGMEM fn_actions[] = {
203 [2] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 2 (Symbols)
204};
205
206const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
207{
208 // MACRODOWN only works in this function
209 switch(id) {
210 case 0:
211 if (record->event.pressed) {
212 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
213 }
214 break;
215 case 1:
216 if (record->event.pressed) { // For resetting EEPROM
217 eeconfig_init();
218 }
219 break;
220 }
221 return MACRO_NONE;
222};
223
224bool process_record_user(uint16_t keycode, keyrecord_t *record) {
225 switch (keycode) {
226 // dynamically generate these.
227 case EPRM:
228 if (record->event.pressed) {
229 eeconfig_init();
230 }
231 return false;
232 break;
233 case VRSN:
234 if (record->event.pressed) {
235 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
236 }
237 return false;
238 break;
239 case RGB_SLD:
240 if (record->event.pressed) {
241 #ifdef RGBLIGHT_ENABLE
242 rgblight_mode(1);
243 #endif
244 }
245 return false;
246 break;
247 }
248 return true;
249}
250
251// Runs just one time when the keyboard initializes.
252void matrix_init_user(void) {
253
254};
255
256// Runs constantly in the background, in a loop.
257void matrix_scan_user(void) {
258
259 uint8_t layer = biton32(layer_state);
260 ergodox_board_led_off();
261 ergodox_right_led_1_off();
262 ergodox_right_led_2_off();
263 ergodox_right_led_3_off();
264 switch (layer) {
265 case 1:
266 ergodox_right_led_1_on();
267 break;
268 case 2:
269 ergodox_right_led_2_on();
270 break;
271 default:
272 // none
273 break;
274 }
275}; \ No newline at end of file
diff --git a/keyboards/ergodox_infinity/keymaps/nordic_ergo/readme.md b/keyboards/ergodox_infinity/keymaps/nordic_ergo/readme.md
new file mode 100644
index 000000000..2ed526864
--- /dev/null
+++ b/keyboards/ergodox_infinity/keymaps/nordic_ergo/readme.md
@@ -0,0 +1,9 @@
1# Nordic Ergodox Infinity layout
2
3QWERTY Nordic layout for ergodox infinity.
4
5Features:
6
7- Basic ISO Nordic qwerty layout.
8- Backlight control.
9- Still work in progress. \ No newline at end of file
diff --git a/keyboards/ergodox_infinity/readme.md b/keyboards/ergodox_infinity/readme.md
index 7b8c1df3a..d712bb880 100644
--- a/keyboards/ergodox_infinity/readme.md
+++ b/keyboards/ergodox_infinity/readme.md
@@ -19,7 +19,7 @@ for the left and right halves seperately. To flash them:
19 19
20 - Press the program button (back of keyboard, above thumb pad). 20 - Press the program button (back of keyboard, above thumb pad).
21 21
22 - Install the firmware with `sudo make ergodox_infinity-keymapname-dfu-util MASTER=right` 22 - Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util MASTER=right`
23 23
24More information on the Infinity firmware is available in the [TMK/chibios for 24More information on the Infinity firmware is available in the [TMK/chibios for
25Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md) 25Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/config.h b/keyboards/frosty_flake/keymaps/QFR_JM/config.h
index 8893d122e..b25194014 100644
--- a/keyboards/frosty_flake/keymaps/QFR_JM/config.h
+++ b/keyboards/frosty_flake/keymaps/QFR_JM/config.h
@@ -1,3 +1,6 @@
1
2#define TAPPING_TERM 150 //reduce time required to register a held key
3
1#ifndef CONFIG_USER_H 4#ifndef CONFIG_USER_H
2#define CONFIG_USER_H 5#define CONFIG_USER_H
3 6
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/keymap.c b/keyboards/frosty_flake/keymaps/QFR_JM/keymap.c
index 2b5444aff..709ab6c21 100644
--- a/keyboards/frosty_flake/keymaps/QFR_JM/keymap.c
+++ b/keyboards/frosty_flake/keymaps/QFR_JM/keymap.c
@@ -7,12 +7,14 @@
7 7
8enum QFR_layers { 8enum QFR_layers {
9 _COLEMAK, 9 _COLEMAK,
10 _QWERTY,
10 _LOWER, 11 _LOWER,
11 _MOUSE 12 _MOUSE
12}; 13};
13 14
14enum QFR_keycodes { 15enum QFR_keycodes {
15 COLEMAK = SAFE_RANGE, 16 COLEMAK = SAFE_RANGE,
17 QWERTY,
16 LOWER, 18 LOWER,
17 MOUSE 19 MOUSE
18}; 20};
@@ -40,8 +42,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
40 KC_LCTL,KC_LGUI, KC_LALT, SPC_LW, MSE, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT 42 KC_LCTL,KC_LGUI, KC_LALT, SPC_LW, MSE, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
41 ), 43 ),
42 44
45[_QWERTY] = KEYMAP_TKL(\
46 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
47 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
48 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
49 KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
50 KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
51 KC_LCTL,KC_LGUI,KC_LALT, SPC_LW, MSE, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
52 ),
53
43[_LOWER] = KEYMAP_TKL(\ 54[_LOWER] = KEYMAP_TKL(\
44 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______, \ 55 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK,_______, \
45 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_BSPC, _______,_______,_______, \ 56 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_BSPC, _______,_______,_______, \
46 KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE, _______,_______,_______, \ 57 KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE, _______,_______,_______, \
47 KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, _______, _______, \ 58 KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, _______, _______, \
@@ -58,3 +69,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
58 _______, _______, _______, KC_ACL2, MSE, _______, _______, _______, _______,_______,_______ \ 69 _______, _______, _______, KC_ACL2, MSE, _______, _______, _______, _______,_______,_______ \
59 ) 70 )
60}; 71};
72
73bool process_record_user(uint16_t keycode, keyrecord_t *record) {
74 switch (keycode) {
75 case QWERTY:
76 if (record->event.pressed) {
77 //print("mode just switched to qwerty and this is a huge string\n");
78 set_single_persistent_default_layer(_QWERTY);
79 }
80 return false;
81 break;
82 case COLEMAK:
83 if (record->event.pressed) {
84 set_single_persistent_default_layer(_COLEMAK);
85 }
86 return false;
87 break;
88 }
89 return true;
90} \ No newline at end of file
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/readme.md b/keyboards/frosty_flake/keymaps/QFR_JM/readme.md
index 6c7fabd18..396337440 100644
--- a/keyboards/frosty_flake/keymaps/QFR_JM/readme.md
+++ b/keyboards/frosty_flake/keymaps/QFR_JM/readme.md
@@ -1,7 +1,15 @@
1# TKL keymap for frosty_flake
2 1
3##Layers 2# TKL keymap for frosty\_flake
3```
4make frosty_flake:QFR_JM
5
6dfu-programmer atmega32u2 erase
7dfu-programmer atmega32u2 flash frosty_flake_QFR_JM.hex
8dfu-programmer atmega32u2 start
9```
4 10
11##Layers
12```
5 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------. 13 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------.
6 |ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk| 14 |ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk|
7 '----' '-------------------' '-------------------' '-------------------' '--------------' 15 '----' '-------------------' '-------------------' '-------------------' '--------------'
@@ -17,20 +25,21 @@
17 |Ctrl|LGUI|LAlt| Space/Lower |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght| 25 |Ctrl|LGUI|LAlt| Space/Lower |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght|
18 '-------------------------------------------------------------------------' '--------------' 26 '-------------------------------------------------------------------------' '--------------'
19 27
28```
20### Base Layer - Colemak 29### Base Layer - Colemak
21 * The base layout is Colemak. 30The base layout is Colemak by default, but this can be changed to QWERTY via the *LOWER* layer.
22 * I've implemented COLEMAK = SAFE_RANGE when enumerating the custom_keycodes, but I don't actually know what this does... 31* I've implemented COLEMAK = SAFE\_RANGE when enumerating the custom\_keycodes, but I don't actually know what this does...
23 32
24 * Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses) 33* Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
25 34
26 #### Layer Shifting 35#### Layer Shifting
27 * The spacebar is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space. 36* The spacebar is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space.
28 * The Right hand ALT key is a **TAP_TOGGLE** macro for the *MOUSE* layer (RAlt is accessible through LOWER, if you want...) 37* The Right hand ALT key is a **TAP_TOGGLE** macro for the *MOUSE* layer (RAlt is accessible through LOWER, if you want...)
29 38
30### LOWER 39### LOWER
31 40```
32 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------. 41 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------.
33 |ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk| 42 |ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |QWTY|CLMK|PsBk|
34 '----' '-------------------' '-------------------' '-------------------' '--------------' 43 '----' '-------------------' '-------------------' '-------------------' '--------------'
35 ,-------------------------------------------------------------------------. ,--------------. 44 ,-------------------------------------------------------------------------. ,--------------.
36 | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | Bspc | | Ins|Home|PgUp| 45 | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | Bspc | | Ins|Home|PgUp|
@@ -41,17 +50,19 @@
41 |-------------------------------------------------------------------------| ,----. 50 |-------------------------------------------------------------------------| ,----.
42 | LSPO | Z | X | C | V | | | | , | . | / | RSPC | | Up | 51 | LSPO | Z | X | C | V | | | | , | . | / | RSPC | | Up |
43 |-------------------------------------------------------------------------| ,--------------. 52 |-------------------------------------------------------------------------| ,--------------.
44 |Ctrl|LGUI|LAlt| |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght| 53 |Ctrl|LGUI|LAlt| |RAlt|RGUI|Menu|Ctrl| |Left|Down|Rght|
45 '-------------------------------------------------------------------------' '--------------' 54 '-------------------------------------------------------------------------' '--------------'
46 55```
47 * The *LOWER* layer contains a navigation cluster on the left hand. This layer is momentary when the spacebar or LOWER (RAlt) key is held and toggled on/off when the LOWER key is tapped. 56The *LOWER* layer contains a navigation cluster on the left hand. This layer is momentary when the spacebar or LOWER (RAlt) key is held and toggled on/off when the LOWER key is tapped.
48 57
49 * The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster. 58* The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster.
50 59
51 * All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC_NO), all modifiers (edge |_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (_______) to the Base layer. 60* All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC\_NO), all modifiers (edge |\_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (\_\_\_\_\_\_\_) to the Base layer.
52 61
53### MOUSE 62* The base layer can be switched to QWERTY or COLEMAK by pressing the Pause Break or Scroll Lock keys respectively
54 63
64### MOUSE
65```
55 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------. 66 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------.
56 |ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk| 67 |ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk|
57 '----' '-------------------' '-------------------' '-------------------' '--------------' 68 '----' '-------------------' '-------------------' '-------------------' '--------------'
@@ -66,8 +77,10 @@
66 |-------------------------------------------------------------------------| ,--------------. 77 |-------------------------------------------------------------------------| ,--------------.
67 |Ctrl|LGUI|LAlt| Accel ++ |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght| 78 |Ctrl|LGUI|LAlt| Accel ++ |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght|
68 '-------------------------------------------------------------------------' '--------------' 79 '-------------------------------------------------------------------------' '--------------'
80```
81The *MOUSE* layer contains keys replicating functions found on the mouse.
82
83* The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are analagous to the Page Up & Downkeys.
84* The primary click (right & left) buttons are on the right home row (index & middle fingers)
85* Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function.
69 86
70 * The *MOUSE* layer contains keys replicating functions found on the mouse.
71 * The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are analagous to the Page Up & Down keys.
72 * The primary click (right & left) buttons are on the right home row (index & middle fingers)
73 * Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function.
diff --git a/keyboards/gh60/keymaps/maxr1998/keymap.c b/keyboards/gh60/keymaps/maxr1998/keymap.c
index 74dab4910..daddb18de 100644
--- a/keyboards/gh60/keymaps/maxr1998/keymap.c
+++ b/keyboards/gh60/keymaps/maxr1998/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44 KEYMAP( 44 KEYMAP(
45 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ 45 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_EURO, TP_REQ, TP_ACC, KC_TRNS, MCO_UE, KC_TRNS, MCO_OE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ 46 KC_TRNS, KC_TRNS, KC_TRNS, KC_EURO, TP_REQ, TP_ACC, KC_TRNS, MCO_UE, KC_TRNS, MCO_OE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
47 KC_TRNS, MCO_AE, MCO_SS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_SW,KC_TRNS, KC_TRNS, KC_TRNS,\ 47 KC_TRNS, MCO_AE, MCO_SS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_SW,KC_TRNS, KC_GRV, KC_TRNS,\
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS,\ 48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS,\
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
50}; 50};
diff --git a/keyboards/handwired/terminus_mini/config.h b/keyboards/handwired/terminus_mini/config.h
index 5e32cbaf0..ef9a26a19 100644
--- a/keyboards/handwired/terminus_mini/config.h
+++ b/keyboards/handwired/terminus_mini/config.h
@@ -57,7 +57,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
57#define TAPPING_TOGGLE 1 57#define TAPPING_TOGGLE 1
58 58
59//define maximum duration of hold required to register a tap vs hold default is 200 59//define maximum duration of hold required to register a tap vs hold default is 200
60#define TAPPING_TERM 150 //reduce time required so fast typing doesn't disrupt 60#define TAPPING_TERM 150 //reduce time required to register a held key
61 61
62/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 62/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
63#define DEBOUNCING_DELAY 5 63#define DEBOUNCING_DELAY 5
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/config.h b/keyboards/handwired/terminus_mini/keymaps/default/config.h
index f52a97bbc..34ef67207 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/config.h
+++ b/keyboards/handwired/terminus_mini/keymaps/default/config.h
@@ -14,6 +14,8 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#define TAPPING_TERM 150 //reduce time required to register a held key
18
17#ifndef CONFIG_USER_H 19#ifndef CONFIG_USER_H
18#define CONFIG_USER_H 20#define CONFIG_USER_H
19 21
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
index f37989b10..b99280a91 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
+++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
@@ -72,14 +72,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
72 * |-----+------+------+------+------+-------------+------+------+------+------+------| 72 * |-----+------+------+------+------+-------------+------+------+------+------+------|
73 * | LSPO| Z | X | C | V | B | K | M | , | . | / | RSPC | 73 * | LSPO| Z | X | C | V | B | K | M | , | . | / | RSPC |
74 * |-----+------+------+------+------+------+------+------+------+------+------+------| 74 * |-----+------+------+------+------+------+------+------+------+------+------+------|
75 * | Ctrl| LGUI | LAlt | Lower| SpaceLW | RSEnter | Fn | Mouse| Menu | Ctrl | 75 * | Ctrl| LGUI | Lower| LAlt | SpaceLW | RSEnter | Fn | Mouse| Menu | Ctrl |
76 * `----------------------------------------------------------------------------------' 76 * `----------------------------------------------------------------------------------'
77 */ 77 */
78[_COLEMAK] = TERMINUS_MINI( 78[_COLEMAK] = TERMINUS_MINI(
79 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL , \ 79 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL , \
80 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ 80 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
81 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \ 81 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
82 KC_LCTL, KC_LGUI, KC_LALT, LWR, SPC_LW, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \ 82 KC_LCTL, KC_LGUI, LWR, KC_LALT, SPC_LW, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \
83 ), 83 ),
84 84
85/* Lower 85/* Lower
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
90 * |------+------+------+------+------+------+------+------+------+------+------+------| 90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | LSPO | Z | X | C | V | = | 1 | 2 | 3 | Enter| | RSPC | 91 * | LSPO | Z | X | C | V | = | 1 | 2 | 3 | Enter| | RSPC |
92 * |------+------+------+------+------+------+------+------+------+------+------+------| 92 * |------+------+------+------+------+------+------+------+------+------+------+------|
93 * | Ctrl | LGUI | Alt | Lower| Space/Lower | 0 | . | Fn | Menu | Ctrl | 93 * | Ctrl | LGUI | Lower| LAlt | Space/Lower | 0 | . | Fn | Menu | Ctrl |
94 * `-----------------------------------------------------------------------------------' 94 * `-----------------------------------------------------------------------------------'
95 Want to add tap-dance function to 0 key: Tap=0, doubleTap=Ent 95 Want to add tap-dance function to 0 key: Tap=0, doubleTap=Ent
96 */ 96 */
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
110 * |------+------+------+------+------+------+------+------+------+------+------+------| 110 * |------+------+------+------+------+------+------+------+------+------+------+------|
111 * | LSPO | | | { | [ | ` | \ | ] | } | . | ? | RSPC | 111 * | LSPO | | | { | [ | ` | \ | ] | } | . | ? | RSPC |
112 * |------+------+------+------+------+------+------+------+------+------+------+------| 112 * |------+------+------+------+------+------+------+------+------+------+------+------|
113 * | Ctrl | LGUI | Alt | | Space/Lower | Raise/Enter | Fn | Mouse| Menu | Ctrl | 113 * | Ctrl | LGUI | | LAlt | Space/Lower | Raise/Enter | Fn | Mouse| Menu | Ctrl |
114 * `-----------------------------------------------------------------------------------' 114 * `-----------------------------------------------------------------------------------'
115 */ 115 */
116 116
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
118 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, \ 118 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, \
119 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ 119 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
120 _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_GRV, KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, \ 120 _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_GRV, KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, \
121 _______, _______, _______, _______, SPC_LW, ENT_RS, FNC, MSE, _______, _______ \ 121 _______, _______, XXXXXXX, _______, SPC_LW, ENT_RS, FNC, MSE, _______, _______ \
122 ), 122 ),
123 123
124/*Function 124/*Function
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
129 * |------+------+------+------+------+------+------+------+------+------+------+------| 129 * |------+------+------+------+------+------+------+------+------+------+------+------|
130 * | LSOB | | | | | | | F9 | F10 | F11 | F12 |ScrLk | 130 * | LSOB | | | | | | | F9 | F10 | F11 | F12 |ScrLk |
131 * |------+------+------+------+------+------+------+------+------+------+------+------| 131 * |------+------+------+------+------+------+------+------+------+------+------+------|
132 * | Ctrl | LGUI | Alt | | Space/Lower | Enter/Raise | Fn | | |PsBrk | 132 * | Ctrl | LGUI | | Alt | Space/Lower | Enter/Raise | Fn | | |PsBrk |
133 * `-----------------------------------------------------------------------------------' 133 * `-----------------------------------------------------------------------------------'
134 */ 134 */
135 135
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/readme.md b/keyboards/handwired/terminus_mini/keymaps/default/readme.md
index 66ca566ed..216cf41e2 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/readme.md
+++ b/keyboards/handwired/terminus_mini/keymaps/default/readme.md
@@ -6,117 +6,114 @@ This keymap is modified from the Planck default layout. Credit for the layout na
6 6
7The terminus_mini is a handwired 4x12 ortholinear keyboard with two 2U thumb bar keys. The microcontroller is a Teensy 2.0 7The terminus_mini is a handwired 4x12 ortholinear keyboard with two 2U thumb bar keys. The microcontroller is a Teensy 2.0
8 8
9The TERMINUS_MINI layout (../../../terminus_mini/terminus_mini.h) is handwired and the 2U keys are handled using KC_NO to detail that two columns do not have a 4th column. 9The TERMINUS_MINI layout (../../../terminus\_mini/terminus\_mini.h) is handwired and the 2U keys are handled using KC\_NO to detail that two columns do not have a 4th column.
10 10```
11> .----------------------------------------. .-----------------------------------------. \ 11.----------------------------------------. .-----------------------------------------.
12> | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Del | \ 12| Tab | Q | W | F | P | G | | J | L | U | Y | ; | Del |
13> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 13|-----+------+------+------+------+------| |------+------+------+------+------+------|
14> | BS | A | R | S | T | D | | H | N | E | I | O | ' | \ 14| BS | A | R | S | T | D | | H | N | E | I | O | ' |
15> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 15|-----+------+------+------+------+------| |------+------+------+------+------+------|
16> | LSPO| Z | X | C | V | B | | K | M | , | \. | / | RSPC | \ 16| LSPO| Z | X | C | V | B | | K | M | , | \. | / | RSPC |
17> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 17|-----+------+------+------+------+------| |------+------+------+------+------+------|
18> | Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \ 18| Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl |
19> '----------------------------------------' '-----------------------------------------' \ 19'----------------------------------------' '-----------------------------------------'
20\ 20```
21> [_COLEMAK] = KEYMAP( \ 21
22> KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL , \
23> KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
24> KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
25> KC_LCTL, KC_LGUI, KC_LALT, LWR, SPC_LW, SPC_LW, ENT_RS, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \
26> ),
27
28##Layers
29 22
30### Base Layer - Colemak 23### Base Layer - Colemak
31 * The base layout is Colemak. Since the CapsLock key is replaced with BackSpace, this layout has the delete key in the traditional backspace location. 24The base layout is Colemak. Since the CapsLock key is replaced with BackSpace, this layout has the delete key in the traditional backspace location.
32 * QWERTY and Dvorak layers have been removed from the keymap that was initially developed from the default Planck keymap.
33 * I've implemented COLEMAK = SAFE_RANGE when enumerating the custom_keycodes, but I don't actually know what this does...
34 25
35 * Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses) 26* QWERTY and Dvorak layers have been removed from the keymap that was initially developed from the default Planck keymap.
36 * I never find myself using the right-modifiers on a standard keyboard, so I've only implemented LGUI and LALT. I have intentions of improving my use of the ctrl key in correct hand alternation, so CTRL is implemented in both outside corners of the home row. 27* I've implemented COLEMAK = SAFE\_RANGE when enumerating the custom\_keycodes, but I don't actually know what this does...
28* Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
29* I never find myself using the right-modifiers on a standard keyboard, so I've only implemented LGUI and LALT. I have intentions of improving my use of the ctrl key in correct hand alternation, so CTRL is implemented in both outside corners of the home row.
37 30
38 31
39 #### Layer Shifting 32#### Layer Shifting
40 * The 4th key on the bottom row of the left hand PCB is a **TAP_TOGGLE** macro for the *LOWER* layer 33* The 4th key on the bottom row of the left hand PCB is a **TAP_TOGGLE** macro for the *LOWER* layer
41 * The left 2U key is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space. 34* The left 2U key is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space.
42 * The right 2U key is a **TAP_KEY** macro - Hold for momentary *RAISE* layer, Tap for Enter 35* The right 2U key is a **TAP_KEY** macro - Hold for momentary *RAISE* layer, Tap for Enter
43 * The 2nd key on the bottom row of the right hand PCB is a **LAYER_MOMENTARY** for the *FUNCTION* layer 36* The 2nd key on the bottom row of the right hand PCB is a **LAYER_MOMENTARY** for the *FUNCTION* layer
44 * The 3rd key on the bottom row of the right hand PCB is a **TAP_TOGGLE** macro for the *MOUSE* layer 37* The 3rd key on the bottom row of the right hand PCB is a **TAP_TOGGLE** macro for the *MOUSE* layer
45 38
46### LOWER - Numpad & Navigation keys 39### LOWER - Numpad & Navigation keys
47 40```
48 ,-----------------------------------------. .-----------------------------------------. \ 41,-----------------------------------------. .-----------------------------------------.
49 | Tab | PgUp | Home | Up | End | | | 7 | 8 | 9 | \+ | | Del | \ 42| Tab | PgUp | Home | Up | End | | | 7 | 8 | 9 | \+ | | Del |
50 |------+------+------+------+------+------| |------+------+------+------+------+------| \ 43|------+------+------+------+------+------| |------+------+------+------+------+------|
51 | BS | PgDn | Left | Down |Right | | | 4 | 5 | 6 | Enter| | ' | \ 44| BS | PgDn | Left | Down |Right | | | 4 | 5 | 6 | Enter| | ' |
52 |------+------+------+------+------+------| |------+------+------+------+------+------| \ 45|------+------+------+------+------+------| |------+------+------+------+------+------|
53 | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC | \ 46| LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC |
54 |------+------+------+------+-------------| |-------------+------+------+------+------| \ 47|------+------+------+------+-------------| |-------------+------+------+------+------|
55 | Ctrl | LGUI | Alt | LOWER| Space/Lower | | 0 | \. | Fn | Menu | Ctrl | \ 48| Ctrl | LGUI | Alt | LOWER| Space/Lower | | 0 | \. | Fn | Menu | Ctrl |
56 '-----------------------------------------' '-----------------------------------------' \ 49'-----------------------------------------' '-----------------------------------------'
57 50```
58 * The *LOWER* layer contains a navigation cluster on the left hand and a numpad on the right. This layer is momentary when the left thumb-bar or LOWER key is held and toggled on/off when the LOWER key is tapped. 51The *LOWER* layer contains a navigation cluster on the left hand and a numpad on the right. This layer is momentary when the left thumb-bar or LOWER key is held and toggled on/off when the LOWER key is tapped.
59 52
60 * The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster. 53* The Navigation cluster is offset to the right compared to the traditional WASD nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster.
61 54
55* All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC\_NO), all modifiers (edge |\_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (\_\_\_\_\_\_\_) to the Base layer.
62 56
63 * All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC_NO), all modifiers (edge |_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (_______) to the Base layer. 57[] TO DO!! - It would be nice to have a **TAP\_DANCE\_DOUBLE** implementation whereby a double tap of the right 2U key sends KC_PENT
64 58
65 - [] TO DO!! - It would be nice to have a **TAP_DANCE_DOUBLE** implementation whereby a double tap of the right 2U key sends KC_PENT 59* Couldn't get this to work in Rev1, produced an error in the Make process.
66 * Couldn't get this to work in Rev1, produced an error in the Make process. 60* When this is done, I can remove the clunky double Enter on the 4th column of the right hand PCB.
67 * When this is done, I can remove the clunky double Enter on the 4th column of the right hand PCB.
68 61
69### RAISE - Symbol Layer 62### RAISE - Symbol Layer
70 63```
71 > ,-----------------------------------------. .-----------------------------------------. \ 64,-----------------------------------. .-----------------------------------.
72 > | Esc | | | | | | | | | | | | Del | \ 65| Tab | | | | | | | | | | | | \ |
73 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 66|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
74 > | BS | \! | @ | \# | $ | % | | ^ | & | \* | \- | \+ | ' | \ 67| BS | ! | @ | # | $ | % | | ^ | & | * | - | + | ' |
75 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 68|-----+-----+-----+-----+-----------| |-----+-----+-----+-----+-----+-----|
76 > | LSBO | | | \{ | \[ | \` | | | | \] | \} | \. | ? | RSBC | \ 69| LSPO| | | { | [ | ` | | | | ] | } | . | ? |RSPC |
77 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 70|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
78 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \ 71| Ctrl|LGUI | |Lower|Space/Lower| |Enter/Raise| Fn |Mouse| Menu| Ctrl|
79 > '-----------------------------------------' '-----------------------------------------' \ 72'-----------------------------------' '-----------------------------------'
80 73```
81 * The *RAISE* layer contains the symbols. This layer is momentary when the right thumb bar is held. 74The *RAISE* layer contains the symbols. This layer is momentary when the right thumb bar is held.
82 * Standard symbols can be found on the home row, in the traditional number row order as they occur on a standard keyboard. 75
83 * Shifted symbols can be found on the second-from bottom row, abovee the bars - these include brackets, braces, grave and pipe keys. 76* Standard symbols can be found on the home row, in the traditional number row order as they occur on a standard keyboard.
84 * At this stage, you need to shift to get to the Tilde key. I'd like to remove the shift requirement as I've done with the Pipe, but we'll see. 77* Shifted symbols can be found on the second-from bottom row, abovee the bars - these include brackets, braces, grave and pipe keys.
85 * The Terminus_Mini implements the symbols on the top row, with numbers implemented on the home row. Implementing a third set of number keys (Base, *LOWER*, *RAISE*) in this keymap is probably overkill, but the current *RAISE* layout replicates the standard number row, so I don't see reason to change it. 78 * At this stage, you need to shift to get to the Tilde key. I'd like to remove the shift requirement as I've done with the Pipe, but we'll see.
86 * The bottom row of this layer is a replication of that of the Base layer, except that the **TAP_TOGGLE** *LOWER* key is blocked with **XXXXXXX**. 79* The Terminus_Mini implements the symbols on the top row, with numbers implemented on the home row. Implementing a third set of number keys (Base, *LOWER*, * RAISE*) in this keymap is probably overkill, but the current *RAISE* layout replicates the standard number row, so I don't see reason to change it.
80* The bottom row of this layer is a replication of that of the Base layer, except that the **TAP_TOGGLE** *LOWER* key is blocked with XXXXXXX.
87 81
88### FUNCTION - Function & Media keys 82### FUNCTION - Function & Media keys
89 83```
90 > ,-----------------------------------------. .-----------------------------------------. \ 84,-----------------------------------------. .-----------------------------------------.
91 > | Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins | \ 85| Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins |
92 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 86|------+------+------+------+------+------| |------+------+------+------+------+------|
93 > | Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc | \ 87| Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc |
94 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 88|------+------+------+------+------+------| |------+------+------+------+------+------|
95 > | LSOB | | | | | | | | | | | |ScrLk | \ 89| LSOB | | | | | | | | | | | |ScrLk |
96 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 90|------+------+------+------+------+------| |------+------+------+------+------+------|
97 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk | \ 91| Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk |
98 > '-----------------------------------------' '-----------------------------------------' \ 92'-----------------------------------------' '-----------------------------------------'
99 93```
100 * The *FUNCTION* layer contains media keys as well as the F-row. This layer is momentary and requires Fn to be held. 94The *FUNCTION* layer contains media keys as well as the F-row. This layer is momentary and requires Fn to be held.
101 * The media cluster is based on the nav cluster in the *LOWER* layer, with RW, PP & FF in the Left, Down & Right positions. 95
102 * Mute, and Vol +/- are next to each other in ascending (L->R) volume order, Stop is below Mute. 96* The media cluster is based on the nav cluster in the *LOWER* layer, with RW, PP & FF in the Left, Down & Right positions.
103 * Insert, Print Screen, Scroll Lock & Pause Break are all implemented on the far right column. 97* Mute, and Vol +/- are next to each other in ascending (L->R) volume order, Stop is below Mute.
104 I don't really use these keys so their position is not optimised. 98* Insert, Print Screen, Scroll Lock & Pause Break are all implemented on the far right column. I don't really use these keys so their position is not optimised.
105 * Caps lock is implemented on this layer, in the traditional position, in place of BackSpace on the Base layer. 99* Caps lock is implemented on this layer, in the traditional position, in place of BackSpace on the Base layer.
106 * The RESET key will reset the Teensy for flashing and the Power key will initiate a shutdown of the PC. I've placed these in the far-reach index positions so that they are least likely to be pressed on accident. The power key is particularly dangerous, so I've placed it conciously on the right hand so that it becomes very awkward to activate with one hand (Fn needs to be held with the middle finger at the same time) 100* The RESET key will reset the Teensy for flashing and the Power key will initiate a shutdown of the PC. I've placed these in the far-reach index positions so that they are least likely to be pressed on accident. The power key is particularly dangerous, so I've placed it conciously on the right hand so that it becomes very awkward to activate with one hand (Fn needs to be held with the middle finger at the same time)
107 101
108### MOUSE - Mouse keys: The functionality of this layer is not as optimal as using a true mouse, generally slower but will work in a pinch. 102### MOUSE - Mouse keys: The functionality of this layer is not as optimal as using a true mouse, generally slower but will work in a pinch.
109 > ,----------------------------------------. .----------------------------------------. 103```
110 > | Tab | WhlU | WhlL | MsUp | WhlR | | | | M3 | M4 | M5 | | | \ 104,----------------------------------------. .----------------------------------------.
111 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 105| Tab | WhlU | WhlL | MsUp | WhlR | | | | M3 | M4 | M5 | | |
112 > | | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | | \ 106|------+------+------+------+------+-----| |-----+------+------+------+------+------|
113 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 107| | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | |
114 > | LSPO | | | | | | | | | | | | RSCB | \ 108|------+------+------+------+------+-----| |-----+------+------+------+------+------|
115 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 109| LSPO | | | | | | | | | | | | RSCB |
116 > | Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl | \ 110|------+------+------+------+------+-----| |-----+------+------+------+------+------|
117 > '----------------------------------------' '----------------------------------------' \ 111| Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl |
118 112'----------------------------------------' '----------------------------------------'
119 * The *MOUSE* layer contains keys replicating functions found on the mouse. 113```
120 * The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are nalagous to the Page Up & Down keys. 114The *MOUSE* layer contains keys replicating functions found on the mouse.
121 *) The primary click (right & left) buttons are on the right home row (index & middle fingers) 115
122 * Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function. \ No newline at end of file 116* The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are nalagous to the Page Up & Down
117keys.
118*) The primary click (right & left) buttons are on the right home row (index & middle fingers)
119* Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function.
diff --git a/keyboards/nyquist/keymaps/DivergeJM/README.md b/keyboards/nyquist/keymaps/DivergeJM/README.md
index 6de6a1427..5b9732dbd 100644
--- a/keyboards/nyquist/keymaps/DivergeJM/README.md
+++ b/keyboards/nyquist/keymaps/DivergeJM/README.md
@@ -1,136 +1,128 @@
1Copyright 2017 James Morgan <ja.morgan1@outlook.com> 1Copyright 2017 James Morgan <ja.morgan1@outlook.com>
2 2
3#MogranJM's nyquist layout 3#MogranJM's Nyquist layout
4 4
5 ***NOTE*** - As yet, this keymap has not been tested, I'm waiting on delivery of a plate and base before I assemble the keyboard. Though, the hex file does compile successfully... 5This keymap is based on my Terminus_Mini (../../../terminus\_mini/default) layout (credit for the names of these layouts goes to UniKeyboard & reddit's /u/blahlicus)
6
7This keymap is based on my Terminus_Mini (../../../terminus_mini/default) layout (credit for the names of these layouts goes to UniKeyboard & reddit's /u/blahlicus)
8 6
9The terminus_mini is a handwired 4x12 ortholinear keyboard with two 2U thumb bar keys. This implementation of the layout converts it to a split 5x12 (two halves, each 5x6) keyboard with a 2U thumb key on the inner bottom corner of each half. 7The terminus_mini is a handwired 4x12 ortholinear keyboard with two 2U thumb bar keys. This implementation of the layout converts it to a split 5x12 (two halves, each 5x6) keyboard with a 2U thumb key on the inner bottom corner of each half.
10 8
11The TERMINUS_MINI layout (../../../terminus_mini/terminus_mini.h) is handwired and the 2U keys are handled using KC_NO to detail that two columns do not have a 4th column. This layout is based on a PCB, so the keymap represents the 2U keys as duplicates of the same 1U key. 9The TERMINUS\_MINI layout (../../../terminus_mini/terminus_mini.h) is handwired and the 2U keys are handled using KC_NO to detail that two columns do not have a 4th column. This layout is based on a PCB, so the keymap represents the 2U keys as duplicates of the same 1U key.
12 10
13> .----------------------------------------. .-----------------------------------------. \ 11```
14> | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | \ 12.----------------------------------------. .-----------------------------------------.
15> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 13| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
16> | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \\ | \ 14|-----+------+------+------+------+------| |------+------+------+------+------+------|
17> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 15| Tab | Q | W | F | P | G | | J | L | U | Y | ; | \\ |
18> | BS | A | R | S | T | D | | H | N | E | I | O | ' | \ 16|-----+------+------+------+------+------| |------+------+------+------+------+------|
19> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 17| BS | A | R | S | T | D | | H | N | E | I | O | ' |
20> | LSPO| Z | X | C | V | B | | K | M | , | \. | / | RSPC | \ 18|-----+------+------+------+------+------| |------+------+------+------+------+------|
21> |-----+------+------+------+------+------| |------+------+------+------+------+------| \ 19| LSPO| Z | X | C | V | B | | K | M | , | \. | / | RSPC |
22> | Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \ 20|-----+------+------+------+------+------| |------+------+------+------+------+------|
23> '----------------------------------------' '-----------------------------------------' \ 21| Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl |
24\ 22'----------------------------------------' '-----------------------------------------'
25> [_COLEMAK] = KEYMAP( \ 23```
26> KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
27> KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS , \
28> KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
29> KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
30> KC_LCTL, KC_LGUI, KC_LALT, LWR, SPC_LW, SPC_LW, ENT_RS, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \
31> ),
32
33##Layers
34 24
35### Base Layer - Colemak 25### Base Layer - Colemak
36 * The base layout is Colemak. Since the CapsLock key is replaced with BackSpace, this layout has the delete key in the traditional backspace location. 26The base layout is Colemak. Since the CapsLock key is replaced with BackSpace, this layout has the delete key in the traditional backspace location.
37 * QWERTY and Dvorak layers have been removed from the keymap that was initially developed from the default Planck keymap.
38 * I've implemented COLEMAK = SAFE_RANGE when enumerating the custom_keycodes, but I don't actually know what this does...
39
40 * Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
41 * I never find myself using the right-modifiers on a standard keyboard, so I've only implemented LGUI and LALT. I have intentions of improving my use of the ctrl key in correct hand alternation, so CTRL is implemented in both outside corners of the home row.
42
43
44 #### Layer Shifting
45 * The 4th key on the bottom row of the left hand PCB is a **TAP_TOGGLE** macro for the *LOWER* layer
46 * The left 2U key is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space.
47 * The right 2U key is a **TAP_KEY** macro - Hold for momentary *RAISE* layer, Tap for Enter
48 * The 2nd key on the bottom row of the right hand PCB is a **LAYER_MOMENTARY** for the *FUNCTION* layer
49 * The 3rd key on the bottom row of the right hand PCB is a **TAP_TOGGLE** macro for the *MOUSE* layer
50 27
51### LOWER - Numpad & Navigation keys 28* QWERTY and Dvorak layers have been removed from the keymap that was initially developed from the default Planck keymap.
29* I've implemented COLEMAK = SAFE\_RANGE when enumerating the custom\_keycodes, but I don't actually know what this does...
52 30
53 ,-----------------------------------------. .-----------------------------------------. \ 31* Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
54 | Esc | | | | | | | = | / | \* | \- | | Del | \ 32* I never find myself using the right-modifiers on a standard keyboard, so I've only implemented LGUI and LALT. I have intentions of improving my use of the ctrl key in correct hand alternation, so CTRL is implemented in both outside corners of the home row.
55 |------+------+------+------+------+------| |------+------+------+------+------+------| \
56 | Tab | PgUp | Home | Up | End | | | 7 | 8 | 9 | \+ | | \\ | \
57 |------+------+------+------+------+------| |------+------+------+------+------+------| \
58 | BS | PgDn | Left | Down |Right | | | 4 | 5 | 6 | Enter| | ' | \
59 |------+------+------+------+------+------| |------+------+------+------+------+------| \
60 | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC | \
61 |------+------+------+------+-------------| |-------------+------+------+------+------| \
62 | Ctrl | LGUI | Alt | LOWER| Space/Lower | | 0 | \. | Fn | Menu | Ctrl | \
63 `-----------------------------------------' `-----------------------------------------' \
64 33
65 * The *LOWER* layer contains a navigation cluster on the left hand and a numpad on the right. This layer is momentary when the left thumb-bar or LOWER key is held and toggled on/off when the LOWER key is tapped.
66
67 * The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster.
68 34
69 * All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC_NO), all modifiers (edge |_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (_______) to the Base layer. 35#### Layer Shifting
36* The 4th key on the bottom row of the left hand PCB is a **TAP_TOGGLE** macro for the *LOWER* layer
37* The left 2U key is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space.
38* The right 2U key is a **TAP_KEY** macro - Hold for momentary *RAISE* layer, Tap for Enter
39* The 2nd key on the bottom row of the right hand PCB is a **LAYER_MOMENTARY** for the *FUNCTION* layer
40* The 3rd key on the bottom row of the right hand PCB is a **TAP_TOGGLE** macro for the *MOUSE* layer
70 41
71 - [] TO DO!! - It would be nice to have a **TAP_DANCE_DOUBLE** implementation whereby a double tap of the right 2U key sends KC_PENT 42### LOWER - Numpad & Navigation keys
72 * Couldn't get this to work in Rev1, produced an error in the Make process. 43```
73 * When this is done, I can remove the clunky double Enter on the 4th column of the right hand PCB. 44 ,-----------------------------------------. .-----------------------------------------.
45 | Esc | | | | | | | = | / | \* | \- | | Del |
46 |------+------+------+------+------+------| |------+------+------+------+------+------|
47 | Tab | PgUp | Home | Up | End | | | 7 | 8 | 9 | \+ | | \\ |
48 |------+------+------+------+------+------| |------+------+------+------+------+------|
49 | BS | PgDn | Left | Down |Right | | | 4 | 5 | 6 | Enter| | ' |
50 |------+------+------+------+------+------| |------+------+------+------+------+------|
51 | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC |
52 |------+------+------+------+-------------| |-------------+------+------+------+------|
53 | Ctrl | LGUI | Alt | LOWER| Space/Lower | | 0 | \. | Fn | Menu | Ctrl |
54 `-----------------------------------------' `-----------------------------------------'
55```
56The *LOWER* layer contains a navigation cluster on the left hand and a numpad on the right. This layer is momentary when the left thumb-bar or LOWER key is held and toggled on/off when the LOWER key is tapped.
57
58The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster.
59
60All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC_NO), all modifiers (edge |_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (_______) to the Base layer.
61
62[] TO DO!! - It would be nice to have a **TAP_DANCE_DOUBLE** implementation whereby a double tap of the right 2U key sends KC_PENT
63* Couldn't get this to work in Rev1, produced an error in the Make process.
64* When this is done, I can remove the clunky double Enter on the 4th column of the right hand PCB (numpad enter).
74 65
75### RAISE - Symbol Layer 66### RAISE - Symbol Layer
76 67```
77 > ,-----------------------------------------. .-----------------------------------------. \ 68 ,-----------------------------------. .-----------------------------------.
78 > | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | \ 69 | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
79 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 70 |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
80 > | Tab | | | | | | | | | | | | \\ | \ 71 | Tab | | | | | | | | | | | | \ |
81 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 72 |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
82 > | BS | \! | @ | \# | $ | % | | ^ | & | \* | \- | \+ | ' | \ 73 | BS | ! | @ | # | $ | % | | ^ | & | * | - | + | ' |
83 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 74 |-----+-----+-----+-----+-----------| |-----+-----+-----+-----+-----+-----|
84 > | LSBO | | | \{ | \[ | \` | | | | \] | \} | \. | ? | RSBC | \ 75 | LSPO| | | { | [ | ` | | | | ] | } | . | ? |RSPC |
85 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 76 |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
86 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \ 77 | Ctrl|LGUI | Alt | |Space/Lower| |Enter/Raise| Fn |Mouse| Menu| Ctrl|
87 > '-----------------------------------------' '-----------------------------------------' \ 78 '-----------------------------------' '-----------------------------------'
88 79```
89 * The *RAISE* layer contains the symbols. This layer is momentary when the right thumb bar is held. 80The *RAISE* layer contains the symbols. This layer is momentary when the right thumb bar is held.
90 * Standard symbols can be found on the home row, in the traditional number row order as they occur on a standard keyboard. 81
91 * Shifted symbols can be found on the second-from bottom row, abovee the bars - these include brackets, braces, grave and pipe keys. 82* Standard symbols can be found on the home row, in the traditional number row order as they occur on a standard keyboard.
92 * At this stage, you need to shift to get to the Tilde key. I'd like to remove the shift requirement as I've done with the Pipe, but we'll see. 83* Shifted symbols can be found on the second-from bottom row, abovee the bars - these include brackets, braces, grave and pipe keys.
93 * The Terminus_Mini implements the symbols on the top row, with numbers implemented on the home row. Implementing a third set of number keys (Base, *LOWER*, *RAISE*) in this keymap is probably overkill, but the current *RAISE* layout replicates the standard number row, so I don't see reason to change it. 84 * At this stage, you need to shift to get to the Tilde key. I'd like to remove the shift requirement as I've done with the Pipe, but we'll see.
94 * The bottom row of this layer is a replication of that of the Base layer, except that the **TAP_TOGGLE** *LOWER* key is blocked with **XXXXXXX**. 85* The Terminus_Mini implements the symbols on the top row, with numbers implemented on the home row. Implementing a third set of number keys (Base, *LOWER*, *RAISE*) in this keymap is probably overkill, but the current *RAISE* layout replicates the standard number row, so I don't see reason to change it.
86* The bottom row of this layer is a replication of that of the Base layer, except that the **TAP_TOGGLE** *LOWER* key is blocked with **XXXXXXX**.
95 87
96### FUNCTION - Function & Media keys 88### FUNCTION - Function & Media keys
97 89```
98 > ,-----------------------------------------. .-----------------------------------------. \ 90,-----------------------------------------. .-----------------------------------------.
99 > | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | \ 91| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
100 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 92|------+------+------+------+------+------| |------+------+------+------+------+------|
101 > | Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins | \ 93| Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins |
102 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 94|------+------+------+------+------+------| |------+------+------+------+------+------|
103 > | Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc | \ 95| Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc |
104 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 96|------+------+------+------+------+------| |------+------+------+------+------+------|
105 > | LSOB | | | | | | | | | | | |ScrLk | \ 97| LSOB | | | | | | | | | | | |ScrLk |
106 > |------+------+------+------+------+------| |------+------+------+------+------+------| \ 98|------+------+------+------+------+------| |------+------+------+------+------+------|
107 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk | \ 99| Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk |
108 > '-----------------------------------------' '-----------------------------------------' \ 100'-----------------------------------------' '-----------------------------------------'
109 101```
110 * The *FUNCTION* layer contains media keys as well as the F-row. This layer is momentary and requires Fn to be held. 102The *FUNCTION* layer contains media keys as well as the F-row. This layer is momentary and requires Fn to be held.
111 * The media cluster is based on the nav cluster in the *LOWER* layer, with RW, PP & FF in the Left, Down & Right positions. 103
112 * Mute, and Vol +/- are next to each other in ascending (L->R) volume order, Stop is below Mute. 104* The media cluster is based on the nav cluster in the *LOWER* layer, with RW, PP & FF in the Left, Down & Right positions.
113 * Insert, Print Screen, Scroll Lock & Pause Break are all implemented on the far right column. 105* Mute, and Vol +/- are next to each other in ascending (L->R) volume order, Stop is below Mute.
114 I don't really use these keys so their position is not optimised. 106* Insert, Print Screen, Scroll Lock & Pause Break are all implemented on the far right column. I don't really use these keys so their position is not optimised.
115 * Caps lock is implemented on this layer, in the traditional position, in place of BackSpace on the Base layer. 107* Caps lock is implemented on this layer, in the traditional position, in place of BackSpace on the Base layer.
116 * The RESET key will reset the board for flashing and the Power key will initiate a shutdown of the PC. I've placed these in the far-reach index positions so that they are least likely to be pressed on accident. The power key is particularly dangerous, so I've placed it conciously on the right hand so that it becomes very awkward to activate with one hand (Fn needs to be held with the middle finger at the same time) 108* The RESET key will reset the board for flashing and the Power key will initiate a shutdown of the PC. I've placed these in the far-reach index positions so that they are least likely to be pressed on accident. The power key is particularly dangerous, so I've placed it conciously on the right hand so that it becomes very awkward to activate with one hand (Fn needs to be held with the middle finger at the same time)
117 109
118### MOUSE - Mouse keys: The functionality of this layer is not as optimal as using a true mouse, generally slower but will work in a pinch. 110### MOUSE - Mouse keys: The functionality of this layer is not as optimal as using a true mouse, generally slower but will work in a pinch.
119 > ,----------------------------------------. .----------------------------------------. \ 111```
120 > | Esc | | | | | | | | | | | | Del | \ 112 ,----------------------------------------. .----------------------------------------.
121 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 113 | Esc | | | | | | | | | | | | Del |
122 > | Tab | WhlU | WhlL | MsUp | WhlR | | | | M3 | M4 | M5 | | | \ 114 |------+------+------+------+------+-----| |-----+------+------+------+------+------|
123 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 115 | Tab | WhlU | WhlL | MsUp | WhlR | | | | M3 | M4 | M5 | | |
124 > | | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | | \ 116 |------+------+------+------+------+-----| |-----+------+------+------+------+------|
125 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 117 | | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | |
126 > | LSPO | | | | | | | | | | | | RSCB | \ 118 |------+------+------+------+------+-----| |-----+------+------+------+------+------|
127 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \ 119 | LSPO | | | | | | | | | | | | RSCB |
128 > | Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl | \ 120 |------+------+------+------+------+-----| |-----+------+------+------+------+------|
129 > '----------------------------------------' '----------------------------------------' \ 121 | Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl |
130 122 '----------------------------------------' '----------------------------------------'
131 * The *MOUSE* layer contains keys replicating functions found on the mouse. 123 ```
132 * The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are analagous to the Page Up & Down keys. 124The *MOUSE* layer contains keys replicating functions found on the mouse.
133 125
134 *) The primary click (right & left) buttons are on the right home row (index & middle fingers) 126* The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are analagous to the Page Up & down keys.
135 127* The primary click (right & left) buttons are on the right home row (index & middle fingers)
136 * Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function. \ No newline at end of file 128* Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function. \ No newline at end of file
diff --git a/keyboards/nyquist/keymaps/DivergeJM/config.h b/keyboards/nyquist/keymaps/DivergeJM/config.h
index 03f5b2de7..b77c6111c 100644
--- a/keyboards/nyquist/keymaps/DivergeJM/config.h
+++ b/keyboards/nyquist/keymaps/DivergeJM/config.h
@@ -15,6 +15,9 @@ You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>. 15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17 17
18
19#define TAPPING_TERM 150 //reduce time required to register a held key
20
18#define USE_SERIAL 21#define USE_SERIAL
19 22
20#define MASTER_LEFT 23#define MASTER_LEFT
diff --git a/keyboards/nyquist/keymaps/DivergeJM/keymap.c b/keyboards/nyquist/keymaps/DivergeJM/keymap.c
index 4bfff0d6c..e77f1b991 100644
--- a/keyboards/nyquist/keymaps/DivergeJM/keymap.c
+++ b/keyboards/nyquist/keymaps/DivergeJM/keymap.c
@@ -68,15 +68,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
68 * |-----+------+------+------+------+------| |------+------+------+------+------+------| 68 * |-----+------+------+------+------+------| |------+------+------+------+------+------|
69 * | LSPO| Z | X | C | V | B | | K | M | , | . | / | RSPC | 69 * | LSPO| Z | X | C | V | B | | K | M | , | . | / | RSPC |
70 * |-----+------+------+------+------+------| |------+------+------+------+------+------| 70 * |-----+------+------+------+------+------| |------+------+------+------+------+------|
71 * | Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | 71 * | Ctrl| LGUI | Lower| LAlt | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl |
72 * `----------------------------------------' `-----------------------------------------' 72 * `----------------------------------------' `-----------------------------------------'
73 */ 73 */
74[_COLEMAK] = KEYMAP( \ 74[_COLEMAK] = KEYMAP( \
75 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ 75 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
76 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS , \ 76 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
77 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ 77 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
78 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \ 78 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
79 KC_LCTL, KC_LGUI, KC_LALT, LWR, SPC_LW, SPC_LW, ENT_RS, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \ 79 KC_LCTL, KC_LGUI, LWR, KC_LALT, SPC_LW, SPC_LW, ENT_RS, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \
80 ), 80 ),
81 81
82 82
@@ -90,37 +90,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
90 * |------+------+------+------+------+------| |------+------+------+------+------+------| 90 * |------+------+------+------+------+------| |------+------+------+------+------+------|
91 * | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC | 91 * | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC |
92 * |------+------+------+------+------+------| |------+------+------+------+------+------| 92 * |------+------+------+------+------+------| |------+------+------+------+------+------|
93 * | Ctrl | LGUI | Alt | Lower| Space/Lower | | 0 | . | Fn | Menu | Ctrl | 93 * | Ctrl | LGUI | Lower| LAlt | Space/Lower | | 0 | . | Fn | Menu | Ctrl |
94 * `-----------------------------------------' `-----------------------------------------' 94 * `-----------------------------------------' `-----------------------------------------'
95 */ 95 */
96[_LOWER] = KEYMAP( \ 96[_LOWER] = KEYMAP( \
97 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PEQL, KC_PSLS, KC_PAST, KC_MINS, XXXXXXX, KC_DEL, \ 97 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PEQL, KC_PSLS, KC_PAST, KC_MINS, XXXXXXX, _______, \
98 _______, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_7, KC_8, KC_9, KC_PPLS, XXXXXXX, _______, \ 98 _______, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_7, KC_8, KC_9, KC_PPLS, XXXXXXX, _______,\
99 _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_4, KC_5, KC_6, KC_PENT, XXXXXXX, _______, \ 99 _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_4, KC_5, KC_6, KC_PENT, XXXXXXX, _______,\
100 _______, _______, _______, _______, _______, XXXXXXX, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______, \ 100 _______, _______, _______, _______, _______, XXXXXXX, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______,\
101 _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, FNC, _______, _______ \ 101 _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, FNC, _______, _______ \
102), 102),
103 103
104
105/* Raise 104/* Raise
106 * ,-----------------------------------------. .-----------------------------------------. 105 * ,-----------------------------------------. .-----------------------------------------.
107 * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | 106 * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
108 * |------+------+------+------+------+------| |------+------+------+------+------+------| 107 * |------+------+------+------+------+------| |------+------+------+------+------+------|
109 * | Tab | | | | | | | | | | | | \ | 108 * | Tab | ! | @ | # | $ | % | | ^ | & | * | - | + | \ |
110 * |------+------+------+------+------+------| |------+------+------+------+------+------| 109 * |------+------+------+------+------+------| |------+------+------+------+------+------|
111 * | BS | ! | @ | # | $ | % | | ^ | & | * | - | + | " | 110 * | BS | | | | | | | | | | | | " |
112 * |------+------+------+------+------+------| |------+------+------+------+------+------| 111 * |------+------+------+------+------+------| |------+------+------+------+------+------|
113 * | LSBO | | | { | [ | ` | | | | ] | } | . | ? | RSBC | 112 * | LSBO | | | { | [ | ` | | | | ] | } | . | ? | RSBC |
114 * |------+------+------+------+------+------| |------+------+------+------+------+------| 113 * |------+------+------+------+------+------| |------+------+------+------+------+------|
115 * | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | 114 * | Ctrl | LGUI | | LAlt | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl |
116 * `-----------------------------------------' `-----------------------------------------' 115 * `-----------------------------------------' `-----------------------------------------'
117*/ 116*/
118[_RAISE] = KEYMAP( \ 117[_RAISE] = KEYMAP( \
119 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ 118 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
120 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, \
121 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, \ 119 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, \
120 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, \
122 _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_GRV, KC_PIPE, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, \ 121 _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_GRV, KC_PIPE, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, \
123 _______, _______, _______, XXXXXXX, _______, _______, ENT_RS, ENT_RS, FNC, MSE, _______, _______ \ 122 _______, _______, XXXXXXX, _______, _______, _______, ENT_RS, ENT_RS, FNC, MSE, _______, _______ \
124 ), 123 ),
125 124
126 125
diff --git a/keyboards/planck/keymaps/dudeofawesome/config.h b/keyboards/planck/keymaps/dudeofawesome/config.h
new file mode 100644
index 000000000..68d447dec
--- /dev/null
+++ b/keyboards/planck/keymaps/dudeofawesome/config.h
@@ -0,0 +1,48 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#define WORKMAN_SOUND COLEMAK_SOUND
7
8#ifdef AUDIO_ENABLE
9 #define STARTUP_SONG SONG(PLANCK_SOUND)
10 // #define STARTUP_SONG SONG(NO_SOUND)
11
12 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
13 SONG(COLEMAK_SOUND), \
14 SONG(DVORAK_SOUND) \
15 }
16#endif
17
18#define MUSIC_MASK (keycode != KC_NO)
19
20/*
21 * MIDI options
22 */
23
24/* Prevent use of disabled MIDI features in the keymap */
25//#define MIDI_ENABLE_STRICT 1
26
27/* enable basic MIDI features:
28 - MIDI notes can be sent when in Music mode is on
29*/
30
31// #define MIDI_BASIC
32
33/* enable advanced MIDI features:
34 - MIDI notes can be added to the keymap
35 - Octave shift and transpose
36 - Virtual sustain, portamento, and modulation wheel
37 - etc.
38*/
39//#define MIDI_ADVANCED
40
41/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
42//#define MIDI_TONE_KEYCODE_OCTAVES 2
43
44#define RGB_DI_PIN B2 // The pin the LED strip is connected to (PB2 by default)
45#define RGBLED_NUM 3 // Number of LEDs in your strip
46#define RGBLIGHT_ANIMATIONS
47
48#endif
diff --git a/keyboards/planck/keymaps/dudeofawesome/keymap.c b/keyboards/planck/keymaps/dudeofawesome/keymap.c
new file mode 100644
index 000000000..3fa739908
--- /dev/null
+++ b/keyboards/planck/keymaps/dudeofawesome/keymap.c
@@ -0,0 +1,191 @@
1/* Copyright 2015-2017 Jack Humbert
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 "planck.h"
18#include "action_layer.h"
19#include "eeconfig.h"
20
21extern keymap_config_t keymap_config;
22
23enum planck_layers {
24 _QWERTY,
25 _DVORAK,
26 _WORKMAN,
27 _LOWER,
28 _RAISE,
29 _ADJUST
30};
31
32enum planck_keycodes {
33 QWERTY = SAFE_RANGE,
34 DVORAK,
35 WORKMAN,
36 LOWER,
37 RAISE,
38 BACKLIT
39};
40
41const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42
43 /* Qwerty
44 * ,-----------------------------------------------------------------------------------.
45 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
46 * |------+------+------+------+------+-------------+------+------+------+------+------|
47 * | Esc | A | S | D | F | G | H | J | K | L | ; |Enter |
48 * |------+------+------+------+------+------|------+------+------+------+------+------|
49 * | Shift| Z | X | C | V | B | N | M | , | . | / | ' |
50 * |------+------+------+------+------+------+------+------+------+------+------+------|
51 * | RGB | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
52 * `-----------------------------------------------------------------------------------'
53 */
54 [_QWERTY] = {
55 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
56 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
57 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT)},
58 {RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
59 },
60
61 /* Dvorak
62 * ,-----------------------------------------------------------------------------------.
63 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
64 * |------+------+------+------+------+-------------+------+------+------+------+------|
65 * | Esc | A | O | E | U | I | D | H | T | N | S |Enter |
66 * |------+------+------+------+------+------|------+------+------+------+------+------|
67 * | Shift| ; | Q | J | K | X | B | M | W | V | Z | / |
68 * |------+------+------+------+------+------+------+------+------+------+------+------|
69 * | RGB | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
70 * `-----------------------------------------------------------------------------------'
71 */
72 [_DVORAK] = {
73 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
74 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH },
75 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, RSFT_T(KC_ENT)},
76 {RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
77 },
78
79 /* Workman
80 * ,-----------------------------------------------------------------------------------.
81 * | Tab | Q | W | R | W | B | J | F | U | P | ; | Bksp |
82 * |------+------+------+------+------+-------------+------+------+------+------+------|
83 * | Esc | A | S | H | T | G | Y | N | E | O | I |Enter |
84 * |------+------+------+------+------+------|------+------+------+------+------+------|
85 * | Shift| Z | X | M | C | V | K | L | , | . | / | ' |
86 * |------+------+------+------+------+------+------+------+------+------+------+------|
87 * | RGB | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
88 * `-----------------------------------------------------------------------------------'
89 */
90 [_WORKMAN] = {
91 {KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC },
92 {KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT },
93 {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT)},
94 {RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
95 },
96
97 /* Lower
98 * ,-----------------------------------------------------------------------------------.
99 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
100 * |------+------+------+------+------+-------------+------+------+------+------+------|
101 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
102 * |------+------+------+------+------+------|------+------+------+------+------+------|
103 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | | | | | | | | Play | Vol- | Vol+ | Next |
106 * `-----------------------------------------------------------------------------------'
107 */
108 [_LOWER] = {
109 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
110 {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
111 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______},
112 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MNXT}
113 },
114
115 /* Raise
116 * ,-----------------------------------------------------------------------------------.
117 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
118 * |------+------+------+------+------+-------------+------+------+------+------+------|
119 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
120 * |------+------+------+------+------+------|------+------+------+------+------+------|
121 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
122 * |------+------+------+------+------+------+------+------+------+------+------+------|
123 * | | | | | | | | Play | Vol- | Vol+ | Next |
124 * `-----------------------------------------------------------------------------------'
125 */
126 [_RAISE] = {
127 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
128 {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
129 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______},
130 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MNXT}
131 },
132
133 /* Adjust (Lower + Raise)
134 * ,-----------------------------------------------------------------------------------.
135 * | | Reset| | | | | | | | | | Del |
136 * |------+------+------+------+------+-------------+------+------+------+------+------|
137 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Wrkman|Dvorak| | |
138 * |------+------+------+------+------+------|------+------+------+------+------+------|
139 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
140 * |------+------+------+------+------+------+------+------+------+------+------+------|
141 * | | | | | | | | | | | |
142 * `-----------------------------------------------------------------------------------'
143 */
144 [_ADJUST] = {
145 {_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL },
146 {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, DVORAK, _______, _______},
147 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_M_R, _______, _______, _______, _______},
148 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
149 }
150
151};
152
153bool process_record_user(uint16_t keycode, keyrecord_t *record) {
154 switch (keycode) {
155 case QWERTY:
156 if (record->event.pressed) {
157 print("mode just switched to qwerty and this is a huge string\n");
158 set_single_persistent_default_layer(_QWERTY);
159 }
160 return false;
161 case WORKMAN:
162 if (record->event.pressed) {
163 set_single_persistent_default_layer(_WORKMAN);
164 }
165 return false;
166 case DVORAK:
167 if (record->event.pressed) {
168 set_single_persistent_default_layer(_DVORAK);
169 }
170 return false;
171 case LOWER:
172 if (record->event.pressed) {
173 layer_on(_LOWER);
174 update_tri_layer(_LOWER, _RAISE, _ADJUST);
175 } else {
176 layer_off(_LOWER);
177 update_tri_layer(_LOWER, _RAISE, _ADJUST);
178 }
179 return false;
180 case RAISE:
181 if (record->event.pressed) {
182 layer_on(_RAISE);
183 update_tri_layer(_LOWER, _RAISE, _ADJUST);
184 } else {
185 layer_off(_RAISE);
186 update_tri_layer(_LOWER, _RAISE, _ADJUST);
187 }
188 return false;
189 }
190 return true;
191}
diff --git a/keyboards/planck/keymaps/dudeofawesome/readme.md b/keyboards/planck/keymaps/dudeofawesome/readme.md
new file mode 100644
index 000000000..7dccbaabc
--- /dev/null
+++ b/keyboards/planck/keymaps/dudeofawesome/readme.md
@@ -0,0 +1,22 @@
1# DudeOfAwesome's Planck Layout
2
3A basic Planck layout with simultaneous RGB and audio support.
4
5![Planck Layout](https://i.imgur.com/2p1TEEH.png)
6
7## Features
8
9- Base Layers
10 - QWERTY
11 - Workman
12 - Dvorak
13- Audio
14- WS2812b RGB backlight
15
16## Building and flashing
17
181. Put your board in DFU mode with either the button on the bottom, or with a software key in your current firmware
191. Flash:
20 ```bash
21 $ make make planck/rev4:dudeofawesome:dfu
22 ```
diff --git a/keyboards/planck/keymaps/dudeofawesome/rules.mk b/keyboards/planck/keymaps/dudeofawesome/rules.mk
new file mode 100644
index 000000000..42c370aa1
--- /dev/null
+++ b/keyboards/planck/keymaps/dudeofawesome/rules.mk
@@ -0,0 +1,10 @@
1ifndef QUANTUM_DIR
2 include ../../../../Makefile
3endif
4
5AUDIO_ENABLE = yes # Audio output on port C6
6CONSOLE_ENABLE = no # Console for debug(+400)
7MIDI_ENABLE = no # MIDI controls
8MOUSEKEY_ENABLE = no # Mouse keys(+4700)
9NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
10RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/planck/keymaps/gunp/keymap.c b/keyboards/planck/keymaps/gunp/keymap.c
index 9d2fe3ecc..1826c1e15 100644
--- a/keyboards/planck/keymaps/gunp/keymap.c
+++ b/keyboards/planck/keymaps/gunp/keymap.c
@@ -116,12 +116,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
116 {XXXXXXX, KC_MAIL, S(KC_VOLD), KC_INS, S(KC_VOLU), KC_PSCR, MFN_R3}, 116 {XXXXXXX, KC_MAIL, S(KC_VOLD), KC_INS, S(KC_VOLU), KC_PSCR, MFN_R3},
117 {XXXXXXX, MUV_DE, MUV_IN, AU_ON, AU_OFF, RESET, MFN_R4}, 117 {XXXXXXX, MUV_DE, MUV_IN, AU_ON, AU_OFF, RESET, MFN_R4},
118}, 118},
119[LY_0011] = {
120 {UC(L'็'), UC(L'์'), UC(L'่'), UC(L'้'), UC(L'๊'), UC(L'๋'), MFN_R1},
121 {UC(L'โ'), UC(L'แ'), UC(L'เ'), UC(L'า'), UC(L'ั'), UC(L'ะ'), MFN_R2},
122 {UC(L'ไ'), UC(L'ใ'), UC(L'ิ'), UC(L'ี'), UC(L'ึ'), UC(L'ื'), MFN_R3},
123 {UC(L'ๅ'), UC(L'ฺ'), UC(L'ํ'), UC(L'ุ'), UC(L'ู'), UC(L'ำ'), MFN_R4},
124},
125[LY_1011] = {
126 {UC(L'ฐ'), UC(L'ฎ'), UC(L'ฏ'), UC(L'ฮ'), UC(L'ข'), UC(L'ฃ'), MFN_R1},
127 {UC(L'ถ'), UC(L'ด'), UC(L'ต'), UC(L'อ'), UC(L'ก'), UC(L'จ'), MFN_R2},
128 {UC(L'ภ'), UC(L'บ'), UC(L'ป'), UC(L'ส'), UC(L'ห'), UC(L'ฉ'), MFN_R3},
129 {UC(L'ฯ'), UC(L'ผ'), UC(L'ฝ'), UC(L'ศ'), UC(L'ษ'), UC(L'ๆ'), MFN_R4},
130},
131[LY_0111] = {
132 {UC(L'ฒ'), UC(L'ฤ'), UC(L'ฦ'), UC(L'ม'), UC(L'ค'), UC(L'ฅ'), MFN_R1},
133 {UC(L'ณ'), UC(L'ร'), UC(L'ล'), UC(L'น'), UC(L'ว'), UC(L'ง'), MFN_R2},
134 {UC(L'ญ'), UC(L'ช'), UC(L'ซ'), UC(L'ย'), UC(L'ท'), UC(L'ฑ'), MFN_R3},
135 {UC(L'ฌ'), UC(L'ฬ'), UC(L'ฟ'), UC(L'พ'), UC(L'ธ'), UC(L'ฆ'), MFN_R4},
136},
119[LY_0001] = UNUSED_LAYER 137[LY_0001] = UNUSED_LAYER
120[LY_0011] = UNUSED_LAYER
121[LY_0101] = UNUSED_LAYER 138[LY_0101] = UNUSED_LAYER
122[LY_0111] = UNUSED_LAYER
123[LY_1001] = UNUSED_LAYER 139[LY_1001] = UNUSED_LAYER
124[LY_1011] = UNUSED_LAYER
125}; 140};
126 141
127#ifdef AUDIO_ENABLE 142#ifdef AUDIO_ENABLE
diff --git a/keyboards/planck/keymaps/gunp/readme.md b/keyboards/planck/keymaps/gunp/readme.md
index 692bd3578..aef41bef6 100644
--- a/keyboards/planck/keymaps/gunp/readme.md
+++ b/keyboards/planck/keymaps/gunp/readme.md
@@ -15,4 +15,10 @@
15 {0| ∀ \ { ( [ < |0} {0| ⊚ 0 1 2 3 ┃ |0} {0| → - , .\' = |0} 15 {0| ∀ \ { ( [ < |0} {0| ⊚ 0 1 2 3 ┃ |0} {0| → - , .\' = |0}
16 {0| & | @ ~ $ ^ |0} {0| ┏ ┓ 4 5 6 ┳ |0} {0| ∘ + ; :\" _ |0} 16 {0| & | @ ~ $ ^ |0} {0| ┏ ┓ 4 5 6 ┳ |0} {0| ∘ + ; :\" _ |0}
17 {0| F1 ..... F6 |0} {0| ┗ ┛ ┫ ━ ┣ ╋ |0} {0| F7 .... F12 |0} 17 {0| F1 ..... F6 |0} {0| ┗ ┛ ┫ ━ ┣ ╋ |0} {0| F7 .... F12 |0}
18 ``` 18
19 {8| "with FN_ACD" |8} {8| "with FN_CD" |8} {8| "with FN_BCD" |8}
20 {0| ฐ ฎ ฏ ฮ ข ฃ |0} {0| ็ ์ ่ ้ ๊ ๋ |0} {0| ฒ ฤ ฦ ม ค ฅ |0}
21 {0| ถ ด ต อ ก จ |0} {0| โ แ เ า ั ะ |0} {0| ณ ร ล น ว ง |0}
22 {0| ภ บ ป ส ห ฉ |0} {0| ไ ใ ิ ี ึ ื |0} {0| ญ ช ซ ย ท ฑ |0}
23 {0| ฯ ผ ฝ ศ ษ ๆ |0} {0| ๅ ฺ ํ ุ ู ำ |0} {0| ฌ ฬ ฟ พ ธ ฆ |0}
24```
diff --git a/keyboards/ps2avrGB/README.md b/keyboards/ps2avrGB/README.md
index 8fd2af00f..886e3aea8 100644
--- a/keyboards/ps2avrGB/README.md
+++ b/keyboards/ps2avrGB/README.md
@@ -49,13 +49,26 @@ $ make ps2avrGB
49$ bootloadHID -r ps2avrGB_default.hex 49$ bootloadHID -r ps2avrGB_default.hex
50``` 50```
51 51
52## Setting the board to bootloader mode
53
54If you're lucky, the programming script does this automagically for you. If
55however this doesn't work for you, you need to enter the bootloader mode manually
56by plugging the keyboard in while holding the bootloader key. If you did this
57correctly the LEDs will blink and you'll be able to flash your firmware.
58
59The bootloader key is the top left key of your matrix. For a standard board
60from winkeyless.kr this is `L_Ctrl`, but for some custom boards running ps2avrGB
61this might be different. For the Pearl it's `Esc`, for a b.fake it is `q`. If
62you're unsure you should be able to see the key in the bootmapper client.
63
64
52## Troubleshooting 65## Troubleshooting
53 66
54From my experience, it's really hard to brick these boards. But these 67From my experience, it's really hard to brick these boards. But these
55tricks have been useful when it got stuck in a weird scenario. 68tricks have been useful when it got stuck in a weird scenario.
56 69
571. Try plugging the board in while pressing `L_Ctrl`. This will force it 701. Try plugging the board in while holding the bootloader key. This will force
58 to boot only the bootloader without loading the firmware. Once this is 71 it to boot only the bootloader without loading the firmware. Once this is
59 done, just reflash the board with the original firmware. 72 done, just reflash the board with the original firmware.
602. Sometimes USB hubs can act weird, so try connecting the board directly 732. Sometimes USB hubs can act weird, so try connecting the board directly
61 to your computer or plugging/unplugging the USB hub. 74 to your computer or plugging/unplugging the USB hub.
diff --git a/keyboards/ps2avrGB/program b/keyboards/ps2avrGB/program
index 8593ae0bf..298e64547 100755
--- a/keyboards/ps2avrGB/program
+++ b/keyboards/ps2avrGB/program
@@ -76,7 +76,8 @@ if kb is not None:
76 print('Found a keyboad in normal mode. Attempting to send it to bootloader mode ...', end='') 76 print('Found a keyboad in normal mode. Attempting to send it to bootloader mode ...', end='')
77 sendDeviceToBootloaderMode(kb) 77 sendDeviceToBootloaderMode(kb)
78 print(' done.') 78 print(' done.')
79 print("Hint: If your keyboard can't be set to bootloader mode automatically, plug it in while pressing left control to do so manually.") 79 print("Hint: If your keyboard can't be set to bootloader mode automatically, plug it in while pressing the bootloader key to do so manually.")
80 print(" You can find more infos about this here: https://github.com/qmk/qmk_firmware/tree/master/keyboards/ps2avrGB#setting-the-board-to-bootloader-mode")
80 81
81attempts = 12 # 60 seconds 82attempts = 12 # 60 seconds
82found = False 83found = False
diff --git a/keyboards/tada68/keymaps/isoish/keymap.c b/keyboards/tada68/keymaps/isoish/keymap.c
new file mode 100644
index 000000000..56f4a8532
--- /dev/null
+++ b/keyboards/tada68/keymaps/isoish/keymap.c
@@ -0,0 +1,48 @@
1#include "tada68.h"
2
3#define _BL 0
4#define _FL 1
5
6#define _______ KC_TRNS
7
8const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
9 /* Keymap _BL: (Base Layer) Default Layer
10 * ,----------------------------------------------------------------.
11 * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |~ ` |
12 * |----------------------------------------------------------------|
13 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Del |
14 * |----------------------------------------------------------------|
15 * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgUp|
16 * |----------------------------------------------------------------|
17 * |Shift | Z| X| C| V| B| N| M| ,| .| /| <> | Up|PgDn|
18 * |----------------------------------------------------------------|
19 * |Ctrl|Win |Alt | Space |Alt| FN| APP|Lef|Dow|Rig |
20 * `----------------------------------------------------------------'
21 */
22[_BL] = KEYMAP_ISO(
23 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,KC_GRV, \
24 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSLS,KC_DEL, \
25 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_BSLS, KC_ENT,KC_PGUP, \
26 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NONUS_BSLASH,KC_UP,KC_PGDN, \
27 KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_APPLICATION, KC_LEFT,KC_DOWN,KC_RGHT),
28
29 /* Keymap _FL1: Function Layer 1
30 * ,----------------------------------------------------------------.
31 * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| RESET|PSCR|
32 * |----------------------------------------------------------------|
33 * | | | | | | | | | | | |BL-|BL+|BL | INS|
34 * |----------------------------------------------------------------|
35 * | | | | | | | | | | PP|PLA| PN| |HOME|
36 * |----------------------------------------------------------------|
37 * | | | | | | | | | V-| MV| V+| | | END|
38 * |----------------------------------------------------------------|
39 * | | | | | | | | | | |
40 * `----------------------------------------------------------------'
41 */
42[_FL] = KEYMAP_ISO(
43 _______, KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,RESET,KC_PSCR, \
44 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,KC_INS, \
45 _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,KC_HOME, \
46 _______,_______,_______,_______,_______,_______,_______,_______,KC_VOLD,KC_MUTE,KC_VOLU,_______,_______,KC_END, \
47 _______,_______,_______, _______, _______,_______,_______,_______,_______, _______),
48}; \ No newline at end of file
diff --git a/keyboards/tada68/keymaps/isoish/readme.md b/keyboards/tada68/keymaps/isoish/readme.md
new file mode 100644
index 000000000..48ad783c8
--- /dev/null
+++ b/keyboards/tada68/keymaps/isoish/readme.md
@@ -0,0 +1,3 @@
1# ISO(ish) - Basic ISO format layout for TADA68 #
2
3Basic layout with some edits to work better with ISO (nordic) layout. Due to the wide left shift it isn't quite Nordic iso though. \ No newline at end of file
diff --git a/keyboards/tada68/keymaps/isoish/rules.mk b/keyboards/tada68/keymaps/isoish/rules.mk
new file mode 100644
index 000000000..4deca710b
--- /dev/null
+++ b/keyboards/tada68/keymaps/isoish/rules.mk
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/tada68/tada68.h b/keyboards/tada68/tada68.h
index d0e027a6f..bb41865ba 100755
--- a/keyboards/tada68/tada68.h
+++ b/keyboards/tada68/tada68.h
@@ -37,7 +37,38 @@
37 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e} \ 37 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e} \
38} 38}
39 39
40/* TADA68 ISO layout
41 * ,----------------------------------------------------------------.
42 * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | 0e |
43 * |----------------------------------------------------------------|
44 * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | 1e |
45 * |----------------------------------------------------------------|
46 * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c| 2d| 2e |
47 * |----------------------------------------------------------------|
48 * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3c| 3d| 3e |
49 * |----------------------------------------------------------------|
50 * | 40 | 41 | 42 | 45 | 49| 4a| 4b| 4c| 4d| 4e |
51 * `----------------------------------------------------------------'
52 */
53// The first section contains all of the arguments
54// The second converts the arguments into a two-dimensional array
55
56#define KEYMAP_ISO( \
57 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
58 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
59 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
60 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
61 k40, k41, k42, k45, k49, k4a, k4b, k4c, k4d, k4e \
62) \
63{ \
64 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \
65 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e}, \
66 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e}, \
67 {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e}, \
68 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e} \
69}
70
40void matrix_init_user(void); 71void matrix_init_user(void);
41void matrix_scan_user(void); 72void matrix_scan_user(void);
42 73
43#endif 74#endif \ No newline at end of file