【问题标题】:How to get the unicode characters for CTRL+B, CTRL+L, ALT+K, etc...?如何获取 CTRL+B、CTRL+L、ALT+K 等的 Unicode 字符?
【发布时间】:2014-01-20 01:51:47
【问题描述】:

我正在编写一个与 Linux 中的 Nano 接口的应用程序。 Nano 需要接收控制序列来保存/退出/和处理文件(^G ^R ^O ^Y ^K 等...)

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

我尝试通过在 shell 之间连接 netcat 来做到这一点,按下(例如)CTRL+B 并查看另一侧出现的内容。这适用于其中一些,而不适用于所有终端,因为终端会在发送前“解释”转义。

我现在提供赏金,我想要的是要么

  • A) 获取所有转义码的方法,或
  • B) 包含我上面提到的那些的综合列表。

【问题讨论】:

标签: linux unix terminal


【解决方案1】:

你没有在问题中包含这么多代码,所以我不知道你是如何完成任务的。使用 Python 处理子进程的最佳方法是使用 subprocess 模块。如果您可以提供代码的更多详细信息,例如您如何处理子流程并绑定它们,我们可能会更有帮助。

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

要恢复它,你需要目标进程的进程 ID——在你的情况下应该是终端或 Nano——并且需要知道信号号。

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

希望这会有所帮助!

【讨论】:

  • 如果 CTRL+X 不是注册信号,nano 怎么知道您没有将密钥写入文件而不是要求保存?..
  • 通过阅读字母组合CTRL,然后阅读X,同时仍然按下CTRL。通常你不会输入任何以CTRL 开头的字母组合,不是吗?
  • 不是信号,只是特殊字符。
  • @smassey 那应该是!谢谢:)
  • 知道了,它的:十六进制代码:18,U+0018。 gedit 中的 ctrl+shift+U+0018,它为您提供 unicode 字符,将其复制/粘贴到终端中,然后瞧。无论如何感谢您的帮助。
【解决方案2】:

虽然我真的不认为你应该做你正在做的事情(将 Nano 作为子进程打开,然后向它发送控制序列)。在我看来,您似乎正在尝试使用 expect 脚本或至少相同的样式来控制 Nano。在 python 中(我不熟悉 pty.spawn 但签名似乎已经缺少你需要的功能:与孩子的双向通信)你应该查找 popen 代替:http://docs.python.org/2/library/subprocess.html#subprocess.Popen

使用 popen,您可以通过设置自定义 stdin/out/err 文件描述符从 python 中“读取和写入”子代。

至于发送的确切值,请查看:http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fcompiler%2Fref%2Fruascii.htm

看起来好像:“\x18”应该可以解决问题。

【讨论】:

    【解决方案3】:

    想通了:

    正如Paulo Bu所说,它不是终端在按下CTRL+X等键时收到的信号,它只是组合键。 CTRL+X 具有 unicode 等效项。

    Hexadecimal code: 18, U+0018. 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2018-12-15
      • 2014-10-24
      • 2014-01-09
      • 2011-05-05
      相关资源
      最近更新 更多