Managing Unicode for windows with QMK (Keyboard firmware)
11:37 23 Nov 2025

I am playing on a qmk customized firmware (for keychron Q1 V1 ISO keyboard). I mostly want to rebind key to send unicode values (such as "ŭ" (esperanto keyboard)).

I have followed https://docs.qmk.fm/features/unicode, I use in my rules.mk file:

UNICODEMAP_ENABLE = yes 

And in keymap.c, I use UP keycode like this: UP(EO_UA,EO_UAU) with EO_UA and EO_UAU:

[EO_UA]  = 0x016D,  // ŭ
[EO_UAU] = 0x016C,  // Ŭ

Under Linux (using UNICODE_MODE_LINUX), I am fully happy about it.

Under Windows (using the advised UNICODE_MODE_WINCOMPOSE), that is not working as expected. On my windows computer, I have installed the wincompose software and set it accordingly. Here is what I get when I send my unicode key:

enter Wincompose debug log

What I see is the my compose action is well understood however It fails on "Invalid sequence: "uà"" message. My understanding is that WinCompose do not expect u + raw UTF8 code (as sent by qmk keyboard) but would like u + 1 + 6 + D. This is looks conform with the Wincompose doc (https://github.com/samhocevar/wincompose) but not with what is done by qmk.

My conclusion would be that UNICODE_MODE_WINCOMPOSE is bugged and should be rewritten to not send a raw utf8 code but the hexa characters representing the utf8 code.

Has a solution to this?

windows unicode qmk-firmware