You are not logged in.
I am someone who usually types by quickly pressing Caps Lock during typing.
This also involves typing symbols, since I type " by typing 2 (QWERTZ) with Shift or Caps Lock on.
Migrating from Windows 10, it is extremely irritating to me how Caps Lock does not turn my numbers into symbols anymore,
it is messing up over a decade of muscle memory as I regularly end up typing 2this2 when I want "this".
I have tried to look up various combinations of "arch linux caps lock doesn't turn numbers into symbols",
but have only received results for those who are where I want to be but dislike it and want to be where I am now.
The only solutions that I have found so far (which don't work) are:
System Settings -> Keyboard -> Key Bindings -> Caps Lock Behavior.
System Settings -> Keyboard -> Layouts -> Adding my keyboard layout.
setxkbmap -layout de.
a .xmodmap file. The closest to a fix that I found with that was "Turn your Caps Lock into a second Left Shift" (Bruh.)
System Locale: LANG=en_US.UTF-8
VC Keymap: de
X11 Layout: de
X11 Model: pc105
X11 Options: terminate:ctrl_alt_bksp
keycode 10 = 1 exclam 1 exclam onesuperior exclamdown onesuperior
keycode 11 = 2 quotedbl 2 quotedbl twosuperior oneeighth twosuperior
keycode 12 = 3 section 3 section threesuperior sterling threesuperior
keycode 13 = 4 dollar 4 dollar onequarter currency onequarter
keycode 14 = 5 percent 5 percent onehalf threeeighths onehalf
keycode 15 = 6 ampersand 6 ampersand notsign fiveeighths notsign
keycode 16 = 7 slash 7 slash braceleft seveneighths braceleft
keycode 17 = 8 parenleft 8 parenleft bracketleft trademark bracketleft
keycode 18 = 9 parenright 9 parenright bracketright plusminus bracketright
keycode 19 = 0 equal 0 equal braceright degree bracerightt
keycode 20 = ssharp question ssharp question backslash questiondown U1E9EE
keycode 21 = dead_acute dead_grave dead_acute dead_grave dead_cedilla dead_ogonek dead_cedilla
keycode 66 = Caps_Lock NoSymbol Caps_Lock
(^^ First time ever seeing this, but I think this looks right to me? Those are the characters I want when I shift or not.)
Also, I have SDDM and KDE Plasma, I think that's relevant.
Does anyone know of the voodoo magic to make Caps Lock do what I am used to?
Thank you in advance!
Offline
Also, I have SDDM and KDE Plasma, I think that's relevant.
ie. likely wayland what makes xmodmap irrelevant?
The closest to a fix that I found with that was "Turn your Caps Lock into a second Left Shift" (Bruh.)
it is messing up over a decade of muscle memory as I regularly end up typing 2this2 when I want "this".
X11 Layout: de
QWERTZ has '"' on the second layer of "2" so I'm frankly not sure what you're trying to achieve here (other than turning caps into another shift) - though I use caps as compose key and haven't seen the regular caps_lock behavior in more than a decade ![]()
(I guess it only capitalizes alphabetic glyphs?)
grep caps /usr/share/X11/xkb/rules/base.lst(You don't have to post this, but read it) - "caps:shift"?
Those are xkb options (like "terminate:ctrl_alt_bksp"), no guarantees for kwin_wayland support - but those are likely also covered by "System Settings -> Keyboard -> Key Bindings -> Caps Lock Behavior."?
Online
Looking at "Caps Lock behavior" again, I've tried a bunch of them, here are my results:
> Caps Lock acts as Shift with locking, Shift "pauses" Caps Lock
Changes nothing...?
> Caps Lock toggles Shift Lock (affects all keys)
It lets me type symbols like I want!
Though, pressing shift turns it off even if you release shift while caps locked. (this is according to "Lock Key Status")
Also it has a secondary effect: It acts just like I am pressing shift.
That is exactly what I want for when I want to enter characters,
but it also messes with key combinations and moving my text cursor around.
The other settings I've found in "Caps Lock behavior" don't do even close to what I want, so yeah.
Thank you for showing this list though!
Oh yeah I forgot to answer this:
so I'm frankly not sure what you're trying to achieve here
Pretty much just: When caps lock is on, turn numbers into the symbols "above them" (on the physical key caps), also I realized that this caps lock problem I have also messes with all other symbols too for some reason? I.e. this is not happening when I Caps Lock:^ -> °, ß -> ?, ´ -> `+ -> *, # -> ', etc.
Last edited by Taureon (2025-10-20 22:38:45)
Offline
caps lock set the state to 0x2, shift to 0x1 and apparently 0x2 sets the 2nd layer shift only for the alphabetic block
I'm afraid to do what I think you want to do you'll have to write a custom keyboard layout and utilize the 5th layer as FOUR_LEVEL_PLUS_LOCK (see /usr/share/X11/xkb/symbols/ara or the ß handling in /usr/share/X11/xkb/symbols/de - caps_lock+ß should actually get you ẞ - ie. the non-existing uppercase ß)
Something like this:
key <AE01> { [ 1, exclam, onesuperior, exclamdown, 2 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE02> {[ 2, quotedbl, twosuperior, oneeighth, 2 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE03> {[ 3, section, threesuperior, sterling, 3 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE04> {[ 4, dollar, onequarter, currency, 4 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE05> { [ 5, percent, onehalf, threeeighths, 5 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE06> { [ 6, asciicircum, threequarters, fiveeighths, 6 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE07> { [ 7, ampersand, braceleft, seveneighths, 7 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE08> { [ 8, asterisk, bracketleft, trademark, 8 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE09> { [ 9, parenleft, bracketright, plusminus, 9 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE10> { [ 0, parenright, braceright, degree, 0 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE11> {[ ssharp, question, backslash, questiondown, U1E9E ], type[group1]="FOUR_LEVEL_PLUS_LOCK" };
key <AE12> {[ dead_acute, dead_grave, dead_cedilla, dead_ogonek ]};Online