1

私の目標は、コマンドラインインターフェイスプログラムがキーボード入力に対して期待どおりに動作する端末をセットアップすることです(プログラムは元々Windows用にxharbourで記述されていますが、今はLinuxに移植したいと思います)。xtermの方が簡単で、デフォルトのターミナルキーの組み合わせを無効にする必要がないため、最初にxtermを選択しました。

パテを使用すると、ほとんどの文字がうまく機能し、autohotkey、ahkスクリプトを使用しない場合は、それでうまくいきます。たとえば、Ctrl + F1の場合: ^F1::SendInput ^[O5P

私はterminfoを試し、変更し、再コンパイルし、変更し、キーボードタイプを変更しましたが、ターミナルでCtrl+F1を押したときに^[O5P応答を取得できませんでした。この変更を行う方法をご存知の場合は、教えてください...これを行うと思われる数百ページを読みましたが、これらの変更はすべて効果がなかったか、期待した効果がありませんでした。

そこで、Ctrl +F1から^[O5Pの目標を達成するために端末設定を変更しようとして、autohotkeyと同様のことを行うコマンドとプログラムをいくつか試しました。

  • xmodmap、ただし、キーの組み合わせの場合は機能しません
  • xdotoolwindowactivate xyz type ^ [O5P、これは個々の文字の文字コードを返します
  • xmacro、他のウィンドウにキーストロークを送信しません
  • ironahk、example.ahkを実行しようとすると、最初にエラーが発生し、ライトマニュアルで目的のコマンドが見つかりませんでした。
  • bind '\e[1;5P":"\e[O5P"'、ここで最初のキーコードは、ctrl + f1と入力したときに現在取得しているものであり、この組み合わせで取得したいキーコードの後に​​あります。無効。
  • xbindkeys+ xvkbd、どちらも助けにはならなかった。

これを達成するために何らかの方法で管理されていることをすでに知っている場合は、私を助けてください(キーの組み合わせに対して返されるキーコードを変更してください)。

テストには最新のCentOSとUbuntuを使用しています。

4

2 に答える 2

3

xtermは、変換テーブルを変更することにより、特定のキーが押されたときにカスタム文字列を送信するように構成できます。xrdb変換テーブルは、コマンドによって管理されるXリソースデータベースの一部です。

xterm用にカスタマイズされた変換テーブルの良い例がここにあります$HOME/.Xdefaultsまたはにコピーして$HOME/.Xresources、次にログインしたときにロードされます。現在のセッションにすぐにロードするには、xrdb -merge $HOME/.Xresources。これは、すでに実行されているxtermには影響しません。(実行中のxtermの変換テーブルをで変更できる場合がありますが、editresそれは価値があるよりも厄介です。)

xtermの単一インスタンスにカスタム変換テーブルを提供するには、次のように-xrmオプションを使用します。

xterm -xrm 'XTerm.VT100.translations: #override Ctrl<Key>Left: string(0x1b) string("b") \n Ctrl<Key>Right: string(0x1b) string("f")'
于 2012-08-07T18:06:32.897 に答える
0

質問に直接答えることはありませんESC O 5 Pが、端末が送信するのはかなり間違っています。

簡単ESC Oに言うとSS3、シングルシフト3の略で、次の文字を変更して、標準の文字ではなくG3のグラフィック領域に配置するシーケンスです。これにより、5が変更され、Pが直接送信されます。これはそうではなく、これまでも良い考えではありませんでした。

Ctrl-F1送信する正しいものは、2番目のパラメーターが5(修飾子ビットマスク)に設定された(F1キーである)CSI 1;5 P形式です。CSI P

于 2012-08-13T20:26:03.297 に答える