Trying to change dead-key behaviour. I'm stumped

So here is the deal.

I’m using a german keyboard-layout.

What I press:    What I get:    What I want:

In telegram:
^^               ^              ^^
`d               d              `d

In waterfox & discord:

^^               ^              ^^
`d               `d             `d

In GuildWars 2 chat (through lutris)
^^               ^              ^^
`d               (nothing)      `d

So basically, 4 different programs, 3 different ways to read my input.

If I hit a dead key and another key that can’t be modified by the dead-key: I want both symbols
If I hit a dead key twice, on the first hit I want nothing, on the second 2x the symbol I hit.

For example, if I’m on github and want to put in some code-snippet (or here on this forum for preformatted text) in a comment I need 6 apostrophes: ``````
For this I currently need to hit the ` key 12 times, at which point this behaviour gets really annoying.

Is there a way to configure this with consistent behaviour everywhere?

System:    Kernel: 5.10.68-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0 
           parameters: BOOT_IMAGE=/boot/vmlinuz-5.10-x86_64 root=UUID=ffe0ecbe-0011-4676-a40f-24e394f261df rw quiet apparmor=1 
           security=apparmor udev.log_priority=3 mem_sleep_default=deep 
           Desktop: Xfce 4.16.0 tk: Gtk 3.24.29 info: xfce4-panel wm: xfwm 4.16.1 vt: 7 dm: LightDM 1.30.0 
           Distro: Manjaro Linux base: Arch Linux 
Machine:   Type: Desktop Mobo: Micro-Star model: MPG X570 GAMING PLUS (MS-7C37) v: 2.0 serial: <filter> 
           UEFI: American Megatrends LLC. v: A.E0 date: 06/22/2021 
CPU:       Info: 6-Core model: AMD Ryzen 5 3600 bits: 64 type: MT MCP arch: Zen 2 family: 17 (23) model-id: 71 (113) 
           stepping: 0 microcode: 8701021 cache: L2: 3 MiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 86433 
           Speed: 3790 MHz min/max: 2200/3600 MHz boost: enabled Core speeds (MHz): 1: 3790 2: 3294 3: 1898 4: 2020 5: 2024 
           6: 2984 7: 1899 8: 1951 9: 3685 10: 2723 11: 2050 12: 3150 
           Vulnerabilities: Type: itlb_multihit status: Not affected 
           Type: l1tf status: Not affected 
           Type: mds status: Not affected 
           Type: meltdown status: Not affected 
           Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via prctl and seccomp 
           Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization 
           Type: spectre_v2 mitigation: Full AMD retpoline, IBPB: conditional, STIBP: conditional, RSB filling 
           Type: srbds status: Not affected 
           Type: tsx_async_abort status: Not affected 
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] vendor: Gigabyte 
           driver: amdgpu v: kernel bus-ID: 2d:00.0 chip-ID: 1002:67df class-ID: 0300 
           Display: x11 server: X.Org 1.20.13 compositor: xfwm4 v: 4.16.1 driver: loaded: amdgpu,ati unloaded: modesetting 
           alternate: fbdev,vesa display-ID: :0.0 screens: 1 
           Screen-1: 0 s-res: 3840x1080 s-dpi: 96 s-size: 1016x285mm (40.0x11.2") s-diag: 1055mm (41.5") 
           Monitor-1: DisplayPort-1 res: 1920x1080 hz: 144 dpi: 92 size: 531x298mm (20.9x11.7") diag: 609mm (24") 
           Monitor-2: HDMI-A-0 res: 1920x1080 hz: 60 dpi: 96 size: 509x286mm (20.0x11.3") diag: 584mm (23") 
           OpenGL: renderer: Radeon RX 590 Series (POLARIS10 DRM 3.40.0 5.10.68-1-MANJARO LLVM 12.0.1) v: 4.6 Mesa 21.2.2 
           direct render: Yes 
Audio:     Device-1: AMD Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] vendor: Gigabyte driver: snd_hda_intel 
           v: kernel bus-ID: 2d:00.1 chip-ID: 1002:aaf0 class-ID: 0403 
           Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio vendor: Micro-Star MSI driver: snd_hda_intel 
           v: kernel bus-ID: 2f:00.4 chip-ID: 1022:1487 class-ID: 0403 
           Device-3: Turtle Beach Turtle Beach Stream Mic (Mic Only) type: USB driver: hid-generic,snd-usb-audio,usbhid 
           bus-ID: 5-4:4 chip-ID: 10f5:214f class-ID: 0102 
           Sound Server-1: ALSA v: k5.10.68-1-MANJARO running: yes 
           Sound Server-2: JACK v: 1.9.19 running: no 
           Sound Server-3: PulseAudio v: 15.0 running: yes 
           Sound Server-4: PipeWire v: 0.3.37 running: yes 
Network:   Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Micro-Star MSI X570-A PRO driver: r8169 
           v: kernel port: d000 bus-ID: 27:00.0 chip-ID: 10ec:8168 class-ID: 0200 
           IF: enp39s0 state: up speed: 100 Mbps duplex: full mac: <filter> 
Bluetooth: Device-1: Cambridge Silicon Radio Bluetooth Dongle (HCI mode) type: USB driver: btusb v: 0.8 bus-ID: 3-6.1:4 
           chip-ID: 0a12:0001 class-ID: e001 
           Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends 
Drives:    Local Storage: total: 3.42 TiB used: 1 TiB (29.4%) 
           SMART Message: Required tool smartctl not installed. Check --recommends 
           ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Crucial model: CT1000P1SSD8 size: 931.51 GiB block-size: physical: 512 B 
           logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter> rev: P3CR020 temp: 43.9 C scheme: GPT 
           ID-2: /dev/sda maj-min: 8:0 vendor: Western Digital model: WD10EARS-00Y5B1 size: 931.51 GiB block-size: 
           physical: 512 B logical: 512 B speed: 3.0 Gb/s type: N/A serial: <filter> rev: 0A80 scheme: MBR 
           ID-3: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST1500DL003-9VT16L size: 1.36 TiB block-size: physical: 4096 B 
           logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 5900 serial: <filter> rev: CC4A scheme: MBR 
           ID-4: /dev/sdc maj-min: 8:32 vendor: SanDisk model: SDSSDHP128G size: 119.24 GiB block-size: physical: 512 B 
           logical: 512 B speed: 6.0 Gb/s type: SSD serial: <filter> rev: 6RL scheme: MBR 
           ID-5: /dev/sdd maj-min: 8:48 vendor: Intenso model: SSD Sata III size: 118 GiB block-size: physical: 512 B 
           logical: 512 B speed: 6.0 Gb/s type: SSD serial: <filter> rev: 6K scheme: MBR 
Partition: ID-1: / raw-size: 398.93 GiB size: 391.66 GiB (98.18%) used: 60.62 GiB (15.5%) fs: ext4 dev: /dev/nvme0n1p3 
           maj-min: 259:3 
           ID-2: /boot/efi raw-size: 512 MiB size: 511 MiB (99.80%) used: 284 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p1 
           maj-min: 259:1 
Swap:      Alert: No swap data was found. 
Sensors:   System Temperatures: cpu: 60.8 C mobo: N/A gpu: amdgpu temp: 61.0 C 
           Fan Speeds (RPM): N/A gpu: amdgpu fan: 823 
Info:      Processes: 341 Uptime: 3h 14m wakeups: 0 Memory: 31.34 GiB used: 10.96 GiB (35.0%) Init: systemd v: 249 
           tool: systemctl Compilers: gcc: 11.1.0 clang: 12.0.1 Packages: pacman: 1376 lib: 471 flatpak: 0 Shell: Bash 
           v: 5.1.8 running-in: xfce4-terminal inxi: 3.3.06 

Hello @ranys :wink:

You need to change the keyboard variant (there different variants for german). At the XFCE Keyboard Settings… it must be something like de-deadacute “Deutsch (Ohne Akzentzeichen)” there you can type backticks by pressing it one time and not 2 times.

It’s good to know these things, but it’s not quite what I’m looking for. Basically I’d like to have the behaviour from windows, since I’m used to it, and in my view it’s the most efficient variant.

For example, if I use de-deadacute I can’t type è or ê any more.

I want the dead keys to still be dead, just that their insert when failing to modify anything should be different then it currently is.
Is there a way to make my own layout, maybe? I wouldn’t mind going through the effort.

Create your own layout here:

  • /usr/share/X11/xkb/symbols/custom
    OR
  • ~/.xkb/symbols/custom

German layout and variants are located here: /usr/share/X11/xkb/symbols/de

Further information: X keyboard extension - ArchWiki

2 Likes

Then you have to create your own keyboard layout that follows the Windows standard, so therefore, I’ve marked this answer as the solution to your question as it is by far the best answer you’ll get.

However, if you disagree with my choice, please feel free to take any other answer as the solution to your question or even remove the solution altogether: You are in control! (If you disagree with my choice, just send me a personal message and explain why I shouldn’t have done this or :heart: or :+1: if you agree)

:innocent:
P.S. In the future, please don’t forget to come back to your question after your issue has been solved and click the 3 dots below the answer to mark a solution like this below the answer that helped you most:
Solution
so that the next person that has the exact same problem you just had will benefit from your post as well as your question will now be in the “solved” status.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.