|  |  |  | @ -1,4 +1,4 @@ | 
			
		
	
		
			
				
					|  |  |  |  | /* Copyright 2018 Markus Weimar
 | 
			
		
	
		
			
				
					|  |  |  |  | /* Copyright 2019 Markus Weimar
 | 
			
		
	
		
			
				
					|  |  |  |  |  * | 
			
		
	
		
			
				
					|  |  |  |  |  * 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 | 
			
		
	
	
		
			
				
					|  |  |  | @ -19,30 +19,29 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #define ________ KC_TRNS | 
			
		
	
		
			
				
					|  |  |  |  | #define ___xx___ KC_NO | 
			
		
	
		
			
				
					|  |  |  |  | #define NKRO_TG MAGIC_TOGGLE_NKRO | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | enum my_layers { | 
			
		
	
		
			
				
					|  |  |  |  |   _QWZ, | 
			
		
	
		
			
				
					|  |  |  |  |   _QWY, | 
			
		
	
		
			
				
					|  |  |  |  |   _GAM, | 
			
		
	
		
			
				
					|  |  |  |  |   _FN1, | 
			
		
	
		
			
				
					|  |  |  |  |   _FN2, | 
			
		
	
		
			
				
					|  |  |  |  |   _FN3, | 
			
		
	
		
			
				
					|  |  |  |  |     _QWZ, | 
			
		
	
		
			
				
					|  |  |  |  |     _QWY, | 
			
		
	
		
			
				
					|  |  |  |  |     _GAM, | 
			
		
	
		
			
				
					|  |  |  |  |     _FN1, | 
			
		
	
		
			
				
					|  |  |  |  |     _FN2, | 
			
		
	
		
			
				
					|  |  |  |  |     _FN3, | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | enum my_keycodes { | 
			
		
	
		
			
				
					|  |  |  |  |   QWERTZ = SAFE_RANGE, | 
			
		
	
		
			
				
					|  |  |  |  |   QWERTY, | 
			
		
	
		
			
				
					|  |  |  |  |   GAMING, | 
			
		
	
		
			
				
					|  |  |  |  |   FN1, | 
			
		
	
		
			
				
					|  |  |  |  |   FN2, | 
			
		
	
		
			
				
					|  |  |  |  |   FN3 | 
			
		
	
		
			
				
					|  |  |  |  |     QWERTZ = SAFE_RANGE, | 
			
		
	
		
			
				
					|  |  |  |  |     QWERTY, | 
			
		
	
		
			
				
					|  |  |  |  |     GAMING, | 
			
		
	
		
			
				
					|  |  |  |  |     FN1, | 
			
		
	
		
			
				
					|  |  |  |  |     FN2, | 
			
		
	
		
			
				
					|  |  |  |  |     FN3 | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | enum my_ucis { | 
			
		
	
		
			
				
					|  |  |  |  |   UNI_LNX, | 
			
		
	
		
			
				
					|  |  |  |  |   UNI_MAC, | 
			
		
	
		
			
				
					|  |  |  |  |   UNI_WIN, | 
			
		
	
		
			
				
					|  |  |  |  |     UNI_LNX, | 
			
		
	
		
			
				
					|  |  |  |  |     UNI_MAC, | 
			
		
	
		
			
				
					|  |  |  |  |     UNI_WIN, | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 
			
		
	
	
		
			
				
					|  |  |  | @ -118,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | "      | '      | ‚      | ‘      | ’      |        |        |        | |      | [      | ]      | !      | ?      |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | °      | ^      | „      | “      | ”      |        |        |        | #      | <      | >      | …      | –      |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | °      | ^      | „      | “      | ”      |        |        |        | #      | <      | >      | …      | – EN   |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * '--------------------------------------------------------------------------------------------------------------------------------------' | 
			
		
	
	
		
			
				
					|  |  |  | @ -133,19 +132,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /* FN2
 | 
			
		
	
		
			
				
					|  |  |  |  |  * .--------------------------------------------------------------------------------------------------------------------------------------. | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        |        | %      | (      | )      | P/     | P*     | P-     | Print  | Scroll | Pause  | ẞ      |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        |        | %      | (      | )      | P/     | P*     | P-     | Print  | Scroll | Pause  | ẞ      | − MNS  | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        | Mute   | Vol-   | Vol+   | Bspc   | P7     | P8     | P9     | P+     | WH_U   | MS_U   | WH_D   | ×      | ÷      | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | App    | ACL0   | ACL1   | ACL2   | Space  | P4     | P5     | P6     | WH_L   | MS_L   | MS_D   | MS_R   | WH_R   |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | App    | ACL2   | ACL1   | ACL0   | Space  | P4     | P5     | P6     | WH_L   | MS_L   | MS_D   | MS_R   | WH_R   |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        | Prev   | Play   | Next   | Tab    | P1     | P2     | P3     | PEnter | BTN1   | BTN2   | BTN3   | —      |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        | Prev   | Play   | Next   | Tab    | P1     | P2     | P3     | PEnter | BTN1   | BTN2   | BTN3   | — EM   |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * | Fn2    |        |        |        |        | PEnter | P0     | . :    | P,     | BTN1   | BTN2   | BTN3   |        |        |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * '--------------------------------------------------------------------------------------------------------------------------------------' | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | [_FN2] = { | 
			
		
	
		
			
				
					|  |  |  |  | { ___xx___, ___xx___, ___xx___, ___xx___, DE_PERC,  DE_LPRN,  DE_RPRN,  KC_PSLS,  KC_PAST,  KC_PMNS,  KC_PSCR,  KC_LSCR,  KC_PAUS,  UC(L'ẞ'), ___xx___ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ___xx___, ___xx___, ___xx___, ___xx___, DE_PERC,  DE_LPRN,  DE_RPRN,  KC_PSLS,  KC_PAST,  KC_PMNS,  KC_PSCR,  KC_LSCR,  KC_PAUS,  UC(L'ẞ'), UC(L'−') }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, ___xx___, KC_MUTE,  KC_VOLD,  KC_VOLU,  KC_BSPC,  KC_P7,    KC_P8,    KC_P9,    KC_PPLS,  KC_WH_U,  KC_MS_U,  KC_WH_D,  UC(L'×'), UC(L'÷') }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, KC_APP,   KC_ACL2,  KC_ACL1,  KC_ACL0,  KC_SPC,   KC_P4,    KC_P5,    KC_P6,    KC_WH_L,  KC_MS_L,  KC_MS_D,  KC_MS_R,  KC_WH_R,  ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, ___xx___, KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_TAB,   KC_P1,    KC_P2,    KC_P3,    KC_PENT,  KC_BTN1,  KC_BTN2,  KC_BTN3,  UC(L'—'), ________ }, | 
			
		
	
	
		
			
				
					|  |  |  | @ -156,61 +155,61 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 
			
		
	
		
			
				
					|  |  |  |  |  * .--------------------------------------------------------------------------------------------------------------------------------------. | 
			
		
	
		
			
				
					|  |  |  |  |  * | F13    | F14    | F15    | F16    | F17    | F18    | U LNX  | U WIN  | U MAC  | F19    | F20    | F21    | F22    | F23    | F24    | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | QWERTZ | QWERTY |        | NKRO   | ThinSp | L TOG  | L MP   | L MOD  |        | Pg Up  | Up     | Pg Dn  |        |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | QWERTZ | QWERTY | GAMING |        |        | L TOG  | L MP   | L MOD  |        | Pg Up  | Up     | Pg Dn  |        |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        | NaNbSp |        | ›      | ‹      | GAMING | L HUI  | L SAI  | L VAI  | Home   | Left   | Down   | Right  | End    |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        | ›      | ‹      |        | L HUI  | L SAI  | L VAI  | Home   | Left   | Down   | Right  | End    |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        | »      | «      |        | L HUD  | L SAD  | L VAD  | FigSp  |        |        |        | NbHyph |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        | »      | «      |        | L HUD  | L SAD  | L VAD  | NumSp  | ThinSp | NaNbSp | NbSp   | NbHyph |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        |        |        |        |        | Reset  |        | NbSp   |        |        |        |        |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * |        |        |        |        |        |        |        | Reset  |        |        |        |        |        |        |        | | 
			
		
	
		
			
				
					|  |  |  |  |  * '--------------------------------------------------------------------------------------------------------------------------------------' | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | [_FN3] = { | 
			
		
	
		
			
				
					|  |  |  |  | { KC_F13,   KC_F14,   KC_F15,   KC_F16,   KC_F17,   KC_F18,   UNI_LNX,  UNI_WIN,  UNI_MAC,  KC_F19,   KC_F20,   KC_F21,   KC_F22,   KC_F23,   KC_F24   }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, QWERTZ,   QWERTY,   ___xx___, NKRO_TG,  UC(L' '), RGB_TOG,  RGB_M_P,  RGB_MOD,  ___xx___, KC_PGUP,  KC_UP,    KC_PGDN,  ___xx___, ___xx___ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, UC(L' '), ___xx___, UC(L'›'), UC(L'‹'), GAMING,   RGB_HUI,  RGB_SAI,  RGB_VAI,  KC_HOME,  KC_LEFT,  KC_DOWN,  KC_RIGHT, KC_END,   ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, ___xx___, ___xx___, UC(L'»'), UC(L'«'), ___xx___, RGB_HUD,  RGB_SAD,  RGB_VAD,  UC(L' '), ___xx___, ___xx___, ___xx___, UC(L'‑'), ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ___xx___, ________, ________, ________, ________, ________, ________, RESET,    ________, UC(L' '), ________, ________, ________, ________, ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, QWERTZ,   QWERTY,   GAMING,   ___xx___, ___xx___, RGB_TOG,  RGB_M_P,  RGB_MOD,  ___xx___, KC_PGUP,  KC_UP,    KC_PGDN,  ___xx___, ___xx___ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, ___xx___, ___xx___, UC(L'›'), UC(L'‹'), ___xx___, RGB_HUI,  RGB_SAI,  RGB_VAI,  KC_HOME,  KC_LEFT,  KC_DOWN,  KC_RIGHT, KC_END,   ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ________, ___xx___, ___xx___, UC(L'»'), UC(L'«'), ___xx___, RGB_HUD,  RGB_SAD,  RGB_VAD,  UC(L' '), UC(L' '), UC(L' '), UC(L' '), UC(L'‑'), ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | { ___xx___, ________, ________, ________, ________, ________, ________, RESET,    ________, ________, ________, ________, ________, ________, ________ }, | 
			
		
	
		
			
				
					|  |  |  |  | }, | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void matrix_init_user(){ | 
			
		
	
		
			
				
					|  |  |  |  |   set_unicode_input_mode(UC_LNX); | 
			
		
	
		
			
				
					|  |  |  |  |     set_unicode_input_mode(UC_LNX); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(keycode) { | 
			
		
	
		
			
				
					|  |  |  |  |     case QWERTZ: | 
			
		
	
		
			
				
					|  |  |  |  |       if (record->event.pressed) { | 
			
		
	
		
			
				
					|  |  |  |  |         set_single_persistent_default_layer(_QWZ); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case QWERTY: | 
			
		
	
		
			
				
					|  |  |  |  |       if (record->event.pressed) { | 
			
		
	
		
			
				
					|  |  |  |  |         set_single_persistent_default_layer(_QWY); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case GAMING: | 
			
		
	
		
			
				
					|  |  |  |  |       if (record->event.pressed) { | 
			
		
	
		
			
				
					|  |  |  |  |         set_single_persistent_default_layer(_GAM); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case UNI_LNX: | 
			
		
	
		
			
				
					|  |  |  |  |       set_unicode_input_mode(UC_LNX); | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case UNI_WIN: | 
			
		
	
		
			
				
					|  |  |  |  |       set_unicode_input_mode(UC_WINC); | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case UNI_MAC: | 
			
		
	
		
			
				
					|  |  |  |  |       set_unicode_input_mode(UC_OSX); | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   return true; | 
			
		
	
		
			
				
					|  |  |  |  |     switch(keycode) { | 
			
		
	
		
			
				
					|  |  |  |  |         case QWERTZ: | 
			
		
	
		
			
				
					|  |  |  |  |             if (record->event.pressed) { | 
			
		
	
		
			
				
					|  |  |  |  |                 set_single_persistent_default_layer(_QWZ); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |         case QWERTY: | 
			
		
	
		
			
				
					|  |  |  |  |             if (record->event.pressed) { | 
			
		
	
		
			
				
					|  |  |  |  |                 set_single_persistent_default_layer(_QWY); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |         case GAMING: | 
			
		
	
		
			
				
					|  |  |  |  |             if (record->event.pressed) { | 
			
		
	
		
			
				
					|  |  |  |  |                 set_single_persistent_default_layer(_GAM); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |         case UNI_LNX: | 
			
		
	
		
			
				
					|  |  |  |  |             set_unicode_input_mode(UC_LNX); | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |         case UNI_WIN: | 
			
		
	
		
			
				
					|  |  |  |  |             set_unicode_input_mode(UC_WINC); | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |         case UNI_MAC: | 
			
		
	
		
			
				
					|  |  |  |  |             set_unicode_input_mode(UC_OSX); | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     return true; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |