2014-05-09 9 views
4

J'écris un programme qui lit l'entrée de Javascript et envoie ces lectures à bash.Codes "ASCII" pour la flèche haut, bas, gauche et droite

Je peux exécuter avec succès de nombreuses actions, comme des lettres "A-Z", TAB, CTRL + C, etc. Mais je réalise que je ne peux pas envoyer correctement pour frapper la flèche vers le haut.

Si je lis le code ascii de Javascript, je reçois le texte suivant comme expliqué Binding arrow keys in JS/jQuery

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

Cependant, quand j'envoie flèche vers le haut du terminal, le code clé décimal 38, je vous écris une esperluette (comme par suite à une table ASCII http://www.asciitable.com/)

Donc, ma question est: quel code dois-je envoyer de Java à bash pour dire bash "flèche vers le haut"?

PD_ je me rends compte qu'il peut être différent en fonction du système d'exploitation et ce code ne pourrait pas être considéré comme un code ascii comme ce poste suggèrent: enter link description here

Modifier Je vous écris de Java bash en utilisant le code suivant:

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

Merci d'avance.

+6

Vous mentionnez Java, Javascript et bash ici. Que fais-tu? –

+0

Pourquoi essayez-vous d'envoyer une flèche vers bash? Un programme Java n'est pas un utilisateur. –

+1

Lecture des caractères de JavaScript et envoi à bash en utilisant Java. Dans le contexte a du sens. – Tk421

Répondre

7

La séquence d'échappement pour « Flèche vers le haut » est "\u001b[A". \u001b est le code pour ESC (Escape).

Cela signifie que si vous avez un code clé unique en JavaScript, vous devez écrire 3 octets à BASH pour obtenir l'effet désiré.

Vous pouvez voir par vous-même en tapant Ctrl + V Up.

Le Ctrl + V indique à bash: "N'essayez pas d'interpréter l'entrée suivante, il suffit de l'insérer mot à mot".

connexes:

+0

Huh, j'obtiens 'erreur: character' d'évasion illégale lorsque je tente que Java. – Arin

+0

Bien sûr. Java prend uniquement en charge les séquences d'échappement Unicode. Fixé. –

+0

S'il y a quelqu'un de Swift, la chaîne est "\ u {1b} [A" – ColdGrub1384

Questions connexes