AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 703316
Accepted
Vladimir
Vladimir
Asked: 2022-05-21 11:12:00 +0800 CST2022-05-21 11:12:00 +0800 CST 2022-05-21 11:12:00 +0800 CST

切换键盘布局

  • 772

最终目标

我使用 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.

以下是我对此的担忧:

  1. 这不是一个优雅的解决方案。
  2. 我无法在不同的布局中随机播放。我必须每次运行命令并指定所需的布局。
  3. 即使在我注销或重新启动系统后,这种更改是否会在全球范围内持续存在?如果答案是肯定的,我可能会遇到麻烦。我在 LUKS 加密上使用 LVM,我需要us布局来解密我的磁盘。因此,如果我在重新启动之前忘记从西里尔脚本切换,那就永远再见了。

问题

有什么方法可以让我添加多个键盘映射/etc/vconsole.conf并us使其成为默认键盘映射?如果是这样,我需要做什么才能在它们之间切换。它是一个简单的命令还是我需要一个小脚本?如果这不是一个选择,那么实现我的最终目标的最佳方式是什么。

我试图找到拥有多个键盘映射的答案,但我找不到任何适用于我的问题的东西。我会很感激一个解决方案,甚至是建议和建议,特别是如果它提高了我的知识。先感谢您!

arch-linux locale
  • 2 2 个回答
  • 1280 Views

2 个回答

  • Voted
  1. bananabook
    2022-05-21T12:50:08+08:002022-05-21T12:50:08+08:00

    由于缺乏声誉,我无法发表评论。我不知道答案,只是想分享一下我的想法。

    首先是最坏的情况。您是否无法通过创建并从 USB 棒等外部驱动器启动以从内部驱动器恢复文件来从无法输入密码中恢复?也许你可以尝试一下,为最坏的情况做好准备。

    我从未使用过 localectl ,它似乎对您的需求过于强大,只需更改键盘布局,因为它还控制其他软件的本地化。我通常使用setxkbmap. 我很确定,但不保证,您使用 setxkbmap 所做的更改会在 X 服务器中消失,因此重新启动会重置,但我不保证任何事情。然而,这可能是可测试的:制作 us 键盘映射的副本,交换两个键(至少一个是您的解密密码的一部分),应用该副本,重新启动系统,现在您可以检查是否仍然应用新布局(我希望我的意思很清楚,如果你的密码是:asdf,然后交换 f 和 g,看看你是否必须输入 asdf 或 asdg)。

    为了这对你有用,我当然假设了很多事情。如果你不使用 X,那么这根本没有用。

    • 1
  2. Best Answer
    Jeremy Meadows
    2022-05-21T13:46:21+08:002022-05-21T13:46:21+08:00

    我setxkbmap用来在 Dvorak 和 QUERTY 之间切换。我有一个 bash 脚本~/.local/bin/toggle_kbd(包含在我的 中PATH),我的窗口管理器已绑定到一个快捷方式。它只是运行一个 case 语句来将我的键盘设置为它当前不是的那个。我正在使用中列出的键盘映射名称localectl list-keymaps:

    #!/usr/bin/env bash
    
    case $(setxkbmap -query | grep layout | awk '{ print $2 }') in
              us) setxkbmap sr-cy ;;
           sr-cy) setxkbmap sr-latin ;;
        sr-latin) setxkbmap us -variant altgr-intl ;;
               *) setxkbmap us -variant altgr-intl ;;
    esac
    

    每当 X 重新启动时,它也会重置为您所在地区的键盘(您启动时使用的普通键盘)。这确实循环通过它们而不是设置特定的。我不知道这对你来说有多大的意义,但剧本的想法可以很容易地适应这一点。

    • 1

相关问题

  • Nftables 配置错误:指定的协议冲突:inet-service v. icmp

  • archlinux efi netboot 内核“ip”不起作用?systemd "启动 Switch Root 失败。"

  • 如何在 Arch Linux 上设置音频,支持多个程序同时发出音频而不创建 asoundrc?

  • 为什么有时需要手动导入密钥?

  • 在启动时加载设备

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve