Adding anything to a compose file kills the entire compose key

It seems that modifying the /usr/share/X11/locale/en_US.UTF-8/Compose file, or the ~/.XCompose file actually kills the Compose key.
The second you try to add custom combinations to it, the compose key just stops working. You can’t use it anymore. When you remove the combinations, it goes back to normal. I can’t seem to find a reason for this to be so.
I can’t seem to use setxkbmap to replace fcitx if that’s the problem. So if it is, I might not be able to fix this.
What could be the problem and how would I fix it?

garuda-inxi:

System:
Kernel: 6.8.9-zen1-2-zen arch: x86_64 bits: 64 compiler: gcc v: 14.1.1
clocksource: tsc avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=cd554b12-50c1-4d21-8dc3-75e81b1e0163 rw rootflags=subvol=@
quiet quiet rd.udev.log_priority=3 vt.global_cursor_default=0 loglevel=3
intel_iommu=on iommu=pt ibt=off
Desktop: KDE Plasma v: 6.0.5 tk: Qt v: N/A info: frameworks v: 6.2.0
wm: kwin_x11 with: krunner vt: 2 dm: SDDM Distro: Garuda base: Arch Linux
Machine:
Type: Laptop System: HP product: HP ZBook 17 G3 v: N/A
serial: <superuser required> Chassis: type: 10 serial: <superuser required>
Mobo: HP model: 80D6 v: KBC Version 10.75 serial: <superuser required>
part-nu: 1MY26EC#ABA uuid: <superuser required> UEFI: HP v: N81 Ver. 01.45
date: 01/06/2020
Battery:
ID-1: BAT0 charge: 29.7 Wh (41.9%) condition: 70.9/70.9 Wh (100.0%)
volts: 12.4 min: 11.4 model: Hewlett-Packard Primary type: Li-ion
serial: <filter> status: charging
CPU:
Info: model: Intel Core i5-6440HQ bits: 64 type: MCP arch: Skylake-S
gen: core 6 level: v3 note: check built: 2015 process: Intel 14nm family: 6
model-id: 0x5E (94) stepping: 3 microcode: 0xF0
Topology: cpus: 1x cores: 4 smt: <unsupported> cache: L1: 256 KiB
desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB L3: 6 MiB
desc: 1x6 MiB
Speed (MHz): avg: 2382 high: 2399 min/max: 800/3500 scaling:
driver: intel_pstate governor: powersave cores: 1: 2339 2: 2399 3: 2395
4: 2398 bogomips: 20799
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: Intel HD Graphics 530 vendor: Hewlett-Packard driver: i915
v: kernel arch: Gen-9 process: Intel 14n built: 2015-16 ports: active: eDP-1
empty: DP-1, DP-2, DP-3, HDMI-A-1, HDMI-A-2, HDMI-A-3 bus-ID: 00:02.0
chip-ID: 8086:191b class-ID: 0300
Device-2: NVIDIA GM204GLM [Quadro M3000M] vendor: Hewlett-Packard
driver: nvidia v: 550.78 alternate: nouveau,nvidia_drm non-free: 545.xx+
status: current (as of 2024-04; EOL~2026-12-xx) arch: Maxwell code: GMxxx
process: TSMC 28nm built: 2014-2019 pcie: gen: 1 speed: 2.5 GT/s lanes: 16
link-max: gen: 3 speed: 8 GT/s ports: active: none empty: DP-4,DP-5,DP-6
bus-ID: 01:00.0 chip-ID: 10de:13fa class-ID: 0300
Device-3: Cheng Uei Precision Industry (Foxlink) HP HD Camera
driver: uvcvideo type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0
bus-ID: 1-7:2 chip-ID: 05c8:0383 class-ID: 0e02
Display: x11 server: X.Org v: 21.1.13 with: Xwayland v: 24.1.0
compositor: kwin_x11 driver: X: loaded: modesetting,nvidia unloaded: nouveau
alternate: fbdev,intel,nv,vesa dri: iris gpu: i915 display-ID: :0
screens: 1
Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.00x11.22")
s-diag: 582mm (22.93")
Monitor-1: eDP-1 model: ChiMei InnoLux 0x1738 built: 2015 res: 1920x1080
hz: 60 dpi: 128 gamma: 1.2 size: 381x214mm (15x8.43") diag: 437mm (17.2")
ratio: 16:9 modes: 1920x1080
API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
drv: nvidia device: 2 drv: iris device: 3 drv: swrast gbm: drv: nvidia
surfaceless: drv: nvidia x11: drv: iris inactive: wayland,device-1
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.0.8-arch1.1
glx-v: 1.4 direct-render: yes renderer: Mesa Intel HD Graphics 530 (SKL GT2)
device-ID: 8086:191b memory: 15.14 GiB unified: yes
API: Vulkan v: 1.3.279 layers: 14 device: 0 type: integrated-gpu
name: Intel HD Graphics 530 (SKL GT2) driver: mesa intel v: 24.0.8-arch1.1
device-ID: 8086:191b surfaces: xcb,xlib device: 1 type: discrete-gpu
name: Quadro M3000M driver: nvidia v: 550.78 device-ID: 10de:13fa
surfaces: xcb,xlib device: 2 type: cpu name: llvmpipe (LLVM 17.0.6 256
bits) driver: mesa llvmpipe v: 24.0.8-arch1.1 (LLVM 17.0.6)
device-ID: 10005:0000 surfaces: xcb,xlib
Audio:
Device-1: Intel 100 Series/C230 Series Family HD Audio
vendor: Hewlett-Packard driver: snd_hda_intel v: kernel
alternate: snd_soc_avs bus-ID: 00:1f.3 chip-ID: 8086:a170 class-ID: 0403
Device-2: NVIDIA GM204 High Definition Audio vendor: Hewlett-Packard
driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16
bus-ID: 01:00.1 chip-ID: 10de:0fbb class-ID: 0403
API: ALSA v: k6.8.9-zen1-2-zen status: kernel-api with: aoss
type: oss-emulator tools: alsactl,alsamixer,amixer
Server-1: PipeWire v: 1.0.7 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel Ethernet I219-LM vendor: Hewlett-Packard driver: e1000e
v: kernel port: N/A bus-ID: 00:1f.6 chip-ID: 8086:15b7 class-ID: 0200
IF: enp0s31f6 state: down mac: <filter>
Device-2: Intel Wireless 8260 driver: iwlwifi v: kernel pcie: gen: 1
speed: 2.5 GT/s lanes: 1 bus-ID: 03:00.0 chip-ID: 8086:24f3 class-ID: 0280
IF: wlp3s0 state: up mac: <filter>
IF-ID-1: virbr0 state: down mac: <filter>
Info: services: NetworkManager, smbd, systemd-timesyncd, wpa_supplicant
Bluetooth:
Device-1: Intel Bluetooth wireless interface driver: btusb v: 0.8 type: USB
rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-12:3 chip-ID: 8087:0a2b
class-ID: e001
Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 4.2
lmp-v: 8 status: discoverable: no pairing: no class-ID: 6c010c
Drives:
Local Storage: total: 1.14 TiB used: 437.06 GiB (37.4%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: SanDisk model: THNSN5256GPUK
NVMe TOSHIBA 256GB size: 238.47 GiB block-size: physical: 512 B
logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 5KDA4103 temp: 42.9 C scheme: GPT
ID-2: /dev/sda maj-min: 8:0 vendor: HGST (Hitachi) model: HTS721010A9E630
size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 7200 serial: <filter> fw-rev: A3T0 scheme: GPT
Partition:
ID-1: / raw-size: 237.97 GiB size: 237.97 GiB (100.00%)
used: 40.49 GiB (17.0%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 513 MiB size: 512 MiB (99.80%)
used: 266.9 MiB (52.1%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 931.51 GiB size: 931.51 GiB (100.00%)
used: 396.31 GiB (42.5%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
ID-4: /var/log raw-size: 237.97 GiB size: 237.97 GiB (100.00%)
used: 40.49 GiB (17.0%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 237.97 GiB size: 237.97 GiB (100.00%)
used: 40.49 GiB (17.0%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 15.5 GiB used: 0 KiB (0.0%) priority: 100
comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 4 dev: /dev/zram0
Sensors:
System Temperatures: cpu: 49.0 C pch: 50.5 C mobo: N/A
Fan Speeds (rpm): N/A
Info:
Memory: total: 16 GiB available: 15.5 GiB used: 5.91 GiB (38.1%)
Processes: 254 Power: uptime: 23m states: freeze,mem,disk suspend: deep
avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
suspend, test_resume image: 6.14 GiB services: org_kde_powerdevil,
power-profiles-daemon, upowerd Init: systemd v: 255 default: graphical
tool: systemctl
Packages: 2452 pm: dpkg pkgs: 0 pm: pacman pkgs: 2408 libs: 595
tools: paru,yay pm: flatpak pkgs: 44 Compilers: clang: 17.0.6 gcc: 14.1.1
Shell: garuda-inxi default: Bash v: 5.2.26 running-in: konsole
inxi: 3.3.34
Garuda (2.6.26-1):
System install date:     2023-07-21
Last full system update: 2024-05-31
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut(custom) nvidia-dkms
Windows dual boot:       No/Undetected
Failed units:

A syntax error in the config can invalidate the whole file (it won’t just incorporate the valid parts). Paste what you have so far into the thread; perhaps someone from the community can help spot what the error is.

<dead_acute>             <Cyrillic_s>  : "с́"
<Multi_key> <acute>      <Cyrillic_s>  : "с́"
<Multi_key> <apostrophe> <Cyrillic_s>  : "с́"
<dead_acute>             <Cyrillic_S>  : "С́"
<Multi_key> <acute>      <Cyrillic_S>  : "С́"
<Multi_key> <apostrophe> <Cyrillic_S>  : "С́"
<dead_acute>             <Cyrillic_z>  : "з́"
<Multi_key> <acute>      <Cyrillic_z>  : "з́"
<Multi_key> <apostrophe> <Cyrillic_z>  : "з́"
<dead_acute>             <Cyrillic_Z>  : "З́"
<Multi_key> <acute>      <Cyrillic_Z>  : "З́"
<Multi_key> <apostrophe> <Cyrillic_Z>  : "З́"

I am not an expert, but as far as I can tell that looks fine. Be sure to restart the X input method after you modify ~/.XCompose by restarting your desktop session, or I believe you can restart it manually like this:

killall -HUP fcitx

Try starting with a really basic ~/.XCompose file, with only one line in it and see if it works. Then gradually add additional lines until you find whatever is causing it to break.

Even if you can’t replace fcitx, you should be able to use setxkbmap to explicitly set the Compose key. For example, to set the Compose key to right-Ctrl:

setxkbmap -option compose:rctrl
2 Likes

The second I put even a single one of the custom combinations I wanted to put in, it immediately killed the key. I have no idea why it hates those combinations so much.

And as for this, it seems that this does not work. Even if I tried to use this (which I have) it still doesn’t work…

And as for this reply from 4 days ago:

By custom combinations, I meant the compose combinations. Not the key combinations. If you got confused.

What editor are you using to modify the Compose file?

What is the output of locale?

X11 has a built-in list of valid Compose key sequences. In /usr/share/X11/locale/ is a list of directories which each have a Compose file in them. Open up the one for your locale and check that your custom sequences align with the format in this file.

1 Like

I used Kate, however I also tried Micro to see whether or not the editor was the problem. Using Micro also didn’t work.

When using locale I found out that it had actually reverted my changes. I had switched it back to en_US however going back to my previous snapshot had reverted it seemingly.

LANG=sr_RS.UTF-8@latin
LC_CTYPE="sr_RS.UTF-8@latin"
LC_NUMERIC="sr_RS.UTF-8@latin"
LC_TIME=en_GB.UTF-8
LC_COLLATE="sr_RS.UTF-8@latin"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT="sr_RS.UTF-8@latin"
LC_IDENTIFICATION="sr_RS.UTF-8@latin"
LC_ALL=

So I switched it back to en_US again.

LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Btw, I tried putting the combinations into the sr_RS compose key before too. That did absolutely nothing. Didn’t kill the key, but didn’t let me use the combinations either.
Hmm… maybe I have to restart to get the combos to work since I changed the locale?

Nope, the key is still dead.