Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9b70cc1c9 | ||
|
|
b11a5be62c | ||
|
|
0b050f6c33 | ||
|
|
05b356dea7 | ||
|
|
7a7b57ffb1 | ||
|
|
22738df5f5 | ||
|
|
d099266853 | ||
|
|
ba90cf422c | ||
|
|
f2fcab96a8 | ||
|
|
29df2be2a9 | ||
|
|
d28d390ad6 | ||
|
|
49046f621b | ||
|
|
9e7448ea89 | ||
|
|
b2083e21a2 | ||
|
|
cb60fe393f | ||
|
|
a1e156a3d2 | ||
|
|
10a7cd7e5a | ||
|
|
8e94c9b4cb | ||
|
|
2704c163da | ||
|
|
4b50ea15a9 | ||
|
|
7f3b1232c4 | ||
|
|
38b076d22d | ||
|
|
425e7348d8 | ||
|
|
4634e3802c | ||
|
|
c4f93e237e | ||
|
|
f9aa75fe95 | ||
|
|
9d4050586d | ||
|
|
857600aa4b | ||
|
|
7e930626eb | ||
|
|
22afddb8e8 | ||
|
|
3bfe4cdb4f | ||
|
|
1bab72383c | ||
|
|
ccabf70aeb | ||
|
|
a9f4596062 | ||
|
|
f076f16e13 | ||
|
|
4810a4a812 | ||
|
|
f90321bdcb | ||
|
|
dddbcc2af3 | ||
|
|
592ff53e41 | ||
|
|
73625a603a | ||
|
|
91b11bb4dd | ||
|
|
049f906b5e | ||
|
|
021edb6ec6 | ||
|
|
c74f47555c | ||
|
|
605c4129cc | ||
|
|
b0ade6dc98 |
No files matched your search
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
|
* ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
* │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
|
* │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
|
||||||
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
* │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ Alt │ CTL │
|
* │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ ALT │ CTL │
|
||||||
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
* │ ← │ ↑ │ │ ↓ │ → │
|
* │ ← │ ↑ │ │ ↓ │ → │
|
||||||
* ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
* ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_END, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_SS,
|
KC_END, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_SS,
|
||||||
NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R,
|
NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R,
|
||||||
TG(PMN), NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT,
|
TG(PMN), NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT,
|
||||||
NEO_L2_R,KC_RGUI,MO(FMU),KC_RALT,KC_RCTL,
|
NEO_L2_R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
|
||||||
KC_DOWN, KC_RGHT,
|
KC_DOWN, KC_RGHT,
|
||||||
KC_MINS,
|
KC_MINS,
|
||||||
MEH_T(KC_NO),KC_ENT,KC_SPC
|
MEH_T(KC_NO),KC_ENT,KC_SPC
|
||||||
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
* ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
* │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
|
* │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
|
||||||
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
* │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
|
* │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ ALT │ CTL │
|
||||||
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
* │ ← │ ↑ │ │ ↓ │ → │
|
* │ ← │ ↑ │ │ ↓ │ → │
|
||||||
* ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
* ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y,
|
KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y,
|
||||||
DE_U, DE_MINS,DE_Z, DE_E, DE_X, NEO_L1_R,
|
DE_U, DE_MINS,DE_Z, DE_E, DE_X, NEO_L1_R,
|
||||||
KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT,
|
KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT,
|
||||||
MO(NHL),KC_RGUI,MO(FMU),KC_RALT,KC_RCTL,
|
MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
|
||||||
KC_DOWN, KC_RGHT,
|
KC_DOWN, KC_RGHT,
|
||||||
KC_MINS,
|
KC_MINS,
|
||||||
MEH_T(KC_NO),KC_ENT,KC_SPC
|
MEH_T(KC_NO),KC_ENT,KC_SPC
|
||||||
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
* ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
* │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
|
* │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
|
||||||
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
* │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
|
* │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ ALT │ CTL │
|
||||||
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
* │ ← │ ↑ │ │ ↓ │ → │
|
* │ ← │ ↑ │ │ ↓ │ → │
|
||||||
* ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
* ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
@@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_END, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS,
|
KC_END, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS,
|
||||||
DE_S, DE_N, DE_R, DE_T, DE_D, KC_NO,
|
DE_S, DE_N, DE_R, DE_T, DE_D, KC_NO,
|
||||||
KC_TRNS, DE_B, DE_M, KC_COMM,KC_DOT, DE_J, KC_RSFT,
|
KC_TRNS, DE_B, DE_M, KC_COMM,KC_DOT, DE_J, KC_RSFT,
|
||||||
MO(NHL),KC_RGUI,MO(FMU),KC_RALT,KC_RCTL,
|
MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
|
||||||
KC_DOWN, KC_RGHT,
|
KC_DOWN, KC_RGHT,
|
||||||
KC_MINS,
|
KC_MINS,
|
||||||
MEH_T(KC_NO),KC_ENT,KC_SPC
|
MEH_T(KC_NO),KC_ENT,KC_SPC
|
||||||
@@ -135,13 +135,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
/* Layer 3: F-keys, Mouse and Unicode
|
/* Layer 3: F-keys, Mouse and Unicode
|
||||||
* ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
* ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
* │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
|
||||||
* ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
* ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
||||||
* │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ │ F9 │ F10 │ F11 │ F12 │ │
|
* │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ ↔ │ ← │ → │ ↑ │ ↓ │ │
|
||||||
* ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
* ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
||||||
* │ │ ├ │ ┼ │ ┤ │ ✓ │ ✕ ├─────┤ ├─────┤ │ F5 │ F6 │ F7 │ F8 │ │
|
* │ │ ├ │ ┼ │ ┤ │ 〈 │ 〉 ├─────┤ ├─────┤ │ ✓ │ ✕ │ • │ ∶ │ │
|
||||||
* ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
* ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
* │ │ └ │ ┴ │ ┘ │ ↔ │ ⇔ │ │ │ │ │ F1 │ F2 │ F3 │ F4 │ │
|
* │ │ └ │ ┴ │ ┘ │ │ │ │ │ │ ⇔ │ ⇐ │ ⇒ │ ⇑ │ ⇓ │ │
|
||||||
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
* └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
* │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
|
* │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
|
||||||
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
* └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
@@ -154,23 +154,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
*/
|
*/
|
||||||
[FMU] = KEYMAP(
|
[FMU] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
||||||
KC_TRNS, UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS,
|
KC_TRNS, UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS,
|
||||||
KC_TRNS, UC(0x251C),UC(0x253C),UC(0x2524),UC(0x2713),UC(0x2715),
|
KC_TRNS, UC(0x251C),UC(0x253C),UC(0x2524),UC(0x3008),UC(0x3009),
|
||||||
KC_TRNS, UC(0x2514),UC(0x2534),UC(0x2518),UC(0x2194),UC(0x21D4),KC_TRNS,
|
KC_TRNS, UC(0x2514),UC(0x2534),UC(0x2518),KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_MS_L, KC_MS_U,
|
KC_MS_L, KC_MS_U,
|
||||||
KC_BTN1,
|
KC_BTN1,
|
||||||
KC_TRNS,KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
// right hand
|
// right hand
|
||||||
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
KC_TRNS, UC(0x2194),UC(0x2190),UC(0x2192),UC(0x2191),UC(0x2193),KC_TRNS,
|
||||||
KC_TRNS,KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS,
|
KC_TRNS, UC(0x2713),UC(0x2715),UC(0x2022),UC(0x2236),KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS,
|
KC_TRNS, UC(0x21D4),UC(0x21D0),UC(0x21D2),UC(0x21D1),UC(0x21D3),KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_MS_D, KC_MS_R,
|
KC_MS_D, KC_MS_R,
|
||||||
KC_BTN2,
|
KC_BTN2,
|
||||||
KC_TRNS, KC_TRNS,KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Layer 4: Neo’s software layer 4 rebuilt in Hardware
|
/* Layer 4: Neo’s software layer 4 rebuilt in Hardware
|
||||||
@@ -294,11 +294,10 @@ void unicode_input_start (void) {
|
|||||||
// Override method to use NEO_A instead of KC_A
|
// Override method to use NEO_A instead of KC_A
|
||||||
uint16_t hex_to_keycode(uint8_t hex)
|
uint16_t hex_to_keycode(uint8_t hex)
|
||||||
{
|
{
|
||||||
if (hex == 0x0) {
|
if(hex == 0x0) {
|
||||||
return KC_0;
|
return KC_0;
|
||||||
} else if (hex < 0xA) {
|
}
|
||||||
return KC_1 + (hex - 0x1);
|
else if(hex >= 0xA) {
|
||||||
} else {
|
|
||||||
switch(hex) {
|
switch(hex) {
|
||||||
case 0xA:
|
case 0xA:
|
||||||
return NEO_A;
|
return NEO_A;
|
||||||
@@ -316,4 +315,6 @@ uint16_t hex_to_keycode(uint8_t hex)
|
|||||||
return KC_NO;
|
return KC_NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return KC_1 + (hex - 0x1);
|
||||||
}
|
}
|
||||||
@@ -4,10 +4,18 @@ The idea of this layout is to use it for [Neo2](http://www.neo-layout.org) but a
|
|||||||
|
|
||||||
The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course).
|
The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course).
|
||||||
|
|
||||||
It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and (hopefully in the near future) some useful Unicode symbols.
|
It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and some useful Unicode symbols.
|
||||||
|
|
||||||
|
|
||||||
## Layers
|
## Build
|
||||||
|
|
||||||
|
```
|
||||||
|
make clean
|
||||||
|
make coderkun_neo2
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Keymap
|
||||||
|
|
||||||
0. Default layer for Neo2
|
0. Default layer for Neo2
|
||||||
1. Poor man’s QWERTZ
|
1. Poor man’s QWERTZ
|
||||||
@@ -16,16 +24,106 @@ It also features a layer for additional keys like F-keys (F1 – F12), some mous
|
|||||||
4. Neo’s software layers 4 rebuilt in hardware
|
4. Neo’s software layers 4 rebuilt in hardware
|
||||||
|
|
||||||
|
|
||||||
## Build
|
### Layer 0: Default layer for Neo2
|
||||||
|
|
||||||
1. Enable Unicode in Makefile
|
┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
||||||
|
│ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
|
||||||
|
├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
||||||
|
│ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
|
||||||
|
├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
||||||
|
│ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
|
||||||
|
├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
|
│ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
|
||||||
|
└─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
|
│ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ Alt │ CTL │
|
||||||
|
└─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
|
│ ← │ ↑ │ │ ↓ │ → │
|
||||||
|
┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
|
│ │ │ ─ │ │ ─ │ │ │
|
||||||
|
│ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
|
||||||
|
│ │ │ HYP │ │ MEH │ │ │
|
||||||
|
└─────┴─────┴─────┘ └─────┴─────┴─────┘
|
||||||
|
|
||||||
```
|
|
||||||
UNICODE_ENABLE = yes
|
|
||||||
```
|
|
||||||
2. Build as usual
|
|
||||||
|
|
||||||
```
|
### Layer 1: Poor man’s QWERTZ
|
||||||
make clean
|
|
||||||
make KEYMAP=coderkun_neo2
|
┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
||||||
```
|
│ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
|
||||||
|
├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
||||||
|
│ C │ P │ T │ F │ K │ L │ HOM │ │ END │ B │ A │ S │ G │ V │ Y │
|
||||||
|
├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
||||||
|
│ Mod3 │ D │ H │ Ö │ O │ I ├─────┤ ├─────┤ U │ - │ Z │ E │ X │ Mod3 │
|
||||||
|
├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
|
│ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
|
||||||
|
└─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
|
│ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
|
||||||
|
└─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
|
│ ← │ ↑ │ │ ↓ │ → │
|
||||||
|
┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
|
│ │ │ ─ │ │ ─ │ │ │
|
||||||
|
│ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
|
||||||
|
│ │ │ HYP │ │ MEH │ │ │
|
||||||
|
└─────┴─────┴─────┘ └─────┴─────┴─────┘
|
||||||
|
|
||||||
|
|
||||||
|
### Layer 2: Poor man’s Neo
|
||||||
|
|
||||||
|
┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
||||||
|
│ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
|
||||||
|
├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
||||||
|
│ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
|
||||||
|
├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
||||||
|
│ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
|
||||||
|
├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
|
│ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
|
||||||
|
└─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
|
│ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
|
||||||
|
└─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
|
│ ← │ ↑ │ │ ↓ │ → │
|
||||||
|
┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
|
│ │ │ ─ │ │ ─ │ │ │
|
||||||
|
│ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
|
||||||
|
│ │ │ HYP │ │ MEH │ │ │
|
||||||
|
└─────┴─────┴─────┘ └─────┴─────┴─────┘
|
||||||
|
|
||||||
|
|
||||||
|
### Layer 3: F-keys, mouse keys und Unicode symbols
|
||||||
|
|
||||||
|
┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
||||||
|
│ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
|
||||||
|
├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
||||||
|
│ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ ↔ │ ← │ → │ ↑ │ ↓ │ │
|
||||||
|
├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
||||||
|
│ │ ├ │ ┼ │ ┤ │ 〈 │ 〉 ├─────┤ ├─────┤ │ ✓ │ ✕ │ • │ ∶ │ │
|
||||||
|
├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
|
│ │ └ │ ┴ │ ┘ │ │ │ │ │ │ ⇔ │ ⇐ │ ⇒ │ ⇑ │ ⇓ │ │
|
||||||
|
└─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
|
│ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
|
||||||
|
└─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
|
│ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
|
||||||
|
┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
|
│ │ │ MLC │ │ MRC │ │ │
|
||||||
|
│ │ ├─────┤ ├─────┤ │ │
|
||||||
|
│ │ │ │ │ │ │ │
|
||||||
|
└─────┴─────┴─────┘ └─────┴─────┴─────┘
|
||||||
|
|
||||||
|
|
||||||
|
### Layer 4: Neo’s software layers 4 rebuilt in hardware
|
||||||
|
|
||||||
|
┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
|
||||||
|
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
|
||||||
|
│ │ PgUp│ BSpc│ ↑ │ Del │ PgDn│ │ │ │ │ 7 │ 8 │ 9 │ + │ − │
|
||||||
|
├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
|
||||||
|
│ │ Home│ ← │ ↓ │ → │ End ├─────┤ ├─────┤ │ 4 │ 5 │ 6 │ , │ . │
|
||||||
|
├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
|
||||||
|
│ │ Esc │ Tab │ Ins │ Ret │ Undo│ │ │ │ │ 1 │ 2 │ 3 │ │ │
|
||||||
|
└─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
|
||||||
|
│ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
|
||||||
|
└─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
|
||||||
|
│ │ │ │ │ │
|
||||||
|
┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
|
||||||
|
│ │ │ │ │ │ │ │
|
||||||
|
│ │ ├─────┤ ├─────┤ │ │
|
||||||
|
│ │ │ │ │ │ │ │
|
||||||
|
└─────┴─────┴─────┘ └─────┴─────┴─────┘
|
||||||
@@ -163,6 +163,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define RGB_DI_PIN D0 // The pin your RGB strip is wired to
|
#define RGB_DI_PIN D0 // The pin your RGB strip is wired to
|
||||||
#define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio)
|
#define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio)
|
||||||
#define RGBLED_NUM 7 // Number of LEDs
|
#define RGBLED_NUM 7 // Number of LEDs
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
#define RGBLIGHT_VAL_STEP 17
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
#include "miuni32.h"
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Level 0: Default Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | Q | W | E | R | T | Y | U | I | O | P | BSP |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | A | S | D | F | G | H | J | K | L | ENT |LT(1|,)|
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* |LT(3|Z)| X | C | V | NO | SPC | B | N | M | RSFT |LT(2|.)|
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[0] ={
|
||||||
|
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
||||||
|
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, LT(1, KC_COMMA)},
|
||||||
|
{LT(3, KC_Z), KC_X, KC_C, KC_V, KC_NO, KC_SPC, KC_B, KC_N, KC_M, KC_RSFT, LT(2, KC_DOT)}
|
||||||
|
},
|
||||||
|
/* Level 1: Numbers Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | PGUP | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | LATL | 1 | 2 | 3 | 0 | NO | LEFT | DOWN | RGHT | PGDN | RSHFT |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[1] ={
|
||||||
|
{KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
|
||||||
|
{KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS},
|
||||||
|
{KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_RSFT}
|
||||||
|
},
|
||||||
|
/* Level 2: Symbols Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | ! | @ | # | $ | % | ^ | & | * | - | + | = |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | { | } | [ | ] | TRNS | TRNS | \ | ; | : | ` | ? |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | LSFT | LCTL | L | T | TRNS | TAB | N | TRNS | TRNS | RCTL | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[2] ={
|
||||||
|
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_PLUS, KC_EQL},
|
||||||
|
{KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_BSLS, KC_SCLN, KC_COLN, KC_GRV, KC_QUES},
|
||||||
|
{KC_LSFT, KC_LCTL, KC_L, KC_T, KC_TRNS, KC_TAB, KC_N, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS}
|
||||||
|
},
|
||||||
|
/* Level 3: RGB Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | RESET | TRNS | TRNS | TRNS | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* |RGB_TOG|RGB_MOD|RGB_HUI|RGB_HUD| NO |RGB_SAI|RGB_SAD|RGB_VAI|RGB_VAD| TRNS | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | TRNS | TRNS | TRNS | TRNS | NO | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[3] ={
|
||||||
|
{RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6},
|
||||||
|
{RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_NO, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS},
|
||||||
|
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_KANA)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for miuni32
|
||||||
@@ -1,19 +1,62 @@
|
|||||||
#include "miuni32.h"
|
#include "miuni32.h"
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[0] ={
|
/* Level 0: Default Layer
|
||||||
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
* ,---------------------------------------------------------------------------------------.
|
||||||
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_RSFT, KC_ENT},
|
* | Q | W | E | R | T | Y | U | I | O | P | BSP |
|
||||||
{KC_Z, KC_X, KC_C, KC_V, KC_V, KC_SPC, KC_B, KC_N, KC_M , MO(1), KC_RCTL}
|
* |---------------------------------------------------------------------------------------|
|
||||||
},
|
* | A | S | D | F | G | H | J | K | L | ENT |LT(1|,)|
|
||||||
[1] ={
|
* |---------------------------------------------------------------------------------------|
|
||||||
{KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL},
|
* |LT(3|Z)| X | C | V | NO | SPC | B | N | M | RSFT |LT(2|.)|
|
||||||
{KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_TRNS},
|
* |---------------------------------------------------------------------------------------|
|
||||||
{RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, KC_TRNS, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, RGB_MOD},
|
*/
|
||||||
}
|
[0] ={
|
||||||
};
|
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, LT(1, KC_COMMA)},
|
||||||
|
{LT(3, KC_Z), KC_X, KC_C, KC_V, KC_NO, KC_SPC, KC_B, KC_N, KC_M, KC_RSFT, LT(2, KC_DOT)}
|
||||||
|
},
|
||||||
|
/* Level 1: Numbers Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | PGUP | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | LATL | 1 | 2 | 3 | 0 | NO | LEFT | DOWN | RGHT | PGDN | RSHFT |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[1] ={
|
||||||
|
{KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
|
||||||
|
{KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS},
|
||||||
|
{KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_RSFT}
|
||||||
|
},
|
||||||
|
/* Level 2: Symbols Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | ! | @ | # | $ | % | ^ | & | * | - | + | = |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | { | } | [ | ] | TRNS | TRNS | \ | ; | : | ` | ? |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | LSFT | LCTL | L | T | TRNS | TAB | N | TRNS | TRNS | RCTL | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[2] ={
|
||||||
|
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_PLUS, KC_EQL},
|
||||||
|
{KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_BSLS, KC_SCLN, KC_COLN, KC_GRV, KC_QUES},
|
||||||
|
{KC_LSFT, KC_LCTL, KC_L, KC_T, KC_TRNS, KC_TAB, KC_N, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS}
|
||||||
|
},
|
||||||
|
/* Level 3: RGB Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | RESET | TRNS | TRNS | TRNS | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* |RGB_TOG|RGB_MOD|RGB_HUI|RGB_HUD| NO |RGB_SAI|RGB_SAD|RGB_VAI|RGB_VAD| TRNS | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | TRNS | TRNS | TRNS | TRNS | NO | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[3] ={
|
||||||
|
{RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6},
|
||||||
|
{RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_NO, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS},
|
||||||
|
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
@@ -31,19 +74,46 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_KANA)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
#include "miuni32.h"
|
||||||
|
|
||||||
|
// Keyboard layer definitions
|
||||||
|
#define BASE 0
|
||||||
|
#define NUMBERS 1
|
||||||
|
#define SYMBOLS 2
|
||||||
|
#define MEDIA 3
|
||||||
|
|
||||||
|
// Keyboard macro defintions
|
||||||
|
#define GIT_ST M(0)
|
||||||
|
#define GIT_PU M(1)
|
||||||
|
#define GIT_CM M(2)
|
||||||
|
#define HM_DIR M(3)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Level 0: Default Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | Q | W | E | R | T | Y | U | I | O | P | BSP |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | A | S | D | F | G | H | J | K | L | ENT | RSFT |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* |LT(2|Z)|LT(3|X)| C | V | B | SPC | N | M | , |LT(1|.)| RCTL |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[BASE] ={
|
||||||
|
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
||||||
|
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_RSFT},
|
||||||
|
{LT(2, KC_Z), LT(3, KC_X), KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_COMMA, LT(1, KC_DOT), KC_RCTL}
|
||||||
|
},
|
||||||
|
/* Level 1: Numbers Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | INS | PGUP |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | LATL | 1 | 2 | 3 | 0 | ENT | LEFT | DOWN | RGHT | !TRNS!| PGDN |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[NUMBERS] ={
|
||||||
|
{KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
|
||||||
|
{KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_INSERT, KC_PGUP},
|
||||||
|
{KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_PGDN}
|
||||||
|
},
|
||||||
|
/* Level 2: Symbols Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* | ! | @ | # | $ | % | ^ | & | * | _ | = | ? |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | RESET | LSFT | ~ | { | } | \ | | | ; | : | ` | " |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | !TRNS!| LCTL | TRNS | [ | ] | TAB | < | > | TRNS | RCTL | TRNS |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[SYMBOLS] ={
|
||||||
|
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_EQL, KC_QUES},
|
||||||
|
{RESET, KC_LSFT, KC_TILD, KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, KC_GRV, KC_DQUO},
|
||||||
|
{KC_TRNS, KC_LCTL, KC_TRNS, KC_LBRC, KC_RBRC, KC_TAB, KC_LABK, KC_RABK, KC_TRNS, KC_RCTL, KC_TRNS}
|
||||||
|
},
|
||||||
|
/* Level 3: Media Layer
|
||||||
|
* ,---------------------------------------------------------------------------------------.
|
||||||
|
* |RGB_TOG|RGB_HUI|RGB_SAI|RGB_VAI| GIT_CM| CALC | WREF | WFAV | MUTE | VOLD | VOLU |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* |RGB_MOD|RGB_HUD|RGB_SAD|RGB_VAD| GIT_ST| WHOM | WBAK | WFWD | TRNS | STOP | PLAY |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
* | TRNS | !TRNS!| TRNS | HM_DIR| GIT_PU| MYCM | WSTP | WSCH | MSEL | MPRV | MNXT |
|
||||||
|
* |---------------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
[MEDIA] ={
|
||||||
|
{RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, GIT_CM, KC_CALC, KC_WREF, KC_WFAV, KC_MUTE, KC_VOLD, KC_VOLU},
|
||||||
|
{RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, GIT_ST, KC_WHOM, KC_WBAK, KC_WFWD, KC_TRNS, KC_MSTP, KC_MPLY},
|
||||||
|
{KC_TRNS, KC_TRNS, KC_TRNS, HM_DIR, GIT_PU, KC_MYCM, KC_WSTP, KC_WSCH, KC_MSEL, KC_MPRV, KC_MNXT}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void press_and_release_key(uint8_t code)
|
||||||
|
{
|
||||||
|
register_code(code);
|
||||||
|
unregister_code(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
void press_and_release_mod_key(uint8_t mod, uint8_t code)
|
||||||
|
{
|
||||||
|
register_code(mod);
|
||||||
|
register_code(code);
|
||||||
|
unregister_code(code);
|
||||||
|
unregister_code(mod);
|
||||||
|
}
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed)
|
||||||
|
{
|
||||||
|
return MACRO(T(G), T(I), T(T), T(SPC),
|
||||||
|
T(S), T(T), T(A), T(T), T(U), T(S), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (record->event.pressed)
|
||||||
|
{
|
||||||
|
return MACRO(T(G), T(I), T(T), T(SPC),
|
||||||
|
T(P), T(U), T(L), T(L), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (record->event.pressed)
|
||||||
|
{
|
||||||
|
return MACRO(T(G), T(I), T(T), T(SPC),
|
||||||
|
T(C), T(O), T(M), T(M), T(I), T(T), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (record->event.pressed)
|
||||||
|
{
|
||||||
|
/*press_and_release_key(KC_C);
|
||||||
|
press_and_release_key(KC_D);
|
||||||
|
press_and_release_key(KC_SPC);
|
||||||
|
press_and_release_mod_key(KC_LSFT, KC_GRV);
|
||||||
|
press_and_release_key(KC_SLSH);
|
||||||
|
press_and_release_key(KC_Q);
|
||||||
|
press_and_release_key(KC_M);
|
||||||
|
press_and_release_key(KC_K);
|
||||||
|
press_and_release_mod_key(KC_LSFT, KC_MINS);*/
|
||||||
|
return MACRO(I(0),
|
||||||
|
T(C), T(D), T(SPC),
|
||||||
|
D(LSFT), T(GRV), U(LSFT), T(SLSH),
|
||||||
|
T(Q), T(M), T(K), D(LSFT), T(MINS), U(LSFT),
|
||||||
|
T(F), T(I), T(R), T(M), T(W), T(A), T(R), T(E), T(SLSH),
|
||||||
|
T(K), T(E), T(Y), T(B), T(O), T(A), T(R), T(D), T(S), T(SLSH),
|
||||||
|
T(M), T(I), T(U), T(N), T(I), T(3), T(2), T(SLSH),
|
||||||
|
T(K), T(E), T(Y), T(M), T(A), T(P), T(S), END);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_KANA)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# ht_156's keymap for miuni32, using 33 keys
|
||||||
@@ -6,10 +6,10 @@
|
|||||||
#define KEYMAP( \
|
#define KEYMAP( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A ) { \
|
K20, K21, K22, K23, K25, K26, K27, K28, K29, K2A ) { \
|
||||||
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A }, \
|
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A }, \
|
||||||
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A }, \
|
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A }, \
|
||||||
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A } \
|
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_NO, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
|
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
TAP_DANCE_ENABLE = no
|
||||||
|
AUDIO_ENABLE = no
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#ifndef NO_DEBUG
|
||||||
|
#define NO_DEBUG
|
||||||
|
#endif
|
||||||
|
#ifndef NO_PRINT
|
||||||
|
#define NO_PRINT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
#define TAPPING_TOGGLE 2
|
||||||
|
#define TAPPING_TERM 300
|
||||||
|
|
||||||
|
#define ONESHOT_TAP_TOGGLE 2
|
||||||
|
#define ONESHOT_TIMEOUT 300
|
||||||
|
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXXXX KC_NO
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
#include "planck.h"
|
||||||
|
#include "backlight.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "eeconfig.h"
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
enum planck_layers { DEF, LWR, RSE, FUN };
|
||||||
|
enum planck_keycodes { M1 = SAFE_RANGE, M2, M3, M4 };
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Q | W | E | R | T | Esc | Bksp | Y | U | I | O | P |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | A | S | D | F | G | Tab | Enter| H | J | K | L | ; |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Z | X | C | V | B | Shift| Play | N | M | , | . | / |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl | Super| Alt | Fun | Lower| Space | Raise| Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[DEF] = {
|
||||||
|
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P},
|
||||||
|
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
|
||||||
|
{KC_Z, KC_X, KC_C, KC_V, KC_B, OSM(MOD_LSFT), XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
|
||||||
|
{KC_LCTL, KC_LGUI, KC_LALT, TT(FUN), TT(LWR), KC_SPC, KC_SPC, TT(RSE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
||||||
|
},
|
||||||
|
/* Lower
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ! | @ | # | $ | % | | | ^ | & | * | ( | ) |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | ~ | | | | | | | _ | + | | { | } |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | " | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | Home | PgDn | PgUp | End |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[LWR] = {
|
||||||
|
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
|
||||||
|
{S(KC_GRV), _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, S(KC_LBRC), S(KC_RBRC)},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, S(KC_QUOT), S(KC_BSLS)},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
|
||||||
|
},
|
||||||
|
/* Raise
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | 1 | 2 | 3 | 4 | 5 | | | 6 | 7 | 8 | 9 | 0 |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | ` | | | | | | | - | = | | [ | ] |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | Home | PgDn | PgUp | End |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[RSE] = {
|
||||||
|
{KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0},
|
||||||
|
{KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
|
||||||
|
},
|
||||||
|
/* Function
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | F1 | F2 | F3 | F4 | F5 | Reset|Delete| F6 | F7 | F8 | F9 | F10 |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | F11 | F12 | F13 | F14 | F15 | | | F16 | F17 | F18 | F19 | F20 |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* |BlTggl|BlStep| | M1 | M2 | | | M3 | M4 |MsBtn1|MsBtn2|MsBtn3|
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | |MsLeft|MsDown| MsUp |MsRght|
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[FUN] = {
|
||||||
|
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10},
|
||||||
|
{KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20},
|
||||||
|
{BL_TOGG, BL_STEP, _______, M1, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R}
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case M1:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(" 2>&1 > ");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
@@ -18,14 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "ps2avrGB.h"
|
#include "ps2avrGB.h"
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KEYMAP( \
|
KC_KEYMAP(
|
||||||
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,HOME,END, \
|
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,HOME,END,
|
||||||
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, DEL, \
|
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, DEL,
|
||||||
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, INS, \
|
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, INS,
|
||||||
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, PGUP,\
|
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, PGUP,
|
||||||
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, UP, PGDN,\
|
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, UP, PGDN,
|
||||||
LCTL,LALT,LGUI, SPC, RGUI,RALT,RCTL,LEFT,DOWN,RGHT \
|
LCTL,LALT,LGUI, SPC, RGUI,RALT,RCTL,LEFT,DOWN,RGHT
|
||||||
),
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|||||||
@@ -22,6 +22,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "action.h"
|
#include "action.h"
|
||||||
|
|
||||||
#define KEYMAP( \
|
#define KEYMAP( \
|
||||||
|
K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \
|
||||||
|
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \
|
||||||
|
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \
|
||||||
|
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, KE0, \
|
||||||
|
K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, K86, K77, \
|
||||||
|
K00, K10, K20, K56, K57, KB0, KC0, K66, K76, K96 \
|
||||||
|
){ \
|
||||||
|
{ K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB0, KC0, KD0, KE0 }, \
|
||||||
|
{ K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC_NO, KD1, KE1 }, \
|
||||||
|
{ K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC_NO, KD2, KE2 }, \
|
||||||
|
{ K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KD3, KC_NO }, \
|
||||||
|
{ K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \
|
||||||
|
{ K05, KC_NO, K25, K35, K45, K55, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KC5, KD5, KE5 }, \
|
||||||
|
{ K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6, KE6 }, \
|
||||||
|
{ K07, K17, K27, K37, K47, K57, K67, K77, KC_NO, KC_NO, KA7, KB7, KC7, KD7, KE7 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KC_KEYMAP( \
|
||||||
K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \
|
K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \
|
||||||
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \
|
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \
|
||||||
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \
|
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# QMK Firmware for XIUDI's 60% XD60 PCB
|
# QMK Firmware for XIUDI's 60% XD60 PCB
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Quantum MK Firmware
|
## Quantum MK Firmware
|
||||||
For the full Quantum feature list, see [the parent readme.md](/readme.md).
|
For the full Quantum feature list, see [the parent readme.md](/readme.md).
|
||||||
|
|||||||
+52
-5
@@ -48,11 +48,22 @@ enum dynamic_macro_keycodes {
|
|||||||
/* Blink the LEDs to notify the user about some event. */
|
/* Blink the LEDs to notify the user about some event. */
|
||||||
void dynamic_macro_led_blink(void)
|
void dynamic_macro_led_blink(void)
|
||||||
{
|
{
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
backlight_toggle();
|
backlight_toggle();
|
||||||
_delay_ms(100);
|
_delay_ms(100);
|
||||||
backlight_toggle();
|
backlight_toggle();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convenience macros used for retrieving the debug info. All of them
|
||||||
|
* need a `direction` variable accessible at the call site.
|
||||||
|
*/
|
||||||
|
#define DYNAMIC_MACRO_CURRENT_SLOT() (direction > 0 ? 1 : 2)
|
||||||
|
#define DYNAMIC_MACRO_CURRENT_LENGTH(BEGIN, POINTER) \
|
||||||
|
((int)(direction * ((POINTER) - (BEGIN))))
|
||||||
|
#define DYNAMIC_MACRO_CURRENT_CAPACITY(BEGIN, END2) \
|
||||||
|
((int)(direction * ((END2) - (BEGIN)) + 1))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start recording of the dynamic macro.
|
* Start recording of the dynamic macro.
|
||||||
*
|
*
|
||||||
@@ -62,6 +73,8 @@ void dynamic_macro_led_blink(void)
|
|||||||
void dynamic_macro_record_start(
|
void dynamic_macro_record_start(
|
||||||
keyrecord_t **macro_pointer, keyrecord_t *macro_buffer)
|
keyrecord_t **macro_pointer, keyrecord_t *macro_buffer)
|
||||||
{
|
{
|
||||||
|
dprintln("dynamic macro recording: started");
|
||||||
|
|
||||||
dynamic_macro_led_blink();
|
dynamic_macro_led_blink();
|
||||||
|
|
||||||
clear_keyboard();
|
clear_keyboard();
|
||||||
@@ -79,6 +92,8 @@ void dynamic_macro_record_start(
|
|||||||
void dynamic_macro_play(
|
void dynamic_macro_play(
|
||||||
keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction)
|
keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction)
|
||||||
{
|
{
|
||||||
|
dprintf("dynamic macro: slot %d playback\n", DYNAMIC_MACRO_CURRENT_SLOT());
|
||||||
|
|
||||||
uint32_t saved_layer_state = layer_state;
|
uint32_t saved_layer_state = layer_state;
|
||||||
|
|
||||||
clear_keyboard();
|
clear_keyboard();
|
||||||
@@ -99,7 +114,7 @@ void dynamic_macro_play(
|
|||||||
*
|
*
|
||||||
* @param macro_buffer[in] The start of the used macro buffer.
|
* @param macro_buffer[in] The start of the used macro buffer.
|
||||||
* @param macro_pointer[in,out] The current buffer position.
|
* @param macro_pointer[in,out] The current buffer position.
|
||||||
* @param macro2_end[in] The last buffer element it is safe to use before overwriting the other macro.
|
* @param macro2_end[in] The end of the other macro.
|
||||||
* @param direction[in] Either +1 or -1, which way to iterate the buffer.
|
* @param direction[in] Either +1 or -1, which way to iterate the buffer.
|
||||||
* @param record[in] The current keypress.
|
* @param record[in] The current keypress.
|
||||||
*/
|
*/
|
||||||
@@ -112,25 +127,53 @@ void dynamic_macro_record_key(
|
|||||||
{
|
{
|
||||||
/* If we've just started recording, ignore all the key releases. */
|
/* If we've just started recording, ignore all the key releases. */
|
||||||
if (!record->event.pressed && *macro_pointer == macro_buffer) {
|
if (!record->event.pressed && *macro_pointer == macro_buffer) {
|
||||||
|
dprintln("dynamic macro: ignoring a leading key-up event");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The other end of the other macro is the last buffer element it
|
||||||
|
* is safe to use before overwriting the other macro.
|
||||||
|
*/
|
||||||
if (*macro_pointer - direction != macro2_end) {
|
if (*macro_pointer - direction != macro2_end) {
|
||||||
**macro_pointer = *record;
|
**macro_pointer = *record;
|
||||||
*macro_pointer += direction;
|
*macro_pointer += direction;
|
||||||
} else {
|
} else {
|
||||||
dynamic_macro_led_blink();
|
dynamic_macro_led_blink();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dprintf(
|
||||||
|
"dynamic macro: slot %d length: %d/%d\n",
|
||||||
|
DYNAMIC_MACRO_CURRENT_SLOT(),
|
||||||
|
DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, *macro_pointer),
|
||||||
|
DYNAMIC_MACRO_CURRENT_CAPACITY(macro_buffer, macro2_end));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* End recording of the dynamic macro. Essentially just update the
|
* End recording of the dynamic macro. Essentially just update the
|
||||||
* pointer to the end of the macro.
|
* pointer to the end of the macro.
|
||||||
*/
|
*/
|
||||||
void dynamic_macro_record_end(keyrecord_t *macro_pointer, keyrecord_t **macro_end)
|
void dynamic_macro_record_end(
|
||||||
|
keyrecord_t *macro_buffer,
|
||||||
|
keyrecord_t *macro_pointer,
|
||||||
|
int8_t direction,
|
||||||
|
keyrecord_t **macro_end)
|
||||||
{
|
{
|
||||||
dynamic_macro_led_blink();
|
dynamic_macro_led_blink();
|
||||||
|
|
||||||
|
/* Do not save the keys being held when stopping the recording,
|
||||||
|
* i.e. the keys used to access the layer DYN_REC_STOP is on.
|
||||||
|
*/
|
||||||
|
while (macro_pointer != macro_buffer &&
|
||||||
|
(macro_pointer - direction)->event.pressed) {
|
||||||
|
dprintln("dynamic macro: trimming a trailing key-down event");
|
||||||
|
macro_pointer -= direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
dprintf(
|
||||||
|
"dynamic macro: slot %d saved, length: %d\n",
|
||||||
|
DYNAMIC_MACRO_CURRENT_SLOT(),
|
||||||
|
DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, macro_pointer));
|
||||||
|
|
||||||
*macro_end = macro_pointer;
|
*macro_end = macro_pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +201,7 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
|
|||||||
* ¯o_buffer macro_end
|
* ¯o_buffer macro_end
|
||||||
* v v
|
* v v
|
||||||
* +------------------------------------------------------------+
|
* +------------------------------------------------------------+
|
||||||
* |>>>>>> MACRO1 >>>>>>| |<<<<<<<<<<<<< MACRO2 <<<<<<<<<<<<<|
|
* |>>>>>> MACRO1 >>>>>> <<<<<<<<<<<<< MACRO2 <<<<<<<<<<<<<|
|
||||||
* +------------------------------------------------------------+
|
* +------------------------------------------------------------+
|
||||||
* ^ ^
|
* ^ ^
|
||||||
* r_macro_end r_macro_buffer
|
* r_macro_end r_macro_buffer
|
||||||
@@ -222,10 +265,10 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
|
|||||||
* starts. */
|
* starts. */
|
||||||
switch (macro_id) {
|
switch (macro_id) {
|
||||||
case 1:
|
case 1:
|
||||||
dynamic_macro_record_end(macro_pointer, ¯o_end);
|
dynamic_macro_record_end(macro_buffer, macro_pointer, +1, ¯o_end);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
dynamic_macro_record_end(macro_pointer, &r_macro_end);
|
dynamic_macro_record_end(r_macro_buffer, macro_pointer, -1, &r_macro_end);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
macro_id = 0;
|
macro_id = 0;
|
||||||
@@ -249,4 +292,8 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef DYNAMIC_MACRO_CURRENT_SLOT
|
||||||
|
#undef DYNAMIC_MACRO_CURRENT_LENGTH
|
||||||
|
#undef DYNAMIC_MACRO_CURRENT_CAPACITY
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user