Linux : X에서 키보드가 화면을 켜지 않도록 방지


4

xbindkeysX에서 모니터를 켜거나 끄려면 키를 바인딩하려고합니다 (을 사용하여 ). 지금 까지이 스크립트에 키를 바인딩했습니다.

#!/bin/bash
MOUSE="Logitech USB-PS/2 Optical Mouse"

if [[ ! -z $(xset q | grep "Monitor is On") ]]; then
    logger "Turning off display"
    xinput disable "$MOUSE"
    xset s 2 2
    xset dpms force off
else
    logger "Turning on display"
    xinput enable "$MOUSE"
    xset s 3600 3600
    xset dpms force on
fi

이것은 거의 완벽하게 작동합니다. 화면이 켜져 있으면 마우스가 비활성화되고 (실수로 깨우지 않도록) 공백 시간을 2 초로 설정하고 (일어나면 깨우는 경우) 화면을 끕니다. 꺼져 있으면 이전 설정을 복원하고 화면을 다시 켭니다.

불행히도 실제로 키에 바인딩되어 있으면 작동하지 않는 것 같습니다. 항상 화면이 켜져 있다고 생각합니다. 키를 누르면 다시 켜고 스크립트가 다시 꺼지기 때문입니다.

키보드를 완전히 비활성화 (다시 켜기가 어려워 짐)를 제외하고 키를 누를 때 화면이 자동으로 켜지지 않도록하는 방법을 찾을 수 없습니다.

화면이 켜지거나 꺼질 때마다 스크립트를 실행할 수 있다면 더 나은 해결책이 될 것입니다. 그런 다음 스크립트에 바인딩 된 키뿐만 아니라 아무 키나 눌러 화면을 다시 켤 수 있습니다.


IIRC X11은 키 누르기, 키 누르기 (반복 될 가능성이 있음), 키 누르기 등 세 가지 키 누름 이벤트를 제공합니다. 하나 이상의 스크립트가 스크립트를 호출하지 않는지 확인하십시오.
CVn

답변:


2

바인드 키를 누르면 스크립트가 즉시 실행되지만 화면을 놓을 때만 화면이 다시 켜집니다.

다음을 입력하여 테스트 할 수 있습니다

xset dpms force off

터미널에서을 누르고 Enter있습니다.

키를 놓을 때까지 화면이 꺼진 다음 즉시 다시 켜집니다.

간단한 해결 방법은 xset키를 놓은 후 명령 을 실행하기 위해 명령 을 실행하기 위해 약간의 지연을 추가하는 것 sleep입니다.


1

내가 한 것은 xscreensaver(화면을 비우고 그래픽 해킹을 실행하지 않도록 설정) 사용하고 다음을 사용하여 보는 것입니다 xscreensaver-command -watch.

   -watch  Prints a line each time the screensaver changes state: when the
           screen  blanks,  locks,  unblanks,  or when the running hack is
           changed.  This option never returns; it is intended for use  by
           shell  scripts  that  want  to react to the screensaver in some
           way.  An example of its output would be:
           BLANK Fri Nov  5 01:57:22 1999
           RUN 34
           RUN 79
           RUN 16
           LOCK Fri Nov  5 01:57:22 1999
           RUN 76
           RUN 12
           UNBLANK Fri Nov  5 02:05:59 1999

매뉴얼 페이지에는 살펴볼 가치가있는 예제가 포함되어 있습니다.

불행하게도, 주식 xscreensaver은 때때로 DPMS 설정을 자체 값으로 설정해야합니다. 나는 그것을 막기 위해 패치를 제출 했지만 jwz는 그것을 거부했다. 패치가 유용하다는 것을 알 수 있습니다 --without-dpms-ext. 또는 xscreensaver를 사용하여 컴파일하십시오 .

또는 xscreensaver자신의 감시자를 작성하는 방법에 대한 힌트를 얻기 위해 코드 를 검사하는 것이 도움이 될 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.