qmkergodox layout

Layout printed using: keyboard layout editor
title: “2023 09 04 QMK layout”
date: 2023-09-05T05:27:14+02:00
draft: true
And built using: QMK firmware
#include QMK_KEYBOARD_H
#include "version.h"
#include "customkey_dv_dvp.h"
#define BASE 0 // default layer Dvorak programmer
#define DV 1 // Dvorak Layer
#define QWRT 2 // qwerty layer
#define _FN 3 // function layer
#define MDIA 4 // media keys
#define ACC 5 // accents keys
#define ACCDV 6 // accents keys DV
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | [ | { | } | ( | = | & | | @ | * | ) | + | ] | ! | Backsp |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | ; | , | . | p | y | # | | - | f | g | c | r | l | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | a | o | e | u | i |------| |------| d | h | t | n |s / L2| Enter |
* |--------+------+------+------+------+------| $ | | / |------+------+------+------+------+--------|
* | LShift | ' | q | j | k | x | | | | b | m | w | v |z/Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | LCtl | LAlt | | Left | Down | | UP | Right| | RAlt | Rctl |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Home | End | | Ins | \ |
* ,------|------|------| |------+--------+------.
* | | | App | | PgUp | | |
* | Space|Backsp|------| |------| Enter |Del |
* | |ace | LGui | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_ESC, DP_LBRC, DP_LCBR, DP_RCBR, DP_LPRN, DP_EQL, DP_AMPR,
KC_TAB, DP_SCLN, DP_COMM, DP_DOT, DP_P, DP_Y, DP_HASH,
KC_CAPS, DP_A, DP_O, DP_E, DP_U, DP_I,
KC_LSFT, CTL_T(DP_QUOT), DP_Q, DP_J, DP_K, DP_X, DP_DLR,
KC_LCTL, KC_LALT, KC_DLR, KC_LEFT, KC_DOWN,
LT(MDIA, KC_HOME), KC_END,
ALT_T(KC_APP),
KC_SPC,KC_BSPC,LT(_FN,KC_MENU),
// right hand
DP_AT, DP_ASTR, DP_RPRN, DP_PLUS, DP_RBRC, DP_EXLM, KC_BSPC,
DP_MINS, DP_F, DP_G, DP_C, DP_R, DP_L, KC_TRNS,
DP_D, DP_H, DP_T, DP_N, LT(MDIA, DP_S), KC_ENT,
MT(MOD_RGUI,DP_SLSH), DP_B, DP_M, DP_W, DP_V, CTL_T(DP_Z), KC_RSFT,
KC_UP, KC_RGHT, KC_NO, KC_LALT, KC_RCTL,
KC_PGUP, DP_BSLS,
KC_PGDN,
LT(ACC,KC_INS),KC_ENT,KC_DEL
),
/* Keymap 1: DV layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | [ | { | } | ( | = | & | | @ | * | ) | + | ] | ! | Backsp |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | ; | , | . | p | y | # | | - | f | g | c | r | l | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | a | o | e | u | i |------| |------| d | h | t | n |s / L2| Enter |
* |--------+------+------+------+------+------| $ | | / |------+------+------+------+------+--------|
* | LShift | ' | q | j | k | x | | | | b | m | w | v |z/Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | LCtl | LAlt | | Left | Down | | UP | Right| | RAlt | Rctl |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Home | End | | Ins | \ |
* ,------|------|------| |------+--------+------.
* | | | App | | PgUp | | |
* | Space|Backsp|------| |------| Enter |Del |
* | |ace | LGui | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[DV] = LAYOUT_ergodox( // layer 1 : default
// left hand
KC_ESC, DV_1, DV_2, DV_3, DV_4, DV_5, DV_LBRC,
KC_TAB, DV_SCLN, DV_COMM, DV_DOT, DV_P, DV_Y, DV_EQL,
KC_CAPS, DV_A, DV_O, DV_E, DV_U, DV_I,
KC_LSFT, CTL_T(DV_QUOT), DV_Q, DV_J, DV_K, DV_X, DV_GRV,
KC_LCTL, KC_LALT, KC_DLR, KC_LEFT, KC_DOWN,
LT(MDIA, KC_HOME), KC_END,
ALT_T(KC_APP),
KC_SPC,KC_BSPC,LT(_FN,KC_MENU),
// right hand
DV_RBRC, DV_6, DV_7, DV_8, DV_9, DV_0, KC_BSPC,
DV_MINS, DV_F, DV_G, DV_C, DV_R, DV_L, KC_NO,
DV_D, DV_H, DV_T, DV_N, LT(MDIA, DV_S), KC_ENT,
MT(MOD_RGUI,DV_SLSH), DV_B, DV_M, DV_W, DV_V, CTL_T(DV_Z), KC_RSFT,
KC_UP, KC_RGHT, KC_NO, KC_RALT, KC_RCTL,
KC_PGUP, DV_BSLS,
KC_PGDN,
LT(ACCDV,KC_INS),KC_ENT,KC_DEL
),
/* Keymap 2: Basic layer qwerty
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Backsp |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | Caps | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| | | | Left | Down | Up | Right| LCtl |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Home | End | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | App | | PgUp | | |
* | Space|Backsp|------| |------| Enter | Del |
* | |ace | LGui | | PgDn | | |
* `--------------------' `----------------------'
*/
[QWRT] = LAYOUT_ergodox( // layer 1 : qwerty
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(_FN),
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(_FN,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_TRNS,KC_TRNS,
LT(MDIA, KC_HOME), LT(_FN,KC_END),
ALT_T(KC_APP),
KC_SPC,KC_BSPC,KC_LGUI,
// right hand
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
TG(_FN), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_LEFT, KC_DOWN,KC_UP,KC_RGHT, KC_LCTL,
KC_LALT, CTL_T(KC_ESC),
KC_PGUP,
KC_PGDN,KC_ENT,KC_DEL
),
/* Keymap 3: Function Layer
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | | | | PSCR | | | | | | 7 | 8 | 9 | * | |
* |---------+------+------+------+------+------| | | - |------+------+------+------+------+--------|
* | | | | | | |------| |------| | 4 | 5 | 6 | + | ENT |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | EEP_RST | | | | | | | | / | | 1 | 2 | 3 | = | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | 0 | | . | | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* |Animat| | |Toggle|Solid |
* ,------|------|------| |------+------+------.
* |Bright|Bright| | | |Hue- |Hue+ |
* |ness- |ness+ |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// FUNCTION
[_FN] = LAYOUT_ergodox(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
RESET,KC_TRNS,KC_TRNS, KC_TRNS,KC_PSCR,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,
EEP_RST,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,DD_EURO,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
RGB_MOD,KC_TRNS,
KC_TRNS,
RGB_VAD,RGB_VAI,KC_TRNS,
// right hand
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(BASE),
KC_PMNS, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_PAST, DF(DV),
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT,
KC_PSLS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS,
KC_P0, KC_NO, KC_PDOT, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_SLD,
KC_TRNS,
KC_TRNS, RGB_HUD, RGB_HUI
),
/* Keymap 4: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | |VolUp | | VolDn| Mute | | Play | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | Bt3 | Lclk | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Rclk| | |MsLeft|MsDown| MsUp |MsRght| |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | Lclk | Rclk |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
// left hand
[MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN1, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_VOLD, KC_MUTE, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, DF(BASE),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DF(DV),
KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, DF(QWRT),
KC_BTN3, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_BTN1, KC_BTN2,
KC_WH_U,
KC_WH_D, KC_TRNS, KC_WBAK
),
/* Keymap 5: Accents keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | Ç | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | Á | | é | | | | | | | | ç | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | à | ô | è | ù | î |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | â | ö | ê | û | ï | € | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | â | | ë | ü | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// ACCENTS
// left hand
[ACC] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, UC_EACUTE, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, DD_AUPGRAVE, KC_TRNS, DD_EACUTE, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, DD_AGRAVE, DD_OCIRCUMFLEX, DD_EGRAVE, DD_UGRAVE, DD_ICIRCUMFLEX,
KC_TRNS, DD_AUMLAUT, DD_OUMLAUT, DD_EUMLAUT, DD_UUMLAUT, DD_IUMLAUT, DD_EURO,
KC_TRNS, DD_ACIRCUMFLEX, KC_TRNS, DD_ECIRCUMFLEX, DD_UCIRCUMFLEX,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, DD_CUPCEDILL, KC_TRNS, KC_TRNS, DF(BASE),
KC_TRNS, KC_TRNS, KC_TRNS, DD_CCEDILL, KC_TRNS, KC_TRNS, DF(DV),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, 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
),
/* Keymap 6: Accents keys DV
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | Ç | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | Á | | é | | | | | | | | ç | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | à | ô | è | ù | î |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | â | ö | ê | û | ï | € | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | â | | ë | ü | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// ACCENTS DV
// left hand
[ACCDV] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, DV_AUPGRAVE, KC_TRNS, DV_EACUTE, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, DV_AGRAVE, DV_OCIRCUMFLEX, DV_EGRAVE, DV_UGRAVE, DV_ICIRCUMFLEX,
KC_TRNS, DV_AUMLAUT, DV_OUMLAUT, DV_EUMLAUT, DV_UUMLAUT, DV_IUMLAUT, DV_EURO,
KC_TRNS, DV_ACIRCUMFLEX, KC_TRNS, DV_ECIRCUMFLEX, DV_UCIRCUMFLEX,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, DD_CUPCEDILL, KC_TRNS, KC_TRNS, DF(BASE),
KC_TRNS, KC_TRNS, KC_TRNS, DD_CCEDILL, KC_TRNS, KC_TRNS, DF(DV),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, 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
),
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};
#include QMK_KEYBOARD_H
#include "version.h"
#include "keymap_dvp.h"
#include "keymap_dvorak.h"
#define BASE 0 // default layer Dvorak programmer
#define DV 1 // Dvorak Layer
#define QWRT 2 // qwerty layer
#define SYMB 3 // symbols
#define MDIA 4 // media keys
#define ACC 5 // accents keys
#define ACCDV 6 // accents keys DV
enum custom_keycodes {
VRSN = SAFE_RANGE,
QMKBEST,
QMKURL,
DD_AUPGRAVE,
DV_AUPGRAVE,
DD_AGRAVE,
DV_AGRAVE,
DD_ACIRCUMFLEX,
DV_ACIRCUMFLEX,
DD_AUMLAUT,
DV_AUMLAUT,
DD_EACUTE,
UC_EACUTE,
DV_EACUTE,
DD_EGRAVE,
DV_EGRAVE,
DD_ECIRCUMFLEX,
DV_ECIRCUMFLEX,
DD_EUMLAUT,
DV_EUMLAUT,
DD_OACUTE,
DV_OACUTE,
DD_OGRAVE,
DV_OGRAVE,
DD_OCIRCUMFLEX,
DV_OCIRCUMFLEX,
DD_OUMLAUT,
DV_OUMLAUT,
DD_IACUTE,
DV_IACUTE,
DD_IGRAVE,
DV_IGRAVE,
DD_ICIRCUMFLEX,
DV_ICIRCUMFLEX,
DD_IUMLAUT,
DV_IUMLAUT,
DD_UACUTE,
DV_UACUTE,
DD_UGRAVE,
DV_UGRAVE,
DD_UCIRCUMFLEX,
DV_UCIRCUMFLEX,
DD_UUMLAUT,
DV_UUMLAUT,
DD_EURO,
DV_EURO,
DD_CCEDILL,
DD_CUPCEDILL,
RGB_SLD
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case DD_AUPGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (KC_EQL);
unregister_code (KC_LSFT);
unregister_code (KC_EQL);
register_code (KC_LSFT);
register_code (KC_A);
unregister_code (KC_LSFT);
unregister_code (KC_A);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_AUPGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (KC_LSFT);
register_code (KC_A);
unregister_code (KC_A);
unregister_code (KC_LSFT);
unregister_code (KC_RGUI);
register_code (DV_GRV);
unregister_code (DV_GRV);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_AGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (KC_EQL);
unregister_code (KC_LSFT);
unregister_code (KC_EQL);
register_code (KC_A);
unregister_code (KC_A);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_AGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (KC_A);
unregister_code (KC_A);
unregister_code (KC_RGUI);
register_code (DV_GRV);
unregister_code (DV_GRV);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_ACIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_AT);
unregister_code (KC_LSFT);
unregister_code (DP_AT);
register_code (KC_A);
unregister_code (KC_A);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_ACIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (KC_A);
unregister_code (KC_A);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_6);
unregister_code (DV_6);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_AUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_QUOT);
unregister_code (KC_LSFT);
unregister_code (DP_QUOT);
register_code (KC_A);
unregister_code (KC_A);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_AUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (KC_A);
unregister_code (KC_A);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_QUOT);
unregister_code (DV_QUOT);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_EACUTE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (DP_QUOT);
unregister_code (DP_QUOT);
register_code (DP_E);
unregister_code (DP_E);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_EACUTE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_E);
unregister_code (DV_E);
unregister_code (KC_RGUI);
register_code (DV_QUOT);
unregister_code (DV_QUOT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case UC_EACUTE:
if (record->event.pressed) {
// Do something when pressed
register_code (MOD_RGUI);
unregister_code (MOD_RGUI);
register_code (KC_LSFT);
register_code (DP_U);
unregister_code (DP_U);
unregister_code (KC_LSFT);
register_code (KC_P2);
register_code (KC_P0);
register_code (KC_P1);
unregister_code (KC_P2);
unregister_code (KC_P0);
unregister_code (KC_P1);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_EGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (KC_EQL);
unregister_code (KC_LSFT);
unregister_code (KC_EQL);
register_code (DP_E);
unregister_code (DP_E);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_EGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_E);
unregister_code (DV_E);
unregister_code (KC_RGUI);
register_code (DV_GRV);
unregister_code (DV_GRV);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_ECIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_AT);
unregister_code (KC_LSFT);
unregister_code (DP_AT);
register_code (DP_E);
unregister_code (DP_E);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_ECIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_E);
unregister_code (DV_E);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_6);
unregister_code (DV_6);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_EUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_QUOT);
unregister_code (KC_LSFT);
unregister_code (DP_QUOT);
register_code (DP_E);
unregister_code (DP_E);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_EUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_E);
unregister_code (DV_E);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_QUOT);
unregister_code (DV_QUOT);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_OCIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_AT);
unregister_code (KC_LSFT);
unregister_code (DP_AT);
register_code (DP_O);
unregister_code (DP_O);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_OCIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_O);
unregister_code (DV_O);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_6);
unregister_code (DV_6);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_OUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_QUOT);
unregister_code (KC_LSFT);
unregister_code (DP_QUOT);
register_code (DP_O);
unregister_code (DP_O);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_OUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_O);
unregister_code (DV_O);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_QUOT);
unregister_code (DV_QUOT);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_UGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (KC_EQL);
unregister_code (KC_LSFT);
unregister_code (KC_EQL);
register_code (DP_U);
unregister_code (DP_U);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_UGRAVE:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_U);
unregister_code (DV_U);
unregister_code (KC_RGUI);
register_code (DV_GRV);
unregister_code (DV_GRV);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_UCIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_AT);
unregister_code (KC_LSFT);
unregister_code (DP_AT);
register_code (DP_U);
unregister_code (DP_U);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_UCIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_U);
unregister_code (DV_U);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_6);
unregister_code (DV_6);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_UUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_QUOT);
unregister_code (KC_LSFT);
unregister_code (DP_QUOT);
register_code (DP_U);
unregister_code (DP_U);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_UUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_U);
unregister_code (DV_U);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_QUOT);
unregister_code (DV_QUOT);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_ICIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_AT);
unregister_code (KC_LSFT);
unregister_code (DP_AT);
register_code (DP_I);
unregister_code (DP_I);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_ICIRCUMFLEX:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_I);
unregister_code (DV_I);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_6);
unregister_code (DV_6);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_IUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DP_QUOT);
unregister_code (KC_LSFT);
unregister_code (DP_QUOT);
register_code (DP_I);
unregister_code (DP_I);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_IUMLAUT:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DV_I);
unregister_code (DV_I);
unregister_code (KC_RGUI);
register_code (KC_LSFT);
register_code (DV_QUOT);
unregister_code (DV_QUOT);
unregister_code (KC_LSFT);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_EURO:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (DP_EQL);
unregister_code (DP_EQL);
register_code (DP_C);
unregister_code (DP_C);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DV_EURO:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
register_code (DP_C);
unregister_code (DP_C);
unregister_code (KC_RGUI);
register_code (DV_EQL);
unregister_code (DV_EQL);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_CCEDILL:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (DP_COMM);
unregister_code (DP_COMM);
register_code (DP_C);
unregister_code (DP_C);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
case DD_CUPCEDILL:
if (record->event.pressed) {
// Do something when pressed
register_code (KC_RGUI);
unregister_code (KC_RGUI);
register_code (DP_COMM);
unregister_code (DP_COMM);
register_code (KC_LSFT);
register_code (DP_C);
unregister_code (KC_LSFT);
unregister_code (DP_C);
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
break;
// dynamically generate these.
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
// from xd75 original
case QMKBEST:
if (record->event.pressed) {
// when keycode QMKBEST is pressed
SEND_STRING("QMK is the best thing ever!");
} else {
// when keycode QMKBEST is released
}
break;
case QMKURL:
if (record->event.pressed) {
// when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
} else {
// when keycode QMKURL is released
}
break;
}
return true;
}