[Keymap] Added the K.O,Y layout for the xd75 and atreus62 boards (#9079)

* added koy layout to qmk on xd75 board

* added koy keymap for the atreus62 board

* reduced time for autoshift

* added documentation

* changed layer 7 to a tap toggle and adjusted mouse speed a little

* Update keyboards/xd75/keymaps/ScheiklP/koy_keys_on_quertz_de_latin1.h

* Update keyboards/xd75/keymaps/ScheiklP/koy_keys_on_quertz_de_latin1.h

* Update keyboards/xd75/keymaps/ScheiklP/koy_common.h

* Update keyboards/atreus62/keymaps/ScheiklP/koy_common.h

* Update keyboards/atreus62/keymaps/ScheiklP/koy_keys_on_quertz_de_latin1.h

* Update keyboards/atreus62/keymaps/ScheiklP/koy_keys_on_quertz_de_latin1.h

* changed keymap to lowercase name to conform with qmk guidelines

* Update keyboards/xd75/keymaps/scheiklp/rules.mk

remove unnecessary rules

* Update keyboards/atreus62/keymaps/scheiklp/rules.mk

remove unnecessary rules

* moved common files for koy layouts to the users folder and removed empty file

* Update keyboards/atreus62/keymaps/scheiklp/keymap.c

* Update keyboards/xd75/keymaps/scheiklp/readme.md

* Update keyboards/xd75/keymaps/scheiklp/readme.md

* Update keyboards/atreus62/keymaps/scheiklp/readme.md

* Update keyboards/atreus62/keymaps/scheiklp/readme.md
This commit is contained in:
Paul Scheikl 2020-05-16 07:37:58 +02:00 committed by GitHub
parent 2c9ab8a606
commit c6cf1ae4e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 342 additions and 0 deletions

View File

@ -0,0 +1,51 @@
/* Copyright 2017 Benjamin Kesselring
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
// place overrides here
#define AUTO_SHIFT_TIMEOUT 125
#define NO_AUTO_SHIFT_SPECIAL
#define NO_AUTO_SHIFT_NUMERIC
// require two taps for a TT layer switch (default 5)
#define TAPPING_TOGGLE 2
// Mouse control
// constant mode (velocity)
#define MK_3_SPEED
// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
// Cursor offset per movement (unmodified)
#define MK_C_OFFSET_UNMOD 16
// Time between cursor movements (unmodified)
#define MK_C_INTERVAL_UNMOD 10
/* #define MK_C_INTERVAL_UNMOD 16 */
// Cursor offset per movement (KC_ACL0)
#define MK_C_OFFSET_0 1
// Time between cursor movements (KC_ACL0)
#define MK_C_INTERVAL_0 32
// Cursor offset per movement (KC_ACL1)
#define MK_C_OFFSET_1 4
// Time between cursor movements (KC_ACL1)
#define MK_C_INTERVAL_1 16
// Cursor offset per movement (KC_ACL2)
#define MK_C_OFFSET_2 20
/* #define MK_C_OFFSET_2 32 */
// Time between cursor movements (KC_ACL2)
#define MK_C_INTERVAL_2 16

View File

@ -0,0 +1,43 @@
#include QMK_KEYBOARD_H
#include "koy_keys_on_quertz_de_latin1.h"
// Layer shorthand
#define _1 0
#define _3 1
#define _4 2
#define _7 3
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_1] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, N_Y, KC_V, KC_G, KC_C, KC_L, N_SS, N_Z,
MO(_3), KC_H, KC_A, KC_E, KC_I, KC_U, KC_D, KC_T, KC_R, KC_N, KC_S, KC_F,
KC_LSFT, KC_X, KC_Q, N_AE, N_UE, N_OE, KC_B, KC_P, KC_W, KC_M, KC_J, KC_RSFT,
KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_RCTL, MO(_3), MO(_4), KC_TRNS, KC_TRNS, KC_CAPS, TT(_7)
),
[_3] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, KC_TRNS,
KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT,
KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT,
KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_4] = LAYOUT(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS,
KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS,
KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT,
KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_0, KC_ENTER, KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_7] = LAYOUT(
KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_LCTL, KC_MS_ACCEL2, KC_TRNS, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1,13 @@
# KOY Layout for the atreus62 pcb board
Compile the layout
```bash
qmk compile -kb atreus62 -km scheiklp
```
disable this service that interfers with the pro micro
```
sudo systemctl stop ModemManager.service
```
and flash it to the board
```bash
qmk flash -kb atreus62 -km scheiklp
```

View File

@ -0,0 +1,4 @@
AUTO_SHIFT_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
NKRO_ENABLE = yes

View File

@ -0,0 +1,41 @@
/* Copyright 2017 Benjamin Kesselring
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
// place overrides here
#define AUTO_SHIFT_TIMEOUT 175
#define NO_AUTO_SHIFT_SPECIAL
// Mouse control
// constant mode (velocity)
#define MK_3_SPEED
// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
// Cursor offset per movement (unmodified)
#define MK_C_OFFSET_UNMOD 16
// Time between cursor movements (unmodified)
#define MK_C_INTERVAL_UNMOD 16
// Cursor offset per movement (KC_ACL0)
#define MK_C_OFFSET_0 1
// Time between cursor movements (KC_ACL0)
#define MK_C_INTERVAL_0 32
// Cursor offset per movement (KC_ACL1)
#define MK_C_OFFSET_1 4
// Time between cursor movements (KC_ACL1)
#define MK_C_INTERVAL_1 16
// Cursor offset per movement (KC_ACL2)
#define MK_C_OFFSET_2 32
// Time between cursor movements (KC_ACL2)
#define MK_C_INTERVAL_2 16

View File

@ -0,0 +1,112 @@
/* Copyright 2017 Wunder
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "koy_keys_on_quertz_de_latin1.h"
// Layer shorthand
#define _1 0
#define _3 1
#define _4 2
#define _7 3
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 1
* .---------------------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | Record 1 | Play 1 | 6 | 7 | 8 | 9 | 0 | DEL | BACKSP |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | TAB | K | . | O | , | Y | Record 2 | Play 2P | V | G | C | L | | Z | |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | Layer 3 | H | A | E | I | U | Undo | Stop Rec. | D | T | R | N | S | F | Layer 3 |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LSHIFT | X | Q | Ä | Ü | Ö | Copy | Cut | B | P | W | M | J | RSHIFT | RSHIFT |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LCTRL | Layer 4 | | LGUI | LALT | SPACE | Paste | SPACE | SPACE | Layer 4 | RCTRL | | | KEYLOCK | Layer 7 |
* '---------------------------------------------------------------------------------------------------------------------------------------------------'
*/
[_1] = LAYOUT_ortho_5x15( /* KOY */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, DM_REC1, DM_PLY1, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC,
KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, N_Y, DM_REC2, DM_PLY2, KC_V, KC_G, KC_C, KC_L, N_SS, N_Z, KC_TRNS,
MO(_3), KC_H, KC_A, KC_E, KC_I, KC_U, N_UNDO, DM_RSTP, KC_D, KC_T, KC_R, KC_N, KC_S, KC_F, MO(_3),
KC_LSFT, KC_X, KC_Q, N_AE, N_UE, N_OE, N_COPY, N_CUT, KC_B, KC_P, KC_W, KC_M, KC_J, KC_RSFT, KC_RSFT,
KC_LCTL, MO(_4), KC_TRNS, KC_LGUI, KC_LALT, KC_SPC, N_PASTE, KC_SPC, KC_SPC, MO(_4), KC_RCTL, KC_TRNS, KC_TRNS,KC_LOCK, MO(_7)
),
/* Layer 3
* .---------------------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | | | F6 | F7 | F8 | F9 | F0 | DEL | BACKSP |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | TAB | | _ | [ | ] | ^ | | | ! | < | > | = | & | | |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | Layer 5 | \ | / | { | } | * | | | ? | ( | ) | - | : | @ | Layer 5 |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LSHIFT | # | $ | | | ~ | ` | | | + | % | " | ' | ; | RSHIFT | RSHIFT |
* |---------+---------+--------+--------+--------+--------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LCTRL | | | | LALT | | | | | | | | | | |
* '---------------------------------------------------------------------------------------------------------------------------------------------------'
*/
[_3] = LAYOUT_ortho_5x15( /* Layer 3 */
KC_ESC, KC_F1, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, KC_TRNS, KC_TRNS, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, KC_TRNS, KC_TRNS,
KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, KC_TRNS, KC_TRNS, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT, KC_TRNS,
KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, KC_TRNS, KC_TRNS, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT, KC_RSFT,
KC_LCTL, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* Layer 4
* .------------------------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | | | | | | | | | | | | | | |
* |---------+---------+--------+--------+--------+-----------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | TAB | Page up | BACKSP | Up | DEL | Page down | | | / | 7 | 8 | 9 | | | |
* |---------+---------+--------+--------+--------+-----------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | | Home | Left | Down | Right | End | | | * | 4 | 5 | 6 | . | | |
* |---------+---------+--------+--------+--------+-----------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LSHIFT | ESC | TAB | Insert | Enter | Undo | | | Enter | 1 | 2 | 3 | ; | RSHIFT | RSHIFT |
* |---------+---------+--------+--------+--------+-----------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LCTRL | | | LALT | | 0 | | 0 | 0 | | | | | | |
* '------------------------------------------------------------------------------------------------------------------------------------------------------'
*/
[_4] = LAYOUT_ortho_5x15( /* Layer 4 */
KC_ESC, 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_TRNS,
KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_TRNS, KC_TRNS, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_TRNS, KC_TRNS, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS, KC_TRNS,
KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_TRNS, KC_TRNS, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT, KC_RSFT,
KC_LCTL, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_0, KC_TRNS, KC_0, KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* Layer 7
* .--------------------------------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | | | Button 3 | | | | | | | | | | | RESET |
* |---------+----------+----------+----------+----------+------------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | TAB | Wheel up | Button 2 | Up | Button 1 | Wheel down | | | | | | | | | |
* |---------+----------+----------+----------+----------+------------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | | Veloc 0 | Left | Down | Right | | | | | | | | | | |
* |---------+----------+----------+----------+----------+------------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LSHIFT | Veloc 1 | | | | | | | | | | | | | |
* |---------+----------+----------+----------+----------+------------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | LCTRL | Veloc 2 | | LALT | | | | | | | | | | | |
* '--------------------------------------------------------------------------------------------------------------------------------------------------------------'
*/
[_7] = LAYOUT_ortho_5x15( /* Layer 7 */
KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_LSFT, KC_MS_ACCEL1, 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_LCTL, KC_MS_ACCEL2, KC_TRNS, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1,9 @@
# KOY Layout for the xd75 pcb board
Compile the layout
```bash
qmk compile -kb xd75 -km scheiklp
```
and flash it to the board
```bash
qmk flash -kb xd75 -km scheiklp
```

View File

@ -0,0 +1,6 @@
BOOTMAGIC_ENABLE = no
COMMAND_ENABLE = no
RGBLIGHT_ENABLE = no
DYNAMIC_MACRO_ENABLE = yes
AUTO_SHIFT_ENABLE = yes
KEY_LOCK_ENABLE = yes

View File

@ -0,0 +1,63 @@
#pragma once
/*
This file defines the desierd KOY keys if you use a software (operating sysetm)
configured for a QUERTZ layout (de-latin1).
These chars can be created by using ALTGR on linux and a few of them on windows
with a German de-latin1 layout (depending on desktop environment and/or
application).
¹²³¼½¬{[]}\¸
@łŧøþ¨~
æſðđŋħ̣ĸł˝^
|»«¢µ·
Additionally, there are some common chars that we dit not yet define:
§
*/
// NQN key definitions in no particular order
#define N_LT KC_NONUS_BSLASH
#define N_HS KC_NONUS_HASH
#define N_DOTS RALT(KC_DOT) // …
#define N_USC LSFT(KC_SLASH) // _
#define N_LSQBR RALT(KC_8) // [
#define N_RSQBR RALT(KC_9) // ]
#define N_CIRC KC_GRAVE // ^
#define N_EXKL LSFT(KC_1) // !
#define N_GT LSFT(KC_NONUS_BSLASH) // >
#define N_EQ LSFT(KC_0) // =
#define N_AMP LSFT(KC_6) // &
#define N_BSLS RALT(KC_MINS) // \ backslash
#define N_SLSH LSFT(KC_7) // /
#define N_LCUBR RALT(KC_7) // {
#define N_RCUBR RALT(KC_0) // }
#define N_ASTR LSFT(KC_RBRC) // *
#define N_QUES LSFT(KC_MINS) // ?
#define N_LPARN LSFT(KC_8) // (
#define N_RPARN LSFT(KC_9) // )
#define N_MINS KC_SLASH // -
#define N_COLN LSFT(KC_DOT) // :
#define N_HASH KC_BSLASH // #
#define N_DLR LSFT(KC_4) // $
#define N_PIPE RALT(KC_NONUS_BSLASH) // |
#define N_TILD RALT(KC_RBRC) // ~
#define N_GRAVE LSFT(KC_EQUAL) // `
#define N_PLUS KC_RBRC // +
#define N_PERC LSFT(KC_5) // %
#define N_QUOT LSFT(KC_2) // "
#define N_SING LSFT(KC_BSLASH) // '
#define N_SEMI LSFT(KC_COMM) // ;
#define N_EURO RALT(KC_E) // €
#define N_AT RALT(KC_Q) // @
#define N_Z KC_Y
#define N_Y KC_Z
#define N_AE KC_QUOTE // ä
#define N_OE KC_SCOLON // ö
#define N_UE KC_LBRACKET // ü
#define N_MU RALT(KC_M) // µ
#define N_SS KC_MINS // ß
#define N_DEGRE LSFT(KC_GRAVE) // °
#define N_PASTE LCTL(KC_V) // CTRL+V
#define N_COPY LCTL(KC_C) // CTRL+C
#define N_CUT LCTL(KC_X) // CTRL+X
#define N_UNDO LCTL(N_Z) // CTRL+Z