Linux 如何获取CTRL+;B、 CTRL+;五十、 ALT+;K、 等等。。。?

Linux 如何获取CTRL+;B、 CTRL+;五十、 ALT+;K、 等等。。。?,linux,unix,terminal,Linux,Unix,Terminal,我正在编写一个在linux中与Nano接口的应用程序。Nano需要接收控制序列以保存/退出/并使用文件(^G^R^O^Y^K等…) 我偶然发现了^X=U+0018的unicode。但我希望我的应用程序是完整的,我希望能够有一个完整的unicode字符列表,用于ctrl/alt/shift+任何其他键的组合 我试图通过在shell之间连接netcat,按下(例如)CTRL+B并查看另一侧显示的内容来实现这一点。这对他们中的一些人有效,而不是所有人,因为终端在发送转义之前“解释”了转义 我现在提供悬

我正在编写一个在linux中与Nano接口的应用程序。Nano需要接收控制序列以保存/退出/并使用文件(
^G^R^O^Y^K
等…)

我偶然发现了
^X=U+0018
的unicode。但我希望我的应用程序是完整的,我希望能够有一个完整的unicode字符列表,用于ctrl/alt/shift+任何其他键的组合

我试图通过在shell之间连接netcat,按下(例如)CTRL+B并查看另一侧显示的内容来实现这一点。这对他们中的一些人有效,而不是所有人,因为终端在发送转义之前“解释”了转义

我现在提供悬赏,我想要的是

  • A) 获取所有转义码的方法,或
  • B) 一份全面的清单,包括我上面提到的那些

    • 问题中没有包含太多代码,因此我不知道您是如何完成任务的。使用Python处理子流程的最佳方法是使用
      子流程
      模块。如果您能提供更多的代码细节,比如如何处理子流程和绑定它们,我们会更有帮助

      话虽如此,Linux支持向任何进程发送信号。这是通过
      kill
      系统调用完成的。Python还将此系统调用封装在
      os.kill
      中。您只需将目标的pid和信号号作为参数传递。如果您使用的是子流程,
      Popen.send\u signal
      应该是要使用的方法

      要恢复它,您需要目标进程的进程ID——在您的例子中应该是终端或Nano——并且需要知道信号号

      在您的情况下,我不认为CTRL+X是注册信号。相反,它是一个特殊字符(一些值映射到应用程序或终端中的
      CTRL+X
      )。您需要弄清楚这个值是什么,并通过您的流程发送它


      希望这有帮助

      尽管我真的认为您不应该做您正在做的事情(将Nano作为子流程打开,然后向其发送控制序列)。在我看来,你似乎试图用
      expect
      脚本或至少是相同的风格来控制Nano。在python中(我不熟悉pty.spawn,但签名似乎已经缺少所需的功能:与孩子的双向通信),您应该查找popen:

      使用popen,您可以通过设置自定义stdin/out/err文件描述符来生成一个子项,并且仍然可以从python对其进行“读写”

      关于发送内容的确切值,请查看以下内容:

      看起来好像:“\x18”应该可以很好地完成这个任务。

      找到了答案:

      正如Paulo Bu所说,当按下CTRL+X等键时,终端接收到的不是信号,而是组合键。CTRL+X有一个unicode等效项

      Hexadecimal code: 18, U+0018. 
      

      获取字符的过程:在显示字符的编辑器(如gedit)中按ctrl+shift+U+0018

      如果CTRL+X不是注册信号,nano怎么知道您没有将键写入文件而不是要求保存?。在按住CTRL的同时,读取字母组合
      CTRL
      ,然后读取
      X
      。通常情况下,您不会键入任何以
      CTRL
      开头的字母组合,不是吗?这不是信号,只是一个特殊字符。@smassey应该是这样的!谢谢:)明白了,它的十六进制代码是18,U+0018。gedit中的ctrl+shift+U+0018,这将为您提供unicode字符,将其复制/粘贴到终端中,然后瞧。无论如何,谢谢你的帮助。可能是的副本