화면을 공백으로 만들고 입력을 무시할 수 있나요?

화면을 공백으로 만들고 입력을 무시할 수 있나요?

화면을 비워 두고 키보드와 마우스로 무엇을 하든 공백을 해제하라는 명령(잠금과 같은)을 받을 때까지 화면을 비워 두고 싶습니다.

내가 아는 명령은 다음과 같습니다.

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 Tablet 모두 LVDS 패널 사용) 이는 실제로 백라이트를 비활성화하지만 반투과형 또는 반사형 LCD(특이함)가 없는 한 실제로는 LCD를 끄는 것과 동일해야 합니다.

먼저 제가 설치한인텔 GPU 도구(읽어보기여기더 많은 정보를 알고 싶다면). 데비안에서는 다음과 같이 수행됩니다.

# apt-get install intel-gpu-tools

이 패키지에는 intel_backlightIntel GPU의 레지스터와 직접 상호 작용하므로 sysfs밝기 레벨 0이 항상 "낮은 밝기 레벨에서 켜져" 있어야 하는 최신 Linux 커널 파일 시스템의 "안전 경계"로 제한되지 않는 프로그램이 포함되어 있습니다.

불행하게도 이 프로그램은 루트로 실행해야 하며 실제로는 입력 내용을 잘 삭제하지 않습니다. (단지 맹목적으로 이를 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 패널에서 작업하고 있습니다.

관련 정보