我想检查/更改/重新映射我的 Ubuntu 服务器终端中的键绑定。(我没有使用任何 GUI。我指的是基本终端 TTY1)。
我的核心问题是:
- 终端键绑定的配置文件在哪里?
背景:(我写这个背景是为了帮助读者了解我的观点。)
我想了解我的“低级”终端键绑定,以便我可以更好地配置和使用 Byobu。
如果答案能够的话,我将不胜感激:
解释终端启动的进程顺序/堆栈(因为这将帮助我了解哪些进程正在“窃取”键绑定)
澄清我使用的术语是否错误
答案1
简短答案
直接回答问题:
终端键绑定的配置文件在哪里?
就我的情况而言(Ubuntu 16.04,带有 bash),Serge 的回答很有用。(虽然我不太确定它是否涵盖了所有可能冲突的键绑定,这就是我写这个较长答案的原因。)Bash 在这些文件中配置键绑定:
- 默认键绑定:
/etc/inputrc
- 自定义键绑定:
~/.inputrc
长答案
在本节中,我想更全面一些。虽然 bash 和 readline 会影响键绑定,但它们还涉及其他过程。例如,如何ALT-2
绑定到 TTY #2?
概述
作为概述,以下是我在 Ubuntu Server 16.04 机器上涉及的部分。我首先从systemd,Ubuntu 当前的 init 系统。
systemd
开始systemd_logind
。systemd_logind
使用 启动 TTY1login
。login
开始bash
。bash
使用该readline
库。bash
运行~/.bashrc
最终开始byobu
byobu
在我的系统上,用作tmux
后端
(注:systemd
用于Ubuntu 15.04和16.04。暴发户是 Ubuntu 6.10 到 15.10 的初始化系统,根据https://en.wikipedia.org/wiki/Ubuntu_version_history。
实际上,以下组件会捕获一些按键:
systemd-logind
(陷阱ALT-1
等ALT-2
)。login
bash
使用readline
库tmux
byobu
- TTY(TODO:我不知道这是否是其中的一部分
systemd
?login
)
systemd-logind
对于 Ubuntu 16.04,systemd-logind是用户登录的起点。根据systemd-logind 的 Ubuntu 手册页。
systemd-logind 是管理用户登录的系统服务。它负责:
- 跟踪用户和会话、其进程和空闲状态
- 为用户提供基于 PolicyKit 的访问,以执行系统关机或睡眠等操作
- 为应用程序实现关机/睡眠抑制逻辑
- 处理电源/睡眠硬件键
- 多席位管理
- 会话切换管理
- 用户设备访问管理
- 在虚拟控制台激活和用户运行时目录管理时自动生成文本登录(gettys)
另请参阅logind.conf 的手册页。我没有看到任何关于终端键绑定的提及。
TTY/键盘配置
TTY/键盘配置相关链接:
- https://wiki.debian.org/键盘
- https://help.ubuntu.com/community/Custom%20keyboard%20layout%20definitions
- 更改服务器上的 TTY 键盘布局?
TTY/键盘布局工具:
bash(带有 readline 库)
这gnu.org bash 参考有关于 bash 和 readline 函数的详细文档。
这些配置文件影响键绑定:
- 默认键绑定:
/etc/inputrc
- 自定义键绑定:
~/.inputrc
tmux
tmux 键绑定描述如下:https://wiki.archlinux.org/index.php/Tmux#Key_bindings
用户特定的配置文件应位于 ~/.tmux.conf,而全局配置文件应位于 /etc/tmux.conf。
屏风
Byobu 有默认键绑定可以由用户定义/usr/share/byobu/keybindings/
。
工作正在进行中
注意:这个答案还在完善中。可能会有错误。(我发现根据我的阅读和推理,陈述看似正确的东西更容易,如果有错就改正。)当它接近完成时,我会更新它并删除此通知。
答案2
根据 bash 手册(可通过命令行访问man bash
),可以通过~/.inputrc
文件配置自定义键绑定。自定义键绑定的设置方式如下:
When using the form keyname:function-name or macro, keyname is the name of a key spelled out in English. For example: Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output"
当终端启动并将控制权传递给您的 shell(bash
通常是)时,它会读取配置文件,包括~/.inputrc
。readline 库实际上是启用此行为的,它还允许使用vi
或emacs
编辑模式。其他 shell 可能不支持 readline,例如ksh
,因此您确实需要使用vi
/编辑更多。在这种情况下,快捷键与和文本编辑器emacs
的快捷键相同。vi
emacs
byobu 与~/.inputrc
bash 的readline
: 并无太大关系,它使用了大量自己的自定义键绑定和设置,这些键绑定和设置大多来自它所使用的后端 -screen
或tmux
。我建议您阅读手册页和教程,以了解它们的工作原理。