我有一台安装了 Ubuntu 20.10 的 Dell Vostro 笔记本电脑。在 Ubuntu 19.x 上一切都运行良好,问题从 Ubuntu 20.04 开始并持续存在。(这不是我的主要工作机器,所以我只在台式机上工作。)
问题是我的 Shift 键不起作用(我无法输入大写字母、问号、括号等)(我正在桌面上提交此报告。)
到目前为止我已经尝试过:
sudo apt-get install -y xserver-xorg-input-all
但这告诉我我使用的是最新版本(1:7.7+19ubuntu15)。
我看到有人建议尝试以下方法:
sudo dpkg-reconfigure keyboard-configuration
sudo apt-get install console-common
sudo dpkg-reconfigure console-data`
并告诫人们不要这么做。
我已进入“设置/区域和语言”,并确保使用的是英语(美国)键盘。
任何建议都请明确说明,因为我不知道当有人说要做某件事时,那是什么意思。但我愿意学习。
谢谢
我得到的建议是运行事件监听器来xev -event keyboard
查看发生了什么。以下是命令和输出:
$ xev -event keyboard
Outer window is 0x2600001, inner window is 0x2600002
KeymapNotify event, serial 24, synthetic NO, window 0x0,
keys: 4294967234 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 25, synthetic NO, window 0x2600001,
root 0x117, subw 0x0, time 6729494, (-77,353), root:(45,467),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES, " XLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x2600001,
root 0x117, subw 0x0, time 6735520, (-77,353), root:(45,467),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x2600001,
root 0x117, subw 0x0, time 6735648, (-77,353), root:(45,467),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeymapNotify event, serial 28, synthetic NO, window 0x0,
keys: 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ClientMessage event, serial 28, synthetic YES, window 0x2600001,
message_type 0x14d (WM_PROTOCOLS), format 32, message 0x14b (WM_DELETE_WINDOW)
当我在 Ubuntu 20.10 桌面(Shift 键起作用的地方)上运行相同的事件监听器时,我得到:
$ xev -event keyboard Outer window is 0x7e00001, inner window is 0x7e00002
KeymapNotify event, serial 24, synthetic NO, window 0x0,
keys: 4294967234 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 25, synthetic NO, window 0x7e00001,
root 0x13a, subw 0x0, time 243491049, (325,434), root:(2412,558),
state 0x10, keycode 104 (keysym 0xff8d, KP_Enter), same_screen YES, " XLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x7e00001,
root 0x13a, subw 0x0, time 243494233, (325,434), root:(2412,558),
state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7e00001,
root 0x13a, subw 0x0, time 243494309, (325,434), root:(2412,558),
state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
ClientMessage event, serial 28, synthetic YES, window 0x7e00001,
message_type 0x144 (WM_PROTOCOLS), format 32, message 0x142 (WM_DELETE_WINDOW)
我看到的主要区别是工作桌面提供了
状态 0x10
无法工作的笔记本电脑会
状态 0x0
但我不知道这些是什么意思。
答案1
这值得一试(我已经通过这种方式对我的键进行了一些重新映射):在您的主目录中创建一个名为.Xmodmap
(注意前导点)的文件并添加以下内容:
!Map the shift key
keycode 50 = Shift_L Shift_L Shift_L
重启