12
submitted 10 months ago* (last edited 10 months ago) by pathief@lemmy.world to c/linuxquestions@lemmy.zip

EDIT: Solved! Check this comment!

I use a keyboard with an american layout. I find it much better for coding and actually love this keyboard to pieces. However, I still need to write in portuguese.

The dead keys in Microsoft Windows worked perfectly for me but the Linux ones do not. Some characters are not available and are replaced by characters that don't exist in the portuguese language.

In X11 I fixed this by using an .XCompose file with the keybinds just like in Windows. Source here, it works perfectly.

In Wayland, the .XCompose file works for pretty much all apps. Firefox is fine, kitty is fine, Vivaldi is fine. Unfortunately electron apps with the --ozone-platform-hint=wayland ignores the .XCompose file and I get the default keybinds. Since I own an nvidia card I really need these flags, otherwise the electron apps will aggressively flicker and/or eat letters while I'm typing.

I've searched far and wide, there are several open bugs in chromium, electron and wayland repositories. Everyone seems to be pointing fingers at each other for years and no workaround to make .XCompose work seems to be available.

I'm wondering if there is an alternative way to customize the dead keys under Wayland. Thanks in advance.

you are viewing a single comment's thread
view the rest of the comments
[-] pathief@lemmy.world 1 points 10 months ago* (last edited 10 months ago)

I'm very happy to report that I found a solution to the problem: keyd. It's amazing.

Instructions on the github project are crystal clear, but I'll leave some instructions below for Arch Users

yay -S keyd

sudo systemctl enable keyd && sudo systemctl start keyd

Now you can configure the /etc/keyd/default.conf file to your hearts desire. keyd is very feature rich, check the man page to see everything you can do. You can even add layers to your keyboard. Very sweet.

My personal configuration so far (I will definitely expand it later when I bump into more problems)

[ids]
*

[main]
' = oneshotm(apostrophe, ')

[apostrophe]
a = a
b = macro(space backspace apostrophe space b)
c = macro(backspace G-,)
d = macro(space backspace apostrophe space d)
e = e
f = macro(space backspace apostrophe space f)
g = macro(backspace apostrophe space g)
h = macro(space backspace apostrophe space h)
i = i
j = macro(space backspace apostrophe space j)
k = macro(backspace apostrophe space k)
l = macro(backspace apostrophe space l)
m = macro(backspace apostrophe space m)
n = macro(backspace apostrophe space n)
o = o
p = macro(space backspace apostrophe space p)
q = macro(space backspace apostrophe space q)
r = macro(backspace apostrophe space r)
s = macro(backspace apostrophe space s)
t = macro(backspace apostrophe space t)
u = u
v = macro(space backspace apostrophe space v)
w = macro(backspace apostrophe space w)
x = macro(space backspace apostrophe space x)
y = macro(backspace apostrophe space y)
z = macro(backspace apostrophe space z)

After editing /etc/keyd/default.conf make sure you run sudo keyd reload

this post was submitted on 16 Jan 2024
12 points (100.0% liked)

Linux Questions

1149 readers
24 users here now

Linux questions Rules (in addition of the Lemmy.zip rules)

Tips for giving and receiving help

Any rule violations will result in disciplinary actions

founded 1 year ago
MODERATORS