Compare commits

...

14 Commits

12 changed files with 362 additions and 1 deletions

View File

@@ -1,3 +1,3 @@
CONSOLE_ENABLE = no # Console for debug(+400)
AUDIO_ENABLE = no # Audio output on port C6
AUDIO_ENABLE = yes # Audio output on port C6
UNICODE_ENABLE = no # Unicode

Binary file not shown.

View File

@@ -0,0 +1,35 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// #define MUSIC_MASK (keycode != KC_NO)
/*
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/
// #define MIDI_BASIC
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
//#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
// help for fast typist+dual function keys?
#define PERMISSIVE_HOLD
#endif

View File

@@ -0,0 +1,146 @@
#include QMK_KEYBOARD_H
enum layers {
_QWERTZ,
_LOWER,
_RAISE,
_ADJUST,
_FN
};
enum keycodes {
QWERTZ = SAFE_RANGE,
LOWER,
RAISE,
FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwertz
* ,-----------------------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Z | U | I | O | P | Bksp |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | Shift | Y | X | C | V | B | N | M | , | . | Up | Enter |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | FN | Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down | Right |
* `-----------------------------------------------------------------------------------------------'
*/
[_QWERTZ] = LAYOUT_planck_mit(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SFTENT,
FN, KC_LCTL, KC_LALT, KC_LCMD, LOWER, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | Vol+ | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | | | | | | | | Next | Vol- | Play |
* `-----------------------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_planck_mit(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, KC_VOLU, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_MPLY
),
/* Raise
* ,-----------------------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | 4 | 5 | 6 | | | | - | = | [ | ] | \ |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | 7 | 8 | 9 | | | | | | | Vol+ | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | | | 0 | | | | | Next | Vol- | Play |
* `-----------------------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_planck_mit(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_4, KC_5, KC_6, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
_______, _______, _______, KC_0, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_MPLY
),
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------------------.
* | | Reset | | | | | | | | | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | RGBTo | | | | | AG no | AG sw | | | | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | | | | | | | | | | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Function Layer
* ,-----------------------------------------------------------------------------------------------.
* | | Plain | Blink | Rand | Rainb | | | | | | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | RGBTo | | | | | | | | | | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | | | | | | | | | | | |
* |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
* | | | | | | | | | | HUE + | HUE - |
* `-----------------------------------------------------------------------------------------------'
*/
[_FN] = LAYOUT_planck_mit(
XXXXXXX, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case FN:
if (record->event.pressed) {
layer_on(_FN);
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_FN);
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1,4 @@
Based on the standard Planck layout with a few changes:
* Escape moved to dual-function with control.

View File

@@ -0,0 +1,5 @@
MOUSEKEY_ENABLE = no
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no
CONSOLE_ENABLE = no # Console for debug(+400)

View File

@@ -0,0 +1,102 @@
#include QMK_KEYBOARD_H
#ifdef UNICODE_ENABLE
#include "unicode_mac.c"
#endif
#ifndef UNICODE_ENABLE
#include "unicode_ansi.c"
#endif
#define ___x___ KC_NO
#define _BASE 0
#define _FN 1
void matrix_init_user(void){
#ifdef RGBLIGHT_ENABLE
#ifndef LAYER_SWITCH_RGB
rgblight_enable();
rgblight_sethsv(229, 70, 194);
rgblight_mode(2);
#endif
#endif
#ifdef UNICODE_ENABLE
// go to System Preferences > Keyboard > Input Sources, add Unicode Hex Input
set_unicode_input_mode(UC_OSX);
#endif
}
#ifdef RGBLIGHT_ENABLE
#ifdef LAYER_SWITCH_RGB
void matrix_scan_user(void) { // runs frequently to update info
uint8_t layer = biton32(layer_state); // get current layer
static uint8_t current_layer; // check historic layer
static bool has_layer_changed = true;
// static, so it is kept the same between calls
// defaults to true, so that it runs once to initially set the light
if (layer != current_layer) {
has_layer_changed = true;
current_layer = layer; // update layer information
}
// Check for layer change, and apply color if its changed since last check
if (has_layer_changed) {
// change backlight based on layer. These should be numbers or whatever you defined the layers as
switch (layer) {
case _BASE:
rgblight_sethsv(229, 70, 149);
break;
case _FN:
rgblight_setrgb (0x66, 0x66, 0x00);
break;
// default:
// rgblight_sethsv(229, 70, 149);
// break;
}
has_layer_changed = false;
}
};
#endif
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* _BASE
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | - | ` | = | 6 | 7 | 8 | 9 | 0 | BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | TAB | Q | W | E | R | T | [ | \ | ] | Z | U | I | O | P | ' |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | ESC | A | S | D | F | G | | | | H | J | K | L | ; | ENTER |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | LSHIFT | Y | X | C | V | B | | | | N | M | , | . | UP | SHIFEN |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | LCTRL | LALT | LGUI | MO(1) | SPACE | SPACE | | | | | / | MO(1) | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[_BASE] = LAYOUT_ortho_5x15(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_GRAVE, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,\
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_BSLS, KC_RBRC, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_QUOT,\
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, ___x___, ___x___, ___x___, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, ___x___, ___x___, ___x___, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SFTENT,\
KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), KC_SPC, KC_SPC, ___x___, ___x___, ___x___, ___x___, KC_SLSH, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT \
),
/* _FN
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | RESET | | | | | | | | | | | | | | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | € | | | | | | | Ü | | Ö | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | Ä | ß | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | | RGB_TOG| | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | | KC_MRWD| KC_MPLY| KC_MFFD| | | | VOL - | VOL + | MUTE |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[_FN] = LAYOUT_ortho_5x15(
RESET, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, KC_DEL, \
___x___, ___x___, ___x___, MAC_EUR, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, MAC_UE, ___x___, MAC_OE, ___x___, ___x___,\
___x___, MAC_AE, MAC_SS, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___,\
_______, ___x___, ___x___, ___x___, ___x___, ___x___, RGB_TOG, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, _______,\
___x___, ___x___, ___x___, ___x___, ___x___, ___x___, KC_MRWD, KC_MPLY, KC_MFFD, ___x___, ___x___, ___x___, KC_VOLD, KC_VOLU, KC_MUTE \
)
};

View File

@@ -0,0 +1 @@
[["KC_ESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_EQL", "KC_NO", "KC_MINS", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC", "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_LBRC", "KC_NO", "KC_RBRC", "KC_Z", "KC_U", "KC_I", "KC_O", "KC_P", "KC_NO", "KC_NO", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_GRV", "KC_NO", "KC_BSLS", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_ENT", "KC_LSFT", "KC_Y", "KC_X", "KC_C", "KC_V", "KC_B", "KC_SPC", "KC_UP", "KC_ENT", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_LCTL", "KC_LALT", "KC_LGUI", "KC_NO", "KC_NO", "MO(1)", "KC_LEFT", "KC_DOWN", "KC_RGHT", "MO(1)", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "UC(0x00fc)", "KC_NO", "UC(0x00f6)", "KC_NO", "KC_NO", "KC_NO", "UC(0x00E4)", "UC(0x00df)", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]]

View File

@@ -0,0 +1,7 @@
# michi's Mac Layout
This layout was designed to work with a MacOs in mind. This layout implements the [German umlaut](https://en.wikipedia.org/wiki/Umlaut_(linguistics)) and switched positions for `Z` ad `Y`.
There are two different ways of using the German umlaut and can be switched by setting `UNICODE_ENABLE` to either `yes` or `no`.
Setting this constant to `no` will send a combination of strings to generate the coresponding umlaut.
Switching this value to `yes` will send HEX-based unicodes to the system. Please note, that this solution will only work for MacOS and only by adding `System Preferences > Keyboard > Input Sources` and selecting `Unicode Hex Input`.

View File

@@ -0,0 +1,11 @@
# QMK 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
#
UNICODE_ENABLE = no # Unicode
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = no # Enable tap dance
LAYER_SWITCH_RGB = no # Enable layer based RGBLIGHT (this is very expensive action, use with caution)
COMMAND_ENABLE = no # Disable command in order to use Space Cadet Shift Enter
MOUSEKEY_ENABLE = no # Disable mouse emulation
TERMINAL_ENABLE = no # Disable terminal

View File

@@ -0,0 +1,45 @@
enum custom_keycodes {
MAC_AE = SAFE_RANGE,
MAC_OE,
MAC_SS,
MAC_UE,
MAC_EUR
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case MAC_UE:
if(keyboard_report->mods & MOD_BIT(KC_LSFT)) {
clear_keyboard();
SEND_STRING(SS_LALT("u") SS_LSFT("u"));
} else {
SEND_STRING(SS_LALT("u")"u");
}
return false;
case MAC_AE:
if(keyboard_report->mods & MOD_BIT(KC_LSFT)) {
clear_keyboard();
SEND_STRING(SS_LALT("u") SS_LSFT("a"));
} else {
SEND_STRING(SS_LALT("u")"a");
}
return false;
case MAC_OE:
if(keyboard_report->mods & MOD_BIT(KC_LSFT)) {
clear_keyboard();
SEND_STRING(SS_LALT("u") SS_LSFT("o"));
} else {
SEND_STRING(SS_LALT("u")"o");
}
return false;
case MAC_EUR:
SEND_STRING(SS_LALT("@"));
return false;
case MAC_SS:
SEND_STRING(SS_LALT("s"));
return false;
}
}
return true;
};

View File

@@ -0,0 +1,5 @@
#define MAC_AE UC(L'ä')
#define MAC_OE UC(L'ö')
#define MAC_SS UC(L'ß')
#define MAC_UE UC(L'ü')
#define MAC_EUR UC(L'€')