0

自分のマシンで 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();
            }
        };

ありがとう。

4

1 に答える 1