aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/ergodox/keymaps/german-lukas/README.md12
-rw-r--r--keyboards/ergodox/keymaps/german-lukas/keymap.c236
-rw-r--r--keyboards/ergodox/keymaps/guni/keymap.c177
-rw-r--r--keyboards/ergodox/keymaps/guni/readme.txt133
-rw-r--r--keyboards/handwired/magicforce68/Makefile3
-rw-r--r--keyboards/handwired/magicforce68/README.md20
-rw-r--r--keyboards/handwired/magicforce68/config.h162
-rw-r--r--keyboards/handwired/magicforce68/keymaps/default/keymap.c67
-rw-r--r--keyboards/handwired/magicforce68/magicforce68.c8
-rw-r--r--keyboards/handwired/magicforce68/magicforce68.h20
-rw-r--r--keyboards/handwired/magicforce68/rules.mk83
-rw-r--r--keyboards/handwired/magicforce68/wiring-layout.pngbin0 -> 73739 bytes
-rw-r--r--quantum/quantum_keycodes.h2
-rwxr-xr-xutil/install_dependencies.sh19
14 files changed, 942 insertions, 0 deletions
diff --git a/keyboards/ergodox/keymaps/german-lukas/README.md b/keyboards/ergodox/keymaps/german-lukas/README.md
new file mode 100644
index 000000000..3566b4ee6
--- /dev/null
+++ b/keyboards/ergodox/keymaps/german-lukas/README.md
@@ -0,0 +1,12 @@
1# About this keymap
2
3This keymap is based on the qwertz layout.
4It has a key for pressing the left control and the left alt key at once.
5
6Linux makes a difference between AltGr and Control + Alt. Some keybindings are easier to press now.
7
8Also, I added a layer for pressing Control + Alt + F-Keys very fast.
9
10# Layer
11
12Each layer in the *keymap.c*-file has a comment showing the mappings of the layer.
diff --git a/keyboards/ergodox/keymaps/german-lukas/keymap.c b/keyboards/ergodox/keymaps/german-lukas/keymap.c
new file mode 100644
index 000000000..c6e9f2f90
--- /dev/null
+++ b/keyboards/ergodox/keymaps/german-lukas/keymap.c
@@ -0,0 +1,236 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "keymap_german.h"
5
6// Layer names
7#define BASE 0 // default layer
8#define SYMB 1 // symbol layer
9#define MDIA 2 // media keys
10#define SHRT 3 // shortcut layer
11
12const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13/* Keymap 0: Basic layer
14 *
15 *
16 * ,--------------------------------------------------. ,--------------------------------------------------.
17 * | Caps | 1 | 2 | 3 | 4 | 5 |X ` X| | PRSC | 6 | 7 | 8 | 9 | 0 | ß |
18 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
19 * | Tab | Q | W | E | R | T | L1 | | L1 | Z | U | I | O | P | Ü |
20 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
21 * | Esc | A | S | D | F | G |------| |------| H | J | K | L | Ö | Ä/L2 |
22 * |--------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
23 * | LShift | Y | X | C | V | B | | | | N | M | , | . | - | RShift |
24 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
25 * | LGui | ^ | < | LEFT | RIGHT| | Up | Down | # | + | LCA |
26 * `----------------------------------' `----------------------------------'
27 * ,-------------. ,-------------.
28 * | CTRL | ALT | | Alt |Ctrl/Esc|
29 * ,------+------+------| |------+--------+------.
30 * | | | Home | | PgUp | | |
31 * | Space|Del |------| |------| Bkspc | Enter|
32 * | | | End | | PgDn | | |
33 * `--------------------' `----------------------'
34 */
35// If it accepts an argument (i.e, is a function), it doesn't need KC_.
36// Otherwise, it needs KC_*
37[BASE] = KEYMAP( // layer 0 : default
38 // left hand
39 KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, DE_ACUT,
40 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
41 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
42 KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
43 KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT,
44 KC_LCTRL, KC_LALT,
45 KC_HOME,
46 KC_SPC ,KC_DELT,KC_END,
47 // right hand
48 KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
49 TG(MDIA), DE_Z, KC_U, KC_I, KC_O, KC_P, LT(SHRT,DE_UE),
50 KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE),
51 MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT,
52 KC_UP, KC_DOWN, DE_HASH, DE_PLUS, LCA_T(KC_NO),
53 KC_RALT, KC_RCTRL,
54 KC_PGUP,
55 KC_PGDN, KC_BSPC, KC_ENT
56 ),
57
58/* Keymap 1: Symbol Layer
59 *
60 * ,--------------------------------------------------. ,--------------------------------------------------.
61 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
62 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
63 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
64 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
65 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
66 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
67 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
68 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
69 * | | | | | | | | . | 0 | = | |
70 * `----------------------------------' `----------------------------------'
71 * ,-------------. ,-------------.
72 * | | | | | |
73 * ,------|------|------| |------+------+------.
74 * | | | | | | | |
75 * | | |------| |------| | |
76 * | | | | | | | |
77 * `--------------------' `--------------------'
78 */
79// SYMBOLS
80[SYMB] = KEYMAP(
81 // left hand
82 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
83 KC_TRNS,DE_EXLM,DE_AT, DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
84 KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
85 KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
86 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
87 KC_TRNS,KC_TRNS,
88 KC_TRNS,
89 KC_TRNS,KC_TRNS,KC_TRNS,
90 // right hand
91 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
92 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, DE_ASTR, KC_F12,
93 KC_DOWN, KC_4, KC_5, KC_6, DE_PLUS, KC_TRNS,
94 KC_TRNS, DE_AMPR, KC_1, KC_2, KC_3, DE_BSLS, KC_TRNS,
95 KC_TRNS,KC_DOT, KC_0, DE_EQL, KC_TRNS,
96 KC_TRNS, KC_TRNS,
97 KC_TRNS,
98 KC_TRNS, KC_TRNS, KC_TRNS
99),
100
101/* Keymap 2: Media and mouse keys
102 *
103 * ,--------------------------------------------------. ,--------------------------------------------------.
104 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
105 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
106 * | | | Lclk | MsUp | Rclk | | | | | |VolDwn| Mute |VolUp | | F12 |
107 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
108 * | | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------| |------| | Prev | Stop | Play | Next | |
109 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
110 * | |WhRght|WhDown| WhUp |WhLeft|WhClk | | | |BwSrch|BwBack|BwHome|BwRefr|BwFwd | |
111 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
112 * | | |MsAcl0|MsAcl1|MsAcl2| | | | | | |
113 * `----------------------------------' `----------------------------------'
114 * ,-------------. ,-------------.
115 * | | | | | |
116 * ,------|------|------| |------+------+------.
117 * | | | | | |Brwser|Brwser|
118 * | Lclk | Rclk |------| |------|Back |Forwd |
119 * | | | | | | | |
120 * `--------------------' `--------------------'
121 */
122// MEDIA AND MOUSE
123[MDIA] = KEYMAP(
124 // left hand
125 KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS,
126 KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
127 KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
128 KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
129 KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
130 KC_TRNS, KC_TRNS,
131 KC_TRNS,
132 KC_BTN1, KC_BTN2, KC_TRNS,
133 // right hand
134 KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11,
135 KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
136 KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
137 KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
138 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
139 KC_TRNS, KC_TRNS,
140 KC_TRNS,
141 KC_TRNS, KC_WBAK, KC_WFWD
142),
143
144/* Keymap 3: Linux shortcuts
145 *
146 * ,--------------------------------------------------. ,--------------------------------------------------.
147 * | | | | | | | | | | | | | | | |
148 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
149 * | |LCA-F1|LCA-F2|LCA-F3|LCA-F4|LCA-F5| | | |LCA-F6|LCA-F7|LCA-F8|LCA-F9| | |
150 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
151 * | | |LCA-Le| |LCA-Ri| |------| |------| | | | | | |
152 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
153 * | | | | | | | | | | | | | | | |
154 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
155 * | | | |LCA-Le|LCA-Ri| | | | | | |
156 * `----------------------------------' `----------------------------------'
157 * ,-------------. ,-------------.
158 * | | | | | |
159 * ,------|------|------| |------+------+------.
160 * | | | | | | | |
161 * | | |------| |------| | |
162 * | | | | | | | |
163 * `--------------------' `--------------------'
164 */
165// Shortcuts
166[SHRT] = KEYMAP(
167 // left hand
168 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
169 KC_TRNS, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), KC_TRNS,
170 KC_TRNS, KC_TRNS, LCA(KC_LEFT), KC_TRNS, LCA(KC_RIGHT), KC_TRNS,
171 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
172 KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_LEFT), LCA(KC_RIGHT),
173 KC_TRNS, KC_TRNS,
174 KC_TRNS,
175 KC_TRNS, KC_TRNS, KC_TRNS,
176 // right hand
177 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
178 KC_TRNS, LCA(KC_F6), LCA(KC_F7), LCA(KC_F8), LCA(KC_F9), KC_TRNS, KC_TRNS,
179 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
180 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
181 LCA(KC_UP), LCA(KC_DOWN), KC_TRNS, KC_TRNS, KC_TRNS,
182 KC_TRNS, KC_TRNS,
183 KC_TRNS,
184 KC_TRNS, KC_TRNS, KC_TRNS
185),
186};
187
188const uint16_t PROGMEM fn_actions[] = {
189 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
190};
191
192const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
193{
194 // MACRODOWN only works in this function
195 switch(id) {
196 case 0:
197 if (record->event.pressed) {
198 register_code(KC_RSFT);
199 } else {
200 unregister_code(KC_RSFT);
201 }
202 break;
203 }
204 return MACRO_NONE;
205};
206
207// Runs just one time when the keyboard initializes.
208void matrix_init_user(void) {
209
210};
211
212// Runs constantly in the background, in a loop.
213void matrix_scan_user(void) {
214
215 uint8_t layer = biton32(layer_state);
216
217 ergodox_board_led_off();
218 ergodox_right_led_1_off();
219 ergodox_right_led_2_off();
220 ergodox_right_led_3_off();
221 switch (layer) {
222 case SYMB:
223 ergodox_right_led_1_on();
224 break;
225 case MDIA:
226 ergodox_right_led_2_on();
227 break;
228 case SHRT:
229 ergodox_right_led_3_on();
230 break;
231 default:
232 ergodox_board_led_off();
233 break;
234 }
235
236};
diff --git a/keyboards/ergodox/keymaps/guni/keymap.c b/keyboards/ergodox/keymaps/guni/keymap.c
new file mode 100644
index 000000000..f33829b8a
--- /dev/null
+++ b/keyboards/ergodox/keymaps/guni/keymap.c
@@ -0,0 +1,177 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "bootloader.h"
5
6const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
7 KEYMAP( // layer 0 : default
8 // left hand
9 KC_EQL , KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
10 KC_FN25 , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME,
11 KC_FN27 , KC_A, KC_S, KC_D, KC_F, KC_G,
12 KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP,
13 KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT,
14 KC_NO , KC_NO ,
15 KC_NO ,
16 KC_BSPC,KC_DEL ,KC_FN23,
17 // right hand
18 KC_RBRC , KC_6, KC_7 , KC_8, KC_9, KC_0, KC_MINS,
19 KC_END , KC_Y, KC_U , KC_I, KC_O, KC_P, KC_FN28,
20 KC_H , KC_J, KC_K , KC_L, KC_SCLN,KC_FN30,
21 KC_PGDN , KC_N, KC_M , KC_COMM,KC_DOT, KC_SLSH,KC_FN29,
22 KC_RALT , KC_DOWN,KC_UP, KC_NO ,KC_RGUI,
23 KC_NO , KC_NO,
24 KC_NO ,
25 KC_FN29,KC_ENT ,KC_SPC
26 ),
27
28 KEYMAP( // layer 1 : function and symbol keys
29 // left hand
30 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
31 KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS,
32 KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR,
33 KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS,
34 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
35 KC_TRNS,KC_TRNS,
36 KC_TRNS,
37 KC_TRNS,KC_TRNS,KC_FN1,
38 // right hand
39 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
40 KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS,
41 LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS,
42 KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS,
43 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
44 KC_TRNS,KC_TRNS,
45 KC_TRNS,
46 KC_TRNS,KC_TRNS,KC_TRNS
47 ),
48
49 KEYMAP( // layer 2: navigation
50 // left hand
51 KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
52 KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS,
53 KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,
54 KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO,KC_NO,KC_NO,
55 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
56 KC_TRNS,KC_TRNS,
57 KC_TRNS,
58 KC_TRNS,KC_TRNS,KC_FN1 ,
59 // right hand
60 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
61 KC_TRNS ,KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_END ,KC_TRNS,
62 KC_NO, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,KC_TRNS,
63 KC_TRNS,KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP,KC_TRNS,
64 KC_LEFT, KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS,
65 KC_TRNS,KC_TRNS,
66 KC_TRNS,
67 KC_TRNS,KC_TRNS,KC_TRNS
68 ),
69 KEYMAP( // layer 3 : teensy bootloader functions
70 // left hand
71 KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
72 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
73 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
74 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
75 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
76 KC_TRNS,KC_TRNS,
77 KC_TRNS,
78 KC_TRNS,KC_TRNS,KC_FN1 ,
79 // right hand
80 KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
81 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
82 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
83 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
84 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
85 KC_TRNS,KC_TRNS,
86 KC_TRNS,
87 KC_TRNS,KC_TRNS,KC_TRNS
88 ),
89
90
91 KEYMAP( // layer 4: numpad
92 // left hand
93 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
94 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
95 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
96 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
97 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
98 KC_TRNS,KC_TRNS,
99 KC_TRNS,
100 KC_TRNS,KC_TRNS,KC_TRNS,
101 // right hand
102 KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
103 KC_TRNS,KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS,KC_BSPC,
104 KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS,KC_PENT,
105 KC_TRNS,KC_NO, KC_P1, KC_P2, KC_P3, KC_PPLS,KC_PENT,
106 KC_P0, KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
107 KC_TRNS,KC_TRNS,
108 KC_TRNS,
109 KC_TRNS,KC_TRNS,KC_TRNS
110 ),
111
112};
113
114/* id for user defined functions */
115enum function_id {
116 TEENSY_KEY,
117};
118
119/*
120 * Fn action definition
121 */
122const uint16_t PROGMEM fn_actions[] = {
123 [0] = ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key
124 [1] = ACTION_LAYER_SET(0, ON_PRESS),
125 //[11] = ACTION_MODS_KEY(MOD_LSFT, KC_COMM),
126 //[12] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT),
127
128 //[14] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH),
129 //[17] = ACTION_MODS_KEY(MOD_LSFT, KC_SCLN),
130 //[20] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
131 //[21] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),
132 [23] = ACTION_LAYER_SET(3, ON_PRESS),
133 [24] = ACTION_LAYER_SET(2, ON_PRESS),
134 [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
135 [26] = ACTION_LAYER_SET(1, ON_PRESS),
136 [27] = ACTION_LAYER_TAP_KEY(1, KC_CAPS),
137 [28] = ACTION_MODS_TAP_KEY(MOD_RCTL,KC_BSLS),
138 //[29] = ACTION_LAYER_TOGGLE(4),
139 [29] = ACTION_MODS_TAP_KEY(MOD_RSFT,KC_ESC),
140 [30] = ACTION_LAYER_TAP_KEY(1, KC_QUOT),
141 [31] = ACTION_LAYER_MOMENTARY(2),
142 //[] = ACTION_LAYER_TAP_KEY(4, KC_S),
143};
144
145
146const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
147{
148 // MACRODOWN only works in this function
149 switch(id) {
150 case 0:
151 if (record->event.pressed) {
152 register_code(KC_RSFT);
153 } else {
154 unregister_code(KC_RSFT);
155 }
156 break;
157 }
158 return MACRO_NONE;
159};
160
161// Runs just one time when the keyboard initializes.
162void matrix_init_user(void) {
163
164};
165
166
167void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
168{
169
170 if (id == TEENSY_KEY) {
171 clear_keyboard();
172 print("\n\nJump to bootloader... ");
173 _delay_ms(250);
174 bootloader_jump(); // should not return
175 print("not supported.\n");
176 }
177}
diff --git a/keyboards/ergodox/keymaps/guni/readme.txt b/keyboards/ergodox/keymaps/guni/readme.txt
new file mode 100644
index 000000000..93ae5f056
--- /dev/null
+++ b/keyboards/ergodox/keymaps/guni/readme.txt
@@ -0,0 +1,133 @@
1My main layout (Layer 0) is based on qwerty. I tried to fit the layout of the kinesis keyboard onto the ergodox. Furthermore I did some tweaks.
2The other layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I cant press the reset button, so i need a key to send the teensy into reprogram mode.
3There is a layer with symbols a numpad. These layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I need a key to reprogram, because I can't access the reset button.
4
5I am a linux user and need the esc key and str keys often therefore it is easyly accessed. Switching console str+alt+tab+f2 (layer 2 and 2) is tricky but you get it after a while.
6As I live in germany and need to type umlaut frquently, i mapped the CAPS to the meta key, and swapped ' and ". So I can type ö with CAPS o + ¨. no need to press o+SHIFT+'
7As a note for linux users i use str+p to get last command, instead of using the cursor keys.
8
9HOWTO to convert CAPS to Meta-Key and swap ' with "
10
11* create file with following content
12.Xmodmap
13 clear Lock
14 keycode 48 = quotedbl apostrophe quotedbl apostrophe
15 keycode 66 = Multi_key
16
17* apply with
18xmodmap .Xmodmap
19
20* convert to xkbmap
21xkbcomp $DISPLAY $HOME/.xkbmap
22
23* automatic startup each time you startup x
24echo 'xkbcomp $HOME/.xkbmap $DISPLAY' >> ~/.xinitrc
25
26 KEYMAP( // layer 0 : default
27 // left hand
28 KC_EQL , KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
29 KC_FN25 , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME,
30 KC_FN27 , KC_A, KC_S, KC_D, KC_F, KC_G,
31 KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP,
32 KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT,
33 KC_NO , KC_NO ,
34 KC_NO ,
35 KC_BSPC,KC_DEL ,KC_FN23,
36 // right hand
37 KC_RBRC , KC_6, KC_7 , KC_8, KC_9, KC_0, KC_MINS,
38 KC_END , KC_Y, KC_U , KC_I, KC_O, KC_P, KC_FN28,
39 KC_H , KC_J, KC_K , KC_L, KC_SCLN,KC_FN30,
40 KC_PGDN , KC_N, KC_M , KC_COMM,KC_DOT, KC_SLSH,KC_FN29,
41 KC_RALT , KC_DOWN,KC_UP, KC_NO ,KC_RGUI,
42 KC_NO , KC_NO,
43 KC_NO ,
44 KC_FN29,KC_ENT ,KC_SPC
45 ),
46
47 KEYMAP( // layer 1 : function and symbol keys
48 // left hand
49 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
50 KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS,
51 KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR,
52 KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS,
53 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
54 KC_TRNS,KC_TRNS,
55 KC_TRNS,
56 KC_TRNS,KC_TRNS,KC_FN1,
57 // right hand
58 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
59 KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS,
60 LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS,
61 KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS,
62 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
63 KC_TRNS,KC_TRNS,
64 KC_TRNS,
65 KC_TRNS,KC_TRNS,KC_TRNS
66 ),
67
68 KEYMAP( // layer 2: navigation
69 // left hand
70 KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
71 KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS,
72 KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,
73 KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO,KC_NO,KC_NO,
74 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
75 KC_TRNS,KC_TRNS,
76 KC_TRNS,
77 KC_TRNS,KC_TRNS,KC_FN1 ,
78 // right hand
79 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
80 KC_TRNS ,KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_END ,KC_TRNS,
81 KC_NO, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,KC_TRNS,
82 KC_TRNS,KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP,KC_TRNS,
83 KC_LEFT, KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS,
84 KC_TRNS,KC_TRNS,
85 KC_TRNS,
86 KC_TRNS,KC_TRNS,KC_TRNS
87 ),
88 KEYMAP( // layer 3 : teensy bootloader functions
89 // left hand
90 KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
91 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
92 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
93 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
94 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
95 KC_TRNS,KC_TRNS,
96 KC_TRNS,
97 KC_TRNS,KC_TRNS,KC_FN1 ,
98 // right hand
99 KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
100 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
101 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
102 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
103 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
104 KC_TRNS,KC_TRNS,
105 KC_TRNS,
106 KC_TRNS,KC_TRNS,KC_TRNS
107 ),
108
109
110 KEYMAP( // layer 4: numpad
111 // left hand
112 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
113 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
114 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
115 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
116 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
117 KC_TRNS,KC_TRNS,
118 KC_TRNS,
119 KC_TRNS,KC_TRNS,KC_TRNS,
120 // right hand
121 KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
122 KC_TRNS,KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS,KC_BSPC,
123 KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS,KC_PENT,
124 KC_TRNS,KC_NO, KC_P1, KC_P2, KC_P3, KC_PPLS,KC_PENT,
125 KC_P0, KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
126 KC_TRNS,KC_TRNS,
127 KC_TRNS,
128 KC_TRNS,KC_TRNS,KC_TRNS
129 ),
130
131};
132
133
diff --git a/keyboards/handwired/magicforce68/Makefile b/keyboards/handwired/magicforce68/Makefile
new file mode 100644
index 000000000..191c6bb66
--- /dev/null
+++ b/keyboards/handwired/magicforce68/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/handwired/magicforce68/README.md b/keyboards/handwired/magicforce68/README.md
new file mode 100644
index 000000000..4f0ccecf9
--- /dev/null
+++ b/keyboards/handwired/magicforce68/README.md
@@ -0,0 +1,20 @@
1Magicforce 68 Handwired
2=======================
3
4This firmware is for a Magicforce 68 that's had its PCB removed and is handwired with an Arduino Micro. NOTE: The Arduino Micro is different than the Arduino *Pro* Micro.
5
6## Wiring Layout
7
8![Wiring Layout](wiring-layout.png)
9
10## Pinout
11
12The following pins are used:
13- Columns 1-15: B2, B0, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B7, D6
14- Rows 1-5: F0, F1, F4, F5, F6
15
16## Compiling and loading the firmware
17
18To build the firmware, run `make`.
19
20To flash the firemware onto the microcontroller, run `make avrdude`, and press the reset button.
diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h
new file mode 100644
index 000000000..1e2b7d3e7
--- /dev/null
+++ b/keyboards/handwired/magicforce68/config.h
@@ -0,0 +1,162 @@
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#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Hexwire
28#define PRODUCT Magicforce 68
29#define DESCRIPTION Handwired Magicforce 68
30
31/* key matrix size */
32#define MATRIX_ROWS 5
33#define MATRIX_COLS 15
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 { F0, F1, F4, F5, F6 }
46#define MATRIX_COL_PINS { B2, B0, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B7, D6 }
47#define UNUSED_PINS
48
49/* COL2ROW or ROW2COL */
50#define DIODE_DIRECTION COL2ROW
51
52// #define BACKLIGHT_PIN B7
53// #define BACKLIGHT_BREATHING
54// #define BACKLIGHT_LEVELS 3
55
56
57/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
58#define DEBOUNCING_DELAY 5
59
60/* define if matrix has ghost (lacks anti-ghosting diodes) */
61//#define MATRIX_HAS_GHOST
62
63/* number of backlight levels */
64
65/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
66#define LOCKING_SUPPORT_ENABLE
67/* Locking resynchronize hack */
68#define LOCKING_RESYNC_ENABLE
69
70/*
71 * Force NKRO
72 *
73 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
74 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
75 * makefile for this to work.)
76 *
77 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
78 * until the next keyboard reset.
79 *
80 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
81 * fully operational during normal computer usage.
82 *
83 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
84 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
85 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
86 * power-up.
87 *
88 */
89//#define FORCE_NKRO
90
91/*
92 * Magic Key Options
93 *
94 * Magic keys are hotkey commands that allow control over firmware functions of
95 * the keyboard. They are best used in combination with the HID Listen program,
96 * found here: https://www.pjrc.com/teensy/hid_listen.html
97 *
98 * The options below allow the magic key functionality to be changed. This is
99 * useful if your keyboard/keypad is missing keys and you want magic key support.
100 *
101 */
102
103/* key combination for magic key command */
104#define IS_COMMAND() ( \
105 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
106)
107
108/* control how magic key switches layers */
109//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
111//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
112
113/* override magic key keymap */
114//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
116//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
117//#define MAGIC_KEY_HELP1 H
118//#define MAGIC_KEY_HELP2 SLASH
119//#define MAGIC_KEY_DEBUG D
120//#define MAGIC_KEY_DEBUG_MATRIX X
121//#define MAGIC_KEY_DEBUG_KBD K
122//#define MAGIC_KEY_DEBUG_MOUSE M
123//#define MAGIC_KEY_VERSION V
124//#define MAGIC_KEY_STATUS S
125//#define MAGIC_KEY_CONSOLE C
126//#define MAGIC_KEY_LAYER0_ALT1 ESC
127//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
128//#define MAGIC_KEY_LAYER0 0
129//#define MAGIC_KEY_LAYER1 1
130//#define MAGIC_KEY_LAYER2 2
131//#define MAGIC_KEY_LAYER3 3
132//#define MAGIC_KEY_LAYER4 4
133//#define MAGIC_KEY_LAYER5 5
134//#define MAGIC_KEY_LAYER6 6
135//#define MAGIC_KEY_LAYER7 7
136//#define MAGIC_KEY_LAYER8 8
137//#define MAGIC_KEY_LAYER9 9
138//#define MAGIC_KEY_BOOTLOADER PAUSE
139//#define MAGIC_KEY_LOCK CAPS
140//#define MAGIC_KEY_EEPROM E
141//#define MAGIC_KEY_NKRO N
142//#define MAGIC_KEY_SLEEP_LED Z
143
144/*
145 * Feature disable options
146 * These options are also useful to firmware size reduction.
147 */
148
149/* disable debug print */
150//#define NO_DEBUG
151
152/* disable print */
153//#define NO_PRINT
154
155/* disable action features */
156//#define NO_ACTION_LAYER
157//#define NO_ACTION_TAPPING
158//#define NO_ACTION_ONESHOT
159//#define NO_ACTION_MACRO
160//#define NO_ACTION_FUNCTION
161
162#endif
diff --git a/keyboards/handwired/magicforce68/keymaps/default/keymap.c b/keyboards/handwired/magicforce68/keymaps/default/keymap.c
new file mode 100644
index 000000000..22553f714
--- /dev/null
+++ b/keyboards/handwired/magicforce68/keymaps/default/keymap.c
@@ -0,0 +1,67 @@
1#include "magicforce68.h"
2
3#define _QWERTY 0
4#define _FN1 1
5#define _FN2 2
6#define KC_ KC_TRNS
7#define KC_X0 LT(_FN2, KC_GRV)
8#define KC_X1 MO(_FN1)
9
10const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
11 [_QWERTY] = KEYMAP(
12 /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */
13 ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , BSPC , INS ,PGUP,
14 /*|----`----`----`----`----`----`----`----`----`----`----`----`----`--------| |----`----| */
15 TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, BSLS , DEL ,PGDN,
16 /*|------`----`----`----`----`----`----`----`----`----`----`----`----`------| `----`----' */
17 X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER ,
18 /*|-------`----`----`----`----`----`----`----`----`----`----`----`----------| ,----. */
19 LSFT , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, RSFT , UP ,
20 /*|---------`----`----`----`----`----`----`----`----`----`----`-------------.--|----|----. */
21 LCTL ,LGUI ,LALT , SPACE , X1 ,RALT ,RCTL , LEFT,DOWN,RGHT
22 /*`-----+-----+-----+------------------------------+------+-----+-----' `----+----+----' */
23 ),
24
25 [_FN1] = KEYMAP(
26 /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */
27 GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME,
28 /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */
29 , , , UP , , , , , , , , , , , VOLD,END,
30 /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */
31 , ,LEFT,DOWN,RGHT, , , , , , , , ,
32 /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */
33 , , , , , , ,MUTE, , , , , MUTE,
34 /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */
35 , , , , , , , MPRV,MPLY,MNXT
36 /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */
37 ),
38
39 [_FN2] = KEYMAP(
40 /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */
41 GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME,
42 /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */
43 , , , UP , , , , 7 , 8 , 9 , , , , , VOLD,END,
44 /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */
45 , ,LEFT,DOWN,RGHT, , , 4 , 5 , 6 , , , ,
46 /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */
47 , , , , , , 0 , 1 , 2 , 3 , , , MUTE,
48 /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */
49 , , , , , , , MPRV,MPLY,MNXT
50 /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */
51 )
52};
53
54const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
55{
56 // MACRODOWN only works in this function
57 switch(id) {
58 case 0:
59 if (record->event.pressed) {
60 register_code(KC_RSFT);
61 } else {
62 unregister_code(KC_RSFT);
63 }
64 break;
65 }
66 return MACRO_NONE;
67};
diff --git a/keyboards/handwired/magicforce68/magicforce68.c b/keyboards/handwired/magicforce68/magicforce68.c
new file mode 100644
index 000000000..84b1007e2
--- /dev/null
+++ b/keyboards/handwired/magicforce68/magicforce68.c
@@ -0,0 +1,8 @@
1#include "magicforce68.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
diff --git a/keyboards/handwired/magicforce68/magicforce68.h b/keyboards/handwired/magicforce68/magicforce68.h
new file mode 100644
index 000000000..cfcdce38d
--- /dev/null
+++ b/keyboards/handwired/magicforce68/magicforce68.h
@@ -0,0 +1,20 @@
1#ifndef MAGICFORCE68_H
2#define MAGICFORCE68_H
3
4#include "quantum.h"
5
6#define KEYMAP( \
7 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K2E, \
8 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K3E, \
9 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
10 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, \
11 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4E \
12 ) { \
13 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E }, \
14 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E }, \
15 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_NO, KC_##K2E }, \
16 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_NO, KC_##K3C, KC_##K3D, KC_##K3E }, \
17 { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E } \
18}
19
20#endif \ No newline at end of file
diff --git a/keyboards/handwired/magicforce68/rules.mk b/keyboards/handwired/magicforce68/rules.mk
new file mode 100644
index 000000000..e897ef252
--- /dev/null
+++ b/keyboards/handwired/magicforce68/rules.mk
@@ -0,0 +1,83 @@
1
2# MCU name
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 ?= yes # Console for debug(+400)
58COMMAND_ENABLE ?= yes # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
62NKRO_ENABLE ?= no # USB Nkey Rollover
63BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
64MIDI_ENABLE ?= no # MIDI controls
65UNICODE_ENABLE ?= no # Unicode
66BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
67AUDIO_ENABLE ?= no # Audio output on port C6
68
69ifndef QUANTUM_DIR
70 include ../../../Makefile
71endif
72
73avrdude: build
74 ls /dev/tty* > /tmp/1; \
75 echo "Reset your Pro Micro now"; \
76 while [[ -z $$USB ]]; do \
77 sleep 1; \
78 ls /dev/tty* > /tmp/2; \
79 USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
80 done; \
81 avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
82
83.PHONY: avrdude
diff --git a/keyboards/handwired/magicforce68/wiring-layout.png b/keyboards/handwired/magicforce68/wiring-layout.png
new file mode 100644
index 000000000..816b10b2b
--- /dev/null
+++ b/keyboards/handwired/magicforce68/wiring-layout.png
Binary files differ
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 63b626926..903d57f1e 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -183,6 +183,7 @@ enum quantum_keycodes {
183#define ALTG(kc) (kc | QK_RCTL | QK_RALT) 183#define ALTG(kc) (kc | QK_RCTL | QK_RALT)
184#define SCMD(kc) (kc | QK_LGUI | QK_LSFT) 184#define SCMD(kc) (kc | QK_LGUI | QK_LSFT)
185#define SWIN(kc) SCMD(kc) 185#define SWIN(kc) SCMD(kc)
186#define LCA(kc) (kc | QK_LCTL | QK_LALT)
186 187
187#define MOD_HYPR 0xf 188#define MOD_HYPR 0xf
188#define MOD_MEH 0x7 189#define MOD_MEH 0x7
@@ -339,6 +340,7 @@ enum quantum_keycodes {
339#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ 340#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
340#define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc) 341#define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc)
341#define SWIN_T(kc) SCMD_T(kc) 342#define SWIN_T(kc) SCMD_T(kc)
343#define LCA_T(kc) MT((MOD_LCTL | MOD_LALT), kc) // Left control and left alt
342 344
343// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap 345// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
344#define KC_HYPR HYPR(KC_NO) 346#define KC_HYPR HYPR(KC_NO)
diff --git a/util/install_dependencies.sh b/util/install_dependencies.sh
index 936a86593..1b73a8b3b 100755
--- a/util/install_dependencies.sh
+++ b/util/install_dependencies.sh
@@ -92,4 +92,23 @@ elif [[ -n "$(type -P zypper)" ]]; then
92 # TODO: The avr and eabi tools are not available as default packages, so we need 92 # TODO: The avr and eabi tools are not available as default packages, so we need
93 # another way to install them 93 # another way to install them
94 94
95elif [[ -n "$(type -P pkg)" ]]; then
96 # FreeBSD
97 pkg update
98 pkg install -y \
99 git \
100 wget \
101 gmake \
102 gcc \
103 zip \
104 unzip \
105 avr-binutils \
106 avr-gcc \
107 avr-libc \
108 dfu-programmer \
109 dfu-util \
110 arm-none-eabi-gcc \
111 arm-none-eabi-binutils \
112 arm-none-eabi-newlib \
113 diffutils
95fi 114fi