tty/仮想コンソールで明るさ/ボリュームキーを使用しますか?

tty/仮想コンソールで明るさ/ボリュームキーを使用しますか?

仮想コンソールで、ノートブックキーボードの専用の明るさ/音量キーを使用して明るさまたは音量を調整(増減)できるかどうかを知りたいです。

シングルキー押下に応答してバックグラウンドタスクを実行するようにシステムを設定できますか?それともコマンドラインを介した唯一の対話モードですか? (コマンドラインでこれを調整する方法を見つけました。)

私が考えることができる唯一の比較可能な例は、電源ボタンが即時システム停止信号を送信する場合です。ただし、プロンプトでこのキーを押しようとするとshowkey(キーコードを返すのではなく)、システムがシャットダウンし続けるため、別のレベルで動作しているようです。


編集する:実際にコマンドラインでこれらのタスクを実行する方法を見つけましたが、いいえどうするかを知るルートアクセス権なし。この問題についてさらに洞察をいただきありがとうございます。

答え1

ttyで使用するシェルによって異なりますが、通常はそうです。可能です。 readlineライブラリは、これらのショートカットを可能にするソフトウェアコンポーネントです。

私はそれがどのように機能するかを知っているので、zsh例を見てみましょう。を使用する場合はbash、マニュアルの「Readline Key Bindings」セクションをお読みください - それがあなたが探しているようです。

そしてzsh

myfunc() {
    echo 'It works!'
}
zle -N mywidget myfunc
bindkey "^[OQ" mywidget

このzle -Nコマンドは、「zsh ウィジェット」であることを定義するために使用されます。ウィジェットを使用して関数を呼び出すことができます。このbindkeyコマンドを使用すると、キーを押したときに実行されるキーコードとウィジェットを指定できます。キーコードは私の場合のキーを^[OQ正確に示します。F2ボリュームキーのキーコードを見つけるには、キーを押してCtrl+Vからボリュームキーを押します(私の場合はFn+F2を押すとが表示されます^[[26~)。

答え2

これは問題に対する一般的な解決策ではありませんが、数日間問題を解決した後に見つかりました。ポメドこれは、Appleノートブックのショートカットを管理するために特別に設計されています(私が持っているものです)。

明るさ/キーボードバックライト/音量を上げ下げできるだけでなく、AC電源が接続/接続解除されたときに自動的に明るさを設定します。独自のスクリプトを書くよりもはるかに優れています。

答え3

これを見てみたことがありますか?https://wiki.archlinux.org/index.php/Linux_console/Keyboard_configuration

カスタム仮想コンソールキーマップを作成する必要があります。 (これはArchにあります。Debian / Ubuntuや他のバージョンでも異なる可能性があると思います。)

showkey仮想コンソールに入力すると、キーコード番号を決定できます。 (xevXorgではこれを行うことができますが、コンソールキーコード番号を取得するには8を引く必要があります。つまり、xev169が指定されている場合はコンソールキーが161にマップされていることを意味します)。

たとえば、ttyにいるときにこのカスタムキーマップを使用すると、Arch / Fluxboxシステムの(Apple)キーボードのイジェクトキーを押して次のコンソールに変更できます。

keycode 161 = Incr_Console   Last_Console     Decr_Console
        shift   altgr   keycode 161 = VoidSymbol
        altgr   control keycode 161 = VoidSymbol
        shift   altgr   control keycode 161 = VoidSymbol
        shift   alt     keycode 161 = VoidSymbol
        altgr   alt     keycode 161 = VoidSymbol
        shift   altgr   alt     keycode 161 = VoidSymbol

Shift + Ejectは最後のコンソールに移動し、Ctrl + Ejectは縮小します。

音量と明るさには追加の手順が必要な場合があります。

キーコード番号が161であるとし、最初にF70などの未使用のファンクションキーにバインドします。

keycode 161 = F70

次に、対応するF70をコマンド文字列にバインドします。

端末で印刷コマンドを実行するには、コマンド文字列の末尾に改行エスケープ文字を追加する必要があります。たとえば、システムをスリープ状態にするには、次のキーマップを追加します。

string F70 = "sudo /usr/sbin/hibernate\n"

失敗した場合は確認できますacpid

関連情報