意外地反弹了 shift+Space,现在我无法在大写输入时添加空格

意外地反弹了 shift+Space,现在我无法在大写输入时添加空格

简而言之,我在为多种语言设置键盘时(我经常需要为论文输入晦涩难懂的字符),无意中将“选择下一个输入”热键重新绑定为 Lshift+space,而不是我想要的 alt+shift。我以为没什么不对劲,立即重新绑定了该键。但是,从那时起,当我按住任何一个 Shift 键时,空格键都无法产生任何结果。

这只会影响我的用户配置文件,而且似乎适用于所有语言,这告诉我必须有一个热键设置在某处才能“不做任何事”。然而,在设置-设备-键盘下重置快捷键似乎没有效果。还有 dpkg-reconfigure "dpkg-reconfigure 键盘配置“也不能解决问题。

我不想恢复时间移位快照,因为我在过去 24 小时内对这台机器做了很多事情,而且我不想再做一遍,特别是如果有一个简单的修复方法的话。

答案1

好的。

因此,经过 4 个小时的苦思冥想之后,我终于从 reddit 深处埋藏的一篇有用的帖子中了解了 xmodmap 的输出含义。

如果您像我一样,意外地覆盖了键盘本身的实际绑定之一,那么这是一个相对容易的修复。

对于任何其他随机密钥不起作用的惊慌失措的用户,我强烈建议您按照我的做法去做:

打开终端,

键入“xmodmap -pke > ~/keymap.jackass”以将所有按键及其功能的完整映射输出到一个可读性较差的文本文件中。在 gedit 或您最喜欢的文本编辑器中打开该文件。将此按键映射放在手边,您将需要它。

接下来,输入 xev -event keyboard 来捕获按下不起作用的键时发生的情况(我进行了分离-一起-分离,以清楚地显示不同之处。)当 xev 中按下空格或 shift-space 时没有明显不同时,我决定茫然地盯着 xmodmap 的键码 65,即空格键。(Xev 将告诉您按下的每个键的键码。很方便。)

现在,当我在可信赖的 keymap.jackass 中查找键码 65 时,我发现了一个奇怪的条目,它显示“键码 65 = space NoSymbol space NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol space space thinspace nobreakspace”,这对我来说可能就像是一门外语。幸运的是,有一些资源可以帮助您理解此处列出的条目表示当使用空格键按下修饰键时会发生什么。前六个条目是:

  1. 键 [无修饰符]

  2. Shift+键

  3. 模式_开关+按键

  4. 模式_切换+Shift+键

  5. ISO_Level3_Shift+键 (AltGr)

  6. ISO_Level3_Shift+Shift+键(AltGr+shift)。

所以我需要做的就是让 xmodmap 认识到第二个条目(shift+key)不应该读取 NoSymbol 而应该读取“space”。

因此,我觉得自己像个英雄,解决了任何长期使用 Linux 用户可能需要五秒钟才能解决的问题,我将 keymap.jackass 中的键码 5 条目更改为:

“键码 65 = 空格 空格 空格 无符号 无符号 无符号 无符号 空格 空格 细空格 无中断空格”

我为什么先在那里做这件事?基本逻辑是,对于这么长的字符串,我不想错过任何条目,所以我复制了该行,然后输入到我信任的终端

'xmodmap -e “键码 65 = 空格 空格 空格 无符号 无符号 无符号 无符号 空格 空格 细空格 无中断空间”'

瞧。

工作班次+空间。

孩子们,别像我一样,早点了解 xmodmap 的基本功能是什么!

(编辑)附录:重启后我的 xmodmap 设置没有保留。快速将 xmodmap -e 命令与更正内容一起放入 /home//.xinitrc 即可在重启时解决此问题。这可能仍不是最佳解决方法,但嘿,您已经找到了。

相关内容