重现步骤
- 创建一个文件
keyb
,其中包含要禁用大写锁定的内容(通过将其转换为 mod3):add mod3 = Mode_switch keycode 66 = Mode_switch
- 使用 xmodmap 加载它(忽略任何错误,它无论如何都应该可以工作)
xmodmap keyb
- 按下大写锁定键,确认它不再像常规大写锁定键一样工作
- 插入外部 USB 键盘。如果这是台式机,只需拔下并重新插入同一个键盘即可。
- 按大写锁定键。现在它恢复正常状态。请注意,这是不是每个键盘的设置。Caps Lock 会在全部键盘,而不仅仅是新插入的键盘。
我期望发生什么
我的设置保持原样。有什么理由只用一些默认设置覆盖用户设置的内容?
我实际看到的
当连接任何新键盘时,所有键盘都会重置为默认映射。
更多的…
xmodmap
无论我用还是用 来设置,自定义都会被丢弃xkbcomp
。
仅在其他地方禁用大写锁定(例如 Xorg 配置)的解决方案不会有帮助,因为我有大量的自定义设置。这只是一个简单的演示,显示设置实际上已被重置。
理想情况下,修复不应该需要我有 root 访问权限(为什么用户的键盘设置只能用于 root?),但即使是需要 root 的解决方案,我也会非常高兴。
我尝试使用一个 cronjob 每分钟重新设置一次我的设置,但是更改设置会导致输入暂时冻结(持续xmodmap
几秒钟),所以这不起作用。
我怀疑是udev
和systemd
(systemd
它插手了一切),但我一直无法找到是什么在做什么,在哪里做。这已经是一个多年的错误了,不幸的是我不记得我尝试过的所有方法。
重新设置插入 USB 时触发的设置是可以的,但不是很好,因为除了上面 100% 可重复的步骤之外,它也会“随机”发生(可能是某些东西重新启动,或者其他什么)。
答案1
根据 Ubuntu 错误报告
#1899206:Xorg 会话中的热插拔/重新连接/恢复时未应用输入设备设置
从 2020 年 12 月开始,问题出在软件包上
mutter
,应该在版本中修复3.38.2-1ubuntu1~20.10.1
。
在您的存储库中搜索此版本。如果尚未找到,请等待它到达,或按照错误报告中的说明从源代码构建它。如果您的发行版不是 Ubuntu,则必须调整说明。
如果上述方法对你不起作用,可以查看旧错误报告 #295990:连接 USB 键盘后键盘布局重置 可能有助于解决一些问题。