aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/handwired/terminus_mini/config.h190
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/config.h24
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/keymap.c218
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/readme.md122
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/rules.mk34
-rw-r--r--keyboards/handwired/terminus_mini/rules.mk69
-rw-r--r--keyboards/handwired/terminus_mini/terminus_mini.c43
-rw-r--r--keyboards/handwired/terminus_mini/terminus_mini.h40
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/README.md135
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/config.h26
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/keymap.c216
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/rules.mk34
12 files changed, 1151 insertions, 0 deletions
diff --git a/keyboards/handwired/terminus_mini/config.h b/keyboards/handwired/terminus_mini/config.h
new file mode 100644
index 000000000..5e32cbaf0
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/config.h
@@ -0,0 +1,190 @@
1/*
2Copyright 2017 James Morgan <ja.morgan1@outlook.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#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER James Morgan
28#define PRODUCT terminus_mini
29#define DESCRIPTION A custom keyboard
30
31/* key matrix size */
32#define MATRIX_ROWS 4
33#define MATRIX_COLS 12
34
35/*
36 * Keyboard Matrix Assignments
37 *
38 * Change this to how you wired your keyboard
39 * COLS: AVR pins used for columns, left to right
40 * ROWS: AVR pins used for rows, top to bottom
41 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
42 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
43 *
44*/
45#define MATRIX_ROW_PINS { B5, B4, D7, D6 }
46#define MATRIX_COL_PINS { B0, D0, D5, B6, D4, C7, F7, F6, F5, F4, F1, F0 }
47#define UNUSED_PINS
48
49/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
50#define DIODE_DIRECTION COL2ROW
51
52// #define BACKLIGHT_PIN B7
53// #define BACKLIGHT_BREATHING
54// #define BACKLIGHT_LEVELS 3
55
56//define tapping-toggle count
57#define TAPPING_TOGGLE 1
58
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
61
62/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
63#define DEBOUNCING_DELAY 5
64
65/* define if matrix has ghost (lacks anti-ghosting diodes) */
66//#define MATRIX_HAS_GHOST
67
68/* number of backlight levels */
69
70/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
71#define LOCKING_SUPPORT_ENABLE
72/* Locking resynchronize hack */
73#define LOCKING_RESYNC_ENABLE
74
75/*
76 * Force NKRO
77 *
78 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
79 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
80 * rules.mk for this to work.)
81 *
82 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
83 * until the next keyboard reset.
84 *
85 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
86 * fully operational during normal computer usage.
87 *
88 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
89 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
90 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
91 * power-up.
92 *
93 */
94//#define FORCE_NKRO
95
96/*
97 * Magic Key Options
98 *
99 * Magic keys are hotkey commands that allow control over firmware functions of
100 * the keyboard. They are best used in combination with the HID Listen program,
101 * found here: https://www.pjrc.com/teensy/hid_listen.html
102 *
103 * The options below allow the magic key functionality to be changed. This is
104 * useful if your keyboard/keypad is missing keys and you want magic key support.
105 *
106 */
107
108/* key combination for magic key command */
109#define IS_COMMAND() ( \
110 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
111)
112
113/* control how magic key switches layers */
114//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
116//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
117
118/* override magic key keymap */
119//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
120//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
121//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
122//#define MAGIC_KEY_HELP1 H
123//#define MAGIC_KEY_HELP2 SLASH
124//#define MAGIC_KEY_DEBUG D
125//#define MAGIC_KEY_DEBUG_MATRIX X
126//#define MAGIC_KEY_DEBUG_KBD K
127//#define MAGIC_KEY_DEBUG_MOUSE M
128//#define MAGIC_KEY_VERSION V
129//#define MAGIC_KEY_STATUS S
130//#define MAGIC_KEY_CONSOLE C
131//#define MAGIC_KEY_LAYER0_ALT1 ESC
132//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
133//#define MAGIC_KEY_LAYER0 0
134//#define MAGIC_KEY_LAYER1 1
135//#define MAGIC_KEY_LAYER2 2
136//#define MAGIC_KEY_LAYER3 3
137//#define MAGIC_KEY_LAYER4 4
138//#define MAGIC_KEY_LAYER5 5
139//#define MAGIC_KEY_LAYER6 6
140//#define MAGIC_KEY_LAYER7 7
141//#define MAGIC_KEY_LAYER8 8
142//#define MAGIC_KEY_LAYER9 9
143//#define MAGIC_KEY_BOOTLOADER PAUSE
144//#define MAGIC_KEY_LOCK CAPS
145//#define MAGIC_KEY_EEPROM E
146//#define MAGIC_KEY_NKRO N
147//#define MAGIC_KEY_SLEEP_LED Z
148
149/*
150 * Feature disable options
151 * These options are also useful to firmware size reduction.
152 */
153
154/* disable debug print */
155//#define NO_DEBUG
156
157/* disable print */
158//#define NO_PRINT
159
160/* disable action features */
161//#define NO_ACTION_LAYER
162//#define NO_ACTION_TAPPING
163//#define NO_ACTION_ONESHOT
164//#define NO_ACTION_MACRO
165//#define NO_ACTION_FUNCTION
166
167/*
168 * MIDI options
169 */
170
171/* Prevent use of disabled MIDI features in the keymap */
172//#define MIDI_ENABLE_STRICT 1
173
174/* enable basic MIDI features:
175 - MIDI notes can be sent when in Music mode is on
176*/
177//#define MIDI_BASIC
178
179/* enable advanced MIDI features:
180 - MIDI notes can be added to the keymap
181 - Octave shift and transpose
182 - Virtual sustain, portamento, and modulation wheel
183 - etc.
184*/
185//#define MIDI_ADVANCED
186
187/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
188//#define MIDI_TONE_KEYCODE_OCTAVES 1
189
190#endif
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/config.h b/keyboards/handwired/terminus_mini/keymaps/default/config.h
new file mode 100644
index 000000000..f52a97bbc
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/keymaps/default/config.h
@@ -0,0 +1,24 @@
1/* Copyright 2017 REPLACE_WITH_YOUR_NAME
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#ifndef CONFIG_USER_H
18#define CONFIG_USER_H
19
20#include "../../config.h"
21
22// place overrides here
23
24#endif
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
new file mode 100644
index 000000000..5227cb6a9
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
@@ -0,0 +1,218 @@
1/* Copyright 2017 MogranJM
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#include "terminus_mini.h"
17#include "action_layer.h"
18#ifdef AUDIO_ENABLE
19 #include "audio.h"
20#endif
21#include "eeconfig.h"
22
23extern keymap_config_t keymap_config;
24
25// Each layer gets a name for readability, which is then used in the keymap matrix below.
26// The underscores don't mean anything - you can have a layer called STUFF or any other name.
27// Layer names don't all need to be of the same length, obviously, and you can also skip them
28// entirely and just use numbers.
29
30enum terminus_mini_layers {
31 _COLEMAK,
32 _QWERTY,
33 _LOWER,
34 _RAISE,
35 _FUNCTION,
36 _MOUSE,
37 _ADJUST,
38};
39
40enum terminus_mini_keycodes {
41 COLEMAK = SAFE_RANGE,
42 QWERTY,
43 LOWER,
44 RAISE,
45 FUNCTION,
46 MOUSE,
47 ADJUST,
48};
49
50 // Enable these functions using FUNC(n) macro.
51 const uint16_t PROGMEM fn_actions[] = { //ACTION_LAYER_TAP_TOGGLE requires that number of taps be defined in *config.h* - default set to 5
52 [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), //Hold for momentary Lower layer, Tap for Space,
53 [1] = ACTION_LAYER_TAP_KEY(_RAISE, KC_ENT), //Hold for momentary Mouse layer, Tap for Enter,
54 [2] = ACTION_LAYER_TAP_TOGGLE(_LOWER), //Hold for momentary Lower, Tap for toggle Lower
55 [3] = ACTION_LAYER_TAP_TOGGLE(_MOUSE), //Hold for momentary Mouse, Tap for toggle Mouse
56 [4] = ACTION_LAYER_MOMENTARY(_FUNCTION), //Hold for momentary Function
57 };
58#define SPC_LW FUNC(0)
59#define ENT_RS FUNC(1)
60#define LWR FUNC(2)
61#define MSE FUNC(3)
62#define FNC FUNC(4)
63
64// Fillers to make layering more clear
65#define _______ KC_TRNS
66#define XXXXXXX KC_NO
67
68
69const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
70/* Colemak -
71 * ,----------------------------------------------------------------------------------.
72 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
73 * |-----+------+------+------+------+-------------+------+------+------+------+------|
74 * | BS | A | R | S | T | D | H | N | E | I | O | " |
75 * |-----+------+------+------+------+-------------+------+------+------+------+------|
76 * | LSPO| Z | X | C | V | B | K | M | , | . | / | RSPC |
77 * |-----+------+------+------+------+------+------+------+------+------+------+------|
78 * | Ctrl| LGUI | LAlt | Lower| SpaceLW | RSEnter | Fn | Mouse| Menu | Ctrl |
79 * `----------------------------------------------------------------------------------'
80 */
81[_COLEMAK] = TERMINUS_MINI(
82 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL , \
83 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
84 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
85 KC_LCTL, KC_LGUI, KC_LALT, LWR, SPC_LW, ENT_RS, FNC, MSE, KC_APP, KC_RCTL \
86 ),
87
88/* Lower
89 * ,-----------------------------------------------------------------------------------.
90 * | Tab | PgUp | Home | Up | End | / | 7 | 8 | 9 | * | | Del |
91 * |------+------+------+------+------+------+------+------+------+------+------+------|
92 * | BS | PgDn | Left | Down |Right | - | 4 | 5 | 6 | + | | |
93 * |------+------+------+------+------+------+------+------+------+------+------+------|
94 * | LSPO | Z | X | C | V | = | 1 | 2 | 3 | Enter| | RSPC |
95 * |------+------+------+------+------+------+------+------+------+------+------+------|
96 * | Ctrl | LGUI | Alt | Lower| Space/Lower | 0 | . | Fn | Menu | Ctrl |
97 * `-----------------------------------------------------------------------------------'
98 Want to add tap-dance function to 0 key: Tap=0, doubleTap=Ent
99 */
100
101[_LOWER] = TERMINUS_MINI(
102 KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PSLS, KC_7, KC_8, KC_9, KC_PAST, XXXXXXX, _______, \
103 _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_MINS, KC_4, KC_5, KC_6, KC_PPLS, XXXXXXX, _______, \
104 _______, _______, _______, _______, _______, KC_EQL, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______, \
105 _______, _______, _______, _______, _______, KC_0, KC_DOT, FNC, _______, _______ \
106),
107
108/* Raise
109 * ,-----------------------------------------------------------------------------------.
110 * | Esc | ! | @ | # | $ | % | ^ | & | * | - | + | Del |
111 * |------+------+------+------+------+------+------+------+------+------+------+------|
112 * | BS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | " |
113 * |------+------+------+------+------+------+------+------+------+------+------+------|
114 * | LSPO | | | { | [ | ` | \ | ] | } | . | ? | RSPC |
115 * |------+------+------+------+------+------+------+------+------+------+------+------|
116 * | Ctrl | LGUI | Alt | | Space/Lower | Raise/Enter | Fn | Mouse| Menu | Ctrl |
117 * `-----------------------------------------------------------------------------------'
118 */
119
120[_RAISE] = TERMINUS_MINI(
121 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, \
122 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
123 _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_GRV, KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, \
124 _______, _______, _______, _______, SPC_LW, ENT_RS, FNC, MSE, _______, _______ \
125 ),
126
127/*Function
128 * ,-----------------------------------------------------------------------------------.
129 * | Esc | Mute | Vol- | Vol+ | | RESET| POWER| F1 | F2 | F3 | F4 | Ins |
130 * |------+------+------+------+------+------+------+------+------+------+------+------|
131 * | Caps | Stop | |<< | >/|| | >>| | | | F5 | F6 | F7 | F8 |PrtSc |
132 * |------+------+------+------+------+------+------+------+------+------+------+------|
133 * | LSOB | | | | | | | F9 | F10 | F11 | F12 |ScrLk |
134 * |------+------+------+------+------+------+------+------+------+------+------+------|
135 * | Ctrl | LGUI | Alt | | Space/Lower | Enter/Raise | Fn | | |PsBrk |
136 * `-----------------------------------------------------------------------------------'
137 */
138
139[_FUNCTION] = TERMINUS_MINI(
140 _______, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, RESET, KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS , \
141 KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, \
142 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_SLCK, \
143 _______, _______, _______, _______, _______, _______, FNC, _______, _______, KC_PAUS \
144 ),
145
146/* MOUSE
147 * ,---------------------------------------------------------------------------------------.
148 * | Esc | WhlU | WhlL | MsUp | WhlR | | | M1 | M2 | M3 | | |
149 * |------+-------+------+-------+------+------+------+-------+-------+------+------+------|
150 * | | WhlD | MsL | MsDn | MsR | | |LClick |RClick | | | |
151 * |------+-------+------+-------+------+------+------+-------+-------+------+------+------|
152 * | LSPO | | | | | | | | | | | RSCB |
153 * |------+-------+------+-------+------+------+------+-------+-------+------+------+------|
154 * | Ctrl | | | | Sensitivity | Sensitivity | |MOUSE | | Ctrl |
155 * `---------------------------------------------------------------------------------------'
156 */
157
158[_MOUSE] = TERMINUS_MINI(
159 KC_ESC, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX, \
160 KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
161 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSPC, \
162 _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL1, KC_ACL0, XXXXXXX, MSE, XXXXXXX, KC_RCTL \
163 ),
164
165};
166
167void persistant_default_layer_set(uint16_t default_layer) {
168 eeconfig_update_default_layer(default_layer);
169 default_layer_set(default_layer);
170}
171
172bool process_record_user(uint16_t keycode, keyrecord_t *record) {
173 switch (keycode) {
174 case COLEMAK:
175 if (record->event.pressed) {
176 #ifdef AUDIO_ENABLE
177 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
178 #endif
179 persistant_default_layer_set(1UL<<_COLEMAK);
180 }
181 return false;
182 break;
183 case LOWER:
184 if (record->event.pressed) {
185 layer_on(_LOWER);
186 update_tri_layer(_LOWER, _RAISE, _ADJUST);
187 } else {
188 layer_off(_LOWER);
189 update_tri_layer(_LOWER, _RAISE, _ADJUST);
190 }
191 return false;
192 break;
193 case RAISE:
194 if (record->event.pressed) {
195 layer_on(_RAISE);
196 update_tri_layer(_LOWER, _RAISE, _ADJUST);
197 } else {
198 layer_off(_RAISE);
199 update_tri_layer(_LOWER, _RAISE, _ADJUST);
200 }
201 return false;
202 break;
203 }
204 return true;
205}
206
207
208void matrix_init_user(void) {
209
210}
211
212void matrix_scan_user(void) {
213
214}
215
216void led_set_user(uint8_t usb_led) {
217
218}
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/readme.md b/keyboards/handwired/terminus_mini/keymaps/default/readme.md
new file mode 100644
index 000000000..66ca566ed
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/keymaps/default/readme.md
@@ -0,0 +1,122 @@
1Copyright 2017 James Morgan <ja.morgan1@outlook.com>
2
3#MogranJM's terminus_mini layout - A handwired keyboard inspired by the UniKeyboard Terminus Mini 2.
4
5This keymap is modified from the Planck default layout. Credit for the layout name goes to UniKeyboard & reddit's /u/blahlicus)
6
7The terminus_mini is a handwired 4x12 ortholinear keyboard with two 2U thumb bar keys. The microcontroller is a Teensy 2.0
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.
10
11> .----------------------------------------. .-----------------------------------------. \
12> | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Del | \
13> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
14> | BS | A | R | S | T | D | | H | N | E | I | O | ' | \
15> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
16> | LSPO| Z | X | C | V | B | | K | M | , | \. | / | RSPC | \
17> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
18> | Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \
19> '----------------------------------------' '-----------------------------------------' \
20\
21> [_COLEMAK] = KEYMAP( \
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
30### 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.
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
35 * Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
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.
37
38
39 #### Layer Shifting
40 * 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.
42 * 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
44 * The 3rd key on the bottom row of the right hand PCB is a **TAP_TOGGLE** macro for the *MOUSE* layer
45
46### LOWER - Numpad & Navigation keys
47
48 ,-----------------------------------------. .-----------------------------------------. \
49 | Tab | PgUp | Home | Up | End | | | 7 | 8 | 9 | \+ | | Del | \
50 |------+------+------+------+------+------| |------+------+------+------+------+------| \
51 | BS | PgDn | Left | Down |Right | | | 4 | 5 | 6 | Enter| | ' | \
52 |------+------+------+------+------+------| |------+------+------+------+------+------| \
53 | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC | \
54 |------+------+------+------+-------------| |-------------+------+------+------+------| \
55 | Ctrl | LGUI | Alt | LOWER| Space/Lower | | 0 | \. | Fn | Menu | Ctrl | \
56 '-----------------------------------------' '-----------------------------------------' \
57
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.
59
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.
61
62
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.
64
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
66 * Couldn't get this to work in Rev1, produced an error in the Make process.
67 * When this is done, I can remove the clunky double Enter on the 4th column of the right hand PCB.
68
69### RAISE - Symbol Layer
70
71 > ,-----------------------------------------. .-----------------------------------------. \
72 > | Esc | | | | | | | | | | | | Del | \
73 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
74 > | BS | \! | @ | \# | $ | % | | ^ | & | \* | \- | \+ | ' | \
75 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
76 > | LSBO | | | \{ | \[ | \` | | | | \] | \} | \. | ? | RSBC | \
77 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
78 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \
79 > '-----------------------------------------' '-----------------------------------------' \
80
81 * The *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.
83 * Shifted symbols can be found on the second-from bottom row, abovee the bars - these include brackets, braces, grave and pipe keys.
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.
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**.
87
88### FUNCTION - Function & Media keys
89
90 > ,-----------------------------------------. .-----------------------------------------. \
91 > | Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins | \
92 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
93 > | Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc | \
94 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
95 > | LSOB | | | | | | | | | | | |ScrLk | \
96 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
97 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk | \
98 > '-----------------------------------------' '-----------------------------------------' \
99
100 * The *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.
102 * Mute, and Vol +/- are next to each other in ascending (L->R) volume order, Stop is below Mute.
103 * Insert, Print Screen, Scroll Lock & Pause Break are all implemented on the far right column.
104 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.
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)
107
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.
109 > ,----------------------------------------. .----------------------------------------.
110 > | Tab | WhlU | WhlL | MsUp | WhlR | | | | M3 | M4 | M5 | | | \
111 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
112 > | | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | | \
113 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
114 > | LSPO | | | | | | | | | | | | RSCB | \
115 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
116 > | Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl | \
117 > '----------------------------------------' '----------------------------------------' \
118
119 * The *MOUSE* layer contains keys replicating functions found on the mouse.
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.
121 *) The primary click (right & left) buttons are on the right home row (index & middle fingers)
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
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
new file mode 100644
index 000000000..1485c0832
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
@@ -0,0 +1,34 @@
1# Copyright 2013 Jun Wako <wakojun@gmail.com>
2#
3# This program is free software: you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation, either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16
17# QMK Build Options
18# change to "no" to disable the options, or define them in the rules.mk in
19# the appropriate keymap folder that will get included automatically
20#
21BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
22MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
23EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
24CONSOLE_ENABLE = no # Console for debug(+400)
25COMMAND_ENABLE = yes # Commands for debug and configuration
26NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
27BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
28MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
29AUDIO_ENABLE = no # Audio output on port C6
30UNICODE_ENABLE = no # Unicode
31BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
32RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
33SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
34TAP_DANCE_ENABLE = no # Enable Tap Dance
diff --git a/keyboards/handwired/terminus_mini/rules.mk b/keyboards/handwired/terminus_mini/rules.mk
new file mode 100644
index 000000000..d7acbf7d5
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/rules.mk
@@ -0,0 +1,69 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=512
49
50
51# Build Options
52# change yes to no to disable
53#
54BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
57CONSOLE_ENABLE = no # Console for debug(+400)
58COMMAND_ENABLE = yes # Commands for debug and configuration
59# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
60NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
61BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
62MIDI_ENABLE = no # MIDI controls
63AUDIO_ENABLE = no # Audio output on port C6
64UNICODE_ENABLE = no # Unicode
65BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
66RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
67# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
68SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
69TAP_DANCE_ENABLE = no # Enable tap dance
diff --git a/keyboards/handwired/terminus_mini/terminus_mini.c b/keyboards/handwired/terminus_mini/terminus_mini.c
new file mode 100644
index 000000000..58edca768
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/terminus_mini.c
@@ -0,0 +1,43 @@
1/* Copyright 2017 James Morgan <ja.morgan1@outlook.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include "terminus_mini.h"
17
18void matrix_init_kb(void) {
19 // put your keyboard start-up code here
20 // runs once when the firmware starts up
21
22 matrix_init_user();
23}
24
25void matrix_scan_kb(void) {
26 // put your looping keyboard code here
27 // runs every cycle (a lot)
28
29 matrix_scan_user();
30}
31
32bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
33 // put your per-action keyboard code here
34 // runs for every action, just before processing by the firmware
35
36 return process_record_user(keycode, record);
37}
38
39void led_set_kb(uint8_t usb_led) {
40 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
41
42 led_set_user(usb_led);
43}
diff --git a/keyboards/handwired/terminus_mini/terminus_mini.h b/keyboards/handwired/terminus_mini/terminus_mini.h
new file mode 100644
index 000000000..44590a191
--- /dev/null
+++ b/keyboards/handwired/terminus_mini/terminus_mini.h
@@ -0,0 +1,40 @@
1/* Copyright 2017 James Morgan <ja.morgan1@outlook.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#ifndef TERMINUS_MINI_H
17#define TERMINUS_MINI_H
18
19#include "quantum.h"
20
21// This a shortcut to help you visually see your layout.
22// The following is an example using the Terminus Mini layout
23// The first section contains all of the arguments
24// The second converts the arguments into a two-dimensional array
25#define TERMINUS_MINI( \
26 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
27 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
28 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
29 k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
30) \
31{ \
32 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
33 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
34 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
35 { k30, k31, k32, k33, KC_NO, k35, KC_NO, k37, k38, k39, k3a, k3b } \
36}
37
38#define KC_ KC_TRNS
39
40#endif \ No newline at end of file
diff --git a/keyboards/nyquist/keymaps/DivergeJM/README.md b/keyboards/nyquist/keymaps/DivergeJM/README.md
new file mode 100644
index 000000000..37db5d3ba
--- /dev/null
+++ b/keyboards/nyquist/keymaps/DivergeJM/README.md
@@ -0,0 +1,135 @@
1Copyright 2017 James Morgan <ja.morgan1@outlook.com>
2
3#MogranJM's nyquist layout
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...
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
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.
10
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.
12
13> .----------------------------------------. .-----------------------------------------. \
14> | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | \
15> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
16> | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \\ | \
17> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
18> | BS | A | R | S | T | D | | H | N | E | I | O | ' | \
19> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
20> | LSPO| Z | X | C | V | B | | K | M | , | \. | / | RSPC | \
21> |-----+------+------+------+------+------| |------+------+------+------+------+------| \
22> | Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \
23> '----------------------------------------' '-----------------------------------------' \
24\
25> [_COLEMAK] = KEYMAP( \
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
35### 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.
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
51### LOWER - Numpad & Navigation keys
52
53 ,-----------------------------------------. .-----------------------------------------. \
54 | Esc | | | | | | | = | / | \* | \- | | Del | \
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
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
69
70 * 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.
71
72 - [] 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
73 * Couldn't get this to work in Rev1, produced an error in the Make process.
74 * When this is done, I can remove the clunky double Enter on the 4th column of the right hand PCB.
75
76### RAISE - Symbol Layer
77
78 > ,-----------------------------------------. .-----------------------------------------. \
79 > | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | \
80 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
81 > | Tab | | | | | | | | | | | | \\ | \
82 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
83 > | BS | \! | @ | \# | $ | % | | ^ | & | \* | \- | \+ | ' | \
84 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
85 > | LSBO | | | \{ | \[ | \` | | | | \] | \} | \. | ? | RSBC | \
86 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
87 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl | \
88 > '-----------------------------------------' '-----------------------------------------' \
89
90 * The *RAISE* layer contains the symbols. This layer is momentary when the right thumb bar is held.
91 * Standard symbols can be found on the home row, in the traditional number row order as they occur on a standard keyboard.
92 * Shifted symbols can be found on the second-from bottom row, abovee the bars - these include brackets, braces, grave and pipe keys.
93 * 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 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.
95 * 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**.
96
97### FUNCTION - Function & Media keys
98
99 > ,-----------------------------------------. .-----------------------------------------. \
100 > | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | \
101 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
102 > | Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins | \
103 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
104 > | Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc | \
105 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
106 > | LSOB | | | | | | | | | | | |ScrLk | \
107 > |------+------+------+------+------+------| |------+------+------+------+------+------| \
108 > | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk | \
109 > '-----------------------------------------' '-----------------------------------------' \
110
111 * The *FUNCTION* layer contains media keys as well as the F-row. This layer is momentary and requires Fn to be held.
112 * The media cluster is based on the nav cluster in the *LOWER* layer, with RW, PP & FF in the Left, Down & Right positions.
113 * Mute, and Vol +/- are next to each other in ascending (L->R) volume order, Stop is below Mute.
114 * Insert, Print Screen, Scroll Lock & Pause Break are all implemented on the far right column.
115 I don't really use these keys so their position is not optimised.
116 * Caps lock is implemented on this layer, in the traditional position, in place of BackSpace on the Base layer.
117 * 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)
118
119### 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.
120 > ,----------------------------------------. .----------------------------------------. \
121 > | Esc | | | | | | | | | | | | Del | \
122 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
123 > | Tab | WhlU | WhlL | MsUp | WhlR | | | | M3 | M4 | M5 | | | \
124 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
125 > | | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | | \
126 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
127 > | LSPO | | | | | | | | | | | | RSCB | \
128 > |------+------+------+------+------+-----| |-----+------+------+------+------+------| \
129 > | Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl | \
130 > '----------------------------------------' '----------------------------------------' \
131
132 * The *MOUSE* layer contains keys replicating functions found on the mouse.
133 * 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.
134 *) The primary click (right & left) buttons are on the right home row (index & middle fingers)
135 * 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
new file mode 100644
index 000000000..03f5b2de7
--- /dev/null
+++ b/keyboards/nyquist/keymaps/DivergeJM/config.h
@@ -0,0 +1,26 @@
1/*
2Copyright 2017 James Morgan <ja.morgan1@outlook.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#define USE_SERIAL
19
20#define MASTER_LEFT
21// #define _MASTER_RIGHT
22// #define EE_HANDS
23
24#ifdef SUBPROJECT_rev1
25 #include "../../rev1/config.h"
26#endif
diff --git a/keyboards/nyquist/keymaps/DivergeJM/keymap.c b/keyboards/nyquist/keymaps/DivergeJM/keymap.c
new file mode 100644
index 000000000..4bfff0d6c
--- /dev/null
+++ b/keyboards/nyquist/keymaps/DivergeJM/keymap.c
@@ -0,0 +1,216 @@
1#include "nyquist.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4
5extern keymap_config_t keymap_config;
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11enum custom_layers {
12 _COLEMAK,
13 _LOWER,
14 _RAISE,
15 _FUNCTION,
16 _MOUSE,
17 _ADJUST,
18};
19
20enum custom_keycodes {
21 COLEMAK = SAFE_RANGE,
22 LOWER,
23 RAISE,
24 FUNCTION,
25 MOUSE,
26 ADJUST,
27};
28/*
29// Tap Dance Declarations
30enum {
31 TD_ZERO_ENT = 0
32};
33
34// Tap Dance Definitions
35 qk_tap_dance_action_t tap_dance_actions[] = {
36 [TD_ZERO_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_0, KC_ENT)
37};
38*/
39 // Enable these functions using FUNC(n) macro.
40 const uint16_t PROGMEM fn_actions[] = { //ACTION_LAYER_TAP_TOGGLE requires that number of taps be defined in *config.h* - default set to 5
41 [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), //Hold for momentary Lower layer, Tap for Space,
42 [1] = ACTION_LAYER_TAP_KEY(_RAISE, KC_ENT), //Hold for momentary Mouse layer, Tap for Enter,
43 [2] = ACTION_LAYER_TAP_TOGGLE(_LOWER), //Hold for momentary Lower, Tap for toggle Lower
44 [3] = ACTION_LAYER_TAP_TOGGLE(_MOUSE), //Hold for momentary Mouse, Tap for toggle Mouse
45 [4] = ACTION_LAYER_MOMENTARY(_FUNCTION) //Hold for momentary Function
46 };
47
48
49#define SPC_LW FUNC(0)
50#define ENT_RS FUNC(1)
51#define LWR FUNC(2)
52#define MSE FUNC(3)
53#define FNC FUNC(4)
54
55// Fillers to make layering more clear
56#define _______ KC_TRNS
57#define XXXXXXX KC_NO
58
59const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
60
61/* Colemak
62 * .----------------------------------------. .-----------------------------------------.
63 * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
64 * |-----+------+------+------+------+------| |------+------+------+------+------+------|
65 * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ |
66 * |-----+------+------+------+------+------| |------+------+------+------+------+------|
67 * | BS | A | R | S | T | D | | H | N | E | I | O | ' |
68 * |-----+------+------+------+------+------| |------+------+------+------+------+------|
69 * | LSPO| Z | X | C | V | B | | K | M | , | . | / | RSPC |
70 * |-----+------+------+------+------+------| |------+------+------+------+------+------|
71 * | Ctrl| LGUI | LAlt | Lower| Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl |
72 * `----------------------------------------' `-----------------------------------------'
73 */
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, \
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, \
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 \
80 ),
81
82
83/* Lower
84 * ,-----------------------------------------. .-----------------------------------------.
85 * | Esc | | | | | | | = | / | * | - | | Del |
86 * |------+------+------+------+------+------| |------+------+------+------+------+------|
87 * | Tab | PgUp | Home | Up | End | | | 7 | 8 | 9 | + | | \ |
88 * |------+------+------+------+------+------| |------+------+------+------+------+------|
89 * | BS | PgDn | Left | Down |Right | | | 4 | 5 | 6 | Enter| | ' |
90 * |------+------+------+------+------+------| |------+------+------+------+------+------|
91 * | LSPO | Z | X | C | V | | | 1 | 2 | 3 | Enter| | RSPC |
92 * |------+------+------+------+------+------| |------+------+------+------+------+------|
93 * | Ctrl | LGUI | Alt | Lower| Space/Lower | | 0 | . | Fn | Menu | Ctrl |
94 * `-----------------------------------------' `-----------------------------------------'
95 */
96[_LOWER] = KEYMAP( \
97 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PEQL, KC_PSLS, KC_PAST, KC_MINS, XXXXXXX, KC_DEL, \
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, _______, \
100 _______, _______, _______, _______, _______, XXXXXXX, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______, \
101 _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, FNC, _______, _______ \
102),
103
104
105/* Raise
106 * ,-----------------------------------------. .-----------------------------------------.
107 * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
108 * |------+------+------+------+------+------| |------+------+------+------+------+------|
109 * | Tab | | | | | | | | | | | | \ |
110 * |------+------+------+------+------+------| |------+------+------+------+------+------|
111 * | BS | ! | @ | # | $ | % | | ^ | & | * | - | + | " |
112 * |------+------+------+------+------+------| |------+------+------+------+------+------|
113 * | LSBO | | | { | [ | ` | | | | ] | } | . | ? | RSBC |
114 * |------+------+------+------+------+------| |------+------+------+------+------+------|
115 * | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| Menu | Ctrl |
116 * `-----------------------------------------' `-----------------------------------------'
117*/
118[_RAISE] = KEYMAP( \
119 _______, 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, _______, \
122 _______, 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, _______, _______ \
124 ),
125
126
127/*Function
128 * ,-----------------------------------------. .-----------------------------------------.
129 * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
130 * |------+------+------+------+------+------| |------+------+------+------+------+------|
131 * | Esc | Mute | Vol- | Vol+ | | RESET| | POWER| | | | | Ins |
132 * |------+------+------+------+------+------| |------+------+------+------+------+------|
133 * | Caps | Stop | |<< | >/|| | >>| | | | | | | | |PrtSc |
134 * |------+------+------+------+------+------| |------+------+------+------+------+------|
135 * | LSOB | | | | | | | | | | | |ScrLk |
136 * |------+------+------+------+------+------| |------+------+------+------+------+------|
137 * | Ctrl | LGUI | Alt | | Space/Lower | | Enter/Raise | Fn | Mouse| |PsBrk |
138 * `-----------------------------------------' `-----------------------------------------'
139 */
140
141[_FUNCTION] = KEYMAP(
142 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
143 _______, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, RESET, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS , \
144 KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, \
145 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, \
146 _______, _______, _______, _______, _______, _______, _______, _______, FNC, _______, _______, KC_PAUS \
147 ),
148
149/* MOUSE
150 * ,----------------------------------------. .----------------------------------------.
151 * | Esc | | | | | | | | | | | | Del |
152 * |------+------+------+------+------+-----| |-----+------+------+------+------+------|
153 * | Tab | WhlU | WhlL | MsUp | WhlR | | | | M1 | M2 | M3 | | |
154 * |------+------+------+------+------+-----| |-----+------+------+------+------+------|
155 * | | WhlD | MsL | MsDn | MsR | | | |LClick|RClick| | | |
156 * |------+------+------+------+------+-----| |-----+------+------+------+------+------|
157 * | LSPO | | | | | | | | | | | | RSCB |
158 * |------+------+------+------+------+-----| |-----+------+------+------+------+------|
159 * | Ctrl | | | |Sensitivity | | Sensitivity| |MOUSE | | Ctrl |
160 * `----------------------------------------' `----------------------------------------'
161 */
162
163[_MOUSE] = KEYMAP(
164 KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, \
165 KC_TAB, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX, \
166 KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
167 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSPC, \
168 _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL1, KC_ACL1, KC_ACL0, KC_ACL0, XXXXXXX, MSE, XXXXXXX, KC_RCTL \
169 ),
170
171
172};
173
174#ifdef AUDIO_ENABLE
175float tone_colemak[][2] = SONG(COLEMAK_SOUND);
176#endif
177
178void persistent_default_layer_set(uint16_t default_layer) {
179 eeconfig_update_default_layer(default_layer);
180 default_layer_set(default_layer);
181}
182
183bool process_record_user(uint16_t keycode, keyrecord_t *record) {
184 switch (keycode) {
185 case COLEMAK:
186 if (record->event.pressed) {
187 #ifdef AUDIO_ENABLE
188 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
189 #endif
190 persistent_default_layer_set(1UL<<_COLEMAK);
191 }
192 return false;
193 break;
194 case LOWER:
195 if (record->event.pressed) {
196 layer_on(_LOWER);
197 update_tri_layer(_LOWER, _RAISE, _ADJUST);
198 } else {
199 layer_off(_LOWER);
200 update_tri_layer(_LOWER, _RAISE, _ADJUST);
201 }
202 return false;
203 break;
204 case RAISE:
205 if (record->event.pressed) {
206 layer_on(_RAISE);
207 update_tri_layer(_LOWER, _RAISE, _ADJUST);
208 } else {
209 layer_off(_RAISE);
210 update_tri_layer(_LOWER, _RAISE, _ADJUST);
211 }
212 return false;
213 break;
214 }
215 return true;
216} \ No newline at end of file
diff --git a/keyboards/nyquist/keymaps/DivergeJM/rules.mk b/keyboards/nyquist/keymaps/DivergeJM/rules.mk
new file mode 100644
index 000000000..654e82a10
--- /dev/null
+++ b/keyboards/nyquist/keymaps/DivergeJM/rules.mk
@@ -0,0 +1,34 @@
1# Copyright 2017 James Morgan <ja.morgan1@outlook.com>
2#
3# This program is free software: you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation, either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16
17# QMK Build Options
18# change to "no" to disable the options, or define them in the Makefile in
19# the appropriate keymap folder that will get included automatically
20#
21BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
22MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
23EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
24CONSOLE_ENABLE = no # Console for debug(+400)
25COMMAND_ENABLE = yes # Commands for debug and configuration
26NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
27BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
28MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
29AUDIO_ENABLE = no # Audio output on port C6
30UNICODE_ENABLE = no # Unicode
31BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
32RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
33SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
34TAP_DANCE_ENABLE = no # Enable Tap Dance