aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Schmitt <male.schmitt@gmail.com>2015-12-19 01:22:12 +0100
committerMatthias Schmitt <male.schmitt@gmail.com>2015-12-19 01:22:12 +0100
commit3dbcad51d1217b32c3c17917c2646fa7a9a9165b (patch)
tree313e23d241ee1fdf966813ad9ab9f87cb44be7b9
parent7f22b67f8ad61f12516ca75acd0d2277b94aa2a5 (diff)
downloadqmk_firmware-3dbcad51d1217b32c3c17917c2646fa7a9a9165b.tar.gz
qmk_firmware-3dbcad51d1217b32c3c17917c2646fa7a9a9165b.zip
Add german keymap and german ergodox layout
-rw-r--r--keyboard/ergodox_ez/keymaps/keymap_german.c185
-rw-r--r--quantum/keymap_extras/keymap_german.h60
2 files changed, 245 insertions, 0 deletions
diff --git a/keyboard/ergodox_ez/keymaps/keymap_german.c b/keyboard/ergodox_ez/keymaps/keymap_german.c
new file mode 100644
index 000000000..d91f1e937
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/keymap_german.c
@@ -0,0 +1,185 @@
1#include "ergodox_ez.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "keymap_extras/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
11const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12/* Keymap 0: Basic layer
13 *
14 * ,--------------------------------------------------. ,--------------------------------------------------.
15 * | ^ | 1 | 2 | 3 | 4 | 5 | Play | | Next | 6 | 7 | 8 | 9 | 0 | ß |
16 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
17 * | Del | Q | W | E | R | T | L1 | | L2 | Z | U | I | O | P | Ü |
18 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
19 * | Caps | A | S | D | F | G |------| |------| H | J | K | L | Ö | Ä/L2 |
20 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
21 * | LShift | Y | X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift |
22 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
23 * | </L1 |#/Ctrl| ´ | - | + | | Right| Down | Up | Left | ~L1 |
24 * `----------------------------------' `----------------------------------'
25 * ,-------------. ,-------------.
26 * | App | LGui | | Alt |Ctrl/Esc|
27 * ,------+------+------| |------+--------+------.
28 * | | | Home | | PgUp | | |
29 * | Space|Backsp|------| |------| Tab |Enter |
30 * | |ace | End | | PgDn | | |
31 * `--------------------' `----------------------'
32 */
33// If it accepts an argument (i.e, is a function), it doesn't need KC_.
34// Otherwise, it needs KC_*
35[BASE] = KEYMAP( // layer 0 : default
36 // left hand
37 KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MPLY,
38 KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1),
39 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
40 KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
41 LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS,
42 ALT_T(KC_APP), KC_LGUI,
43 KC_HOME,
44 KC_SPC,KC_BSPC,KC_END,
45 // right hand
46 KC_MNXT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
47 TG(2), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE,
48 KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE),
49 MEH_T(KC_NO),KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(DE_MINS), KC_RSFT,
50 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_FN1,
51 KC_LALT,CTL_T(KC_ESC),
52 KC_PGUP,
53 KC_PGDN,KC_TAB, KC_ENT
54 ),
55/* Keymap 1: Symbol Layer
56 *
57 * ,--------------------------------------------------. ,--------------------------------------------------.
58 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
59 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
60 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
61 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
62 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
63 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
64 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
65 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
66 * | | | | | | | | . | 0 | = | |
67 * `----------------------------------' `----------------------------------'
68 * ,-------------. ,-------------.
69 * | | | | | |
70 * ,------|------|------| |------+------+------.
71 * | | | | | | | |
72 * | | |------| |------| | |
73 * | | | | | | | |
74 * `--------------------' `--------------------'
75 */
76// SYMBOLS
77[SYMB] = KEYMAP(
78 // left hand
79 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
80 KC_TRNS,DE_EXLM,DE_AT, DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
81 KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
82 KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
83 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
84 KC_TRNS,KC_TRNS,
85 KC_TRNS,
86 KC_TRNS,KC_TRNS,KC_TRNS,
87 // right hand
88 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
89 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, DE_ASTR, KC_F12,
90 KC_DOWN, KC_4, KC_5, KC_6, DE_PLUS, KC_TRNS,
91 KC_TRNS, DE_AMPR, KC_1, KC_2, KC_3, DE_BSLS, KC_TRNS,
92 KC_TRNS,KC_DOT, KC_0, DE_EQL, KC_TRNS,
93 KC_TRNS, KC_TRNS,
94 KC_TRNS,
95 KC_TRNS, KC_TRNS, KC_TRNS
96),
97/* Keymap 2: Media and mouse keys
98 *
99 * ,--------------------------------------------------. ,--------------------------------------------------.
100 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
101 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
102 * | | | Lclk | MsUp | Rclk | | | | | |VolDwn| Mute |VolUp | | F12 |
103 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
104 * | | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------| |------| | Prev | Stop | Play | Next | |
105 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
106 * | |WhRght|WhDown| WhUp |WhLeft|WhClk | | | |BwSrch|BwBack|BwHome|BwRefr|BwFwd | |
107 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
108 * | | |MsAcl0|MsAcl1|MsAcl2| | | | | | |
109 * `----------------------------------' `----------------------------------'
110 * ,-------------. ,-------------.
111 * | | | | | |
112 * ,------|------|------| |------+------+------.
113 * | | | | | |Brwser|Brwser|
114 * | Lclk | Rclk |------| |------|Back |Forwd |
115 * | | | | | | | |
116 * `--------------------' `--------------------'
117 */
118// MEDIA AND MOUSE
119[MDIA] = KEYMAP(
120 KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS,
121 KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
122 KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
123 KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
124 KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
125 KC_TRNS, KC_TRNS,
126 KC_TRNS,
127 KC_BTN1, KC_BTN2, KC_TRNS,
128 // right hand
129 KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11,
130 KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
131 KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
132 KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
133 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
134 KC_TRNS, KC_TRNS,
135 KC_TRNS,
136 KC_TRNS, KC_WBAK, KC_WFWD
137),
138};
139
140const uint16_t PROGMEM fn_actions[] = {
141 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
142};
143
144const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
145{
146 // MACRODOWN only works in this function
147 switch(id) {
148 case 0:
149 if (record->event.pressed) {
150 register_code(KC_RSFT);
151 } else {
152 unregister_code(KC_RSFT);
153 }
154 break;
155 }
156 return MACRO_NONE;
157};
158
159// Runs just one time when the keyboard initializes.
160void * matrix_init_user(void) {
161
162};
163
164// Runs constantly in the background, in a loop.
165void * matrix_scan_user(void) {
166
167 uint8_t layer = biton32(layer_state);
168
169 ergodox_board_led_off();
170 ergodox_right_led_1_off();
171 ergodox_right_led_2_off();
172 ergodox_right_led_3_off();
173 switch (layer) {
174 case SYMB:
175 ergodox_right_led_1_on();
176 break;
177 case MDIA:
178 ergodox_right_led_2_on();
179 break;
180 default:
181 ergodox_board_led_off();
182 break;
183 }
184
185};
diff --git a/quantum/keymap_extras/keymap_german.h b/quantum/keymap_extras/keymap_german.h
new file mode 100644
index 000000000..bea82f022
--- /dev/null
+++ b/quantum/keymap_extras/keymap_german.h
@@ -0,0 +1,60 @@
1#ifndef KEYMAP_GERMAN
2#define KEYMAP_GERMAN
3
4#include "keymap_common.h"
5
6// Alt gr
7#define ALGR(kc) kc | 0x1400
8#define DE_ALGR KC_RALT
9
10// normal characters
11#define DE_Z KC_Y
12#define DE_Y KC_Z
13
14#define DE_SS KC_MINS
15#define DE_AE KC_QUOT
16#define DE_UE KC_LBRC
17#define DE_OE KC_SCLN
18
19#define DE_CIRC KC_GRAVE // accent circumflex ^ and ring °
20#define DE_ACUT KC_EQL // accent acute ´ and grave `
21#define DE_PLUS KC_RBRC // + and * and ~
22#define DE_HASH KC_BSLS // # and '
23#define DE_LESS KC_NUBS // < and > and |
24#define DE_MINS KC_SLSH // - and _
25
26// shifted characters
27#define DE_RING LSFT(DE_CIRC) // °
28#define DE_EXLM LSFT(KC_1) // !
29#define DE_DQOT LSFT(KC_2) // "
30#define DE_PARA LSFT(KC_3) // §
31#define DE_DLR LSFT(KC_4) // $
32#define DE_PERC LSFT(KC_5) // %
33#define DE_AMPR LSFT(KC_6) // &
34#define DE_SLSH LSFT(KC_7) // /
35#define DE_LPRN LSFT(KC_8) // (
36#define DE_RPRN LSFT(KC_9) // )
37#define DE_EQL LSFT(KC_0) // =
38#define DE_QST LSFT(DE_SS) // ?
39#define DE_GRV LSFT(DE_ACUT) // `
40#define DE_ASTR LSFT(DE_PLUS) // *
41#define DE_QUOT LSFT(DE_HASH) // '
42#define DE_MORE LSFT(DE_LESS) // >
43#define DE_COLN LSFT(KC_DOT) // :
44#define DE_SCLN LSFT(KC_COMM) // ;
45#define DE_UNDS LSFT(DE_MINS) // _
46
47// Alt Gr-ed characters
48#define DE_SQ2 ALGR(KC_2) // ²
49#define DE_SQ3 ALGR(KC_3) // ³
50#define DE_LCBR ALGR(KC_7) // {
51#define DE_LBRC ALGR(KC_8) // [
52#define DE_RBRC ALGR(KC_9) // ]
53#define DE_RCBR ALGR(KC_0) // }
54#define DE_BSLS ALGR(DE_SS) // backslash
55#define DE_AT ALGR(KC_Q) // @
56#define DE_EURO ALGR(KC_E) // €
57#define DE_TILD ALGR(DE_PLUS) // ~
58#define DE_PIPE ALGR(DE_LESS) // |
59
60#endif