Set right Alt as compose. Add to shell init or .xsessionrc:
setxkbmap -option compose:ralt
Or use the menu key if ralt is bound elsewhere:
setxkbmap -option compose:menu
.xsessionrc for permanent effect.~/.XCompose mnemonic sequences<Multi_key> <a> <e> : "ä" <Multi_key> <o> <e> : "ö" <Multi_key> <a> <o> : "å"
ae → ä, oe → ö, ao → å. Log out and back in. GTK apps pick this up immediately.
export XMODIFIERS=@im=none in some distributions.setxkbmap fi # Finnish layout setxkbmap us # restore
Finnish layout: ä on ; key, ö on ' key, å on ] key (ANSI). Bind both commands to a WM keybind for fast toggle.
e4 Enter → äf6 Enter → öe5 Enter → åFree, open source. Installs compose key behavior identical to Linux.
github.com/samhocevar/wincompose — runs in system tray. Default compose key: right Alt.
; place in shell:startup folder :*:ae::ä :*:oe::ö :*:ao::å :*:AE::Ä :*:OE::Ö
Settings → Time & Language → Language & region → Add Finnish. Toggle with Win Space.
0228 → ä0246 → ö0229 → åSettings → General Management → Language and Input → On-screen keyboard → Samsung Keyboard → Text shortcuts → Add shortcut.
Set: ae → ä, oe → ö, ao → å.
Settings → General Management → Language and Input → On-screen keyboard → Samsung Keyboard → Languages and types → Manage input languages → add Finnish.
Globe icon on keyboard toggles between English and Finnish. ä and ö appear as primary keys.
Long-press a → popup shows diacritics including ä. Long-press o → ö. Slide to select.
Gboard settings → Languages → Add keyboard → Finnish. Globe key switches layout. ä and ö become primary keys.
Gboard settings → Dictionary → Personal dictionary → select language → add entry. Shortcut: ae, Word: ä.
Same as Samsung: long-press a or o, slide to diacritic.
Amazon keyboard: long-press a → diacritic picker includes ä. Long-press o → ö.
Or add Finnish: Settings → Keyboard & Language → Current Keyboard → add Finnish. Toggle from spacebar.
The Amazon folio keyboard has no dedicated ä/ö keys. Options in order of reliability:
Set unicode mode to match host OS. In config.h:
#define UNICODE_SELECTED_MODES UC_LNX, UC_WINC, UC_MAC
Cycle with UC_NEXT. Define characters in keymap.c:
enum unicode_names { AE_LOWER, AE_UPPER, OE_LOWER, OE_UPPER, AA_LOWER };
const uint32_t PROGMEM unicode_map[] = {
[AE_LOWER] = 0x00E4, // ä
[AE_UPPER] = 0x00C4, // Ä
[OE_LOWER] = 0x00F6, // ö
[OE_UPPER] = 0x00D6, // Ö
[AA_LOWER] = 0x00E5, // å
};
Map to layer keys as UP(AE_LOWER, AE_UPPER) for case-sensitive pairs.
If board supports Via/Vial: open GUI, create a layer, assign UC(0x00E4) for ä, UC(0x00F6) for ö. No compile step.
&key_ae {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings = <¯o_tap &kp LC(LS(U))>,
<¯o_type_unicode 0x00E4>;
};
Nordic layer accessed via held key, not toggled. Logical placements:
On 40% boards: tap-dance on a low-frequency key (capslock, enter, or right-side mod) — tap for original, hold for Nordic layer.
TAPPING_TERM to 150–180ms for flow typing.Bind UC_NEXT to a reachable key (e.g. Layer + Esc). QMK remembers the mode in EEPROM. One keypress when switching machines. Everything else stays the same.
| platform | best method | fallback |
| kaamos (linux) | compose key (ralt) | Ctrl+Shift+U |
| windows | WinCompose | AutoHotkey |
| samsung galaxy | text shortcuts | long press |
| gboard | add Finnish layout | long press |
| fire HD 10 | Finnish layout toggle | on-screen long press |
| QMK / ZMK | unicode layer hold | Via / Vial GUI |