GNU/Linux >> Linux の 問題 >  >> Ubuntu

ショートカットを関数/マルチメディアキーにバインドする際の問題?

バッチスクリプトをショートカットに接続したい。 システム設定>キーボード>ショートカットでバインドすると 外部のAppleキーボードからの明るさキーを除いて、すべてのキーで動作します。

明るさのキーは、キーコード 224のshowkeyで認識されます および225

xev出力:

FocusOut event, serial 41, synthetic NO, window 0x4000001,
mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 41, synthetic NO, window 0x4000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 41, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

私にできることはありますか?

承認された回答:

halevtを使用したソリューション

マニュアルページによるとhalevt HALイベントの汎用ハンドラーです。非推奨になり、udevに置き換えられました 、でもudevについてはよくわからないので halevtをあげます ソリューション。

編集: 深刻な汗をかいた後、私はudevでこれを行うことができました 。私の他の答えを参照してください。

vimを使用します ファイルを編集しますが、vimがわからない場合 nanoに置き換えることができます またはgedit

halevtのインストール

sudo apt-get update && sudo apt-get install halevt

スクリプトにバインドするイベントを決定する
halevtを停止します すでに実行されているデーモン:

sudo /etc/init.d/halevt stop

ここで、halevtかどうかを確認します 使用したいキーのイベントを認識できるので、リスナーを起動します:

sudo -u halevt halevt -fig:plugdev

次に、スクリプトをバインドするキーボードのファンクションキーを押します。 OPが彼の明るさキーを機能させたいと思っているので、それで行きましょう。明るさキーの出力は次のようになります。

Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)

brightness-down およびbrightness-up イベントが送信されます。

イベントをスクリプトにバインドする
ファイル/etc/halevt/halevt.xmlを編集します :

sudo vim /etc/halevt/halevt.xml

次の行を追加します(</halevt:Configuration>の直前の下部で行いました ):

<halevt:Device match="hal.info.category = input">

    <halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>

    <halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>

</halevt:Device>

もちろん、valueを変更する必要があります リスナーから取得したイベント、およびexec 実行したいコマンドによって。

コマンドまたはスクリプトを実行する権限をhalevtユーザーに付与します
halevt以降 デーモンはhalevtとして実行されます execで指定したことを実行する権限をユーザーに付与する必要があります 。

実行します(vimを置き換えることを忘れないでください 選択した編集者による)

sudo EDITOR=vim visudo

下部に次の行を追加します

halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh 

保存して終了します。

関連:コマンドラインからキーボードリピートを無効にしますか?

スクリプトが実行可能であることを確認してください

sudo chmod +x /home/user/brightness-script.sh

halevtデーモンを再起動します

sudo /etc/init.d/halevt start

そしてそれは機能しているはずです!


Ubuntu
  1. Super + dキーのショートカットでデスクトップが表示されませんか?

  2. 18.04の休止状態?

  3. ウィンドウを閉じるコマンド?

  1. Ubuntu –ファンクションキーで完全に無効にされたタッチパッド?

  2. キーボードレイアウトに依存しないショートカットキー?

  3. Ubuntu 12.04 Nomodesetは起動の問題を修正しますが、画面の解像度が動かなくなりますか?

  1. 「/」ディレクトリのターミネーターランドのショートカットキー?

  2. ショートカットキーで最後のターミナルウィンドウを表示するにはどうすればよいですか?

  3. Super+C Super+V をバインドしてコピー アンド ペーストする