~ruther/qmk_firmware

5974d989fe72f6c576901a065bee4487a58c351d — Ryan 2 years ago 743524d
Normalise Unicode keycodes (#18898)

* `UC_MOD`/`UC_RMOD` -> `UC_NEXT`/`UC_PREV`

* `UNICODE_MODE_*` -> `QK_UNICODE_MODE_*`

* `UC_MAC` -> `UNICODE_MODE_MACOS`

* `UC_LNX` -> `UNICODE_MODE_LINUX`

* `UC_WIN` -> `UNICODE_MODE_WINDOWS`

* `UC_BSD` -> `UNICODE_MODE_BSD`

* `UC_WINC` -> `UNICODE_MODE_WINCOMPOSE`

* `UC_EMACS` -> `UNICODE_MODE_EMACS`

* `UC__COUNT` -> `UNICODE_MODE_COUNT`

* `UC_M_MA` -> `UC_MAC`

* `UC_M_LN` -> `UC_LINX`

* `UC_M_WI` -> `UC_WIN`

* `UC_M_BS` -> `UC_BSD`

* `UC_M_WC` -> `UC_WINC`

* `UC_M_EM` -> `UC_EMAC`

* Docs

* Update quantum/unicode/unicode.h
132 files changed, 304 insertions(+), 293 deletions(-)

M docs/feature_unicode.md
M docs/keycodes.md
M keyboards/a_dux/keymaps/daliusd/config.h
M keyboards/abacus/keymaps/unicodemap/keymap.c
M keyboards/atreus62/keymaps/d4mation/keymap.c
M keyboards/b_sides/rev41lp/keymaps/namnlos/config.h
M keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c
M keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c
M keyboards/bop/config.h
M keyboards/checkerboards/quark/keymaps/pezhore/config.h
M keyboards/checkerboards/quark/keymaps/pezhore/keymap.c
M keyboards/contra/keymaps/bramver/keymap.c
M keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c
M keyboards/crkbd/keymaps/nimishgautam/config.h
M keyboards/crkbd/keymaps/ollyhayes/config.h
M keyboards/crkbd/keymaps/rmeli/config.h
M keyboards/crkbd/keymaps/rmeli/keymap.c
M keyboards/donutcables/budget96/keymaps/donut/keymap.c
M keyboards/doro67/multi/keymaps/konstantin/keymap.c
M keyboards/durgod/k320/keymaps/kuenhlee/keymap.c
M keyboards/dztech/dz65rgb/keymaps/catrielmuller/config.h
M keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c
M keyboards/evyd13/wasdat/keymaps/konstantin/keymap.c
M keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c
M keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c
M keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c
M keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c
M keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c
M keyboards/handwired/aek64/keymaps/4sstylz/keymap.c
M keyboards/handwired/d48/keymaps/anderson/keymap.c
M keyboards/handwired/d48/keymaps/default/keymap.c
M keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c
M keyboards/handwired/promethium/keymaps/default/keymap.c
M keyboards/handwired/promethium/keymaps/priyadi/keymap.c
M keyboards/handwired/t111/keymaps/oleg/config.h
M keyboards/handwired/t111/keymaps/oleg/keymap.c
M keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c
M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
M keyboards/handwired/videowriter/keymaps/oleg/keymap.c
M keyboards/handwired/wulkan/keymaps/default/keymap.c
M keyboards/idobao/id75/keymaps/gkbd/config.h
M keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c
M keyboards/input_club/whitefox/keymaps/konstantin/keymap.c
M keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c
M keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c
M keyboards/keebio/levinson/keymaps/drogglbecher/keymap.c
M keyboards/keebio/nyquist/keymaps/bramver/keymap.c
M keyboards/keebio/quefrency/keymaps/bramver/keymap.c
M keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h
M keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h
M keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c
M keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md
M keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h
M keyboards/ktec/ergodone/keymaps/vega/keymap.c
M keyboards/lyso1/lck75/config.h
M keyboards/massdrop/alt/keymaps/charlesrocket/config.h
M keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c
M keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c
M keyboards/mitosis/keymaps/nzen/keymap.c
M keyboards/mlego/m48/keymaps/default/config.h
M keyboards/mlego/m60/keymaps/default/config.h
M keyboards/mlego/m60_split/keymaps/default/config.h
M keyboards/mlego/m65/keymaps/uk/config.h
M keyboards/moonlander/keymaps/drashna/keymap.c
M keyboards/planck/keymaps/buhearns/keymap.c
M keyboards/planck/keymaps/mwpeterson/keymap.c
M keyboards/planck/keymaps/rootiest/config.h
M keyboards/planck/keymaps/rootiest/keymap.c
M keyboards/planck/keymaps/sascha/keymap.c
M keyboards/planck/keymaps/snowkuma/keymap.c
M keyboards/planck/keymaps/zach/zach_common_functions.c
M keyboards/preonic/keymaps/pezhore/config.h
M keyboards/preonic/keymaps/pezhore/keymap.c
M keyboards/preonic/keymaps/zach/zach_common_functions.c
M keyboards/redox/keymaps/jeherve/config.h
M keyboards/reviung/reviung41/keymaps/ciutadellla/config.h
M keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c
M keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/config.h
M keyboards/signum/3_0/keymaps/default/layout.py
M keyboards/spaceman/2_milk/keymaps/emoji/config.h
M keyboards/spaceman/2_milk/keymaps/emoji/readme.md
M keyboards/spaceman/2_milk/keymaps/encg/config.h
M keyboards/spaceman/2_milk/keymaps/encg/readme.md
M keyboards/splitkb/kyria/keymaps/drashna/keymap.c
M keyboards/splitkb/kyria/keymaps/lw/config.h
M keyboards/splitkb/kyria/keymaps/lw/keymap.c
M keyboards/splitkb/kyria/keymaps/lw/readme.md
M keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c
M keyboards/xiudi/xd75/keymaps/billypython/keymap.c
M keyboards/xiudi/xd75/keymaps/bramver/keymap.c
M keyboards/xiudi/xd75/keymaps/markus/config.h
M keyboards/xiudi/xd75/keymaps/markus/keymap.c
M keyboards/xiudi/xd75/keymaps/minna/config.h
M keyboards/xiudi/xd75/keymaps/minna/keymap.c
M keyboards/yatara/drink_me/keymaps/queen/config.h
M keyboards/yatara/drink_me/keymaps/queen/keymap.c
M keyboards/ymdk/melody96/keymaps/dvz/config.h
M keyboards/ymdk/melody96/keymaps/konstantin/keymap.c
M keyboards/ymdk/melody96/keymaps/zunger/keymap.c
M layouts/community/60_iso/bifbofii/keymap.c
M layouts/community/65_ansi_blocker/spidey3/keymap.c
M layouts/community/75_ansi/spidey3/keymap.c
M layouts/community/ergodox/deadcyclo/keymap.c
M layouts/community/ergodox/drashna/keymap.c
M layouts/community/ortho_4x12/bifbofii/keymap.c
M layouts/community/ortho_5x12/riblee/config.h
M layouts/community/ortho_5x12/riblee/keymap.c
M quantum/process_keycode/process_unicode_common.c
M quantum/quantum_keycodes.h
M quantum/quantum_keycodes_legacy.h
M quantum/unicode/unicode.c
M quantum/unicode/unicode.h
M tests/caps_word/caps_word_unicodemap/config.h
M tests/test_common/test_driver.hpp
M users/arkag/arkag.c
M users/drashna/config.h
M users/konstantin/config.h
M users/kuchosauronad0/kuchosauronad0.c
M users/ridingqwerty/ridingqwerty.c
M users/romus/romus.c
M users/rupa/config.h
M users/rupa/wrappers.h
M users/rverst/rverst.c
M users/rverst/unicode.h
M users/sigma/sigma.c
M users/spidey3/config.h
M users/spidey3/layer_rgb.c
M users/spidey3/spidey3.c
M users/spidey3/spidey3_unicode.c
M users/uqs/config.h
M users/uqs/uqs.c
M users/yet-another-developer/yet-another-developer.c
M docs/feature_unicode.md => docs/feature_unicode.md +22 -22
@@ 112,28 112,28 @@ Unicode input in QMK works by inputting a sequence of characters to the OS, sort

The following input modes are available:

* **`UC_MAC`**: macOS built-in Unicode hex input. Supports code points up to `0x10FFFF` (all possible code points).
* **`UNICODE_MODE_MACOS`**: macOS built-in Unicode hex input. Supports code points up to `0x10FFFF` (all possible code points).

  To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
  By default, this mode uses the left Option key (`KC_LALT`) for Unicode input, but this can be changed by defining [`UNICODE_KEY_MAC`](#input-key-configuration) with a different keycode.

  !> Using the _Unicode Hex Input_ input source may disable some Option-based shortcuts, such as Option+Left and Option+Right.

* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports code points up to `0x10FFFF` (all possible code points).
* **`UNICODE_MODE_LINUX`**: Linux built-in IBus Unicode input. Supports code points up to `0x10FFFF` (all possible code points).

  Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
  By default, this mode uses Ctrl+Shift+U (`LCTL(LSFT(KC_U))`) to start Unicode input, but this can be changed by defining [`UNICODE_KEY_LNX`](#input-key-configuration) with a different keycode. This might be required for IBus versions ≥1.5.15, where Ctrl+Shift+U behavior is consolidated into Ctrl+Shift+E.

  Users who wish support in non-GTK apps without IBus may need to resort to a more indirect method, such as creating a custom keyboard layout ([more on this method](#custom-linux-layout)).

* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
* **`UNICODE_MODE_WINDOWS`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.

  To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Reboot afterwards.
  This mode is not recommended because of reliability and compatibility issues; use the `UC_WINC` mode instead.
  This mode is not recommended because of reliability and compatibility issues; use the `UNICODE_MODE_WINCOMPOSE` mode instead.

* **`UC_BSD`**: _(non implemented)_ Unicode input under BSD. Not implemented at this time. If you're a BSD user and want to help add support for it, please [open an issue on GitHub](https://github.com/qmk/qmk_firmware/issues).
* **`UNICODE_MODE_BSD`**: _(non implemented)_ Unicode input under BSD. Not implemented at this time. If you're a BSD user and want to help add support for it, please [open an issue on GitHub](https://github.com/qmk/qmk_firmware/issues).

* **`UC_WINC`**: Windows Unicode input using [WinCompose](https://github.com/samhocevar/wincompose). As of v0.9.0, supports code points up to `0x10FFFF` (all possible code points).
* **`UNICODE_MODE_WINCOMPOSE`**: Windows Unicode input using [WinCompose](https://github.com/samhocevar/wincompose). As of v0.9.0, supports code points up to `0x10FFFF` (all possible code points).

  To enable, install the [latest release](https://github.com/samhocevar/wincompose/releases/latest). Once installed, WinCompose will automatically run on startup. This mode works reliably under all version of Windows supported by the app.
  By default, this mode uses right Alt (`KC_RALT`) as the Compose key, but this can be changed in the WinCompose settings and by defining [`UNICODE_KEY_WINC`](#input-key-configuration) with a different keycode.


@@ 144,15 144,15 @@ The following input modes are available:
To set your desired input mode, add the following define to your `config.h`:

```c
#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
```

This example sets the board's default input mode to `UC_LNX`. You can replace this with `UC_MAC`, `UC_WINC`, or any of the other modes listed [above](#input-modes). The board will automatically use the selected mode on startup, unless you manually switch to another mode (see [below](#keycodes)).
This example sets the board's default input mode to `UNICODE_MODE_LINUX`. You can replace this with `UNICODE_MODE_MACOS`, `UNICODE_MODE_WINCOMPOSE`, or any of the other modes listed [above](#input-modes). The board will automatically use the selected mode on startup, unless you manually switch to another mode (see [below](#keycodes)).

You can also select multiple input modes, which allows you to easily cycle through them using the `UC_MOD`/`UC_RMOD` keycodes.
You can also select multiple input modes, which allows you to easily cycle through them using the `UC_NEXT`/`UC_PREV` keycodes.

```c
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE
```

Note that the values are separated by commas. The board will remember the last used input mode and will continue using it on next power-up. You can disable this and force it to always start with the first mode in the list by adding `#define UNICODE_CYCLE_PERSIST false` to your `config.h`.


@@ 161,18 161,18 @@ Note that the values are separated by commas. The board will remember the last u

You can switch the input mode at any time by using the following keycodes. Adding these to your keymap allows you to quickly switch to a specific input mode, including modes not listed in `UNICODE_SELECTED_MODES`.

|Keycode               |Alias    |Input Mode  |Description                                                                  |
|----------------------|---------|------------|-----------------------------------------------------------------------------|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Next in list|Cycle through selected modes, reverse direction when Shift is held           |
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Prev in list|Cycle through selected modes in reverse, forward direction when Shift is held|
|`UNICODE_MODE_MAC`    |`UC_M_MA`|`UC_MAC`    |Switch to macOS input                                                        |
|`UNICODE_MODE_LNX`    |`UC_M_LN`|`UC_LNX`    |Switch to Linux input                                                        |
|`UNICODE_MODE_WIN`    |`UC_M_WI`|`UC_WIN`    |Switch to Windows input                                                      |
|`UNICODE_MODE_BSD`    |`UC_M_BS`|`UC_BSD`    |Switch to BSD input _(not implemented)_                                      |
|`UNICODE_MODE_WINC`   |`UC_M_WC`|`UC_WINC`   |Switch to Windows input using WinCompose                                     |
|`UNICODE_MODE_EMACS`  |`UC_M_EM`|`UC_EMACS`  |Switch to emacs (`C-x-8 RET`)                                               |

You can also switch the input mode by calling `set_unicode_input_mode(x)` in your code, where _x_ is one of the above input mode constants (e.g. `UC_LNX`).
|Keycode                     |Alias    |Input Mode               |Description                                                                  |
|----------------------------|---------|-------------------------|-----------------------------------------------------------------------------|
|`QK_UNICODE_MODE_NEXT`      |`UC_NEXT`|Next in list             |Cycle through selected modes, reverse direction when Shift is held           |
|`QK_UNICODE_MODE_PREVIOUS`  |`UC_PREV`|Prev in list             |Cycle through selected modes in reverse, forward direction when Shift is held|
|`QK_UNICODE_MODE_MACOS`     |`UC_MAC` |`UNICODE_MODE_MACOS`     |Switch to macOS input                                                        |
|`QK_UNICODE_MODE_LINUX`     |`UC_LINX`|`UNICODE_MODE_LINUX`     |Switch to Linux input                                                        |
|`QK_UNICODE_MODE_WINDOWS`   |`UC_WIN` |`UNICODE_MODE_WINDOWS`   |Switch to Windows input                                                      |
|`QK_UNICODE_MODE_BSD`       |`UC_BSD` |`UNICODE_MODE_BSD`       |Switch to BSD input _(not implemented)_                                      |
|`QK_UNICODE_MODE_WINCOMPOSE`|`UC_WINC`|`UNICODE_MODE_WINCOMPOSE`|Switch to Windows input using WinCompose                                     |
|`QK_UNICODE_MODE_EMACS`     |`UC_EMAC`|`UNICODE_MODE_EMACS`     |Switch to emacs (`C-x-8 RET`)                                                |

You can also switch the input mode by calling `set_unicode_input_mode(x)` in your code, where _x_ is one of the above input mode constants (e.g. `UNICODE_MODE_LINUX`).

?> Using `UNICODE_SELECTED_MODES` is preferable to calling `set_unicode_input_mode()` in `matrix_init_user()` or similar functions, since it's better integrated into the Unicode system and has the added benefit of avoiding unnecessary writes to EEPROM.


M docs/keycodes.md => docs/keycodes.md +13 -12
@@ 839,15 839,16 @@ See also: [Swap Hands](feature_swap_hands.md)

See also: [Unicode Support](feature_unicode.md)

|Key                   |Aliases  |Description                                                     |
|----------------------|---------|----------------------------------------------------------------|
|`UC(c)`               |         |Send Unicode code point `c`, up to `0x7FFF`                     |
|`X(i)`                |         |Send Unicode code point at index `i` in `unicode_map`           |
|`XP(i, j)`            |         |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes                              |
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Cycle through selected input modes in reverse                   |
|`UNICODE_MODE_MAC`    |`UC_M_MA`|Switch to macOS input                                           |
|`UNICODE_MODE_LNX`    |`UC_M_LN`|Switch to Linux input                                           |
|`UNICODE_MODE_WIN`    |`UC_M_WI`|Switch to Windows input                                         |
|`UNICODE_MODE_BSD`    |`UC_M_BS`|Switch to BSD input (not implemented)                           |
|`UNICODE_MODE_WINC`   |`UC_M_WC`|Switch to Windows input using WinCompose                        |
|Key                         |Aliases  |Description                                                     |
|----------------------------|---------|----------------------------------------------------------------|
|`UC(c)`                     |         |Send Unicode code point `c`, up to `0x7FFF`                     |
|`X(i)`                      |         |Send Unicode code point at index `i` in `unicode_map`           |
|`XP(i, j)`                  |         |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|`QK_UNICODE_MODE_NEXT`      |`UC_NEXT`|Cycle through selected input modes                              |
|`QK_UNICODE_MODE_PREVIOUS`  |`UC_PREV`|Cycle through selected input modes in reverse                   |
|`QK_UNICODE_MODE_MACOS`     |`UC_MAC` |Switch to macOS input                                           |
|`QK_UNICODE_MODE_LINUX`     |`UC_LINX`|Switch to Linux input                                           |
|`QK_UNICODE_MODE_WINDOWS`   |`UC_WIN` |Switch to Windows input                                         |
|`QK_UNICODE_MODE_BSD`       |`UC_BSD` |Switch to BSD input (not implemented)                           |
|`QK_UNICODE_MODE_WINCOMPOSE`|`UC_WINC`|Switch to Windows input using WinCompose                        |
|`QK_UNICODE_MODE_EMACS`     |`UC_EMAC`|Switch to emacs (`C-x-8 RET`)                                   |

M keyboards/a_dux/keymaps/daliusd/config.h => keyboards/a_dux/keymaps/daliusd/config.h +1 -1
@@ 17,7 17,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#pragma once

#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX

#define MOUSEKEY_INTERVAL 12
#define MOUSEKEY_MAX_SPEED 6

M keyboards/abacus/keymaps/unicodemap/keymap.c => keyboards/abacus/keymaps/unicodemap/keymap.c +1 -1
@@ 130,7 130,7 @@ bool dip_switch_update_user(uint8_t index, bool active) {


void matrix_init_user(void) {
    set_unicode_input_mode(UC_WINC);
    set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
}

bool encoder_update_user(uint8_t index, bool clockwise) {

M keyboards/atreus62/keymaps/d4mation/keymap.c => keyboards/atreus62/keymaps/d4mation/keymap.c +2 -2
@@ 145,7 145,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_ADJUST] = LAYOUT(
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
    XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, UC_M_WI, UC_M_MA, XXXXXXX,                   XXXXXXX, DF(_DVR),DF(_QWR),XXXXXXX, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, UC_WIN,  UC_MAC,  XXXXXXX,                   XXXXXXX, DF(_DVR),DF(_QWR),XXXXXXX, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, CG_SWAP, CG_NORM, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  ),


@@ 154,7 154,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

/* Runs just one time when the keyboard initializes. */
void eeconfig_init_keymap( void ) {
  set_unicode_input_mode( UC_MAC );
  set_unicode_input_mode( UNICODE_MODE_MACOS );
};

bool process_record_keymap( uint16_t keycode, keyrecord_t *record ) {

M keyboards/b_sides/rev41lp/keymaps/namnlos/config.h => keyboards/b_sides/rev41lp/keymaps/namnlos/config.h +1 -1
@@ 24,7 24,7 @@
#define COMBO_COUNT 3
#define IGNORE_MOD_TAP_INTERRUPT

#define UNICODE_SELECTED_MODES UC_WINC, UC_WIN, UC_MAC, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_WINDOWS, UNICODE_MODE_MACOS, UNICODE_MODE_LINUX

#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 200

M keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c => keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c +1 -1
@@ 166,7 166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_ADJUST] = LAYOUT_rev41lp(
    XXXXXXX,   XXXXXXX, XXXXXXX,   BL_OFF,   BL_DEC,   BL_TOGG,            BL_BRTG,   BL_INC,    BL_ON,  XXXXXXX,  XXXXXXX,  XXXXXXX,
    XXXXXXX,   XXXXXXX, XXXXXXX,  XXXXXXX,  XXXXXXX,   BL_STEP,            XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
    XXXXXXX,   UC_M_WC, UC_M_MA,  UC_M_LN,  XXXXXXX,   XXXXXXX,            QK_BOOT,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
    XXXXXXX,   UC_WINC, UC_MAC,   UC_LINX,  XXXXXXX,   XXXXXXX,            QK_BOOT,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
                                               _______, _______, _______,  _______,  _______
  )
};

M keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c => keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c +1 -1
@@ 113,7 113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_SUPER, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,TG_GAME,TG_DBLO, QK_BOOT,
        VRSN,    _________________ADJUST_L1_________________,    _________________ADJUST_R1_________________, EE_CLR,
        KEYLOCK, _________________ADJUST_L2_________________,    _________________ADJUST_R2_________________, TG_MODS,
        UC_MOD,  _________________ADJUST_L3_________________,    _________________ADJUST_R3_________________, KC_MPLY,
        UC_NEXT, _________________ADJUST_L3_________________,    _________________ADJUST_R3_________________, KC_MPLY,
                                   QK_RBT, AUTO_CTN, _______,    _______, KC_NUKE,
                                           _______, _______,      _______
    )

M keyboards/bop/config.h => keyboards/bop/config.h +1 -1
@@ 41,4 41,4 @@
#define LOCKING_RESYNC_ENABLE

/* Unicode select mode */
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE

M keyboards/checkerboards/quark/keymaps/pezhore/config.h => keyboards/checkerboards/quark/keymaps/pezhore/config.h +1 -1
@@ 15,5 15,5 @@
 */

#pragma once
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE
#define TAPPING_TOGGLE 2

M keyboards/checkerboards/quark/keymaps/pezhore/keymap.c => keyboards/checkerboards/quark/keymaps/pezhore/keymap.c +2 -2
@@ 69,8 69,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
[_FN] = LAYOUT_ortho_4x12(
   KC_GRV,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  POOP,     KC_PSCR,  KC_DEL,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  UC_M_WC,
  _______,    SHRUG,    TFLIP,     POOP,   DPOINT,    STRUT,  _______,  _______,  _______,  _______,   SARCSM,  UC_M_LN,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  UC_WINC,
  _______,    SHRUG,    TFLIP,     POOP,   DPOINT,    STRUT,  _______,  _______,  _______,  _______,   SARCSM,  UC_LINX,
  _______,     KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,  _______
),


M keyboards/contra/keymaps/bramver/keymap.c => keyboards/contra/keymaps/bramver/keymap.c +1 -1
@@ 122,5 122,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};

void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}

M keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c => keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c +4 -4
@@ 281,15 281,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    /* os switcher */
    case OS_LIN:
      set_unicode_input_mode(UC_LNX);
      set_unicode_input_mode(UNICODE_MODE_LINUX);
      return false;
      break;
    case OS_WIN:
      set_unicode_input_mode(UC_WINC);
      set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
      return false;
      break;
    case OS_MAC:
      set_unicode_input_mode(UC_MAC);
      set_unicode_input_mode(UNICODE_MODE_MACOS);
      return false;
      break;



@@ 298,5 298,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}

void matrix_init_user() {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}

M keyboards/crkbd/keymaps/nimishgautam/config.h => keyboards/crkbd/keymaps/nimishgautam/config.h +1 -1
@@ 4,7 4,7 @@
#pragma once

// OS-specific stuff
//#define UNICODE_SELECTED_MODES UC_MAC
//#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS

/* Select hand configuration */
//#define MASTER_LEFT

M keyboards/crkbd/keymaps/ollyhayes/config.h => keyboards/crkbd/keymaps/ollyhayes/config.h +1 -1
@@ 25,7 25,7 @@

#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"

#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX

#ifdef RGB_MATRIX_ENABLE
#   define RGB_MATRIX_KEYPRESSES // reacts to keypresses

M keyboards/crkbd/keymaps/rmeli/config.h => keyboards/crkbd/keymaps/rmeli/config.h +1 -1
@@ 26,7 26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#define TAPPING_TERM 200

#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX

#define AUTO_SHIFT_REPEAT


M keyboards/crkbd/keymaps/rmeli/keymap.c => keyboards/crkbd/keymaps/rmeli/keymap.c +2 -2
@@ 120,11 120,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [_CONFIG] = LAYOUT_split_3x6_3(
  //|-----------------------------------------------------|                    |-----------------------------------------------------|
      QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                       UC_MOD,   AS_UP,   NK_ON, XXXXXXX, XXXXXXX,DF(_QWY),
      QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      UC_NEXT,   AS_UP,   NK_ON, XXXXXXX, XXXXXXX,DF(_QWY),
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI,                      XXXXXXX, AS_TOGG, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      XXXXXXX,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD,                      UC_RMOD, AS_DOWN,  NK_OFF, XXXXXXX, XXXXXXX,DF(_CMK),
      XXXXXXX,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD,                      UC_PREV, AS_DOWN,  NK_OFF, XXXXXXX, XXXXXXX,DF(_CMK),
  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
                                          _______, _______, _______,   _______, _______, _______
                                      //|--------------------------|  |--------------------------|

M keyboards/donutcables/budget96/keymaps/donut/keymap.c => keyboards/donutcables/budget96/keymaps/donut/keymap.c +1 -1
@@ 73,7 73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    /* (3) Fn 2 */
    [_FN2] = LAYOUT_96_ansi(
	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_M_WC, EE_CLR, QK_BOOT, 
	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_WINC, EE_CLR, QK_BOOT, 
	VK_TOGG, 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, 
	RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, 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_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 

M keyboards/doro67/multi/keymaps/konstantin/keymap.c => keyboards/doro67/multi/keymaps/konstantin/keymap.c +1 -1
@@ 38,7 38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     */
    [L_FN] = LAYOUT_multi(
        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  NUMPAD,  KC_SCRL, KC_PAUS,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            KC_INS,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_NEXT, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            KC_INS,
        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______,          _______,          TOP,
        _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP,  KC_VOLD, KC_VOLU, KC_MUTE, _______,          KC_PGUP, BOTTOM,
        _______, DST_P_R, DST_N_A,          KC_WH_D,          _______,          _______,          _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END

M keyboards/durgod/k320/keymaps/kuenhlee/keymap.c => keyboards/durgod/k320/keymaps/kuenhlee/keymap.c +1 -1
@@ 141,5 141,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};

void matrix_init_user(void) {
  set_unicode_input_mode(UC_WINC);
  set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
}

M keyboards/dztech/dz65rgb/keymaps/catrielmuller/config.h => keyboards/dztech/dz65rgb/keymaps/catrielmuller/config.h +1 -1
@@ 1,3 1,3 @@
#define LEADER_TIMEOUT 300
#define FORCE_NKRO
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WIN, UC_WINC
\ No newline at end of file
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINDOWS, UNICODE_MODE_WINCOMPOSE
\ No newline at end of file

M keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c => keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c +1 -1
@@ 224,7 224,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [_CONFIG] = LAYOUT_65_ansi(
        TO(_MAIN), 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_ACL2,
        KC_NO, KC_PWR, KC_SLEP, KC_WAKE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, DB_TOGG, EE_CLR, KC_NO, KC_ACL1,
        KC_NO, UC_RMOD, UC_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ACL0,
        KC_NO, UC_PREV, UC_NEXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ACL0,
        KC_NO, MAGIC_TOGGLE_NKRO, MAGIC_UNHOST_NKRO, MAGIC_HOST_NKRO, 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, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
    ),

M keyboards/evyd13/wasdat/keymaps/konstantin/keymap.c => keyboards/evyd13/wasdat/keymaps/konstantin/keymap.c +1 -1
@@ 46,7 46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [L_FN] = LAYOUT_tkl_iso(
        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NUMPAD,  KC_MUTE,
        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  CLEAR,   KC_MPLY, KC_MSTP, KC_VOLU,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, _______, _______, _______, _______,          KC_MPRV, KC_MNXT, KC_VOLD,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_NEXT, _______, _______, _______, _______, _______,          KC_MPRV, KC_MNXT, KC_VOLD,
        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP,  _______, _______, _______,          _______,          KC_PGUP,
        _______, DST_P_R, DST_N_A,                            KC_WH_D,                            _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END

M keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c => keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c +1 -1
@@ 42,5 42,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,             _______,  _______,  _______,
  _______,  RGB_HUI,  RGB_HUD,  RGB_SPD,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   RGB_VAI,  _______,  _______,  _______,  _______,
	_______,  UC_M_WI,  _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______)
	_______,  UC_WIN,   _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______)
};

M keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c => keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c +1 -1
@@ 42,7 42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,             _______,  _______,  _______,
  _______,  RGB_HUI,  RGB_HUD,  RGB_SPD,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   RGB_VAI,  _______,  _______,  _______,  _______,
	_______,  UC_M_WI,  _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______),
	_______,  UC_WIN,  _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______),
[2] = LAYOUT(
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,

M keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c => keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c +1 -1
@@ 40,5 40,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,             _______,  _______,  _______,
  _______,  _______,  RGB_SAI,  RGB_SAD,  RGB_SPD,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   RGB_VAI,  _______,  _______,  _______,  _______,
  _______,  UC_M_WI,  _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______)
  _______,  UC_WIN,   _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______)
};

M keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c => keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c +1 -1
@@ 40,7 40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,             _______,  _______,  _______,
  _______,  _______,  RGB_SAI,  RGB_SAD,  RGB_SPD,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   RGB_VAI,  _______,  _______,  _______,  _______,
	_______,  UC_M_WI,  _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______),
	_______,  UC_WIN,   _______,                      _______,                                _______,  _______,  _______, RGB_RMOD,   RGB_VAD,  RGB_MOD,  _______,  _______),
[2] = LAYOUT(
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,
  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,  _______,  _______,  _______,

M keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c => keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c +1 -1
@@ 135,7 135,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

void matrix_init_user(void)
{
    set_unicode_input_mode(UC_WINC);  /* See https://jayliu50.github.io/qmk-cheatsheet/ */
    set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);  /* See https://jayliu50.github.io/qmk-cheatsheet/ */
}



M keyboards/handwired/aek64/keymaps/4sstylz/keymap.c => keyboards/handwired/aek64/keymaps/4sstylz/keymap.c +1 -1
@@ 71,7 71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

// Set the unicode input mode for using UC.
void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}

// Processing all the key pressed.

M keyboards/handwired/d48/keymaps/anderson/keymap.c => keyboards/handwired/d48/keymaps/anderson/keymap.c +1 -1
@@ 133,7 133,7 @@ void keyboard_post_init_user(void) {
}

void eeconfig_init_user(void) {
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
}

void matrix_init_user(void) {

M keyboards/handwired/d48/keymaps/default/keymap.c => keyboards/handwired/d48/keymaps/default/keymap.c +1 -1
@@ 110,7 110,7 @@ void keyboard_post_init_user(void) {
}

void eeconfig_init_user(void) {
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
}

static uint32_t last_update = 0;

M keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c => keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c +1 -1
@@ 339,7 339,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

// Unicode input mode set to Windows using WinCompose
void matrix_init_user(void) {
    set_unicode_input_mode(UC_WINC);
    set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
};
#ifdef OLED_ENABLE
bool oled_task_user(void) {

M keyboards/handwired/promethium/keymaps/default/keymap.c => keyboards/handwired/promethium/keymaps/default/keymap.c +8 -8
@@ 603,14 603,14 @@ void led_set_unicode_input_mode(void) {
  rgbsps_set(LED_IND_WINDOWS, COLOR_BLANK);

  switch (get_unicode_input_mode()) {
    case UC_LNX:
    case UNICODE_MODE_LINUX:
      rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
      break;
    case UC_MAC:
    case UNICODE_MODE_MACOS:
      rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
      break;
    case UC_WIN:
    case UC_WINC:
    case UNICODE_MODE_WINDOWS:
    case UNICODE_MODE_WINCOMPOSE:
      rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
      break;
  }


@@ 1199,21 1199,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    // OS switchers
    case LINUX:
      set_unicode_input_mode(UC_LNX);
      set_unicode_input_mode(UNICODE_MODE_LINUX);
#ifdef RGBSPS_ENABLE
      led_set_unicode_input_mode();
#endif
      return false;
      break;
    case WIN:
      set_unicode_input_mode(UC_WINC);
      set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
#ifdef RGBSPS_ENABLE
      led_set_unicode_input_mode();
#endif
      return false;
      break;
    case OSX:
      set_unicode_input_mode(UC_MAC);
      set_unicode_input_mode(UNICODE_MODE_MACOS);
#ifdef RGBSPS_ENABLE
      led_set_unicode_input_mode();
#endif


@@ 1278,7 1278,7 @@ void set_output_user(uint8_t output) {
void matrix_init_user() {
  wait_ms(500); // give time for usb to initialize

  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);

#ifdef RGBSPS_ENABLE
  led_init();

M keyboards/handwired/promethium/keymaps/priyadi/keymap.c => keyboards/handwired/promethium/keymaps/priyadi/keymap.c +8 -8
@@ 606,14 606,14 @@ void led_set_unicode_input_mode(void) {
  rgbsps_set(LED_IND_WINDOWS, COLOR_BLANK);

  switch (get_unicode_input_mode()) {
    case UC_LNX:
    case UNICODE_MODE_LINUX:
      rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
      break;
    case UC_MAC:
    case UNICODE_MODE_MACOS:
      rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
      break;
    case UC_WIN:
    case UC_WINC:
    case UNICODE_MODE_WINDOWS:
    case UNICODE_MODE_WINCOMPOSE:
      rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
      break;
  }


@@ 1202,21 1202,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    // OS switchers
    case LINUX:
      set_unicode_input_mode(UC_LNX);
      set_unicode_input_mode(UNICODE_MODE_LINUX);
#ifdef RGBSPS_ENABLE
      led_set_unicode_input_mode();
#endif
      return false;
      break;
    case WIN:
      set_unicode_input_mode(UC_WINC);
      set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
#ifdef RGBSPS_ENABLE
      led_set_unicode_input_mode();
#endif
      return false;
      break;
    case OSX:
      set_unicode_input_mode(UC_MAC);
      set_unicode_input_mode(UNICODE_MODE_MACOS);
#ifdef RGBSPS_ENABLE
      led_set_unicode_input_mode();
#endif


@@ 1281,7 1281,7 @@ void set_output_user(uint8_t output) {
void matrix_init_user() {
  wait_ms(500); // give time for usb to initialize

  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);

#ifdef RGBSPS_ENABLE
  led_init();

M keyboards/handwired/t111/keymaps/oleg/config.h => keyboards/handwired/t111/keymaps/oleg/config.h +1 -1
@@ 17,4 17,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#pragma once

#define UNICODE_SELECTED_MODES UC_WIN, UC_WINC
\ No newline at end of file
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINDOWS, UNICODE_MODE_WINCOMPOSE
\ No newline at end of file

M keyboards/handwired/t111/keymaps/oleg/keymap.c => keyboards/handwired/t111/keymaps/oleg/keymap.c +1 -1
@@ 116,7 116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `-------------------------------------------------------------------------------------------------------------------------------------'
*/    
    [1] = LAYOUT(
    VRSN,             KC_SLEP, _______, UC_MOD,  _______, _______, _______, _______, _______, _______,        _______,        _______, _______, _______, _______, _______, _______,
    VRSN,             KC_SLEP, _______, UC_NEXT, _______, _______, _______, _______, _______, _______,        _______,        _______, _______, _______, _______, _______, _______,
    _______, _______, X(UAT),  X(UHSH), X(UDLR), X(USCT), X(UCFX), X(UAMP), X(UAST), _______, _______,        _______,               _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______,
    _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, _______, _______, _______, KC_SYRQ, KC_SCRL, KC_PAUS,        XP(ULSB, ULCB), XP(URSB, URCB),        _______,   _______, _______, _______, _______, _______, _______,
    _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5, _______, _______, _______, _______, _______, XP(USCO, UCLN), XP(UAPO, UQOT),        _______,                          _______, _______, _______, _______, _______, _______,

M keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c => keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c +1 -1
@@ 107,7 107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [_ADJUST] = LAYOUT_4x6_right_wrapper(
        QK_MAKE, _________________ADJUST_L1_________________,                      _________________ADJUST_R1_________________, QK_BOOT,
        VRSN,    _________________ADJUST_L2_________________,                      _________________ADJUST_R2_________________, EE_CLR,
        UC_MOD,  _________________ADJUST_L3_________________,                      _________________ADJUST_R3_________________, TG_MODS,
        UC_NEXT, _________________ADJUST_L3_________________,                      _________________ADJUST_R3_________________, TG_MODS,
                          HPT_DWLI, HPT_DWLD,                                                        TG_GAME, TG_DBLO,
                                            HPT_TOG, HPT_BUZ,                               KC_NUKE,
                                                     _______, _______,             _______,

M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c => keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c +1 -1
@@ 123,7 123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE,                 KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT,
        VRSN,    _________________ADJUST_L1_________________,                        _________________ADJUST_R1_________________, EE_CLR,
        KEYLOCK, _________________ADJUST_L2_________________,                        _________________ADJUST_R2_________________, TG_MODS,
        UC_MOD,  _________________ADJUST_L3_________________,                        _________________ADJUST_R3_________________, KC_MPLY,
        UC_NEXT, _________________ADJUST_L3_________________,                        _________________ADJUST_R3_________________, KC_MPLY,
                   TG(_DIABLOII), AUTO_CTN,                                                            TG_GAME, TG_DBLO,
                                            _______, QK_RBT,                                  KC_NUKE,
                                                     _______, _______,               _______,

M keyboards/handwired/videowriter/keymaps/oleg/keymap.c => keyboards/handwired/videowriter/keymaps/oleg/keymap.c +1 -1
@@ 103,6 103,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {


void matrix_init_user(void) {
  set_unicode_input_mode(UC_WIN);
  set_unicode_input_mode(UNICODE_MODE_WINDOWS);
}


M keyboards/handwired/wulkan/keymaps/default/keymap.c => keyboards/handwired/wulkan/keymaps/default/keymap.c +1 -1
@@ 107,5 107,5 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}

void eeconfig_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}

M keyboards/idobao/id75/keymaps/gkbd/config.h => keyboards/idobao/id75/keymaps/gkbd/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#define UNICODE_SELECTED_MODES UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE

/* Selected Unicode input method relies on WinCompose
 * https://docs.qmk.fm/#/feature_unicode?id=input-modes

M keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c => keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c +1 -1
@@ 258,7 258,7 @@ L06 -> <TBD>: UNSPECIFIED

// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
};



M keyboards/input_club/whitefox/keymaps/konstantin/keymap.c => keyboards/input_club/whitefox/keymaps/konstantin/keymap.c +1 -1
@@ 38,7 38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     */
    [L_FN] = LAYOUT_truefox(
        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  NUMPAD,  KC_SCRL, KC_PAUS,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            KC_INS,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_NEXT, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            KC_INS,
        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______,          _______,          TOP,
        _______,          KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP,  KC_VOLD, KC_VOLU, KC_MUTE, _______,          KC_PGUP, BOTTOM,
        _______, DST_P_R, DST_N_A,                            KC_WH_D,                   _______, _______,                   KC_HOME, KC_PGDN, KC_END

M keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c => keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c +1 -1
@@ 161,7 161,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}

void eeconfig_init_user(void) {
  set_unicode_input_mode(UC_MAC);
  set_unicode_input_mode(UNICODE_MODE_MACOS);
}

void matrix_init_user(void) {

M keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c => keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c +1 -1
@@ 27,7 27,7 @@

//Unicode keymaps
void eeconfig_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}
#define DE_ADIA     UC(0x00E4)
#define DE_SS       UC(0x00DF)

M keyboards/keebio/levinson/keymaps/drogglbecher/keymap.c => keyboards/keebio/levinson/keymaps/drogglbecher/keymap.c +1 -1
@@ 72,5 72,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};

void matrix_init_user(void) {
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
};

M keyboards/keebio/nyquist/keymaps/bramver/keymap.c => keyboards/keebio/nyquist/keymaps/bramver/keymap.c +1 -1
@@ 241,7 241,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};

void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
};



M keyboards/keebio/quefrency/keymaps/bramver/keymap.c => keyboards/keebio/quefrency/keymaps/bramver/keymap.c +1 -1
@@ 127,5 127,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};

void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
};

M keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h => keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h +1 -1
@@ 61,7 61,7 @@
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50

// Unicode for Linux
#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
#define UNICODE_KEY_LNX  LCTL(LSFT(KC_U))

// Leader config

M keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h => keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h +1 -1
@@ 16,7 16,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

#define UNICODE_SELECTED_MODES UC_WINC, UC_WIN, UC_LNX, UC_MAC
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_WINDOWS, UNICODE_MODE_LINUX, UNICODE_MODE_MACOS
#define UNICODE_CYCLE_PERSIST false

#ifdef RGB_DI_PIN

M keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c => keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c +1 -1
@@ 56,7 56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_NO, KC_NO, KC_NO, UC(L'€'), UC(L'§'), UC(L'°'), KC_NO, UC(L'ü'), KC_NO, UC(L'ö'), UC(L'–'), KC_NO,
        KC_NO, UC(L'ä'), UC(L'ß'), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
        MO(_UNI2), UC(L'„'), UC(L'“'), UC(L'”'), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, UC(L'…'), KC_NO,
        KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, UC_MOD
        KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, UC_NEXT
    ),
    [_UNI2] = LAYOUT(
        KC_NO, KC_NO, KC_NO, UC(L'é'), KC_NO, KC_NO, KC_NO, UC(L'Ü'), KC_NO, UC(L'Ö'), UC(L'—'), KC_NO,

M keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md => keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md +1 -1
@@ 88,7 88,7 @@ UNI Layer
* Umlauts
* Punctuation
* Special Characters
* Switching [Input Modes](https://beta.docs.qmk.fm/using-qmk/software-features/feature_unicode#2-input-modes-id-input-modes) (UC_WINC, UC_WIN, UC_LNX, UC_MAC)
* Switching [Input Modes](https://beta.docs.qmk.fm/using-qmk/software-features/feature_unicode#2-input-modes-id-input-modes) (UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_WINDOWS, UNICODE_MODE_LINUX, UNICODE_MODE_MACOS)

## 5 UNI2 Layer
```

M keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h => keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h +1 -1
@@ 4,4 4,4 @@
#pragma once

#define TAPPING_TERM 175
#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX

M keyboards/ktec/ergodone/keymaps/vega/keymap.c => keyboards/ktec/ergodone/keymaps/vega/keymap.c +4 -4
@@ 649,8 649,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[FNLR] = LAYOUT_ergodox(
       // left hand
       UC_M_LN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_NO,
       UC_M_WC,KC_F11, KC_F12, KC_F13,KC_F14, KC_F15,  KC_NO,
       UC_LINX,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_NO,
       UC_WINC,KC_F11, KC_F12, KC_F13,KC_F14, KC_F15,  KC_NO,
       TO(TINY),KC_F21, KC_F22, KC_F23,KC_F24, MAGIC_TOGGLE_NKRO,
       TO(FULL),KC_PAUSE,KC_PSCR,KC_SCRL,KC_NO,KC_NO,KC_NO,
          EE_CLR,TO(BASE),TO(BASE),TO(BASE),TO(BASE),


@@ 658,8 658,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                               KC_NO,
                               KC_NO,KC_NO,KC_NO,
       // right hand
       TO(BASE), KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  UC_M_LN,
       KC_NO, KC_F16,  KC_F17,KC_F18,   KC_F19,  KC_F20,  UC_M_WI,
       TO(BASE), KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  UC_LINX,
       KC_NO, KC_F16,  KC_F17,KC_F18,   KC_F19,  KC_F20,  UC_WIN,
                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,

M keyboards/lyso1/lck75/config.h => keyboards/lyso1/lck75/config.h +1 -1
@@ 60,7 60,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#define OLED_TIMEOUT 10000

#define UNICODE_SELECTED_MODES UC_WINC, UC_MAC, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_MACOS, UNICODE_MODE_LINUX

#define UNICODE_CYCLE_PERSIST false


M keyboards/massdrop/alt/keymaps/charlesrocket/config.h => keyboards/massdrop/alt/keymaps/charlesrocket/config.h +1 -1
@@ 16,4 16,4 @@

#pragma once

#define UNICODE_SELECTED_MODES UC_BSD, UC_MAC, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_BSD, UNICODE_MODE_MACOS, UNICODE_MODE_LINUX

M keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c => keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c +1 -1
@@ 61,7 61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______, _______, EE_CLR,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,
        _______, UC_RMOD, UC_MOD,  _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______,          _______, _______,
        _______, UC_PREV, UC_NEXT, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______,          _______, _______,
        _______, LAG_SWP, LAG_NRM,                            _______,                            _______, TG(3),   _______, _______, _______
    ),
    [3] = LAYOUT(

M keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c => keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c +2 -2
@@ 65,7 65,7 @@ void matrix_scan_user(void) {
    }
    //tableflip (LEADER - TF)
    SEQ_TWO_KEYS(KC_T, KC_F) {
        set_unicode_input_mode(UC_MAC);
        set_unicode_input_mode(UNICODE_MODE_MACOS);
        send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
    }
    //screencap (LEADER - SC)


@@ 74,7 74,7 @@ void matrix_scan_user(void) {
    }
    //screencap (LEADER - TM)
    SEQ_TWO_KEYS(KC_T, KC_M) {
        set_unicode_input_mode(UC_MAC);
        set_unicode_input_mode(UNICODE_MODE_MACOS);
        register_unicode(0x2122); // ™
    }
    /*

M keyboards/mitosis/keymaps/nzen/keymap.c => keyboards/mitosis/keymaps/nzen/keymap.c +1 -1
@@ 203,5 203,5 @@ void matrix_scan_user(void) {
};

void matrix_init_user(void) {
	set_unicode_input_mode(UC_LNX); // or UC_WINC
	set_unicode_input_mode(UNICODE_MODE_LINUX); // or UNICODE_MODE_WINCOMPOSE
};

M keyboards/mlego/m48/keymaps/default/config.h => keyboards/mlego/m48/keymaps/default/config.h +1 -1
@@ 18,4 18,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#pragma once

#define TAPPING_TOGGLE 2
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE

M keyboards/mlego/m60/keymaps/default/config.h => keyboards/mlego/m60/keymaps/default/config.h +1 -1
@@ 18,4 18,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#pragma once

#define TAPPING_TOGGLE 2
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE

M keyboards/mlego/m60_split/keymaps/default/config.h => keyboards/mlego/m60_split/keymaps/default/config.h +1 -1
@@ 18,4 18,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#pragma once

#define TAPPING_TOGGLE 2
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE

M keyboards/mlego/m65/keymaps/uk/config.h => keyboards/mlego/m65/keymaps/uk/config.h +2 -2
@@ 19,8 19,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#define TAPPING_TOGGLE 2

#define UNICODE_SELECTED_MODES UC_LNX
//#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
//#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE

#ifdef WPM_ENABLE
#define WPM_SAMPLE_SECONDS 10

M keyboards/moonlander/keymaps/drashna/keymap.c => keyboards/moonlander/keymaps/drashna/keymap.c +1 -1
@@ 109,7 109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE,_______,   KC_NUKE,KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT,
        VRSN,    _________________ADJUST_L1_________________, TG(_DIABLOII),  _______, _________________ADJUST_R1_________________, EE_CLR,
        KEYLOCK, _________________ADJUST_L2_________________, _______,        _______, _________________ADJUST_R2_________________, RGB_IDL,
        UC_MOD,  _________________ADJUST_L3_________________,                          _________________ADJUST_R3_________________, TG_MODS,
        UC_NEXT, _________________ADJUST_L3_________________,                          _________________ADJUST_R3_________________, TG_MODS,
        _______, _______, _______, _______, _______,          _______,        _______,          _______, _______, _______, _______, AUTO_CTN,
                                            QK_RBT,  _______, _______,        _______, _______, _______
    ),

M keyboards/planck/keymaps/buhearns/keymap.c => keyboards/planck/keymaps/buhearns/keymap.c +1 -1
@@ 54,7 54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  UC(0xB0), UC(0xB9), UC(0xB2), UC(0xB3), UC(0xDF),   UC(0x20AC), KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
  KC_TRNS,  UC(0xC4), UC(0xD6), UC(0xDC), UC(0xBB),   UC(0xAB),   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
  KC_TRNS,  UC(0xE4), UC(0xF6), UC(0xFC), UC(0x2022), KC_NO,      KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS, UC_M_MA, UC_M_LN, UC_M_WI, UC_M_WC
  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS, UC_MAC,  UC_LINX, UC_WIN,  UC_WINC
)};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {

M keyboards/planck/keymaps/mwpeterson/keymap.c => keyboards/planck/keymaps/mwpeterson/keymap.c +1 -1
@@ 255,7 255,7 @@ void plover_lookup(void) {
}

void matrix_init_user(void) {
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
};

layer_state_t layer_state_set_user(layer_state_t state) {

M keyboards/planck/keymaps/rootiest/config.h => keyboards/planck/keymaps/rootiest/config.h +1 -1
@@ 91,7 91,7 @@
/*
 * UNICODE options
 */
#define UNICODE_SELECTED_MODES UC_WINC, UC_LNX, UC_MAC  // Define the methods used for in/outputting unicode
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_LINUX, UNICODE_MODE_MACOS  // Define the methods used for in/outputting unicode

/*
 * TAP-DANCE options

M keyboards/planck/keymaps/rootiest/keymap.c => keyboards/planck/keymaps/rootiest/keymap.c +2 -2
@@ 413,7 413,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {                  
    * `-----------------------------------------------------------------------------------'
    */
    [_TABULA] = LAYOUT_planck_mit(                                                                                                   //
        KC_ESC, KC_ALTF4, VK_TOGG, PRINT_WPM_KEY, WAKE_ANI_TOG, WAKE_AUD_TOG, KC_REDO, UC_MOD, UC_M_WC, CG_TOGG, AG_TOGG, KC_DLINE,  //
        KC_ESC, KC_ALTF4, VK_TOGG, PRINT_WPM_KEY, WAKE_ANI_TOG, WAKE_AUD_TOG, KC_REDO, UC_NEXT, UC_WINC, CG_TOGG, AG_TOGG, KC_DLINE,  //
        KC_NXTAB, KC_SLCTALL, KC_SAVE, KC_TRNS, KC_FIND, SH_TG, SH_TG, IRONY, KC_LCUT, KC_LCOPY, KC_TRNS, KC_KILL,                   //
        KC_LSFT, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_PRVWD, KC_NXTWD, TG(_MOUSY), KC_TRNS, KC_HOME, KC_END, SC_SENT,              //
        TO(_BASE), KC_LCTL, KC_LGUI, KC_LALT, SC_LSPO, ALT_TAB, SC_RSPC, KC_PRVWD, KC_BRID, KC_BRIU, KC_NXTWD),


@@ 430,7 430,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {                  
     */

    [_MOUSY] = LAYOUT_planck_mit(                                                                                                  //
        KC_ESC, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, UC_MOD, UC_M_WC, CG_TOGG, AG_TOGG, KC_BSPC,  //
        KC_ESC, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, UC_NEXT, UC_WINC, CG_TOGG, AG_TOGG, KC_BSPC,  //
        KC_TAB, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, IRONY, VK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS,                   //
        KC_LSFT, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_PRVWD, KC_NXTWD, KC_TRNS, KC_HOME, KC_BTN3, KC_END, SC_SENT,               //
        TO(_BASE), KC_LCTL, KC_LGUI, KC_LALT, KC_BTN1, ALT_TAB, KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R)};

M keyboards/planck/keymaps/sascha/keymap.c => keyboards/planck/keymaps/sascha/keymap.c +1 -1
@@ 37,5 37,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};

void matrix_init_user(void) {
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
};

M keyboards/planck/keymaps/snowkuma/keymap.c => keyboards/planck/keymaps/snowkuma/keymap.c +1 -1
@@ 369,5 369,5 @@ void matrix_scan_user(void) {
}

void matrix_init_user(void) {
    set_unicode_input_mode(UC_MAC);
    set_unicode_input_mode(UNICODE_MODE_MACOS);
}

M keyboards/planck/keymaps/zach/zach_common_functions.c => keyboards/planck/keymaps/zach/zach_common_functions.c +2 -2
@@ 301,7 301,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    #ifdef UNICODE_ENABLE
    case UNIWIN:
        if(record->event.pressed){
            set_unicode_input_mode(UC_WIN);
            set_unicode_input_mode(UNICODE_MODE_WINDOWS);
            #ifdef AUDIO_ENABLE
              PLAY_SONG(uniwin);
            #endif


@@ 310,7 310,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
        break;
    case UNILIN:
        if(record->event.pressed){
            set_unicode_input_mode(UC_LNX);
            set_unicode_input_mode(UNICODE_MODE_LINUX);
            #ifdef AUDIO_ENABLE
              PLAY_SONG(unilin);
            #endif

M keyboards/preonic/keymaps/pezhore/config.h => keyboards/preonic/keymaps/pezhore/config.h +1 -1
@@ 15,7 15,7 @@
 */

#pragma once
#define UNICODE_SELECTED_MODES UC_WINC, UC_LNX, UC_MAC
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_LINUX, UNICODE_MODE_MACOS
#ifdef AUDIO_ENABLE
    #define STARTUP_SONG SONG(PREONIC_SOUND)
    // #define STARTUP_SONG SONG(NO_SOUND)

M keyboards/preonic/keymaps/pezhore/keymap.c => keyboards/preonic/keymaps/pezhore/keymap.c +5 -5
@@ 65,7 65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * ,-----------------------------------------------------------------------------------.
 * |RGBTgl|Brigt-|Brigt+|      |      |      |      |      |      |      |      | POOP |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * | RGB+ | Hue- | Hue+ |      |      |      |      |      |      |      |PrtScr|UC_MOD|
 * | RGB+ | Hue- | Hue+ |      |      |      |      |      |      |      |PrtScr|UC_Nxt|
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 * | RGB- | Sat- | Sat+ |      |      |      |      |      |      |      |      |UC_Wnc|
 * |------+------+------+------+------+------|------+------+------+------+------+------|


@@ 76,10 76,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
[_FN] = LAYOUT_preonic_grid(
  RGB_TOG,  RGB_VAD, RGB_VAI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  POOP,
  RGB_MOD,  RGB_HUD, RGB_HUI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_PSCR,  UC_MOD,
  RGB_RMOD, RGB_SAD, RGB_SAI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  UC_M_WC,
  _______,  RGB_SPD, RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  UC_M_LN,
  _______,  SHRUG,   TFLIP,    DPOINT,   STRUT,    _______,  _______,  _______,   _______, TG_NUMP,   _______,  UC_M_MA
  RGB_MOD,  RGB_HUD, RGB_HUI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_PSCR,  UC_NEXT,
  RGB_RMOD, RGB_SAD, RGB_SAI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  UC_WINC,
  _______,  RGB_SPD, RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  UC_LINX,
  _______,  SHRUG,   TFLIP,    DPOINT,   STRUT,    _______,  _______,  _______,   _______, TG_NUMP,  _______,  UC_MAC
),

/* Numpad

M keyboards/preonic/keymaps/zach/zach_common_functions.c => keyboards/preonic/keymaps/zach/zach_common_functions.c +2 -2
@@ 301,7 301,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    #ifdef UNICODE_ENABLE
    case UNIWIN:
        if(record->event.pressed){
            set_unicode_input_mode(UC_WIN);
            set_unicode_input_mode(UNICODE_MODE_WINDOWS);
            #ifdef AUDIO_ENABLE
              PLAY_SONG(uniwin);
            #endif


@@ 310,7 310,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
        break;
    case UNILIN:
        if(record->event.pressed){
            set_unicode_input_mode(UC_LNX);
            set_unicode_input_mode(UNICODE_MODE_LINUX);
            #ifdef AUDIO_ENABLE
              PLAY_SONG(unilin);
            #endif

M keyboards/redox/keymaps/jeherve/config.h => keyboards/redox/keymaps/jeherve/config.h +1 -1
@@ 33,7 33,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SLEEP

/* Set Unicode mode by default */
#define UNICODE_SELECTED_MODES UC_MAC
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS

/* Custom startup sound */
#ifdef AUDIO_ENABLE

M keyboards/reviung/reviung41/keymaps/ciutadellla/config.h => keyboards/reviung/reviung41/keymaps/ciutadellla/config.h +1 -1
@@ 24,4 24,4 @@
#endif

#define TAPPING_TERM 200
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE

M keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c => keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c +1 -1
@@ 133,7 133,7 @@


 void matrix_init_user(){
     set_unicode_input_mode(UC_MAC);
     set_unicode_input_mode(UNICODE_MODE_MACOS);
 }



M keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/config.h => keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/config.h +1 -1
@@ 20,4 20,4 @@

#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
#define UNICODE_SELECTED_MODES UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE

M keyboards/signum/3_0/keymaps/default/layout.py => keyboards/signum/3_0/keymaps/default/layout.py +1 -1
@@ 398,7 398,7 @@ qmk_dict = {
    "_sp_swp": "SHT(KC_SPC)",
    # Unicode support (via X()) included implicitly
    # Switching Unicode Input Modes
    "UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_mac": "UC_M_MA",
    "UC_win": "UC_WINC", "UC_lnx": "UC_LINX", "UC_mac": "UC_MAC",

    # custom keys
    "altF4": "LALT(KC_F4)",

M keyboards/spaceman/2_milk/keymaps/emoji/config.h => keyboards/spaceman/2_milk/keymaps/emoji/config.h +1 -1
@@ 1,2 1,2 @@
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WIN, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINDOWS, UNICODE_MODE_WINCOMPOSE
#define TAPPING_TERM 300
\ No newline at end of file

M keyboards/spaceman/2_milk/keymaps/emoji/readme.md => keyboards/spaceman/2_milk/keymaps/emoji/readme.md +5 -5
@@ 11,14 11,14 @@ corresponding input mode has to be set in QMK.

Documentation: [Feature Unicode](https://beta.docs.qmk.fm/features/feature_unicode#input-modes)

On this keymap the default unicode mode it's `UC_LNX`.
On this keymap the default unicode mode it's `UNICODE_MODE_LINUX`.
You can change it permanently tapping 2 times the KeyOne to select the next mode.

## Unicode Mode List
- UC_LNX
- UC_MAC
- UC_WIN
- UC_WINC
- UNICODE_MODE_LINUX
- UNICODE_MODE_MACOS
- UNICODE_MODE_WINDOWS
- UNICODE_MODE_WINCOMPOSE

# Keymap
To add more functionality to this Minimal Keyboard, 

M keyboards/spaceman/2_milk/keymaps/encg/config.h => keyboards/spaceman/2_milk/keymaps/encg/config.h +1 -1
@@ 16,5 16,5 @@

#pragma once

#define UNICODE_SELECTED_MODES UC_MAC, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE
#define UNICODE_CYCLE_PERSIST true

M keyboards/spaceman/2_milk/keymaps/encg/readme.md => keyboards/spaceman/2_milk/keymaps/encg/readme.md +1 -1
@@ 16,7 16,7 @@ The bottom button outputs 3 random emojis one by one. The random function takes 

## Unicode Setup

This keymap's default unicode input mode is `UC_WINC` which requires [WinCompose](https://github.com/samhocevar/wincompose). For other OSes, see [QMK documentation on unicode input modes](https://docs.qmk.fm/#/feature_unicode?id=input-modes).
This keymap's default unicode input mode is `UNICODE_MODE_WINCOMPOSE` which requires [WinCompose](https://github.com/samhocevar/wincompose). For other OSes, see [QMK documentation on unicode input modes](https://docs.qmk.fm/#/feature_unicode?id=input-modes).

## Ideas for the future


M keyboards/splitkb/kyria/keymaps/drashna/keymap.c => keyboards/splitkb/kyria/keymaps/drashna/keymap.c +1 -1
@@ 92,7 92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [_ADJUST] = LAYOUT_wrapper(
        QK_MAKE, _________________ADJUST_L1_________________,                                       _________________ADJUST_R1_________________, QK_BOOT,
        VRSN,    _________________ADJUST_L2_________________,                                       _________________ADJUST_R2_________________, EE_CLR,
        UC_MOD,  _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK,   MG_NKRO, UC_MOD,  _________________ADJUST_R3_________________, TG_MODS,
        UC_NEXT, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK,   MG_NKRO, UC_NEXT, _________________ADJUST_R3_________________, TG_MODS,
                                   QK_RBT,  _______, KEYLOCK, KC_NUKE, _______,   _______, _______, _______, _______, AUTO_CTN
    ),
//     [_LAYERINDEX] = LAYOUT_wrapper(

M keyboards/splitkb/kyria/keymaps/lw/config.h => keyboards/splitkb/kyria/keymaps/lw/config.h +1 -1
@@ 23,4 23,4 @@
// #define SPLIT_USB_DETECT
// #define NO_USB_STARTUP_CHECK

#define UNICODE_SELECTED_MODES UC_LNX, UC_WINC // support for Linux and Windows unicode 
\ No newline at end of file
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE // support for Linux and Windows unicode 
\ No newline at end of file

M keyboards/splitkb/kyria/keymaps/lw/keymap.c => keyboards/splitkb/kyria/keymaps/lw/keymap.c +2 -2
@@ 129,7 129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * |--------+------+------+------+------+------|                              |------+------+------+------+------+--------|
 * |        | Brt- | Prev | Bckw | Stop | Vol- |                              |  End | Left | Down | Right|ScrLck| BkSpace|
 * |--------+------+------+------+------+------+-------------.  ,-------------+------+------+------+------+------+--------|
 * | LShift |  ´   |  `   |  ^   |  ¨   | Mute |      |UC_MOD|  |RShift| Menu | PrtSc| ç/Ç  | § °  |      | SAVE | Insert |
 * | LShift |  ´   |  `   |  ^   |  ¨   | Mute |      |UC_Nxt|  |RShift| Menu | PrtSc| ç/Ç  | § °  |      | SAVE | Insert |
 * `----------------------+------+------+------+------+------|  |------+------+------+------+------+----------------------'
 *                        |LCtrl | LGUI | LAlt |      | MO(1)|  | MO(2)| UNDO |  CUT | COPY | PASTE|
 *                        |      |      |      |      |      |  |      |      |      |      |      |


@@ 138,7 138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [_NAV] = LAYOUT(
 _______, KC_BRIU, KC_MNXT, KC_MFFD, KC_MPLY, KC_VOLU,                                     KC_HOME, KC_PGUP,   KC_UP, KC_PGDN, _______,  KC_DEL,
 _______, KC_BRID, KC_MPRV, KC_MRWD, KC_MSTP, KC_VOLD,                                      KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCRL, KC_BSPC,
 KC_LSFT, US_ACUT, US_DGRV, US_DCIR, US_DIAE, KC_MUTE, _______,  UC_MOD, KC_RSFT,  KC_APP, KC_PSCR, XP(CEDIL,CEDIL_MAJ), XP(SECTION,DEGREE), _______, LCTL(KC_S),  KC_INS,
 KC_LSFT, US_ACUT, US_DGRV, US_DCIR, US_DIAE, KC_MUTE, _______, UC_NEXT, KC_RSFT,  KC_APP, KC_PSCR, XP(CEDIL,CEDIL_MAJ), XP(SECTION,DEGREE), _______, LCTL(KC_S),  KC_INS,
                            KC_LCTL, KC_LGUI, KC_LALT, _______,   MO(1),   MO(2), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V)
    ),


M keyboards/splitkb/kyria/keymaps/lw/readme.md => keyboards/splitkb/kyria/keymaps/lw/readme.md +2 -2
@@ 93,7 93,7 @@ This layer is activated when holding `MO(2)`.
 * |--------+------+------+------+------+------|                              |------+------+------+------+------+--------|
 * |        | Brt- | Prev | Bckw | Stop | Vol- |                              |  End | Left | Down | Right|ScrLck| BkSpace|
 * |--------+------+------+------+------+------+-------------.  ,-------------+------+------+------+------+------+--------|
 * | LShift |  ´   |  `   |  ^   |  ¨   | Mute |      |UC_MOD|  |RShift| Menu | PrtSc| ç/Ç  | § °  |      | SAVE | Insert |
 * | LShift |  ´   |  `   |  ^   |  ¨   | Mute |      |UC_Nxt|  |RShift| Menu | PrtSc| ç/Ç  | § °  |      | SAVE | Insert |
 * `----------------------+------+------+------+------+------|  |------+------+------+------+------+----------------------'
 *                        |LCtrl | LGUI | LAlt |      | MO(1)|  | MO(2)| UNDO |  CUT | COPY | PASTE|
 *                        |      |      |      |      |      |  |      |      |      |      |      |


@@ 101,4 101,4 @@ This layer is activated when holding `MO(2)`.
 */
```

The key `UC_MOD` allows to switch between Linux and Windows unicode. Note however that [WinCompose](https://github.com/samhocevar/wincompose) must be installed on Windows (simply download and install the latest release and it will run). 
\ No newline at end of file
The key `UC_NEXT` allows to switch between Linux and Windows unicode. Note however that [WinCompose](https://github.com/samhocevar/wincompose) must be installed on Windows (simply download and install the latest release and it will run). 
\ No newline at end of file

M keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c => keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c +1 -1
@@ 1192,7 1192,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//                ,                  ,                  ,                  , -*-              ,                 <|,>              ,         ,                  ,                    ,         ,               ,
        CTO_BASE  , COUNT_TOG        , COUNT_NULL       , COUNT_WORDMIN    , COUNT_REPORT     , SPEED_TOG         , SPEED_REPORT  , KC_MPLY , KC_MNXT          , KC_MPRV            , KC_MSTP , KC_RSFT       ,
        KC_CAPS   , C_KC_PWR         , C_KC_WAKE        , C_KC_SLEP        , C_KC_PAUS        , KC_SCRL           , KC_PSCR       , XXXXXXX , KC_VOLU          , KC_VOLD            , KC_MUTE , KC_INS        ,
        XP_DRA_CG , UNICODE_MODE_LNX , UNICODE_MODE_BSD , UNICODE_MODE_MAC , UNICODE_MODE_WIN , UNICODE_MODE_WINC , XXXXXXX       , XXXXXXX , KC_BRIGHTNESS_UP , KC_BRIGHTNESS_DOWN , XXXXXXX , KC_APP        ,
        XP_DRA_CG , UC_LINX          , UC_BSD           , UC_MAC           , UC_WIN           , UC_WINC           , XXXXXXX       , XXXXXXX , KC_BRIGHTNESS_UP , KC_BRIGHTNESS_DOWN , XXXXXXX , KC_APP        ,
//      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        LEDS_ON  
#     ifdef TRANSMINIVAN_LEFTSIDE

M keyboards/xiudi/xd75/keymaps/billypython/keymap.c => keyboards/xiudi/xd75/keymaps/billypython/keymap.c +1 -1
@@ 16,7 16,7 @@
#define MINUS   UC(0x2212)

void eeconfig_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}

enum layers {

M keyboards/xiudi/xd75/keymaps/bramver/keymap.c => keyboards/xiudi/xd75/keymaps/bramver/keymap.c +1 -1
@@ 94,7 94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

void matrix_init_user(void) {
  _delay_ms(20); // Gets rid of tick
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
}

/* Template for future layers

M keyboards/xiudi/xd75/keymaps/markus/config.h => keyboards/xiudi/xd75/keymaps/markus/config.h +1 -1
@@ 46,4 46,4 @@
#define MK_W_INTERVAL_1     120
#define MK_W_OFFSET_2       1
#define MK_W_INTERVAL_2     20
#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX

M keyboards/xiudi/xd75/keymaps/markus/keymap.c => keyboards/xiudi/xd75/keymaps/markus/keymap.c +3 -3
@@ 160,9 160,9 @@ MO(_FN2), ________, ________, ________, ________, KC_PENT,  KC_P0,    DE_DOT,   
 */
[_FN3] = LAYOUT_ortho_5x15(
KC_F13,   KC_F14,   KC_F15,   KC_F16,   KC_F17,   KC_F18,   KC_BRID,  ___xx___, KC_BRIU,  KC_F19,   KC_F20,   KC_F21,   KC_F22,   KC_F23,   KC_F24,
________, QWERTZ,   UC_M_LN,  ___xx___, ___xx___, KC_PWR,   RGB_TOG,  RGB_M_P,  RGB_MOD,  ___xx___, KC_PGUP,  KC_UP,    KC_PGDN,  ___xx___, ___xx___,
________, QWERTY,   UC_M_WC,  UC(L'›'), UC(L'‹'), KC_SLEP,  RGB_HUI,  RGB_SAI,  RGB_VAI,  KC_HOME,  KC_LEFT,  KC_DOWN,  KC_RIGHT, KC_END,   ________,
________, GAMING,   UC_M_MA,  UC(L'»'), UC(L'«'), KC_WAKE,  RGB_HUD,  RGB_SAD,  RGB_VAD,  UC(L' '), UC(L' '), UC(L' '), UC(L' '), UC(L'‑'), ________,
________, QWERTZ,   UC_LINX,  ___xx___, ___xx___, KC_PWR,   RGB_TOG,  RGB_M_P,  RGB_MOD,  ___xx___, KC_PGUP,  KC_UP,    KC_PGDN,  ___xx___, ___xx___,
________, QWERTY,   UC_WINC,  UC(L'›'), UC(L'‹'), KC_SLEP,  RGB_HUI,  RGB_SAI,  RGB_VAI,  KC_HOME,  KC_LEFT,  KC_DOWN,  KC_RIGHT, KC_END,   ________,
________, GAMING,   UC_MAC,   UC(L'»'), UC(L'«'), KC_WAKE,  RGB_HUD,  RGB_SAD,  RGB_VAD,  UC(L' '), UC(L' '), UC(L' '), UC(L' '), UC(L'‑'), ________,
________, ________, ________, ________, ________, ________, ________, QK_BOOT,  ________, ________, ________, ________, ________, ________, ________
)


M keyboards/xiudi/xd75/keymaps/minna/config.h => keyboards/xiudi/xd75/keymaps/minna/config.h +1 -1
@@ 4,4 4,4 @@
#pragma once

// place overrides here
#define UNICODE_SELECTED_MODES UC_WINC, UC_LNX, UC_MAC
\ No newline at end of file
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_LINUX, UNICODE_MODE_MACOS
\ No newline at end of file

M keyboards/xiudi/xd75/keymaps/minna/keymap.c => keyboards/xiudi/xd75/keymaps/minna/keymap.c +1 -1
@@ 74,6 74,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_MSEL, KC_NO,   KC_MYCM, KC_MAIL, RGB_HUD, RGB_HUI, KC_CALC, KC_P7, KC_P8, KC_P9, KC_MINS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS,
    KC_MPRV, KC_NO,   KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_MPLY, KC_P4, KC_P5, KC_P6, KC_PLUS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_VOLD, KC_MUTE, KC_VOLU, KC_APP,  RGB_VAD, RGB_VAI, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, MO(1),   RGB_TOG, KC_NO,   RGB_RMOD,RGB_MOD, KC_NO, KC_P0, KC_NO, KC_PDOT, KC_PENT, KC_PENT, MO(1), UC_RMOD, UC_MOD)
    KC_TRNS, MO(1),   RGB_TOG, KC_NO,   RGB_RMOD,RGB_MOD, KC_NO, KC_P0, KC_NO, KC_PDOT, KC_PENT, KC_PENT, MO(1), UC_PREV, UC_NEXT)
};


M keyboards/yatara/drink_me/keymaps/queen/config.h => keyboards/yatara/drink_me/keymaps/queen/config.h +1 -1
@@ 1,1 1,1 @@
#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WIN, UC_WINC
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINDOWS, UNICODE_MODE_WINCOMPOSE

M keyboards/yatara/drink_me/keymaps/queen/keymap.c => keyboards/yatara/drink_me/keymaps/queen/keymap.c +4 -4
@@ 13,7 13,7 @@ void td_spade_lnx (qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        register_unicode(0x2660); // ♠
    } else {
        set_unicode_input_mode(UC_LNX);
        set_unicode_input_mode(UNICODE_MODE_LINUX);
    }
    reset_tap_dance(state);
}


@@ 23,7 23,7 @@ void td_diamond_osx (qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        register_unicode(0x2666); // ♦
    } else {
        set_unicode_input_mode(UC_MAC);
        set_unicode_input_mode(UNICODE_MODE_MACOS);
    }
    reset_tap_dance(state);
}


@@ 33,7 33,7 @@ void td_club_win (qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        register_unicode(0x2663); // ♣
    } else {
        set_unicode_input_mode(UC_WIN);
        set_unicode_input_mode(UNICODE_MODE_WINDOWS);
    }
    reset_tap_dance(state);
}


@@ 43,7 43,7 @@ void td_heart_winc (qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        register_unicode(0x2665); // ♥
    } else {
        set_unicode_input_mode(UC_WINC);
        set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
    }
    reset_tap_dance(state);
}

M keyboards/ymdk/melody96/keymaps/dvz/config.h => keyboards/ymdk/melody96/keymaps/dvz/config.h +1 -1
@@ 19,7 19,7 @@
#define COMBO_COUNT 4
#define COMBO_TERM 100

//#define UNICODE_SELECTED_MODES UC_WINC
//#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE

#define RGBLIGHT_LAYERS
#define RGBLIGHT_LAYER_BLINK

M keyboards/ymdk/melody96/keymaps/konstantin/keymap.c => keyboards/ymdk/melody96/keymaps/konstantin/keymap.c +1 -1
@@ 69,7 69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [L_FN] = LAYOUT(
        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SYSRQ,   KC_SCRL, KC_PAUS, BREAK,   TOP,     BOTTOM,
        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, RGB_TOG, DIVIDE,  TIMES,   MINUS,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_NEXT, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______,                   RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
        _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP,  KC_VOLD, KC_VOLU, KC_MUTE, _______,          KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
        _______, DST_P_R, DST_N_A,                            KC_WH_D,                            _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END,  RGB_RMOD,RGB_MOD, RGB_M_P

M keyboards/ymdk/melody96/keymaps/zunger/keymap.c => keyboards/ymdk/melody96/keymaps/zunger/keymap.c +1 -1
@@ 239,7 239,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, QK_BOOT,
    KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
    _______, _______, _______, KC_CAGU, _______, _______, _______, KC_CDIA, KC_CCIR, _______, _______, _______, _______,          _______, _______, _______, _______,
    _______, _______, _______, UC_M_MA, UC_M_LN, UC_M_WI, UC_M_BS, UC_M_WC, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
    _______, _______, _______, UC_MAC,  UC_LINX, UC_WIN,  UC_BSD,  UC_WINC, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
    _______,          _______, _______, KC_CCED, _______, _______, KC_CTIL, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______),
};

M layouts/community/60_iso/bifbofii/keymap.c => layouts/community/60_iso/bifbofii/keymap.c +2 -2
@@ 144,8 144,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     */
    [SPECIALS] = LAYOUT_60_iso(
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, XXXXXXX,
        XXXXXXX, XXXXXXX, UC_M_WC, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, UC_M_MA, XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(GAMING), XXXXXXX, XXXXXXX, XXXXXXX, UC_M_LN, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
        XXXXXXX, XXXXXXX, UC_WINC, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, UC_MAC,  XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(GAMING), XXXXXXX, XXXXXXX, XXXXXXX, UC_LINX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX,                               XXXXXXX,                            XXXXXXX, XXXXXXX, XXXXXXX, KC_TRNS
    ),

M layouts/community/65_ansi_blocker/spidey3/keymap.c => layouts/community/65_ansi_blocker/spidey3/keymap.c +2 -2
@@ 26,8 26,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [_FN] = LAYOUT_65_ansi_blocker(
        KC_GRV,     KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,      KC_F7,      KC_F8,      KC_F9,      KC_F10,     KC_F11,     KC_F12,                 KC_INS,     KC_SCRL,
        XXXXXXX,    RGB_TOG,    RGB_MOD,    RGB_HUD,    RGB_HUI,    RGB_SAD,    RGB_SAI,    RGB_VAD,    RGB_VAI,    SPI_GLO,    VK_TOGG,    CH_SUSP,    KC_SLEP,                KC_PWR,     KC_BRIU,
        MO(_GLYPH), RGB_M_P,    RGB_M_B,    RGB_M_R,    RGB_M_SW,   RGB_M_SN,   RGB_M_K,    RGB_M_G,    RGB_M_TW,   UC_M_LN,    XXXXXXX,    XXXXXXX,                            KC_CPNL,    KC_BRID,
        _______,    XXXXXXX,    UC_M_EM,    UC_M_WC,    UC_MOD,     NK_TOGG,    TG(_NUMPAD),UC_M_MA,    XXXXXXX,    XXXXXXX,    DB_TOGG,                            _______,    KC_VOLU,    KC_MUTE,
        MO(_GLYPH), RGB_M_P,    RGB_M_B,    RGB_M_R,    RGB_M_SW,   RGB_M_SN,   RGB_M_K,    RGB_M_G,    RGB_M_TW,   UC_LINX,    XXXXXXX,    XXXXXXX,                            KC_CPNL,    KC_BRID,
        _______,    XXXXXXX,    UC_EMAC,    UC_WINC,    UC_NEXT,    NK_TOGG,    TG(_NUMPAD),UC_MAC,     XXXXXXX,    XXXXXXX,    DB_TOGG,                            _______,    KC_VOLU,    KC_MUTE,
        _______,    _______,    _______,                                    KC_MPLY,                                            KC_ASST,    _______,                KC_MPRV,    KC_VOLD,    KC_MNXT
    ),
    // Glyph Transformation

M layouts/community/75_ansi/spidey3/keymap.c => layouts/community/75_ansi/spidey3/keymap.c +2 -2
@@ 26,8 26,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        QK_BOOT,    SPI_NORMAL, SPI_WIDE,   SPI_SCRIPT, SPI_BLOCKS, SPI_CIRCLE, SPI_SQUARE, SPI_PARENS, SPI_FRAKTR, SPI_BOLD,   SPI_MATH,   XXXXXXX,    SPI_GFLOCK, KC_SLEP,    CH_SUSP,    KC_PWR,
        EE_CLR,     X(SAD),     X(MEH),     X(HAPPY),   X(ANGRY),   X(THUMBDN), X(THUMBUP), X(SPIDER),  X_BUL,      X(LOL),     X(SURPRISE),X_DASH,     XXXXXXX,                KC_PAUS,    KC_SCRL,
        XXXXXXX,    RGB_TOG,    RGB_MOD,    RGB_HUD,    RGB_HUI,    RGB_SAD,    RGB_SAI,    RGB_VAD,    RGB_VAI,    SPI_GLO,    VK_TOGG,    XXXXXXX,    XXXXXXX,                XXXXXXX,    KC_BRIU,
        XXXXXXX,    RGB_M_P,    RGB_M_B,    RGB_M_R,    RGB_M_SW,   RGB_M_SN,   RGB_M_K,    RGB_M_G,    RGB_M_TW,   UC_M_LN,    XXXXXXX,    XXXXXXX,                            XXXXXXX,    KC_BRID,
        _______,    XXXXXXX,    UC_M_EM,    UC_M_WC,    UC_MOD,     NK_TOGG,    TG(_NUMPAD),UC_M_MA,    X(LARR),    X(RARR),    DB_TOGG,    _______,                            KC_VOLU,    KC_MUTE,
        XXXXXXX,    RGB_M_P,    RGB_M_B,    RGB_M_R,    RGB_M_SW,   RGB_M_SN,   RGB_M_K,    RGB_M_G,    RGB_M_TW,   UC_LINX,    XXXXXXX,    XXXXXXX,                            XXXXXXX,    KC_BRID,
        _______,    XXXXXXX,    UC_EMAC,    UC_WINC,    UC_NEXT,    NK_TOGG,    TG(_NUMPAD),UC_MAC,     X(LARR),    X(RARR),    DB_TOGG,    _______,                            KC_VOLU,    KC_MUTE,
        _______,    _______,    _______,                                    KC_MPLY,                                            KC_ASST,    _______,    KC_CPNL,    KC_MPRV,    KC_VOLD,    KC_MNXT
    )
};

M layouts/community/ergodox/deadcyclo/keymap.c => layouts/community/ergodox/deadcyclo/keymap.c +1 -1
@@ 341,7 341,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
  set_unicode_input_mode(UC_LNX);
  set_unicode_input_mode(UNICODE_MODE_LINUX);
};

// Runs constantly in the background, in a loop.

M layouts/community/ergodox/drashna/keymap.c => layouts/community/ergodox/drashna/keymap.c +1 -1
@@ 167,7 167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            ),

  [_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
             QK_MAKE, _______, _______, _______, _______, _______, UC_MOD,                  KC_NUKE, _________________ADJUST_R1_________________, QK_BOOT,
             QK_MAKE, _______, _______, _______, _______, _______, UC_NEXT,                 KC_NUKE, _________________ADJUST_R1_________________, QK_BOOT,
             VRSN,    _________________ADJUST_L1_________________, _______,                 _______, _________________ADJUST_R1_________________, EE_CLR,
             _______, _________________ADJUST_L2_________________,                                   _________________ADJUST_R2_________________, RGB_IDL,
             KEYLOCK, _________________ADJUST_L3_________________, _______,                 _______, _________________ADJUST_R3_________________, TG_MODS,

M layouts/community/ortho_4x12/bifbofii/keymap.c => layouts/community/ortho_4x12/bifbofii/keymap.c +2 -2
@@ 164,8 164,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
 */
[SPECIALS] = LAYOUT_ortho_4x12(
    XXXXXXX, XXXXXXX, UC_M_WC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_M_MA, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_M_LN, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, UC_WINC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_MAC,  XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_LINX, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)

M layouts/community/ortho_5x12/riblee/config.h => layouts/community/ortho_5x12/riblee/config.h +1 -1
@@ 15,4 15,4 @@
 */

#pragma once
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX

M layouts/community/ortho_5x12/riblee/keymap.c => layouts/community/ortho_5x12/riblee/keymap.c +1 -1
@@ 198,7 198,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,    KC_F10,  KC_F11,    KC_F12,
    _______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______,  KC_INS,  KC_PSCR,   KC_DEL,
    _______, _______, MU_MOD,  AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK,  DVORAK,  HUNGARIAN, WORKMAN,
    _______, _______, _______, _______, UC_MOD,  UC_RMOD, NK_TOGG, CG_NORM, CG_SWAP,  _______, _______,   _______,
    _______, _______, _______, _______, UC_NEXT, UC_PREV, NK_TOGG, CG_NORM, CG_SWAP,  _______, _______,   _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______,  _______, _______,   _______
)


M quantum/process_keycode/process_unicode_common.c => quantum/process_keycode/process_unicode_common.c +14 -14
@@ 31,29 31,29 @@ bool process_unicode_common(uint16_t keycode, keyrecord_t *record) {
    if (record->event.pressed) {
        bool shifted = get_mods() & MOD_MASK_SHIFT;
        switch (keycode) {
            case UNICODE_MODE_FORWARD:
            case QK_UNICODE_MODE_NEXT:
                cycle_unicode_input_mode(shifted ? -1 : +1);
                break;
            case UNICODE_MODE_REVERSE:
            case QK_UNICODE_MODE_PREVIOUS:
                cycle_unicode_input_mode(shifted ? +1 : -1);
                break;
            case UNICODE_MODE_MAC:
                set_unicode_input_mode(UC_MAC);
            case QK_UNICODE_MODE_MACOS:
                set_unicode_input_mode(UNICODE_MODE_MACOS);
                break;
            case UNICODE_MODE_LNX:
                set_unicode_input_mode(UC_LNX);
            case QK_UNICODE_MODE_LINUX:
                set_unicode_input_mode(UNICODE_MODE_LINUX);
                break;
            case UNICODE_MODE_WIN:
                set_unicode_input_mode(UC_WIN);
            case QK_UNICODE_MODE_WINDOWS:
                set_unicode_input_mode(UNICODE_MODE_WINDOWS);
                break;
            case UNICODE_MODE_BSD:
                set_unicode_input_mode(UC_BSD);
            case QK_UNICODE_MODE_BSD:
                set_unicode_input_mode(UNICODE_MODE_BSD);
                break;
            case UNICODE_MODE_WINC:
                set_unicode_input_mode(UC_WINC);
            case QK_UNICODE_MODE_WINCOMPOSE:
                set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
                break;
            case UNICODE_MODE_EMACS:
                set_unicode_input_mode(UC_EMACS);
            case QK_UNICODE_MODE_EMACS:
                set_unicode_input_mode(UNICODE_MODE_EMACS);
                break;
        }
    }

M quantum/quantum_keycodes.h => quantum/quantum_keycodes.h +16 -16
@@ 378,13 378,13 @@ enum quantum_keycodes {
    QK_CLEAR_EEPROM, // 5CDF

    // Unicode
    UNICODE_MODE_FORWARD, // 5CE0
    UNICODE_MODE_REVERSE, // 5CE1
    UNICODE_MODE_MAC,     // 5CE2
    UNICODE_MODE_LNX,     // 5CE3
    UNICODE_MODE_WIN,     // 5CE4
    UNICODE_MODE_BSD,     // 5CE5
    UNICODE_MODE_WINC,    // 5CE6
    QK_UNICODE_MODE_NEXT,       // 5CE0
    QK_UNICODE_MODE_PREVIOUS,   // 5CE1
    QK_UNICODE_MODE_MACOS,      // 5CE2
    QK_UNICODE_MODE_LINUX,      // 5CE3
    QK_UNICODE_MODE_WINDOWS,    // 5CE4
    QK_UNICODE_MODE_BSD,        // 5CE5
    QK_UNICODE_MODE_WINCOMPOSE, // 5CE6

    // Haptic
    HPT_ON,   // 5CE7


@@ 609,7 609,7 @@ enum quantum_keycodes {
    MAGIC_UNSWAP_ESCAPE_CAPSLOCK,
    MAGIC_TOGGLE_ESCAPE_CAPSLOCK,

    UNICODE_MODE_EMACS,
    QK_UNICODE_MODE_EMACS,

    QK_AUTOCORRECT_ON,
    QK_AUTOCORRECT_OFF,


@@ 834,15 834,15 @@ enum quantum_keycodes {
#define X(i) (QK_UNICODEMAP | (i))
#define XP(i, j) (QK_UNICODEMAP_PAIR | ((i)&0x7F) | (((j)&0x7F) << 7)) // 127 max i and j

#define UC_MOD UNICODE_MODE_FORWARD
#define UC_RMOD UNICODE_MODE_REVERSE
#define UC_NEXT QK_UNICODE_MODE_NEXT
#define UC_PREV QK_UNICODE_MODE_PREVIOUS

#define UC_M_MA UNICODE_MODE_MAC
#define UC_M_LN UNICODE_MODE_LNX
#define UC_M_WI UNICODE_MODE_WIN
#define UC_M_BS UNICODE_MODE_BSD
#define UC_M_WC UNICODE_MODE_WINC
#define UC_M_EM UNICODE_MODE_EMACS
#define UC_MAC QK_UNICODE_MODE_MACOS
#define UC_LINX QK_UNICODE_MODE_LINUX
#define UC_WIN QK_UNICODE_MODE_WINDOWS
#define UC_BSD QK_UNICODE_MODE_BSD
#define UC_WINC QK_UNICODE_MODE_WINCOMPOSE
#define UC_EMAC QK_UNICODE_MODE_EMACS

// Auto Shift
#define AS_UP QK_AUTO_SHIFT_UP

M quantum/quantum_keycodes_legacy.h => quantum/quantum_keycodes_legacy.h +9 -0
@@ 29,6 29,15 @@
#define CMB_OFF QK_COMBO_OFF
#define CMB_TOG QK_COMBO_TOGGLE

#define UC_MOD QK_UNICODE_MODE_NEXT
#define UC_RMOD QK_UNICODE_MODE_PREVIOUS
#define UC_M_MA QK_UNICODE_MODE_MACOS
#define UC_M_LN QK_UNICODE_MODE_LINUX
#define UC_M_WI QK_UNICODE_MODE_WINDOWS
#define UC_M_BS QK_UNICODE_MODE_BSD
#define UC_M_WC QK_UNICODE_MODE_WINCOMPOSE
#define UC_M_EM QK_UNICODE_MODE_EMACS

#define PROGRAMMABLE_BUTTON_1 QK_PROGRAMMABLE_BUTTON_1
#define PROGRAMMABLE_BUTTON_2 QK_PROGRAMMABLE_BUTTON_2
#define PROGRAMMABLE_BUTTON_3 QK_PROGRAMMABLE_BUTTON_3

M quantum/unicode/unicode.c => quantum/unicode/unicode.c +27 -27
@@ 46,7 46,7 @@
#endif

// Comma-delimited, ordered list of input modes selected for use (e.g. in cycle)
// Example: #define UNICODE_SELECTED_MODES UC_WINC, UC_LNX
// Example: #define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_LINUX
#ifndef UNICODE_SELECTED_MODES
#    define UNICODE_SELECTED_MODES -1
#endif


@@ 108,32 108,32 @@ static float song_emacs[][2] = UNICODE_SONG_EMACS;
static void unicode_play_song(uint8_t mode) {
    switch (mode) {
#    ifdef UNICODE_SONG_MAC
        case UC_MAC:
        case UNICODE_MODE_MACOS:
            PLAY_SONG(song_mac);
            break;
#    endif
#    ifdef UNICODE_SONG_LNX
        case UC_LNX:
        case UNICODE_MODE_LINUX:
            PLAY_SONG(song_lnx);
            break;
#    endif
#    ifdef UNICODE_SONG_WIN
        case UC_WIN:
        case UNICODE_MODE_WINDOWS:
            PLAY_SONG(song_win);
            break;
#    endif
#    ifdef UNICODE_SONG_BSD
        case UC_BSD:
        case UNICODE_MODE_BSD:
            PLAY_SONG(song_bsd);
            break;
#    endif
#    ifdef UNICODE_SONG_WINC
        case UC_WINC:
        case UNICODE_MODE_WINCOMPOSE:
            PLAY_SONG(song_winc);
            break;
#    endif
#    ifdef UNICODE_SONG_EMACS
        case UC_EMACS:
        case UNICODE_MODE_EMACS:
            PLAY_SONG(song_emacs);
            break;
#    endif


@@ 209,7 209,7 @@ __attribute__((weak)) void unicode_input_start(void) {
    // Need to do this before we mess around with the mods, or else
    // UNICODE_KEY_LNX (which is usually Ctrl-Shift-U) might not work
    // correctly in the shifted case.
    if (unicode_config.input_mode == UC_LNX && unicode_saved_led_state.caps_lock) {
    if (unicode_config.input_mode == UNICODE_MODE_LINUX && unicode_saved_led_state.caps_lock) {
        tap_code(KC_CAPS_LOCK);
    }



@@ 218,13 218,13 @@ __attribute__((weak)) void unicode_input_start(void) {
    clear_weak_mods();

    switch (unicode_config.input_mode) {
        case UC_MAC:
        case UNICODE_MODE_MACOS:
            register_code(UNICODE_KEY_MAC);
            break;
        case UC_LNX:
        case UNICODE_MODE_LINUX:
            tap_code16(UNICODE_KEY_LNX);
            break;
        case UC_WIN:
        case UNICODE_MODE_WINDOWS:
            // For increased reliability, use numpad keys for inputting digits
            if (!unicode_saved_led_state.num_lock) {
                tap_code(KC_NUM_LOCK);


@@ 233,11 233,11 @@ __attribute__((weak)) void unicode_input_start(void) {
            wait_ms(UNICODE_TYPE_DELAY);
            tap_code(KC_KP_PLUS);
            break;
        case UC_WINC:
        case UNICODE_MODE_WINCOMPOSE:
            tap_code(UNICODE_KEY_WINC);
            tap_code(KC_U);
            break;
        case UC_EMACS:
        case UNICODE_MODE_EMACS:
            // The usual way to type unicode in emacs is C-x-8 <RET> then the unicode number in hex
            tap_code16(LCTL(KC_X));
            tap_code16(KC_8);


@@ 250,25 250,25 @@ __attribute__((weak)) void unicode_input_start(void) {

__attribute__((weak)) void unicode_input_finish(void) {
    switch (unicode_config.input_mode) {
        case UC_MAC:
        case UNICODE_MODE_MACOS:
            unregister_code(UNICODE_KEY_MAC);
            break;
        case UC_LNX:
        case UNICODE_MODE_LINUX:
            tap_code(KC_SPACE);
            if (unicode_saved_led_state.caps_lock) {
                tap_code(KC_CAPS_LOCK);
            }
            break;
        case UC_WIN:
        case UNICODE_MODE_WINDOWS:
            unregister_code(KC_LEFT_ALT);
            if (!unicode_saved_led_state.num_lock) {
                tap_code(KC_NUM_LOCK);
            }
            break;
        case UC_WINC:
        case UNICODE_MODE_WINCOMPOSE:
            tap_code(KC_ENTER);
            break;
        case UC_EMACS:
        case UNICODE_MODE_EMACS:
            tap_code16(KC_ENTER);
            break;
    }


@@ 278,25 278,25 @@ __attribute__((weak)) void unicode_input_finish(void) {

__attribute__((weak)) void unicode_input_cancel(void) {
    switch (unicode_config.input_mode) {
        case UC_MAC:
        case UNICODE_MODE_MACOS:
            unregister_code(UNICODE_KEY_MAC);
            break;
        case UC_LNX:
        case UNICODE_MODE_LINUX:
            tap_code(KC_ESCAPE);
            if (unicode_saved_led_state.caps_lock) {
                tap_code(KC_CAPS_LOCK);
            }
            break;
        case UC_WINC:
        case UNICODE_MODE_WINCOMPOSE:
            tap_code(KC_ESCAPE);
            break;
        case UC_WIN:
        case UNICODE_MODE_WINDOWS:
            unregister_code(KC_LEFT_ALT);
            if (!unicode_saved_led_state.num_lock) {
                tap_code(KC_NUM_LOCK);
            }
            break;
        case UC_EMACS:
        case UNICODE_MODE_EMACS:
            tap_code16(LCTL(KC_G)); // C-g cancels
            break;
    }


@@ 307,7 307,7 @@ __attribute__((weak)) void unicode_input_cancel(void) {
// clang-format off

static void send_nibble_wrapper(uint8_t digit) {
    if (unicode_config.input_mode == UC_WIN) {
    if (unicode_config.input_mode == UNICODE_MODE_WINDOWS) {
        uint8_t kc = digit < 10
                   ? KC_KP_1 + (10 + digit - 1) % 10
                   : KC_A + (digit - 10);


@@ 328,7 328,7 @@ void register_hex(uint16_t hex) {

void register_hex32(uint32_t hex) {
    bool first_digit        = true;
    bool needs_leading_zero = (unicode_config.input_mode == UC_WINC);
    bool needs_leading_zero = (unicode_config.input_mode == UNICODE_MODE_WINCOMPOSE);
    for (int i = 7; i >= 0; i--) {
        // Work out the digit we're going to transmit
        uint8_t digit = ((hex >> (i * 4)) & 0xF);


@@ 352,13 352,13 @@ void register_hex32(uint32_t hex) {
}

void register_unicode(uint32_t code_point) {
    if (code_point > 0x10FFFF || (code_point > 0xFFFF && unicode_config.input_mode == UC_WIN)) {
    if (code_point > 0x10FFFF || (code_point > 0xFFFF && unicode_config.input_mode == UNICODE_MODE_WINDOWS)) {
        // Code point out of range, do nothing
        return;
    }

    unicode_input_start();
    if (code_point > 0xFFFF && unicode_config.input_mode == UC_MAC) {
    if (code_point > 0xFFFF && unicode_config.input_mode == UNICODE_MODE_MACOS) {
        // Convert code point to UTF-16 surrogate pair on macOS
        code_point -= 0x10000;
        uint32_t lo = code_point & 0x3FF, hi = (code_point & 0xFFC00) >> 10;

M quantum/unicode/unicode.h => quantum/unicode/unicode.h +8 -7
@@ 30,13 30,14 @@ typedef union {
extern unicode_config_t unicode_config;

enum unicode_input_modes {
    UC_MAC,   // macOS using Unicode Hex Input
    UC_LNX,   // Linux using IBus
    UC_WIN,   // Windows using EnableHexNumpad
    UC_BSD,   // BSD (not implemented)
    UC_WINC,  // Windows using WinCompose (https://github.com/samhocevar/wincompose)
    UC_EMACS, // Emacs is an operating system in search of a good text editor
    UC__COUNT // Number of available input modes (always leave at the end)
    UNICODE_MODE_MACOS,      // macOS using Unicode Hex Input
    UNICODE_MODE_LINUX,      // Linux using IBus
    UNICODE_MODE_WINDOWS,    // Windows using EnableHexNumpad
    UNICODE_MODE_BSD,        // BSD (not implemented)
    UNICODE_MODE_WINCOMPOSE, // Windows using WinCompose (https://github.com/samhocevar/wincompose)
    UNICODE_MODE_EMACS,      // Emacs is an operating system in search of a good text editor

    UNICODE_MODE_COUNT // Number of available input modes (always leave at the end)
};

void    unicode_input_mode_init(void);

M tests/caps_word/caps_word_unicodemap/config.h => tests/caps_word/caps_word_unicodemap/config.h +1 -1
@@ 17,4 17,4 @@

#include "test_common.h"

#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX

M tests/test_common/test_driver.hpp => tests/test_common/test_driver.hpp +1 -1
@@ 64,7 64,7 @@ class TestDriver {
#define EXPECT_REPORT(driver, report) EXPECT_CALL((driver), send_keyboard_mock(KeyboardReport report))

/**
 * @brief Sets gmock expectation that Unicode `code_point` is sent with UC_LNX input
 * @brief Sets gmock expectation that Unicode `code_point` is sent with UNICODE_MODE_LINUX input
 * mode. For instance for U+2013,
 *
 *   EXPECT_UNICODE(driver, 0x2013);

M users/arkag/arkag.c => users/arkag/arkag.c +3 -3
@@ 190,15 190,15 @@ void set_os (uint8_t os, bool update) {
  }
  switch (os) {
  case OS_MAC:
    set_unicode_input_mode(UC_MAC);
    set_unicode_input_mode(UNICODE_MODE_MACOS);
    underglow = (Color){ 213, 255, 255 };
    break;
  case OS_WIN:
    set_unicode_input_mode(UC_WINC);
    set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
    underglow = (Color){ 128, 255, 255 };
    break;
  case OS_NIX:
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
    underglow = (Color){ 43, 255, 255 };
    break;
  default:

M users/drashna/config.h => users/drashna/config.h +1 -1
@@ 63,7 63,7 @@
#    endif
#endif // !AUDIO_ENABLE

#define UNICODE_SELECTED_MODES UC_WINC, UC_MAC
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_MACOS

// #define WPM_ESTIMATED_WORD_SIZE 5
#define WPM_ALLOW_COUNT_REGRESSION

M users/konstantin/config.h => users/konstantin/config.h +1 -1
@@ 53,7 53,7 @@

// Unicode
#define UNICODE_CYCLE_PERSIST  false
#define UNICODE_SELECTED_MODES UC_WINC, UC_WIN, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_WINDOWS, UNICODE_MODE_LINUX
#define UNICODE_KEY_WINC       KC_RGUI

// Firmware size reduction

M users/kuchosauronad0/kuchosauronad0.c => users/kuchosauronad0/kuchosauronad0.c +2 -2
@@ 19,9 19,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

userspace_config_t userspace_config;
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
#  define KUCHOSAURONAD0_UNICODE_MODE UC_WINC
#  define KUCHOSAURONAD0_UNICODE_MODE UNICODE_MODE_WINCOMPOSE
#else
#  define KUCHOSAURONAD0_UNICODE_MODE 2 // set to 2 for UC_WIN, set to 4 for UC_WINC
#  define KUCHOSAURONAD0_UNICODE_MODE 2 // set to 2 for UNICODE_MODE_WINDOWS, set to 4 for UNICODE_MODE_WINCOMPOSE
#endif



M users/ridingqwerty/ridingqwerty.c => users/ridingqwerty/ridingqwerty.c +1 -1
@@ 7,7 7,7 @@ void matrix_init_user(void) {
    matrix_init_keymap();

#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
#endif

    //set_single_persistent_default_layer(_QWERTY);

M users/romus/romus.c => users/romus/romus.c +3 -3
@@ 142,7 142,7 @@ void matrix_init_user (void) {

    // Correct unicode
#ifdef UNICODE_ENABLE
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
#endif

    // Make beginning layer DVORAK


@@ 272,7 272,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                stop_all_notes();
                PLAY_SONG(tone_linux);
#endif
                set_unicode_input_mode(UC_LNX);
                set_unicode_input_mode(UNICODE_MODE_LINUX);
            }
            return false;
            break;


@@ 282,7 282,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                stop_all_notes();
                PLAY_SONG(tone_windows);
#endif
                set_unicode_input_mode(UC_WIN);
                set_unicode_input_mode(UNICODE_MODE_WINDOWS);
            }
            return false;
            break;

M users/rupa/config.h => users/rupa/config.h +1 -1
@@ 1,6 1,6 @@
#pragma once

#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX

#define ONESHOT_TAP_TOGGLE 5
#define ONESHOT_TIMEOUT 5000

M users/rupa/wrappers.h => users/rupa/wrappers.h +1 -1
@@ 111,7 111,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define ____65_ADJUST______________ROW1    _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______
#define ____65_ADJUST______________ROW2    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,   _______
#define ____65_ADJUST______________ROW3    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          EE_CLR,  _______
#define ____65_ADJUST______________ROW4    _______,          _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, UC_MOD,  _______, _______
#define ____65_ADJUST______________ROW4    _______,          _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, UC_NEXT, _______, _______
#define ____65_ADJUST______________ROW5    _______, _______, _______,                            _______,                   _______, _______, _______, _______, _______, _______

#define ____65_ADJUST__________RGB_ROW2    _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, RESET,   _______

M users/rverst/rverst.c => users/rverst/rverst.c +3 -3
@@ 75,13 75,13 @@ void switch_mode(uint8_t mode) {
#ifdef UNICODEMAP_ENABLE
    switch (mode) {
        case MAC_UNI:
            set_unicode_input_mode(UC_MAC);
            set_unicode_input_mode(UNICODE_MODE_MACOS);
            break;
        case WINDOWS_UNI:
            set_unicode_input_mode(UC_WINC);
            set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
            break;
        case LINUX_UNI:
            set_unicode_input_mode(UC_LNX);
            set_unicode_input_mode(UNICODE_MODE_LINUX);
            break;
    }
#endif

M users/rverst/unicode.h => users/rverst/unicode.h +1 -1
@@ 18,7 18,7 @@

#ifdef UNICODE_SELECTED_MODES
#    undef UNICODE_SELECTED_MODES
#    define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC
#    define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE
#endif

enum unicode_names { BANG, IRONY, SNEK };

M users/sigma/sigma.c => users/sigma/sigma.c +3 -3
@@ 67,13 67,13 @@ void set_os(uint8_t os) {
#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)
  switch (os) {
  case _OS_MACOS:
    set_unicode_input_mode(UC_MAC);
    set_unicode_input_mode(UNICODE_MODE_MACOS);
    break;
  case _OS_LINUX:
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
    break;
  case _OS_WINDOWS:
    set_unicode_input_mode(UC_WIN);
    set_unicode_input_mode(UNICODE_MODE_WINDOWS);
    break;
  }
#endif

M users/spidey3/config.h => users/spidey3/config.h +1 -1
@@ 31,7 31,7 @@

#endif

#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC, UC_EMACS
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_EMACS

#define SPI_DEBUG_SCAN_RATE


M users/spidey3/layer_rgb.c => users/spidey3/layer_rgb.c +11 -11
@@ 61,9 61,9 @@ const rgblight_segment_t PROGMEM _huh_layer[]    = RGBLIGHT_LAYER_SEGMENTS(CORNE

#define UNICODE_OFFSET 12
const rgblight_segment_t PROGMEM _uc_mac_layer[]  = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_PURPLE));
// No indicator for UC_LNX
// UC_WIN disabled in config.h
// UC_BSD not implemented
// No indicator for UNICODE_MODE_LINUX
// UNICODE_MODE_WINDOWS disabled in config.h
// UNICODE_MODE_BSD not implemented
const rgblight_segment_t PROGMEM _uc_winc_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_CYAN));
const rgblight_segment_t PROGMEM _uc_emacs_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_GREEN));



@@ 85,14 85,14 @@ const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
    [ACK_OFFSET + ACK_MEH]    = _meh_layer,
    [ACK_OFFSET + ACK_HUH]    = _huh_layer,

    [UNICODE_OFFSET + UC_MAC]  = _uc_mac_layer,
    [UNICODE_OFFSET + UC_LNX]  = _none,
    [UNICODE_OFFSET + UC_WIN]  = _none,
    [UNICODE_OFFSET + UC_BSD]  = _none,
    [UNICODE_OFFSET + UC_WINC] = _uc_winc_layer,
    [UNICODE_OFFSET + UC_EMACS] = _uc_emacs_layer,
    [UNICODE_OFFSET + UNICODE_MODE_MACOS]      = _uc_mac_layer,
    [UNICODE_OFFSET + UNICODE_MODE_LINUX]      = _none,
    [UNICODE_OFFSET + UNICODE_MODE_WINDOWS]    = _none,
    [UNICODE_OFFSET + UNICODE_MODE_BSD]        = _none,
    [UNICODE_OFFSET + UNICODE_MODE_WINCOMPOSE] = _uc_winc_layer,
    [UNICODE_OFFSET + UNICODE_MODE_EMACS]      = _uc_emacs_layer,

    [UNICODE_OFFSET + UC__COUNT] = NULL
    [UNICODE_OFFSET + UNICODE_MODE_COUNT] = NULL
};

// clang-format on


@@ 113,7 113,7 @@ void do_rgb_layers(layer_state_t state, uint8_t start, uint8_t end) {
}

void do_rgb_unicode(uint8_t uc_mode) {
    for (uint8_t i = 0; i < UC__COUNT; i++) {
    for (uint8_t i = 0; i < UNICODE_MODE_COUNT; i++) {
        bool is_on = i == uc_mode;
        rgblight_set_layer_state(UNICODE_OFFSET + i, is_on);
    }

M users/spidey3/spidey3.c => users/spidey3/spidey3.c +3 -3
@@ 224,7 224,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                // to determine what Print Screen key should do. The
                // idea here is to make it consistent across hosts.
                switch (get_unicode_input_mode()) {
                    case UC_MAC:
                    case UNICODE_MODE_MACOS:
                        if ((mods | osm) & MOD_MASK_ALT) {
                            // Window screenshot
                            clear_mods();


@@ 247,8 247,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                        }
                        break;

                    case UC_WIN:
                    case UC_WINC:
                    case UNICODE_MODE_WINDOWS
                    case UNICODE_MODE_WINCOMPOSE:
                        if ((mods | osm) & MOD_MASK_ALT) {
                            // Window screenshot
                            // Alt+PrintScreen should work as is

M users/spidey3/spidey3_unicode.c => users/spidey3/spidey3_unicode.c +1 -1
@@ 24,5 24,5 @@ const uint32_t PROGMEM unicode_map[] = {

void eeconfig_init_user_unicode(void) {
    // Default to Linux style
    set_unicode_input_mode(UC_LNX);
    set_unicode_input_mode(UNICODE_MODE_LINUX);
}

M users/uqs/config.h => users/uqs/config.h +1 -1
@@ 22,7 22,7 @@
#define LEADER_TIMEOUT 400
#define LEADER_PER_KEY_TIMING

#define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX

// make KC_ACL0 et al work when held.
#define MK_COMBINED

M users/uqs/uqs.c => users/uqs/uqs.c +2 -2
@@ 560,13 560,13 @@ void matrix_scan_user(void) {
    }
    // tableflip (LEADER - TF)
    SEQ_TWO_KEYS(KC_T, KC_F) {
      //set_unicode_input_mode(UC_LNX);
      //set_unicode_input_mode(UNICODE_MODE_LINUX);
      //send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
      send_unicode_string("(╯°□°)╯︵ ┻━┻");
    }
    // untableflip
    SEQ_THREE_KEYS(KC_U, KC_T, KC_F) {
      //set_unicode_input_mode(UC_LNX);
      //set_unicode_input_mode(UNICODE_MODE_LINUX);
      //send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
      send_unicode_string("┬─┬ノ( º _ ºノ)");
    }

M users/yet-another-developer/yet-another-developer.c => users/yet-another-developer/yet-another-developer.c +2 -2
@@ 4,9 4,9 @@
userspace_config_t userspace_config;

#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
    #define YAD_UNICODE_MODE UC_WIN
    #define YAD_UNICODE_MODE UNICODE_MODE_WINDOWS
#else
// set to 2 for UC_WIN, set to 4 for UC_WINC
// set to 2 for UNICODE_MODE_WINDOWS, set to 4 for UNICODE_MODE_WINCOMPOSE
    #define YAD_UNICODE_MODE 2
#endif