自分のマシンで ssh を実行しているときに、ターミナル エミュレーターのコマンド履歴に Ctrl+P を使用できます。矢印キーも機能させることが可能かどうか知りたかったのです。コマンドssh user@hostではなく、プログラムを使用して ssh を実行しています
私がこれを尋ねているのは、バイト配列から個々の文字を抽出する前に、それを印刷しているためです。文字を押すと、バイト配列に多くの数字が表示されますが、矢印キーを押しても何も出力されません。Ctrl+P が機能するようにするには、矢印キーを作成する必要があります。
SHELL 値は /bin/bash であることに注意してください。また、私は TERM 変数のこれらの値を実験しました: ダム、vt100、xterm、linux .安全なログインのために、私は Ganymed SSH ライブラリを使用しています。
更新:(トリプルからの提案付き)
キーボード処理ロジックの小さなスニペットは次のとおりです。
for (int i = 0; i < len; i++)
{
char c = (char) (data[i] & 0xff);
System.out.print(c + ", ");
if (c == 8)
{
if (posx < 0)
continue;
posx--;
continue;
}
if (c == '\r')
{
posx = 0;
continue;
}
if (c == '\n')
{
posy++;
if (posy >= y)
{
for (int k = 1; k < y; k++)
lines[k - 1] = lines[k];
posy--;
lines[y - 1] = new char[x];
for (int k = 0; k < x; k++)
lines[y - 1][k] = ' ';
}
continue;
}
}//some more stuff and then the appending of characters with the previous ones
入力は次のようになります。
byte[] buff = new byte[8192];
try
{
while (true)
{
int len = in.read(buff);
if (len == -1)
return;
addText(buff, len);
}
}
catch (Exception e)
{
}
キー リスナー コードは次のとおりです。
KeyAdapter kl = new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
System.out.println("EVENT IS: " + e.getKeyCode());
int c = e.getKeyChar();
try
{
out.write(c);
}
catch (IOException e1)
{
}
e.consume();
}
};
ありがとう。