箭头向上、下、左、右的"ASCII"码

5
我正在编写一个程序,它从JavaScript读取输入并将这些输入发送到bash。
我可以成功地运行许多动作,比如"A-Z"字母、TAB、CTRL+C等等。但是我发现我无法正确地向bash发送箭头上键。
如果我从JavaScript中读取ascii代码,根据JS/jQuery绑定箭头键的解释,我得到以下结果。
37 - left
38 - up
39 - right
40 - down

然而,当我向终端发送箭头键向上的十进制代码38时,我会写入一个“&”符号(按照ASCII表http://www.asciitable.com/)。
因此,我的问题是:我需要从Java发送什么代码给bash告诉它“箭头键向上”?
PD_ 我意识到这可能因操作系统而异,且该代码可能不被视为ASCII代码,正如此帖子所示:进入链接描述 编辑 我使用以下代码从Java向bash编写内容:
JSch jsch = new JSch();
[...]
Channel channel = session.openChannel("shell");
OutputStream out = channel.getOutputStream();
out.write(asciiDecimalCode); // send characters

提前致谢。


6
你在这里提到了Java、Javascript和bash。你在做什么? - user1864610
1
从JavaScript读取字符并使用Java将其发送到bash。在上下文中有意义。 - Tk421
1
你所拥有的那些代码并不是ASCII码,它们只是键盘的按键映射代码,并且可能因制造商和本地化而有所不同。 - Teemu
那意味着这是不可能完成的吗? - Tk421
1
正确,我正在创建一个网页终端。这个程序主要是出于好奇心而写的。这是一个JavaScript终端。(我不明白负面意见是什么)。我编辑了主要问题,并添加了我用来编写bash的代码。它只是通过使用JSch的ChannelShell将十进制值写入OutputStream。 - Tk421
显示剩余2条评论
1个回答

12

"箭头向上"的转义序列是"\u001b[A"\u001bESC(转义)的代码。

这意味着,虽然你在JavaScript中只有一个键码,但在BASH中需要写入3个字节才能实现所需的效果。

您可以通过键入Ctrl+VUp来亲自查看它。

Ctrl+V告诉bash:“不要尝试解释下一个输入;只需按原样插入它。”

相关:


1
哎呀,在Java中尝试那样做时,我得到了“错误:非法转义字符”的错误。 - Aaron Esau
当然。Java仅支持Unicode转义序列。已修复。 - Aaron Digulla
如果有Swift方面的人,那么字符串是"\u{1b}[A"。 - Emma Labbé

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接