仮想端末のキーボードショートカット

仮想端末のキーボードショートカット

Linux仮想コンソールでキーボードショートカットを設定する方法はありますか?

たとえば、tty1に移動して++Ctrlキーの組み合わせを押すと、スクリプトを実行したいとAlt思います。H/usr/bin/hello.sh


理想的には、ログインする前にもショートカットを使用できます(この場合は、私が指定したユーザーの権限で実行されます)。これがこれを達成する唯一の方法であれば、カーネルを修正することも気にしません。そしてシェルスクリプトである必要はありません。通常のELFバイナリでも、システムコールを実行するカーネルモジュールでもかまいません。


ユースケースの例

  1. コンソールでWebを検索していますが、links画面の明るさを下げたいです。偶然に明るさを下げるキーであるFn+を押して単一のキーコードを生成し、ファイルに何かを書いて明るさを下げるプログラムを実行します。End/sys
  2. 私はコンソールテキストエディタにいて、バックグラウンドミュージックが再生されるのを聞いていますmpd。 (再生/一時停止)キーを押すとキーコードが再生成され、mpd現在の曲を一時停止するように指示するプログラムを実行する効果があります。

解決策

次のようなデクターの考えを使用/dev/inputして作成しました。欲張り(イベントデーモン)がこの目的に使用されます。アプリはバックグラウンドで実行でき、ログイン前とX内を含むどこにいてもキーボードに代わることができます。

ベストアンサー1

部分的な答え(開曜日のみでテストされていません):

デフォルトのキーボードに対応するすべてのデバイスを受信する悪魔を作成します/dev/input(シンボリックリンクがあるので見てください)。持っている初期化システム(systemd、sysvなど)を使用して、指定したユーザーで悪魔を起動します。

悪魔は定義されているように主要なイベントを処理します。イベントコードを入力してくださいh(またはソースコードを見るevtest)。これには、目的のキーシーケンスを認識し、そのシーケンスが完了すると指定したプロセスを生成するステートマシンがあります。

これはログインする前に使用できる必要があり、仮想コンソールにログインしているユーザーに関係なく、常に同じユーザーとして実行されます。また、Xで同じユーザーとして実行されます。


あるいは、シェルで何かをしたい場合は、使用したり、tmux同様のプログラムを使用したりできます。キーシーケンスバインディング行動に。tmux仮想コンソールにログインするたびに自動的に起動し、新しいセッションに接続することも可能でなければならないと思いますが、まだこれについては見ていません。

これはログイン前には機能しませんが、キーボードフォーカスを持つグラフィック端末エミュレータでも機能し、スクリプトはログインしたユーザーとして実行されます。

おすすめ記事