aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlucwastiaux <luc.wastiaux@xsmail.com>2017-09-16 10:00:26 +0800
committerJack Humbert <jack.humb@gmail.com>2017-09-15 22:00:26 -0400
commit3e1f388bda5b3d8ad6daeb32de9cdc4e41a34d45 (patch)
tree96fb2864e8155d29420a494897762edd90597494
parent7bcf3e2781c754eb2b5ac62ece1021bdcca783b6 (diff)
downloadqmk_firmware-3e1f388bda5b3d8ad6daeb32de9cdc4e41a34d45.tar.gz
qmk_firmware-3e1f388bda5b3d8ad6daeb32de9cdc4e41a34d45.zip
Adding Ergodox EZ and Atreus Dvorak 42-key layouts (#1705)
* importing 42 key dvorak layout * added comment for build instructions * adding atreus dvorak 42 key layout * added readme * add readme * build instructions * additional MEH shortcuts
-rw-r--r--keyboards/atreus/keymaps/dvorak_42_key/README.md21
-rw-r--r--keyboards/atreus/keymaps/dvorak_42_key/config.h106
-rw-r--r--keyboards/atreus/keymaps/dvorak_42_key/keymap.c93
-rw-r--r--keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md17
-rw-r--r--keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c321
5 files changed, 558 insertions, 0 deletions
diff --git a/keyboards/atreus/keymaps/dvorak_42_key/README.md b/keyboards/atreus/keymaps/dvorak_42_key/README.md
new file mode 100644
index 000000000..45e3ab75c
--- /dev/null
+++ b/keyboards/atreus/keymaps/dvorak_42_key/README.md
@@ -0,0 +1,21 @@
1Overview
2========
3
4This is a dvorak based layout for the Atreus. Its basic key layout is similar to the ergodox_ez "dvorak_42_key" layout. In fact this layout was created for seamless switching between the Ergodox EZ and Atreus.
5
6How to build and flash
7----------------------
8
9to build;
10make atreus-dvorak_42_key
11
12to flash:
13avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7
14
15Layers
16------
17* BASE: basic dvorak layout
18* KEYNAV: arrow-key navigation. Momentary toggle held by thumb allows the right hand to navigate through text as well as copy/paste/cut, page up/page down
19* KEYSEL: similar to KEYNAV, except for shift-selection
20* COMBINED: this is a layer that combines numbers, brackets and special characters. !@#$%^&*( can be type by shift+COMBINED+1/2/3/etc..
21* MOUSE: mouse navigation, as well as browser tab-left/tab-right shortcuts \ No newline at end of file
diff --git a/keyboards/atreus/keymaps/dvorak_42_key/config.h b/keyboards/atreus/keymaps/dvorak_42_key/config.h
new file mode 100644
index 000000000..43c51fb2f
--- /dev/null
+++ b/keyboards/atreus/keymaps/dvorak_42_key/config.h
@@ -0,0 +1,106 @@
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
22#include "config_common.h"
23
24
25// mouse speed
26
27#define MOUSEKEY_INTERVAL 15
28#define MOUSEKEY_DELAY 100
29#define MOUSEKEY_TIME_TO_MAX 100
30#define MOUSEKEY_MAX_SPEED 3
31
32#define MOUSEKEY_WHEEL_DELAY 500
33#define MOUSEKEY_WHEEL_DELTA 1
34#define MOUSEKEY_WHEEL_MAX_SPEED 1
35#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
36
37/* USB Device descriptor parameter */
38
39#define VENDOR_ID 0xFEED
40#define PRODUCT_ID 0x6060
41#define DEVICE_VER 0x0001
42#define MANUFACTURER Technomancy
43#define PRODUCT Atreus
44#define DESCRIPTION q.m.k. keyboard firmware for Atreus
45
46/* key matrix size */
47#define MATRIX_ROWS 4
48#define MATRIX_COLS 11
49
50// Change this to how you wired your keyboard
51// COLS: Left to right, ROWS: Top to bottom
52#if defined(ATREUS_ASTAR)
53# define MATRIX_ROW_PINS { D0, D1, D3, D2 }
54#if defined(PCBDOWN)
55# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 }
56#else
57# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
58#endif
59# define UNUSED_PINS
60#elif defined(ATREUS_TEENSY2)
61# define MATRIX_ROW_PINS { D0, D1, D2, D3 }
62# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 }
63# define UNUSED_PINS
64#endif
65
66/* COL2ROW or ROW2COL */
67#define DIODE_DIRECTION COL2ROW
68
69/* define if matrix has ghost */
70//#define MATRIX_HAS_GHOST
71
72/* number of backlight levels */
73//#define BACKLIGHT_LEVELS 3
74
75/* Set 0 if debouncing isn't needed */
76#define DEBOUNCING_DELAY 5
77
78/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
79#define LOCKING_SUPPORT_ENABLE
80/* Locking resynchronize hack */
81#define LOCKING_RESYNC_ENABLE
82
83/* key combination for command */
84#define IS_COMMAND() ( \
85 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
86)
87
88/*
89 * Feature disable options
90 * These options are also useful to firmware size reduction.
91 */
92
93/* disable debug print */
94//#define NO_DEBUG
95
96/* disable print */
97//#define NO_PRINT
98
99/* disable action features */
100//#define NO_ACTION_LAYER
101//#define NO_ACTION_TAPPING
102//#define NO_ACTION_ONESHOT
103//#define NO_ACTION_MACRO
104//#define NO_ACTION_FUNCTION
105
106#endif
diff --git a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
new file mode 100644
index 000000000..8f8c319c5
--- /dev/null
+++ b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
@@ -0,0 +1,93 @@
1
2#include "atreus.h"
3
4// layers
5#define BASE 0
6#define KEYNAV 1
7#define KEYSEL 2
8#define MOUSE 3
9#define COMBINED 4
10
11// macros
12#define MOUSE_TOGGLE 1
13#define MOUSE_LOCK 2
14
15static bool mouse_lock = false;
16
17// building instructions:
18// make atreus-dvorak_42_key
19
20// flashing instructions:
21// avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24
25[BASE] = {
26 {KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_TRNS, KC_F, KC_G, KC_C, KC_R, KC_L, },
27 {KC_A, KC_O, KC_E, KC_U, KC_I, KC_TRNS, KC_D, KC_H, KC_T, KC_N, KC_S, },
28 {KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, MO(KEYNAV), KC_B, KC_M, KC_W, KC_V, KC_Z, },
29 {OSM(MOD_LSFT), OSM(MOD_LCTL), M(MOUSE_TOGGLE), MO(KEYSEL), MO(COMBINED), KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_CAPSLOCK, OSM(MOD_LSFT), }
30},
31
32[KEYNAV] = {
33 {KC_ESC, MEH(KC_A), RCTL(KC_Z), RCTL(KC_S), MEH(KC_B), KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, },
34 {MEH(KC_C), MEH(KC_D), RSFT(KC_TAB), KC_TAB, MEH(KC_E), KC_TRNS, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), },
35 {MEH(KC_F), MEH(KC_G), MEH(KC_H), MEH(KC_I), MEH(KC_J), KC_TRNS, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDOWN, },
36 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), }
37},
38
39[KEYSEL] = {
40 {KC_TRNS, KC_TRNS, RCTL(KC_Z), RCTL(KC_S), KC_TRNS, KC_TRNS, KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP), },
41 {KC_TRNS, KC_TRNS, RSFT(KC_TAB), KC_TAB, KC_TRNS, KC_TRNS, RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), },
42 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_C),RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN), },
43 {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), }
44},
45
46[COMBINED] = {
47 {KC_ESC, KC_LABK, KC_RABK, KC_DQUO, KC_GRAVE, KC_TRNS, KC_PLUS, KC_7, KC_8, KC_9, KC_ASTR, },
48 {KC_LPRN, KC_RPRN, KC_LBRACKET, KC_RBRACKET, KC_UNDS, KC_TRNS, KC_MINS, KC_4, KC_5, KC_6, KC_SLSH, },
49 {KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_TILD, KC_TRNS, KC_EQUAL, KC_1, KC_2, KC_3, KC_QUES, },
50 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_TRNS, KC_TRNS, }
51},
52
53[MOUSE] = {
54 {KC_TRNS, KC_PGUP, KC_MS_WH_UP, KC_UP, KC_TRNS, KC_TRNS, KC_UP, KC_HOME, KC_MS_U, KC_END, KC_MS_WH_UP, },
55 {KC_MS_ACCEL0, KC_PGDN, KC_MS_WH_DOWN, KC_DOWN, KC_TRNS, KC_TRNS, KC_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_MS_WH_DOWN, },
56 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, MEH(KC_X), MEH(KC_Y), MEH(KC_Z), KC_F5, RCTL(KC_W), },
57 {KC_TRNS, M(MOUSE_LOCK), KC_TRNS, KC_MS_ACCEL0, KC_TRNS, KC_BTN1, KC_BTN2, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), }
58},
59
60
61};
62
63const uint16_t PROGMEM fn_actions[] = {
64
65};
66
67const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
68{
69 // MACRODOWN only works in this function
70 switch(id) {
71 case MOUSE_TOGGLE:
72 if (record->event.pressed) {
73 layer_on(MOUSE);
74 } else {
75 if(!mouse_lock)
76 layer_off(MOUSE);
77 }
78 break;
79 case MOUSE_LOCK:
80 if (record->event.pressed)
81 {
82 if(mouse_lock)
83 {
84 mouse_lock = false;
85 layer_off(MOUSE);
86 }
87 else
88 mouse_lock = true;
89 }
90 break;
91 }
92 return MACRO_NONE;
93};
diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md b/keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md
new file mode 100644
index 000000000..18af2cdee
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md
@@ -0,0 +1,17 @@
1Overview
2========
3
4This is a dvorak based layout for the Ergodox EZ. Its basic key layout is similar to the Atreus "dvorak_42_key" layout. In fact this layout was created for seamless switching between the Ergodox EZ and Atreus. On the base layer, the keys that don't exist on the Atreus are mapped to MEH shortcuts and can be interpreted by Autohotkey. This layout only makes use of the 42 keys that the Atreus also has for the main functionality.
5
6How to build
7------------
8make ergodox_ez-dvorak_42_key-teensy
9
10Layers
11------
12* BASE: basic dvorak layout
13* KEYNAV: arrow-key navigation. Momentary toggle held by thumb allows the right hand to navigate through text as well as copy/paste/cut, page up/page down
14* KEYSEL: similar to KEYNAV, except for shift-selection
15* COMBINED: this is a layer that combines numbers, brackets and special characters. !@#$%^&*( can be type by shift+COMBINED+1/2/3/etc..
16* MOUSE: mouse navigation, as well as browser tab-left/tab-right shortcuts
17* SHELL_NAV: Linux Bash shortcuts (move forward/backward in command line, move between screen windows, Ctrl+C, recall last argument, etc \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
new file mode 100644
index 000000000..55168e85d
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
@@ -0,0 +1,321 @@
1#include QMK_KEYBOARD_H
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6
7// to build this keymap
8// make ergodox_ez-dvorak_42_key-teensy
9
10static bool mouse_lock = false;
11
12enum custom_keycodes {
13 PLACEHOLDER = SAFE_RANGE, // can always be here
14 EPRM,
15 VRSN,
16 RGB_SLD,
17
18};
19
20
21#define BASE 0 // base dvorak layer
22#define KEYNAV 1 // arrow navigation (right hand)
23#define KEYSEL 2 // arrow navigation + shift (allow text selection)
24#define SHELL_NAV 3 // bash shortcuts
25#define MOUSE 4 // mouse layer (can be locked with lock key)
26#define COMBINED 5 // combined numbers and symbols layer
27
28// macros
29#define MOUSE_TOGGLE 1
30#define MOUSE_LOCK 2
31#define SCREEN_TAB_LEFT 4
32#define SCREEN_TAB_RIGHT 5
33#define SCREEN_NEW_TAB 6
34#define SWITCH_NDS 7
35#define SCREEN_COPY_MODE 8
36#define SCREEN_PASTE 9
37#define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 15
38
39
40const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41
42 [BASE] = KEYMAP(
43 // left hand
44 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
45 KC_TAB, KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, MEH(KC_2),
46 MO(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I,
47 MEH(KC_0), KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, MEH(KC_3),
48 MEH(KC_1), OSM(MOD_LSFT), OSM(MOD_LCTL), M(MOUSE_TOGGLE), MO(KEYSEL),
49
50 // left thumb cluster
51 MEH(KC_4), MEH(KC_5),
52 MEH(KC_6),
53 MO(COMBINED),MO(KEYNAV), OSM(MOD_LALT),
54
55 // right hand
56 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MEH(KC_9),
57 MEH(KC_7), KC_F, KC_G, KC_C, KC_R, KC_L, MEH(KC_F1),
58 KC_D, KC_H, KC_T, KC_N, KC_S, MEH(KC_F2),
59 MEH(KC_8), KC_B, KC_M, KC_W, KC_V, KC_Z, MEH(KC_F3),
60 KC_BSPC, RCTL(KC_BSPC), KC_CAPSLOCK, OSM(MOD_LSFT),MEH(KC_F4),
61
62 // right thumb cluster
63 MEH(KC_F5),MEH(KC_F6),MEH(KC_F7),MEH(KC_F8),KC_ENTER,KC_SPACE
64
65 ),
66
67 [KEYNAV] = KEYMAP(
68 // left hand
69 KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS,KC_ESC, MEH(KC_F9), RCTL(KC_Z), RCTL(KC_S), MEH(KC_F10), KC_TRNS,
71 KC_TRNS,MEH(KC_F11), MEH(KC_F12), RSFT(KC_TAB), KC_TAB, MEH(KC_A),
72 KC_TRNS,MEH(KC_B), MEH(KC_C), MEH(KC_D), MEH(KC_E), MEH(KC_F), KC_TRNS,
73 KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
74 // left thumb cluster
75 KC_TRNS,KC_TRNS,KC_TRNS,TO(MOUSE),KC_TRNS,KC_TRNS,
76
77 // right hand
78 KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_G),
79 KC_TRNS,KC_NO, KC_HOME, KC_UP, KC_END, KC_PGUP, MEH(KC_H),
80 LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), MEH(KC_I),
81 KC_TRNS,KC_NO, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDOWN, MEH(KC_J),
82 KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), MEH(KC_K),
83
84 // right thumb cluster
85 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
86 ),
87
88 // key selection layer
89 [KEYSEL] = KEYMAP(
90 // left hand
91 KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
92 KC_TRNS,MEH(KC_G), MEH(KC_H),MEH(KC_I), MEH(KC_J), MEH(KC_K), KC_TRNS,
93 KC_TRNS,MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P),
94 KC_TRNS,MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS,
95 // bottom row
96 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
97 // thumb cluster
98 KC_TRNS,KC_TRNS,
99 KC_TRNS,
100 KC_TRNS,KC_TRNS,KC_TRNS,
101 // right hand
102 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_Q),
103 RSFT(KC_PGUP), KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP), MEH(KC_R),
104 RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), MEH(KC_S),
105 RSFT(KC_PGDN), KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN), MEH(KC_T),
106 // bottom row
107 KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), MEH(KC_U),
108 // thumb cluster
109 KC_TRNS, KC_TRNS,
110 KC_TRNS,
111 KC_TRNS, KC_TRNS, KC_TRNS
112 ),
113
114 // shell navigation layer
115 [SHELL_NAV] = KEYMAP(
116 // left hand
117 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
118 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
119 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
120 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
121 // bottom row
122 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
123 // thumb cluster
124 KC_TRNS,KC_TRNS,
125 LALT(KC_D),
126 KC_TRNS,RCTL(KC_W),KC_TRNS,
127 // right hand
128 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(SWITCH_NDS),
129 RCTL(KC_L), RCTL(KC_W), KC_HOME, KC_UP, KC_END, LALT(KC_D), RCTL(KC_R),
130 LALT(KC_B), KC_LEFT, KC_DOWN, KC_RIGHT, LALT(KC_F), LALT(KC_DOT),
131 RCTL(KC_C), RCTL(KC_U), M(SCREEN_COPY_MODE), M(SCREEN_PASTE), MEH(KC_V), RCTL(KC_K), M(SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND),
132 // bottom row
133 M(SCREEN_TAB_LEFT), M(SCREEN_TAB_RIGHT), M(SCREEN_NEW_TAB), KC_TRNS, KC_TRNS,
134 // thumb cluster
135 KC_TRNS, KC_TRNS,
136 KC_TRNS,
137 KC_TRNS, KC_TRNS, KC_TRNS
138 ),
139
140
141
142 [COMBINED] = KEYMAP(
143
144 // left hand
145 KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
146 KC_TRNS,KC_ESC, KC_LABK, KC_RABK, KC_DQUO, KC_GRAVE,KC_TRNS,
147 KC_TRNS,KC_LPRN, KC_RPRN, KC_LBRACKET, KC_RBRACKET, KC_UNDS,
148 KC_TRNS,KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_TILD,KC_TRNS,
149 // bottom row
150 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
151 // thumb cluster
152 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
153
154 // right hand
155 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_L),
156 KC_TRNS, KC_PLUS, KC_7, KC_8, KC_9, KC_ASTR, MEH(KC_M),
157 KC_MINS, KC_4, KC_5, KC_6, KC_SLSH, MEH(KC_N),
158 KC_TRNS, KC_EQUAL, KC_1, KC_2, KC_3, KC_QUES, MEH(KC_O),
159 // bottom row
160 KC_0, KC_DOT, KC_TRNS, KC_TRNS, MEH(KC_P),
161 // thumb cluster
162 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
163
164
165 [MOUSE] = KEYMAP(
166 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
167 KC_TRNS, KC_TRNS, KC_PGUP, KC_MS_WH_UP, KC_UP, KC_TRNS, KC_TRNS,
168 KC_TRNS, KC_MS_ACCEL0, KC_PGDN, KC_MS_WH_DOWN, KC_DOWN, KC_TRNS,
169 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
170 KC_TRNS, KC_TRNS, M(MOUSE_LOCK), KC_TRNS, KC_MS_ACCEL0,
171
172 KC_TRNS, KC_TRNS,
173 KC_TRNS,
174 KC_TRNS, KC_BTN3, KC_TRNS,
175 // right hand
176 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
177 KC_TRNS, KC_UP, KC_HOME, KC_MS_U, KC_END, KC_MS_WH_UP, KC_TRNS,
178 KC_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_MS_WH_DOWN, KC_TRNS,
179 KC_TRNS, MEH(KC_X), MEH(KC_Y), MEH(KC_Z), KC_F5, RCTL(KC_W), KC_TRNS,
180 // browser tab control
181 RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), KC_TRNS,
182 KC_TRNS, KC_TRNS,
183 KC_TRNS,
184 KC_TRNS, KC_BTN1, KC_BTN2
185 ),
186
187
188};
189
190const uint16_t PROGMEM fn_actions[] = {
191 [1] = ACTION_LAYER_TAP_TOGGLE(1)
192};
193
194// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
195const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
196{
197 switch(id) {
198 case MOUSE_TOGGLE:
199 if (record->event.pressed) {
200 layer_on(MOUSE);
201 } else {
202 if(!mouse_lock)
203 layer_off(MOUSE);
204 }
205 break;
206 case MOUSE_LOCK:
207 if (record->event.pressed)
208 {
209 if(mouse_lock)
210 {
211 mouse_lock = false;
212 layer_off(MOUSE);
213 }
214 else
215 mouse_lock = true;
216 }
217 break;
218 case SCREEN_TAB_LEFT:
219 if (record->event.pressed) {
220 return MACRO( D(LCTL), T(A), U(LCTL), T(P), END);
221 }
222 break;
223 case SCREEN_TAB_RIGHT:
224 if (record->event.pressed) {
225 return MACRO( D(LCTL), T(A), U(LCTL), T(N), END);
226 }
227 break;
228 case SCREEN_NEW_TAB:
229 if (record->event.pressed) {
230 return MACRO( D(LCTL), T(A), U(LCTL), T(C), END);
231 }
232 break;
233 case SCREEN_COPY_MODE:
234 if (record->event.pressed) {
235 return MACRO( D(LCTL), T(A), U(LCTL), T(ESC), END);
236 }
237 break;
238 case SCREEN_PASTE:
239 if (record->event.pressed) {
240 return MACRO( D(LCTL), T(A), U(LCTL), T(RBRC), END);
241 }
242 break;
243 case SWITCH_NDS:
244 if (record->event.pressed) {
245 return MACRO( D(LSFT),
246 T(F11),
247 U(LSFT),
248 W(255),
249 D(LALT),
250 T(TAB),
251 U(LALT),
252 END);
253 }
254 break;
255 case SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND:
256 if (record->event.pressed) {
257 return MACRO( T(UP), T(HOME), D(LALT), T(D), U(LALT), END);
258 }
259 break;
260 }
261 return MACRO_NONE;
262};
263
264bool process_record_user(uint16_t keycode, keyrecord_t *record) {
265 switch (keycode) {
266 // dynamically generate these.
267 case EPRM:
268 if (record->event.pressed) {
269 eeconfig_init();
270 }
271 return false;
272 break;
273 case VRSN:
274 if (record->event.pressed) {
275 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
276 }
277 return false;
278 break;
279 case RGB_SLD:
280 if (record->event.pressed) {
281 rgblight_mode(1);
282 }
283 return false;
284 break;
285
286 }
287 return true;
288}
289
290void led_set_user(uint8_t usb_led) {
291 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
292 ergodox_right_led_1_on();
293 } else {
294 ergodox_right_led_1_off();
295 }
296}
297
298void matrix_scan_user(void) {
299
300 uint8_t layer = biton32(layer_state);
301
302 ergodox_board_led_off();
303 ergodox_right_led_2_off();
304 ergodox_right_led_3_off();
305 switch (layer) {
306 case COMBINED:
307 ergodox_right_led_2_on();
308 break;
309 case KEYNAV:
310 case KEYSEL:
311 ergodox_right_led_3_on();
312 break;
313 case MOUSE:
314 ergodox_right_led_2_on();
315 ergodox_right_led_3_on();
316 break;
317 default:
318 break;
319 }
320
321};