相关疑难解决方法(0)

“终端”、“外壳”、“tty”和“控制台”之间的确切区别是什么?

我认为这些术语在松散使用时几乎指的是同一件事:

  • 终端
  • 贝壳
  • 打字机
  • 安慰

这些术语中的每一个究竟指的是什么?

shell terminal tty terminology console

1433
推荐指数
10
解决办法
42万
查看次数

每个伪终端 (PTY) 组件(软件、主端、从端)的职责是什么?

我试图弄清楚tty如何工作的1(每个元素的工作流程和职责)。我已经阅读了几篇关于它的有趣文章,但仍然有一些模糊的地方。

这是我到目前为止的理解:

  • 仿真终端/dev/ptmx对伪终端的主控部分进行不同的系统调用。
  • 伪终端的master部分分配了一个文件/dev/pts/[0-N],对应过时的串口,并在其上“附加”了一个slave伪终端。
  • 从伪终端保存会话ID、前台作业、屏幕大小等信息。

以下是我的问题:

  1. ptmx除了分配从属部分之外还有什么用途吗?它是否提供某种“智能”,或者模拟终端(例如 xterm)具有像终端一样运行的所有智能?
  2. 为什么 xterm必须与 master 部分交互,因为它只转发 slave 部分的 stdout 和 stdin?为什么不能 直接读写pts文件
  3. 会话 ID 是否总是附加到一个 pts 文件,反之亦然?我可以输入 ps 命令并找到2 个 sessionId 的相同 /dev/pts/X吗?
  4. pts商店还有什么其他信息?Xterm 是自己更新所有字段,还是在其上ptm添加一些“智能”?

1. 我的理解基于Linus Akesson 揭秘TTYAndries BrouwerLinux Kernel帖子,以及这些网站上的其他几个问题

kernel terminal-emulator terminal tty pty

77
推荐指数
3
解决办法
2万
查看次数

关于 LESS_TERMCAP_* 变量的文档?

在设置一堆这些变量时,我使用 less 查看的联机帮助页中看到了这些漂亮的颜色。它们是什么意思,文档在哪里?这是由less还是termcap解释的?

截屏

手册页的 ss

less colors man termcap terminal

55
推荐指数
2
解决办法
2万
查看次数

鼠标事件在 linux 中如何工作?

这主要是出于好奇,我试图了解事件处理是如何在低级别上工作的,所以请不要将我引用到可以为我完成的软件。

例如,如果我想用 C/C++ 编写一个对鼠标点击做出反应的程序,我假设我需要使用系统调用将某些函数挂接到内核,或者您可能只需要不断检查鼠标的状态,我不知道。

我认为这是可能的,因为在 C/C++ 中几乎所有事情都是可能的,因为级别如此之低,我最感兴趣的是它的工作原理,尽管我可能永远不必自己实现它。

问题是它在 linux 中是如何工作的,是否有某些系统调用、c 库等?

linux input devices

27
推荐指数
2
解决办法
3万
查看次数

如何阻止光标闪烁

blinkingTTY 中如何使光标停止?(或其他任何地方)。

一项通用设置的奖励积分,该设置几乎可以在任何地方停止光标闪烁。

tty

25
推荐指数
5
解决办法
5万
查看次数

键绑定表?

我们是否有一个键绑定表来翻译所有指代按键的方式?我正在使用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 Arrow0;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 terminal keyboard key-mapping

24
推荐指数
4
解决办法
3万
查看次数

^ 字符在像 ^X^I 这样的序列中是什么意思?

我正在从 zsh 邮件列表中阅读有关键绑定的消息,我想知道我需要按哪个键:

  1. ^X^I(我认为Ctrl-X Ctrl-I,首都XI
  2. ^[^@(我觉得Ctrl-Esc-@??)
  3. ^X^[q(我觉得Ctrl-X Esc-q??)
  4. ^XQ (我认为Ctrl-X和 Q ??)

来自zsh 上的 Archlinux wiki 页面

  1. ^[[1;3A
  2. ^[[1;3D

bindkey

  1. ^[[1;5C
  2. ^[[A

我知道这^[意味着 Esc,但我不确定如何找到其他人。是否有任何官方参考或网站列出这些?

terminal keyboard escape-characters

23
推荐指数
2
解决办法
2089
查看次数

键盘映射在 Linux 中是如何工作的?

我一直无法理解 Linux 中键盘映射和相关内容的组合方式。

当事情打破,这让我热血沸腾,如果我有通过无休止的过时的邮件列表和论坛帖子进行筛选找到THAT一个命令或inputrc文件行修复我的问题。

有一些经典问题,例如退格在 vim 中不起作用,或者Ctrl在 bash 中使用 + 箭头,直到您切换终端类型。或者我最近遇到的一个问题,在新的 Debian 安装@密钥中实际打印", 并"打印@(错误的键盘布局?)

仅查看文件和工具并没有太大帮助。输入法?xmodmap?设置xkbmap?控制台设置?我从哪里开始真正了解它是如何工作的,这样我就不必求助于尝试某人的可疑命令来解决我的键盘问题?

linux keyboard

18
推荐指数
1
解决办法
2万
查看次数

如何获取我所有的密钥以发送密钥代码

我在 XFCE 中使用 Gentoo。我有一个罗技 K350 键盘,除了少数几个键外,其他所有键都按预期工作,但我想使用一个特定键,但是当我运行时,showkey没有发送任何键代码。关键是键盘左下角的排列窗口按钮。

在此处输入图片说明.

这是一个驱动程序问题,是否有可能获得该密钥以发送代码以便我可以将操作映射到它?

linux keyboard x11 keyboard-layout

17
推荐指数
1
解决办法
3万
查看次数

/dev/input - 这到底是什么?

我很好奇硬件如何与操作系统交互并看到这篇文章:键盘输入和文本输出如何工作?

似乎很多魔法都发生在 /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)

linux devices

15
推荐指数
2
解决办法
2万
查看次数