aboutsummaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
authorjola5 <jola5@users.noreply.github.com>2018-02-02 07:21:41 +0100
committerJack Humbert <jack.humb@gmail.com>2018-02-02 01:21:41 -0500
commit2cf6bfe9ac10663181aa3ba32087da956bb7ec1e (patch)
tree24d8ee8993770542be82e55066cc4813cbbf67a8 /users
parent2917e55bd4c8e25d79981ec997037b89478d402c (diff)
downloadqmk_firmware-2cf6bfe9ac10663181aa3ba32087da956bb7ec1e.tar.gz
qmk_firmware-2cf6bfe9ac10663181aa3ba32087da956bb7ec1e.zip
Not quite neo (#2318)
* planck with a not-quite-neo layout for a de-DE OS/SW keymap * ergodox infinity with a not-quite-neo layout for a de-DE OS/SW keymap * add documentation
Diffstat (limited to 'users')
-rw-r--r--users/not-quite-neo/nqn-basic-layout.h124
-rw-r--r--users/not-quite-neo/nqn-common.h14
-rw-r--r--users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h73
-rw-r--r--users/not-quite-neo/readme.md24
4 files changed, 235 insertions, 0 deletions
diff --git a/users/not-quite-neo/nqn-basic-layout.h b/users/not-quite-neo/nqn-basic-layout.h
new file mode 100644
index 000000000..d1b9a1c47
--- /dev/null
+++ b/users/not-quite-neo/nqn-basic-layout.h
@@ -0,0 +1,124 @@
1#ifndef NQN_BASIC_LAYOUT_H
2#define NQN_BASIC_LAYOUT_H
3
4/*
5This is the basic NQN layout
6
7It consists of a block of 5x3, 5x4, 6x3, or 6x4 for each hand. This allows us
8to use these blocks for a variety of keyboards like the planck, preonic and
9even splits like the ergodox.
10
11You can see that we use some quirky preprocessor defines to achive what we
12desire. In the future I would like to see qmk taking a more generic approach
13like the KLL.
14
15The naming convention for these blocks is
16 L<LAYER>_<SIDE>_<ROW>
17
18 The LAYER is a number following the neo2 manner starting at 1 for the base
19 layer, 2 is shift, 3 is for special chars etc.
20
21 SIDE is, well either the left or right side/half of a keyboard.
22
23 The ROW is starting from the top, numbering beginning at 1.
24*/
25
26
27#include "nqn-common.h"
28
29
30/*
31 *
32 * LEFT RIGHT
33 * ,----------------------------------. ,----------------------------------.
34 * 01 | x | v | l | c | w | | k | h | g | f | q |
35 * |------+------+------+------+------| |------+------+------+------+------|
36 * 02 | u | i | a | e | o | | s | n | r | t | d |
37 * |------+------+------+------+------| |------+------+------+------+------|
38 * 03 | y | < | # | p | z | | b | m | , | . | j |
39 * `----------------------------------' `----------------------------------'
40 */
41#define L01_LEFT_01 KC_X, KC_V, KC_L, KC_C, KC_W
42#define L01_LEFT_02 KC_U, KC_I, KC_A, KC_E, KC_O
43#define L01_LEFT_03 N_Y, N_LT, N_HS, KC_P, N_Z
44#define L01_RIGHT_02 KC_S, KC_N, KC_R, KC_T, KC_D
45#define L01_RIGHT_01 KC_K, KC_H, KC_G, KC_F, KC_Q
46#define L01_RIGHT_03 KC_B, KC_M, KC_COMM, KC_DOT, KC_J
47
48
49/*
50 *
51 * LEFT RIGHT
52 * ,----------------------------------. ,----------------------------------.
53 * 01 | … | _ | [ | ] | ^ | | ! | < | > | = | & |
54 * |------+------+------+------+------| |------+------+------+------+------|
55 * 02 | \ | / | { | } | * | | ? | ( | ) | - | @ |
56 * |------+------+------+------+------| |------+------+------+------+------|
57 * 03 | # | $ | | | ~ | ` | | + | % | " | ' | ° |
58 * `----------------------------------' `----------------------------------'
59 */
60#define L03_LEFT_01 N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC
61#define L03_LEFT_02 N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR
62#define L03_LEFT_03 N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE
63#define L03_RIGHT_01 N_EXKL, N_LT, N_GT, N_EQ, N_AMP
64#define L03_RIGHT_02 N_QUES, N_LPARN, N_RPARN, N_MINS, N_AT
65#define L03_RIGHT_03 N_PLUS, N_PERC, N_QUOT, N_SING, N_DEGRE
66
67
68/*
69 *
70 * LEFT RIGHT
71 * ,----------------------------------. ,----------------------------------.
72 * 01 | PAGEU| BACKS| UP | DELET| PAGED| | / | 7 | 8 | 9 | - |
73 * |------+------+------+------+------| |------+------+------+------+------|
74 * 02 | HOME | LEFT | DOWN | RIGHT| END | | * | 4 | 5 | 6 | + |
75 * |------+------+------+------+------| |------+------+------+------+------|
76 * 03 | ESC | TAB | INSRT| ENTER| UNDO | | ENTER| 1 | 2 | 3 | , |
77 * `----------------------------------' `----------------------------------'
78 */
79#define L04_LEFT_01 KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN
80#define L04_LEFT_02 KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END
81#define L04_LEFT_03 KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO
82#define L04_RIGHT_01 KC_KP_SLASH, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS
83#define L04_RIGHT_02 KC_KP_ASTERISK, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS
84#define L04_RIGHT_03 KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT
85
86
87/*
88 * LEFT RIGHT
89 * ,----------------------------------. ,----------------------------------.
90 * 01 | | | | | | | | | | | |
91 * |------+------+------+------+------| |------+------+------+------+------|
92 * 02 | ü | | ä | € | ö | | ß | | | | |
93 * |------+------+------+------+------| |------+------+------+------+------|
94 * 03 | | | | | | | | µ | | | |
95 * `----------------------------------' `----------------------------------'
96 */
97#define L05_LEFT_01 _______, _______, _______, _______, _______
98#define L05_LEFT_02 N_UE, _______, N_AE, N_EURO, N_OE
99#define L05_LEFT_03 _______, _______, _______, _______, _______
100#define L05_RIGHT_01 _______, _______, _______, _______, _______
101#define L05_RIGHT_02 N_SS, _______, _______, _______, _______
102#define L05_RIGHT_03 _______, N_MU, _______, _______, _______
103
104
105/*
106 *
107 * LEFT RIGHT
108 * ,----------------------------------. ,----------------------------------.
109 * 01 | F1 | F2 | F3 | F4 | | | MAIL | MUSIC| FILES| CALC | PASTE|
110 * |------+------+------+------+------| |------+------+------+------+------|
111 * 02 | F5 | F6 | F7 | F8 | | | PREV |PLAY/P| NEXT | STOP | COPY |
112 * |------+------+------+------+------| |------+------+------+------+------|
113 * 03 | F9 | F10 | F11 | F12 | | | PRINT| SCROL| PAUSE| NUMLK| CUT |
114 * `----------------------------------' `----------------------------------'
115 */
116#define L06_LEFT_01 KC_F1, KC_F2, KC_F3, KC_F4, _______
117#define L06_LEFT_02 KC_F5, KC_F6, KC_F7, KC_F8, _______
118#define L06_LEFT_03 KC_F9, KC_F10, KC_F11, KC_F12, _______
119#define L06_RIGHT_01 KC_MAIL, KC_MSEL, KC_MY_COMPUTER, KC_CALCULATOR, N_PASTE
120#define L06_RIGHT_02 KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, N_COPY
121#define L06_RIGHT_03 KC_PSCR, KC_SLCK, KC_PAUS, KC_NLCK, N_CUT
122
123
124#endif
diff --git a/users/not-quite-neo/nqn-common.h b/users/not-quite-neo/nqn-common.h
new file mode 100644
index 000000000..a04dc7a18
--- /dev/null
+++ b/users/not-quite-neo/nqn-common.h
@@ -0,0 +1,14 @@
1#ifndef NQN_COMMON_H
2#define NQN_COMMON_H
3
4
5/*
6This file holds some commen NQN definitions
7*/
8
9
10#define _______ KC_TRNS
11#define XXXXXXX KC_NO
12
13
14#endif
diff --git a/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h b/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h
new file mode 100644
index 000000000..8276cf207
--- /dev/null
+++ b/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h
@@ -0,0 +1,73 @@
1#ifndef NQN_KEYS_ON_QUERTZ_DE_LATIN1_H
2#define NQN_KEYS_ON_QUERTZ_DE_LATIN1_H
3
4
5/*
6This file defines the desierd NQN keys if you use a software (operating sysetm)
7configured for a QUERTZ layout (de-latin1).
8
9These chars can be created by using ALTGR on linux and a few of them on windows
10with a German de-latin1 layout (depending on desktop environment and/or
11application).
12 ′¹²³¼½¬{[]}\¸
13 @ł€¶ŧ←↓→øþ¨~
14 æſðđŋħ̣ĸł˝^’
15 |»«¢„“”µ·…–
16
17Additionally, there are some common chars that we dit not yet define:
18 §
19*/
20
21
22#include "nqn-common.h"
23
24
25// NQN key definitions in no particular order
26#define N_LT KC_NONUS_BSLASH
27#define N_HS KC_NONUS_HASH
28#define N_DOTS RALT(KC_DOT) // …
29#define N_USC LSFT(KC_SLASH) // _
30#define N_LSQBR RALT(KC_8) // [
31#define N_RSQBR RALT(KC_9) // ]
32#define N_CIRC KC_GRAVE // ^
33#define N_EXKL LSFT(KC_1) // !
34#define N_GT LSFT(KC_NONUS_BSLASH) // >
35#define N_EQ LSFT(KC_0) // =
36#define N_AMP LSFT(KC_6) // &
37#define N_BSLS RALT(KC_MINS) // \ backslash
38#define N_SLSH LSFT(KC_7) // /
39#define N_LCUBR RALT(KC_7) // {
40#define N_RCUBR RALT(KC_0) // }
41#define N_ASTR LSFT(KC_RBRC) // *
42#define N_QUES LSFT(KC_MINS) // ?
43#define N_LPARN LSFT(KC_8) // (
44#define N_RPARN LSFT(KC_9) // )
45#define N_MINS KC_SLASH // -
46#define N_COLN LSFT(KC_DOT) // :
47#define N_HASH KC_BSLASH // #
48#define N_DLR LSFT(KC_4) // $
49#define N_PIPE RALT(KC_NONUS_BSLASH) // |
50#define N_TILD RALT(KC_RBRC) // ~
51#define N_GRAVE LSFT(KC_EQUAL) // `
52#define N_PLUS KC_RBRC // +
53#define N_PERC LSFT(KC_5) // %
54#define N_QUOT LSFT(KC_2) // "
55#define N_SING LSFT(KC_BSLASH) // '
56#define N_SEMI LSFT(KC_COMM) // ;
57#define N_EURO RALT(KC_E) // €
58#define N_AT RALT(KC_Q) // @
59#define N_Z KC_Y
60#define N_Y KC_Z
61#define N_AE KC_QUOTE // ä
62#define N_OE KC_SCOLON // ö
63#define N_UE KC_LBRACKET // ü
64#define N_MU RALT(KC_M) // µ
65#define N_SS KC_MINS // ß
66#define N_DEGRE LSFT(KC_GRAVE) // °
67#define N_PASTE LCTL(KC_V) // CTRL+V
68#define N_COPY LCTL(KC_C) // CTRL+C
69#define N_CUT LCTL(KC_X) // CTRL+X
70#define N_UNDO LCTL(N_Z) // CTRL+Z
71
72
73#endif
diff --git a/users/not-quite-neo/readme.md b/users/not-quite-neo/readme.md
new file mode 100644
index 000000000..85a29ecc6
--- /dev/null
+++ b/users/not-quite-neo/readme.md
@@ -0,0 +1,24 @@
1# not-quite-neo
2
3This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support both a ergodox (infinity) and a planck keyboard. Some sacrifices needed to be made, hence this layout is not-quite-neo.
4
5## Use case
6My use case is simple:
7
8* I want to use neo2 (or a keymap as close as possible) on any computer I can plug my keyboards in. Because installing the neo2 SW driver is often not a acceptable solution.
9* Since most computers I work on (colleagues, family, etc.) use a de-DE keymap, I can not use the official neo2 implementation, because it relies on a us layout and I often times do not even posses the administration rights to change that.
10* neo2 makes use of most of the keys of a standard 104 key keyboard, especially for supporting the planck I needed to deviate from the original neo2 layout in order to fit everything I wanted.
11
12Therefore, I put all reusable code in the users/not-quite-neo directory and created a custom not-quite-neo keymap for the planck and the ergodox infinity keyboard respectively.
13
14## Pitfalls
15Mind, since neo2 is a SW driver supported layout it offers a lot of features that are hard to support in hardware (especially the fancy utf stuff with math symbols and greek letters etc.).
16
17Right now this implementation only incompletely supports neo2 layers 1 to 4.
18
19The biggest difference is probably the support for the German Umlauts ä, ö, ü and the ß. Since we rely on a smaller number of keys some glyphs needed to be created otherwise. See the implementation in [nqn-basic-layout.h](nqn-basic-layout.h) for details.
20
21## Keyboards and keymaps
22
23You can find the *not-quite-neo* keymap for the ergodox infinity under [qmk_firmware/keyboards/ergodox_infinity/keymaps/not-quite-neo/](../../keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md). Respectively the keymap for the planck resides in [qmk_firmware/keyboards/planck/keymaps/not-quite-neo/](../../keyboards/planck/keymaps/not-quite-neo/readme.md)
24 . \ No newline at end of file