私のバイナリが Linux のグローバル ホットキーに反応する方法はありますか?
質問
特定のホットキーをリッスンすることは可能ですか (例:Ctrl-私) してから特定のアクションを実行しますか?私のアプリケーションは C で書かれており、Linux 上でのみ実行でき、GUI はありません。この種のタスクに役立つライブラリはありますか?
編集:例として、amarok にはグローバル ショートカットがあるため、たとえばキーの組み合わせをアクションにマップするとします (たとえば、 Ctrl-+, Ctrl そして +) キーを押したときにそのアクションを実行できます。地図を作るとしたら Ctrl-+ を押すたびに音量増加アクションに切り替わります Ctrl-+ 音量は一定量増加するはずです。
ありがとう
他のヒント
のソースコードを見るべきです xバインドキー.
Xlib プログラミングは非常に難解で、ドキュメントは見つけるのが難しく、移植性に微妙な問題があります。百戦錬磨のコードをコピーした方が良いでしょう。
これを行う 1 つの方法は、アプリケーションが特定のポートまたはソケット ファイルで受信リクエストをリッスンするようにすることです。
次に、そのポートまたはソケット ファイルに接続し、実行中のアプリケーションにコマンドを送信する小さなクライアント アプリケーションを作成できます。
次に、特定のキーの組み合わせをバインドして小規模なクライアント アプリを起動するようにウィンドウ マネージャーを構成できます。
UNIX では、コマンドライン シェルへのアクセスは ターミナル. 。これは、人々が文字通りマシンに直接接続された端末を介して大きな共有コンピューターにアクセスしていた時代を思い出させます (例:シリアルケーブル経由)。
実際、UNIX マシンで使用する「xterm」プログラムまたはその派生プログラムは、正しくは「xterm」プログラムと呼ばれます。 ターミナルエミュレータ - それは (ユーザーの観点とオペレーティング システムの観点の両方から) 旧式の端末マシンの 1 つとよく似た動作をします。
これにより、さまざまな種類の端末が多数存在し、UNIX システムは各種類の機能を認識する必要があるため、興味深い方法で入力を処理することが少し複雑になります。これらの機能は従来、 用語キャップ ファイル、そしてより現代のシステムでは使用されると思います 用語情報 その代わり。試す
man 5 terminfo
詳細については、Linux システムに関する情報を参照してください。
さて、良いニュースは、端末の機能などをあまりいじる必要がないことです。入力機能やウィンドウ機能を使って興味深いことを行うコマンドライン アプリケーションを作成します。図書館があって、 呪い, 、それは役に立ちます。見上げる
man 3 ncurses
詳細については、Linux システムで を参照してください。おそらく、curses の使用に関する適切なチュートリアルをオンラインで見つけることができるでしょう。