1)これはプログラムで行うことができます(ddccontrol)
2)これはスクリプトで書くことができます
3)スクリプトをホットキーに掛けることができます
...
5)利益??
利益のリストでは、すべてのモニターのキーボードの 1つのボタンでオン/オフする機能を記録できます (現在2つありますが、今後さらに計画する予定です)。 キーボードのボタンは、モニターのボタン(照準する必要があり、モニターを押すとわずかに回転することがあり、面倒な場合があります)よりも押す方がはるかに優れています。
タスクは3つの段階で構成されます。
0)ddccontrolを構成する
1)オフになっているモニターの任意の組み合わせで、モニターのオン/オフが適切に機能するスクリプトを作成します。
2)キーボード上の未使用のボタン(およびそのコード)を見つけます。
3)スクリプト実行をこのコードに割り当てます。
ddccontrolを構成する
セットアップは簡単です。i2c-devモジュールを/ etc / modules(ロード時に自動的にロードされるモジュール)に登録する必要があります。最初の起動では、
modprobe i2c-dev
コマンドを使用してすぐにモジュールをロードできます。
次に、モニターがシャットダウンコードをオフにし、有効コードがオンになることを確認する必要があります。
以前にddccontrolを使用する方法について話しましたので、すべてを再説するつもりはありません。 私のサムスン(両方)について、レジスタ0xe1はモニターのオン/オフを切り替えます:
ddccontrol -r 0xe1 -w 1 dev:/dev/i2c-2
-on;
-w 0
オフ
同様にdev:/ dev / i2c-1
この値を取得することもできます:
ddccontrol -r 0xe1 dev:/dev/i2c-1
不要なものをすべて省略すると、目的の行は次のようになります。
Control 0xe1:+ / 0/1 [???](オフ)
Control 0xe1:+ / 1/1 [???](オン)
このために単純なgrepを設定する必要があります。
ddccontrol -r 0xe1 dev:/dev/i2c-1|grep -o +/./1|cut -b 3
stderrのゴミ(彼は私たちのことは気にしません)に加えて、出力には1-オン、0-オフの数値が表示されます。 「空の行」の状況を処理するために、zeroいですが、合計がゼロになります。 (空+ゼロ=ゼロ)。
スクリプト
スクリプトのTK:少なくとも1つのモニターがオンの場合、すべてのモニターをオフにします。 オンになっているモニターがない場合は、すべてのモニターをオンにしてみてください。 ddcontrolの仕様により、パスワードなしでsudo ddccontrolを実行できるようにするか(スクリプトを自分で追加できます)、/ dev / i2c- *ファイルのアクセス権を変更する必要があります(グループを自分のものに変更しただけで十分です)。 念のため、シェルスクリプトのSUIDビットが機能しないことを思い出します。 コマンド
sudo chgrp `id -gn` /dev/i2c-*
を使用して、ddccontrolのデバイスファイルのグループを変更できます。
スクリプトテキスト(私はそれを/ usr / local / bin / ddc-powerswitchと呼びました ):
#!/ bin / sh reg = 0xe1 begin = 1 終了= 2 seq = `seq -f" dev:/ dev / i2c-%。0f "$ begin $ end` $ seqのdev する state = $((($ state + 0)|( `ddccontrol -r $ reg $ dev | grep -o + /。/ 1 | cut -b 3` + 0))) やった エコー状態= $状態 $ seqのdev する ddccontrol -r $ reg -w $((!$ state))$ dev& やった
コードに関するコメント:begin / end-カスタマイズ可能。 初めて0と6を登録できます。
アンパサンドを削除すると、デバッグは簡単になりますが、スクリプトの動作は遅くなります。
モニターの並列ポーリングはお勧めしません。競合状態が発生します。
ボタン検索
キーボードの未使用のマルチメディアボタンを使用することにしました。 このために、xevプログラム(シェルから実行)が使用されました。 目的のボタンを押して、コードを参照してください。 私の場合、システムアイコンとモニターが付いた「マイコンピューター」ボタン(コード198)でした(モニターアイコン-モニターのオン/オフを切り替えるより良い方法は、エッジからアクセスするのが難しいためです)。
ホットキーにスクリプトを割り当てる
私は次の方法を使用しました(指導者は曲率を要求し、要求に応じてキックを要求してより直接的な決定を下し、システム全体のレベルでバインドします)。
ファイルを編集(作成)〜/ .xbindkeysrc
「ddc-powerswitch」 F31
(注:引用符、F31の前のスペース)
次に、自動実行スクリプトで必要なすべての開始点を記述します。 KDEの場合、これは〜/ .kde / Autostart / ddc-hotkeys(+ xにすることを忘れないでください)、gnomeの場合は〜/ .config / autostart(gnomeの古いバージョンの場合、 ここでより複雑になります )。
xmodmap -e 'keycode 198 = F31' xbindkeys
198の代わりに、xevと通信するときに気に入ったキーコードを指定する必要があります。
実際には、それだけです。 ホットキーを登録し、必要に応じて登録しました。 これで、ボタンを押すだけで、少なくとも1つのモニターがオンになっている場合、すべてのモニターがオフになります。 すべてのモニターがオフになっている場合、オンになります。