キーボードからモニターをオフにします

ddccontrolに関する前のトピックは、 DDCではモニターをオフにできることを示しています。 スリープ状態にしないでください。省エネモードをオンにしないでください。実際にはオフにしてください。 そのため、顔の電源ライトが消えます(まったく点滅しません!)。 同じ顔を押してから。 もちろん、オフにするだけでなく、オンにすることもできます。 プログラムで!



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つのモニターがオンになっている場合、すべてのモニターがオフになります。 すべてのモニターがオフになっている場合、オンになります。



All Articles