linux – 使bash区分Ctrl-和Ctrl-Shift-

linux – 使bash区分Ctrl-和Ctrl-Shift-,第1张

概述我想知道是否有任何方法可以使bash为包含shift键的组合键发送不同的代码?例如,(Ctrl V显示我)Ctrl N和Ctrl Shift N被解释为相同(^ N).或者是否有可以发挥作用的终端?或者可以打击我修改,以便它呢? 终端不直接与键盘交互;它与它接收的字节流交互,这些字节通常(但不一定)由键盘生成.对于可打印的ASCII值,值与键盘上的键(或组合)之间存在明显的对应关系. ASCII 我想知道是否有任何方法可以使bash为包含shift键的组合键发送不同的代码?例如,(Ctrl V显示我)Ctrl N和Ctrl Shift N被解释为相同(^ N).或者是否有可以发挥作用的终端?或者可以打击我修改,以便它呢?解决方法 终端不直接与键盘交互;它与它接收的字节流交互,这些字节通常(但不一定)由键盘生成.对于可打印的ASCII值,值与键盘上的键(或组合)之间存在明显的对应关系. ASCII 97是a,ASCII 65是Shifta,依此类推.

但是,从ASCII 0到ASCII 31有32个非打印控制字符,因为它们用于控制终端.为了输入它们,添加了控件以允许您与其他键组合生成这些代码.使用了一个简单的方案.按Control-x将生成对应于从x减去64的控制代码.由于@生成ASCII 64,因此Control @生成ASCII 0.相同的映射适用于A到_(请参阅您最喜欢的ASCII参考以查看其余的对应关系).

但是,是否需要Shift键才能通过ASCII 95生成ASCII 64取决于您的键盘.在我的美国键盘布局上,只有[和]可以在没有shift键的情况下输入. (请记住,这是我们在这里使用的大写字母ASCII范围,而不是小写.)因此,为了简化,我怀疑在确定使用Control-x发送哪个键代码时会忽略Shift. (请注意,如果由于某种原因键盘上有两个由键/ Shift键对生成的64到95之间的字符,则终端需要为关联的控制字符定义备用映射.)

所有这些只是(?)来解释为什么ControlShift-x和Control-x通常是相同的.显然,您的现代 *** 作系统可以区分各种键盘组合.但是在众多可能性中,只有256个可以向终端发送唯一值;其余部分必须与一个或多个其他部分重复.为了有用,它们需要配置为向终端发送一些多字节序列,通常以ASCII 27(ESC)开头.当终端接收到该字节时,它们暂停片刻以查看是否有其他字节.功能键,箭头键等键具有相当标准的序列,终端以各种方式解释.其他键(例如您的示例中的ControlShiftn)没有达成一致意思,所以您的终端模拟器必须分配一个.大多数模拟器应该允许你这样做,但是他们如何这样做显然是程序特定的.

总结

以上是内存溢出为你收集整理的linux – 使bash区分Ctrl-和Ctrl-Shift-全部内容,希望文章能够帮你解决linux – 使bash区分Ctrl-和Ctrl-Shift-所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1022005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存