I’ve been using Manjaro for a while on my Thinkpad T460, which I typically use in “desktop mode” i.e. plugged into an external keyboard and monitor.
I recently noticed that an issue with the built-in (GB/UK layout) laptop keyboard: the Super/Windows keys don’t function properly.
This is particularly annoying as I use i3wm and have mapped the Super keys to mod4
i.e. the modifier/leader keys that allow me to run window switching and moving commands, as well as launch programs.
This change must have happened in the last month or so, and I’ve done a couple of system upgrades since then. I’m using kernel version 6.1 (6.1.106-1-MANJARO
), and the keyboard configuration I’ve been using is the Lenovo (previously IBM) | IBM ThinkPad R60/T60/R61/T61
default variant, which I had found was the closest layout to the one on my laptop.
I’ve checked using xev
: the Right Super/Win/PrtScr is being detected when I press it, but the Left Super/Win key is not. I don’t dual-boot, so there’s no obvious way for me to check if this is a mechanical fault with the Left Super key.
Does any one have a working setup for the T460 keyboard?
One important detail: since my external keyboard has a different (US) layout to the built-in one (UK/GB), I have a keybinding to which updates .Xmodmap
. This is what .Xmodmap
looks like normally:
remove lock = Caps_Lock
keysym Caps_Lock = Escape
When i3 starts up it runs
exec --no-startup-id /usr/bin/xmodmap -e "add mod4 = Print"
And then the layout switch is implemented in my i3config via:
set $keyboard_layout Keyboard Layout: (e) UK, (a) US
mode "$keyboard_layout" {
bindsym e exec --no-startup-id "setxkbmap gb ; /usr/bin/xmodmap ~/.Xmodmap; /usr/bin/xmodmap -e \\"add mod4 = Print\\"; ", mode default
bindsym a exec --no-startup-id "setxkbmap us ; /usr/bin/xmodmap ~/.Xmodmap", mode default
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Shift+z mode "$keyboard_layout"
(i.e. so $mod+Shift+z
creates a menu which lets me select which layout I want.)
Running setxkbmap -print -verbose 10
when in the US layout gives:
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: thinkpad60
layout: us
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(evdev)
geometry: thinkpad(60)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "thinkpad(60)" };
};
And in the UK/GB layout it produces:
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: thinkpad60
layout: gb
variant: intl
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+gb(intl)+inet(evdev)
geometry: thinkpad(60)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+gb(intl)+inet(evdev)" };
xkb_geometry { include "thinkpad(60)" };
};