画面を空白にして入力を無視できますか?

画面を空白にして入力を無視できますか?

画面を空白のままにして、キーボードとマウスで何をしても空白を解放するように指示する(ロックなど)、画面を空白のままにしたいと思います。

私が知っているコマンドは次のとおりです。

xset dpms force off
sleep 2
xset dpms force on

私は2秒間空白のままにしてから空白を取り除きたいのですが、それにもかかわらず、その2秒間は完全に空白のままにしたいと思います。これは可能ですか?

答え1

君はただできるキーボードとマウスを無効にする持続。まず、キーボードとマウスのIDを取得します。

$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Logitech M325                             id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ SIGMACHIP USB Keyboard                    id=11   [slave  keyboard (3)]

私のコンピュータに様々な接続があり、ノートパソコンを使っていて、出力がxinput --listかなり長いです。わかりやすくするためにここで編集しました。無効にする必要があるデバイスのIDが何であるかを知る必要があります。私の場合は14andです11

画面をオフにしてキーボードとマウスを無効にしてから2秒待ってから、すべてを再びオンにします。

xinput set-prop 'Logitech M325' 'Device Enabled'  0 &&
xinput set-prop 'SIGMACHIP USB Keyboard' 'Device Enabled' 0 &&
xset dpms force off &&
sleep 2 &&
xinput set-prop 'Logitech M325' 'Device Enabled' 1 &&
xinput set-prop 'SIGMACHIP USB Keyboard' 'Device Enabled' 1 &&
xset dpms force on

私のシステムでは、SIGMACHIP USB複数のデバイスが一致しています。何らかの理由でマウスとしても認識されます。正しいデバイスを100%確実にするには、名前の前にクラスを追加するだけです。

xinput set-prop 'pointer:Logitech M325' 'Device Enabled'  0 &&
xinput set-prop 'keyboard:SIGMACHIP USB Keyboard' 'Device Enabled' 0 &&
xset dpms force off &&
sleep 2 &&
xinput set-prop 'pointer:Logitech M325' 'Device Enabled' 1 &&
xinput set-prop 'keyboard:SIGMACHIP USB Keyboard' 'Device Enabled' 1 &&
xset dpms force on

答え2

あなたはそれを使用することができますランダル。たとえば、モニターがHDMI1の場合は、次のことができます。

xrandr --output HDMI1 --off
sleep 2
xrandr --output HDMI1 --auto

名前で見つけることができます。

xrandr|grep ' connected'

答え3

ついに少なくとも効果のある答えを見つけました私のものシステム(Lenovo ThinkPad X201とThinkPad X201タブレットの両方がLVDSパネルを使用)これは、実際にはバックライトを無効にしますが、半透過型または反射型LCD(異常)がない限り、実際にはLCDをオフにするのと同じでなければなりません。

まず、私がインストールしたインテルGPUツール(読むここより多くの情報を知りたい場合)。 Debian では、次のように実行されます。

# apt-get install intel-gpu-tools

このパッケージにはintel_backlightIntel GPUのレジスタと直接対話するため、明るsysfsさレベル0が常に「低輝度レベルでオン」になっている必要がある最新のLinuxカーネルファイルシステムの「安全境界」に限定されないプログラムが含まれています。

残念ながら、このプログラムはrootとして実行する必要があり、実際には入力内容をうまく削除しません。 (単に盲目的にこれをatoi()スクリプトの最初の引数として受け入れ、実際に数字であると仮定します。)私はまだ適切な解決策を探していますが、現在あなたが選択できるオプションは次のとおりです。

  1. ルートとして実行
  2. 特定のACPIイベントでそれをトリガーするスクリプトとacpid構成を作成します。

私は後者のオプションを選択しました。acpi_listenACPIイベントをトリガーすることが検出されたが、私のラップトップで何もしないようにマッピングされていないキーの組み合わせを選択しました。私はfn + f1を選択しました。理論的には、明るさを下げるキーを押して有効にし、明るさが最小に達したことを確認し、そうであればバックライトをオフにすることもできます。

私は次のファイルを書きました。

/etc/acpi/events/fnf1-toggle-lcd:

event=button/fnf1
action=/etc/acpi/toggle-thinklight-or-tablet-lcd.sh "%e"

/etc/acpi/toggle-thinklight-or-tablet-lcd.sh:

#! /bin/bash
# intel_backlight appears to require root privs.

# is the light on or off?
export INTEL_BACKLIGHT="/usr/bin/intel_backlight"
export light_state=$("$INTEL_BACKLIGHT" | sed 's/current backlight value: //g'|sed 's/%//g')
if [ "$light_state" -eq 0 ]; then # if the backlight is currently off
  # restore brightness level
  cat /root/brightness > /sys/class/backlight/acpi_video0/brightness
else # the backlight is currently on
  # back up current brightness level
  cat /sys/class/backlight/acpi_video0/brightness > /root/brightness
  # turn off backlight
  "$INTEL_BACKLIGHT" 0
fi

シェルスクリプトが実行可能とマークされていることを確認します。

意図したバーがまったくないかもしれません。パーティーに遅れていることはわかりますが、ここでは大丈夫です。

または、eDPパネルでこの方法がecho 0 > /sys/class/backlight/acpi_video0/bl_power機能する可能性があります。これは確かに〜しないだろう明らかに、いくつかのカーネル開発者はそれが良いアイデアだと思ったので、LVDSパネルで作業しています。

関連情報