我认为这些术语在松散使用时几乎指的是同一件事:
这些术语中的每一个究竟指的是什么?
我试图弄清楚tty是如何工作的1(每个元素的工作流程和职责)。我已经阅读了几篇关于它的有趣文章,但仍然有一些模糊的地方。
这是我到目前为止的理解:
/dev/ptmx对伪终端的主控部分进行不同的系统调用。/dev/pts/[0-N],对应过时的串口,并在其上“附加”了一个slave伪终端。以下是我的问题:
pts商店还有什么其他信息?Xterm 是自己更新所有字段,还是在其上ptm添加一些“智能”?1. 我的理解基于Linus Akesson 揭秘的TTY和Andries Brouwer的Linux Kernel帖子,以及这些网站上的其他几个问题
这主要是出于好奇,我试图了解事件处理是如何在低级别上工作的,所以请不要将我引用到可以为我完成的软件。
例如,如果我想用 C/C++ 编写一个对鼠标点击做出反应的程序,我假设我需要使用系统调用将某些函数挂接到内核,或者您可能只需要不断检查鼠标的状态,我不知道。
我认为这是可能的,因为在 C/C++ 中几乎所有事情都是可能的,因为级别如此之低,我最感兴趣的是它的工作原理,尽管我可能永远不必自己实现它。
问题是它在 linux 中是如何工作的,是否有某些系统调用、c 库等?
我们是否有一个键绑定表来翻译所有指代按键的方式?我正在使用zsh,但我认为如果有这样的表,它将适用于任何外壳。
我问的原因是我想分配一些键绑定,但我不知道如何引用它们(除非我要窃取一个已经定义的)。
例如,在“zbindkey”中,我们有这样的事情:
[[ "$terminfo[kend]" == " O"* ]] && \
bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
Run Code Online (Sandbox Code Playgroud)
...我可以猜到“kend”意味着这是指End钥匙。
交叉检查bindkey我看到这些行:
"^E" end-of-line
"^[OF" end-of-line
"^[[F" end-of-line
Run Code Online (Sandbox Code Playgroud)
...所以我相信其中一行是指End密钥。哪一个?
我们在“bindkey”文件中也有这个:
bindkey "\e[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
现在,我碰巧知道那是Up Arrow关键,但如果我不知道,我怎么知道呢?
$ bindkey (at CLI)
Run Code Online (Sandbox Code Playgroud)
... 为同一个键提供了不同的语言:
"^[[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
...但至少现在我知道 ^[[A在 bindkey-at-CLI 中说话与\e[A在 bindkey-in-zbindkey 中说话是一样的。这很容易。在过去的DOS下,Up Arrow 是0;72-你会发现每一个法律按键的扫描码,有仅仅是一种语言。
有桌子吗?或者能够选择击键并知道如何terminfo[]在“bindkey-in-zbindkey”中……在“bindkey-at-CLI”和/或任何其他语言中引用它的其他方式碰巧是?
同样,在 DOS 中有scancode程序——键入一个键,你就得到了扫描码。这太容易了。
从答案中我猜想没有办法打印出所有可能绑定的表格?无论如何'bindkey'几乎可以满足我的要求:
pts/2 HP-y5-10-Debian1 root /aWorking/Docs $ bindkey -L
bindkey …Run Code Online (Sandbox Code Playgroud) 我正在从 zsh 邮件列表中阅读有关键绑定的消息,我想知道我需要按哪个键:
^X^I(我认为Ctrl-X Ctrl-I,首都X和I)^[^@(我觉得Ctrl-Esc-@??)^X^[q(我觉得Ctrl-X Esc-q??)^XQ (我认为Ctrl-X和 Q ??)^[[1;3A^[[1;3D从 bindkey
^[[1;5C^[[A我知道这^[意味着 Esc,但我不确定如何找到其他人。是否有任何官方参考或网站列出这些?
我一直无法理解 Linux 中键盘映射和相关内容的组合方式。
当事情打破,这让我热血沸腾,如果我有通过无休止的过时的邮件列表和论坛帖子进行筛选找到THAT一个命令或inputrc文件行修复我的问题。
有一些经典问题,例如退格在 vim 中不起作用,或者Ctrl在 bash 中使用 + 箭头,直到您切换终端类型。或者我最近遇到的一个问题,在新的 Debian 安装@密钥中实际打印", 并"打印@(错误的键盘布局?)
仅查看文件和工具并没有太大帮助。输入法?xmodmap?设置xkbmap?控制台设置?我从哪里开始真正了解它是如何工作的,这样我就不必求助于尝试某人的可疑命令来解决我的键盘问题?
我在 XFCE 中使用 Gentoo。我有一个罗技 K350 键盘,除了少数几个键外,其他所有键都按预期工作,但我想使用一个特定键,但是当我运行时,showkey没有发送任何键代码。关键是键盘左下角的排列窗口按钮。
.
这是一个驱动程序问题,是否有可能获得该密钥以发送代码以便我可以将操作映射到它?
我很好奇硬件如何与操作系统交互并看到这篇文章:键盘输入和文本输出如何工作?
似乎很多魔法都发生在 /dev/input 目录中。我决定看看我自己的操作系统(Ubuntu 16.10),看看我能找到什么。所有这些文件都列为 0 字节,当我这样做时,我会sudo cat mouse0 | hexdump -C得到大量如下所示的十六进制数据:
00000000 b3 82 8a 58 00 00 00 00 53 74 09 00 00 00 00 00 |...X....St......|
00000010 01 00 1c 00 00 00 00 00 b3 82 8a 58 00 00 00 00 |...........X....|
00000020 53 74 09 00 00 00 00 00 00 00 00 00 00 00 00 00 |St..............|
00000030 b6 82 8a 58 00 00 00 00 06 56 …Run Code Online (Sandbox Code Playgroud)