You are not logged in.

#1 2025-10-20 21:22:03

Taureon
Member
Registered: 2025-10-20
Posts: 2

Cannot configure Caps Lock to turn Numbers into Symbols.

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.)

localectl wrote:

System Locale: LANG=en_US.UTF-8
    VC Keymap: de
   X11 Layout: de
    X11 Model: pc105
  X11 Options: terminate:ctrl_alt_bksp

xmodmap -pke (of what may be relevant) wrote:

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

#2 2025-10-20 21:59:39

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 70,946

Re: Cannot configure Caps Lock to turn Numbers into Symbols.

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 lol
(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

#3 2025-10-20 22:29:55

Taureon
Member
Registered: 2025-10-20
Posts: 2

Re: Cannot configure Caps Lock to turn Numbers into Symbols.

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

#4 2025-10-21 13:00:20

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 70,946

Re: Cannot configure Caps Lock to turn Numbers into Symbols.

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

Board footer

Powered by FluxBB