2014-05-09 592 views
4

我正在写一个程序,它从Javascript读取输入并将这些读数发送给bash。“ASCII”代码箭头向上,向下,向左和向右

我可以成功运行很多动作,比如“A-Z”字母,TAB,CTRL + C等等。但是我意识到我无法正确地发送向上箭头键。

如果我读从Javascript的ASCII码,我得到的解释Binding arrow keys in JS/jQuery

37 - left 
38 - up 
39 - right 
40 - down 

以下然而,当我把箭头到终端,用十进制码38,我写的符号(如以下ASCII表http://www.asciitable.com/

所以,我的问题是:什么代码我必须从Java发送到bash告诉bash“箭头键”?

PD_我意识到,它可能会根据操作系统的不同而不同,这代码可能不会被认为是ASCII码为这篇文章建议:enter link description here

编辑 我从Java编写使用来砸以下代码:

JSch jsch = new JSch(); 
[...] 
Channel channel = session.openChannel("shell"); 
OutputStream out = channel.getOutputStream(); 
out.write(asciiDecimalCode); // send characters 

在此先感谢。

+6

你提到的Java,Javascript和庆典在这里。无论你在做什么? –

+0

你为什么试图发送箭头到bash?一个Java程序不是用户。 –

+1

从JavaScript中读取字符并使用Java将其发送到bash。在上下文中是有道理的。 – Tk421

回答

7

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

这意味着,虽然您在JavaScript中有一个关键代码,但您需要向BASH写入3个字节以获得所需的效果。

你可以通过键入自己看到它Ctrl + V向上

Ctrl + V告诉bash:“不要试图解释下一个输入,只是逐字地插入它”。

相关:

+0

呵呵,当我尝试使用Java时,出现'错误:非法转义字符'。 – Arin

+0

当然。 Java只支持Unicode转义序列。固定。 –

+0

如果有人来自Swift,则字符串是“\ u {1b} [A” – ColdGrub1384

相关问题