最终目标
我使用 Arch Linuxbspwm
作为我的窗口管理器和sxhkd
热键守护程序。我想在我的sxhkdrc中映射某个组合键,以便它在不同的键盘布局中随机播放。例如:
# Shuffle through keyboard layouts
super + e
*action to be executed*
地区
首先,我不知道是否需要添加塞尔维亚语语言环境,因为我只是(不时)想要激活塞尔维亚语键盘布局。我的想法是键盘映射就足够了。以防万一,我生成了塞尔维亚语语言环境;所以现在当我运行时localectl list-local
,输出是:
en_US.UTF-8
sr_RS.UTF-8
sr_RS.UTF-8@latin
这些分别对应于:
- 美国的英语语言环境 – UTF-8 编码
- 塞尔维亚的塞尔维亚语语言环境 – 西里尔字母 – UTF-8 编码
- 塞尔维亚的塞尔维亚语语言环境 – 拉丁文字 – UTF-8 编码
键盘映射
我想使用的三种布局(能够随机播放)是:
us
= 美国英语sr-cy
= 西里尔字母的塞尔维亚语sr-latin
= 拉丁文的塞尔维亚语
我知道我可以编辑/etc/vconsole.conf
和设置KEYMAP=sr_cy
而不是us
使用localectl set-keymap sr_cy
.
以下是我对此的担忧:
- 这不是一个优雅的解决方案。
- 我无法在不同的布局中随机播放。我必须每次运行命令并指定所需的布局。
- 即使在我注销或重新启动系统后,这种更改是否会在全球范围内持续存在?如果答案是肯定的,我可能会遇到麻烦。我在 LUKS 加密上使用 LVM,我需要
us
布局来解密我的磁盘。因此,如果我在重新启动之前忘记从西里尔脚本切换,那就永远再见了。
问题
有什么方法可以让我添加多个键盘映射/etc/vconsole.conf
并us
使其成为默认键盘映射?如果是这样,我需要做什么才能在它们之间切换。它是一个简单的命令还是我需要一个小脚本?如果这不是一个选择,那么实现我的最终目标的最佳方式是什么。
我试图找到拥有多个键盘映射的答案,但我找不到任何适用于我的问题的东西。我会很感激一个解决方案,甚至是建议和建议,特别是如果它提高了我的知识。先感谢您!
由于缺乏声誉,我无法发表评论。我不知道答案,只是想分享一下我的想法。
首先是最坏的情况。您是否无法通过创建并从 USB 棒等外部驱动器启动以从内部驱动器恢复文件来从无法输入密码中恢复?也许你可以尝试一下,为最坏的情况做好准备。
我从未使用过 localectl ,它似乎对您的需求过于强大,只需更改键盘布局,因为它还控制其他软件的本地化。我通常使用
setxkbmap
. 我很确定,但不保证,您使用 setxkbmap 所做的更改会在 X 服务器中消失,因此重新启动会重置,但我不保证任何事情。然而,这可能是可测试的:制作 us 键盘映射的副本,交换两个键(至少一个是您的解密密码的一部分),应用该副本,重新启动系统,现在您可以检查是否仍然应用新布局(我希望我的意思很清楚,如果你的密码是:asdf,然后交换 f 和 g,看看你是否必须输入 asdf 或 asdg)。为了这对你有用,我当然假设了很多事情。如果你不使用 X,那么这根本没有用。
我
setxkbmap
用来在 Dvorak 和 QUERTY 之间切换。我有一个 bash 脚本~/.local/bin/toggle_kbd
(包含在我的 中PATH
),我的窗口管理器已绑定到一个快捷方式。它只是运行一个 case 语句来将我的键盘设置为它当前不是的那个。我正在使用中列出的键盘映射名称localectl list-keymaps
:每当 X 重新启动时,它也会重置为您所在地区的键盘(您启动时使用的普通键盘)。这确实循环通过它们而不是设置特定的。我不知道这对你来说有多大的意义,但剧本的想法可以很容易地适应这一点。