split up unicode mapping for ansi and mac

This commit is contained in:
2019-03-20 08:33:06 +01:00
parent 6b0df1e032
commit 889e6585e8
3 changed files with 76 additions and 61 deletions

View File

@@ -1,4 +1,14 @@
#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
@@ -9,18 +19,11 @@ void matrix_init_user(void){
#endif
#endif
#ifdef UNICODE_ENABLE
set_unicode_input_mode(UC_MAC);
// go to System Preferences > Keyboard > Input Sources, add Unicode Hex Input
set_unicode_input_mode(UC_OSX);
#endif
}
enum custom_keycodes {
MAC_AE = SAFE_RANGE,
MAC_OE,
MAC_SS,
MAC_UE,
MAC_EUR
};
#ifdef RGBLIGHT_ENABLE
#ifdef LAYER_SWITCH_RGB
void matrix_scan_user(void) { // runs frequently to update info
@@ -38,10 +41,10 @@ enum custom_keycodes {
if (has_layer_changed) {
// change backlight based on layer. These should be numbers or whatever you defined the layers as
switch (layer) {
case 0:
case _BASE:
rgblight_sethsv(229, 70, 149);
break;
case 1:
case _FN:
rgblight_setrgb (0x66, 0x66, 0x00);
break;
// default:
@@ -55,7 +58,7 @@ enum custom_keycodes {
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE
/* _BASE
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | - | ` | = | 6 | 7 | 8 | 9 | 0 | BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -68,15 +71,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | LCTRL | LALT | LGUI | MO(1) | SPACE | SPACE | LEFT | DOWN | RIGHT | SPACE | SPACE | MO(1) | | | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_ortho_5x15(
[_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, XXXXXXX, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, XXXXXXX, KC_UP, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, KC_SPC, MO(1), XXXXXXX, XXXXXXX, XXXXXXX \
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___, KC_UP, ___x___, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, KC_SPC, MO(1), ___x___, ___x___, ___x___ \
),
/* FN
/* _FN
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | | VOL - | VOL + | MUTE | | | | | | | | | | | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -89,49 +92,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | | | | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[1] = LAYOUT_ortho_5x15(
XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, \
XXXXXXX, XXXXXXX, XXXXXXX, MAC_EUR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MAC_UE, XXXXXXX, MAC_OE, XXXXXXX, XXXXXXX,\
XXXXXXX, MAC_AE, MAC_SS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,\
XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX \
[_FN] = LAYOUT_ortho_5x15(
___x___, KC_VOLD, KC_VOLU, KC_MUTE, ___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___ \
)
};
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,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'€')