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 / 问题 / 479673
Accepted
étale-cohomology
étale-cohomology
Asked: 2018-11-04 16:56:21 +0800 CST2018-11-04 16:56:21 +0800 CST 2018-11-04 16:56:21 +0800 CST

以与 X/控制台无关的方式更改控制台 (tty) 和 X 上的键盘布局/映射?

  • 772

当X Window 系统运行时,我已经能够更改键盘布局/映射~/.Xmodmap(我想你也可以直接通过X 协议来做到这一点,例如,使用libxcb作为 X 协议调用的包装器)。

我已经能够在控制台/tty(即 X 未运行时)上使用loadkeys.

有没有一种方法可以类似地自定义键盘布局,但从单一来源,以影响 X 和控制台的方式,即。以“与 X 和控制台无关”的方式?

(我能想到的唯一方法是编写一个“键盘驱动程序”,它与内核的输入接口对话evdev,并发送你想要的输入(通过uinput?),但我不知道这是否有意义,或者如果有更简单的方法。)

keyboard-layout keyboard
  • 1 1 个回答
  • 3645 Views

1 个回答

  • Voted
  1. Best Answer
    JdeBP
    2018-11-05T03:31:02+08:002018-11-05T03:31:02+08:00

    是的,有一种方法,这确实是 Debian 的控制台设置包的方式。

    • 键盘布局由管理员在名为 .的文件中以 XKB 术语(型号、布局、变体和选项)指定keyboard,通常为/etc/default/keyboard. 这是单一来源。它可以用文本编辑器进行编辑。
    • 该setxkbmap程序具有这些相同的 XKB 设置并相应地配置 X11 服务器。
      • 键盘配置包的安装后维护脚本setxkbmap直接运行/etc/default/keyboard,如果它发现自己带有 X11 显示器,则带有设置。因此dpkg-reconfigure keyboard-configuration,从 X11 GUI 终端仿真器运行将影响 X11 键盘布局。
    • 该setupcon脚本采用这些 XKB 设置,将它们传递给ckbcomp实用程序以生成键盘映射,并使用loadkeys/将该键盘映射加载到内核虚拟终端中kbdcontrol。
      • 此脚本由服务在系统引导程序中运行。
      • elsewhen 也可以手动运行。

    其他 systemd 操作系统的工作方式不同,但也有单一来源。

    • XKB 布局、变体和选项存储在/etc/X11/xorg.conf.d/00-keyboard.conf. 这是单一来源。
      • 该文件由 X11 服务器在启动时直接读取,并直接设置 X11 键盘映射。
      • systemd-localed该文件在启动时被解析。该文件在运行时无法使用文本编辑器进行有用的编辑systemd-localed,因为该服务会用自己的内存信息轻松地覆盖它。
      • 要更改 XKB 信息,请运行localectl,该服务器与另一台服务器通信,该服务器又与systemd-localed.
    • systemd-localed使用映射将 XKB 设置转换为虚拟终端键盘映射名称/usr/share/systemd/kbd-model-map,然后将其写入/etc/vconsole.conf. 与 Debian 系统不同,它不会根据 XKB 信息动态生成映射,而是仅选择映射文件中列出的预先提供的静态映射。
    • systemd-vconsole-setup在引导程序中运行,读取/etc/vconsole.conf键盘映射,并通过运行将键盘映射加载到内核虚拟终端中loadkeys。

    进一步阅读

    • keyboard. 控制台设置用户手册。德比安。
    • ckbcomp. 控制台设置用户手册。德比安。
    • 安德鲁·T·杨 (2011)。键盘配置。
    • Xkb 从哪里得到它的配置?
    • https://unix.stackexchange.com/a/326804/5132
    • 18

相关问题

  • 回弹 shift 键仍充当 shift 键

  • 无法使用键盘键入分音符

  • 读取 PS/2 键盘的 /dev/input/

  • 将波浪号和横杠堆叠在字母上

  • 使 Apple 键盘设置在 ../hid_apple/parameters/ 中持久化

Sidebar

Stats

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

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

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

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

    • 5 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • 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
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +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