나는 이 글을 슈퍼유저 정보센터에 게시했지만 여기에서 답변을 더 빨리 찾을 수 있다는 말을 들었습니다.
사용자가 로그인되어 있는 동안 화면을 활성 상태로 유지하는 기능을 내 애플리케이션에 추가하려고 합니다. 그 이유는 최근 사용자가 터치스크린을 통해 UI를 제어할 수 있도록 터치스크린 기능을 구현했기 때문입니다. 그러나 우리는 오래된 Linux 커널을 사용하고 있기 때문에 터치 스크린 기능이 제한되어 있습니다. 즉, 커널이 멀티 터치 이벤트를 정의하더라도 Xorg는 터치에 전혀 반응하지 않습니다. 그래서 Qt4 애플리케이션의 백그라운드에서 드라이버를 작성하여 /dev/input에서 직접 터치 이벤트를 읽고 애플리케이션에서 마우스 이벤트를 생성했습니다.
그러나 이러한 마우스 이벤트는 시스템 전체에 적용되지 않고 Qt 응용 프로그램 내에 포함되어 있기 때문에 화면을 깨운 상태로 유지하지 않으며 화면 보호기가 시작된 후에도 깨우지 않습니다. 터치 스크린의 목표는 사용자가 제품에서 키보드와 마우스를 사용할 필요를 없애는 것입니다. 화면 보호기를 깨울 수 없으면 사용하기 어려울 수 있습니다.
응용 프로그램에는 이미 60초마다 실행되도록 설정된 QTimer가 있습니다(응용 프로그램이 실행되는 동안 일부 시스템 프로세스가 이러한 설정을 변경하는 경우). "화면 보호기를 차단"했지만, 실행되는 명령을 살펴본 후에는 그렇지 않은 이유가 분명합니다. 사용하는 명령이 다음과 같기 때문에 작동합니다.
xset s on
그래서 타이머를 변경하여 다음 명령을 실행했습니다.
xset s off
xset s noblank
xset -dpms
또한 xdg-screensaver가 시작되지 않도록 이 명령을 실행해 보았습니다.
xwininfo -name "plasma-desktop" | grep "plasma" | cut -d' ' -f4 | xdg-screensaver suspend
그러나 이러한 변경에도 불구하고 화면 보호기는 결국 나타납니다.
이를 방지하려면 다른 설정을 비활성화해야 합니까? 나타나는 화면 보호기는 운영 체제가 시작된 결과라고 가정합니다.xdg 화면 보호기, 로그인할 때 앱이 시작되지 않도록 하는 방법이 있나요? 아니면 이 문제를 해결하기 위해 취해야 할 다른 접근 방식이 있습니까?
중요한 경우에는 Scientific Linux 6.4(커널 2.6.32-754)를 실행하고 있습니다.
편집하다:언급하는 것을 잊었습니다. 데스크탑 환경은 KDE4입니다.
편집하다:표시된 화면 보호기와 일치하는 KSS 파일을 찾았습니다. 이름을 바꾸려고 했지만 그 자리에 빈 화면 보호기가 나타났습니다. 시작하는 서비스를 비활성화하는 방법을 알아야 합니다.
답변1
따라서 이것이 최선의 접근 방식은 아닐 수도 있지만 화면 보호기/잠금 표시를 중지하는 방법을 찾았습니다. 바이너리를 찾았습니다화면 잠금아래에서 /usr/libexec/kde4
파일 이름을 바꾸면 파일이 실행될 수 없도록 하여 화면이 잠기는 것을 방지하는 것으로 나타납니다.
답변2
/dev/input에서 계속 읽을 수 있지만 생성된 마우스 이벤트를 응용 프로그램에 보내는 대신(따라서 시스템에서 숨기는 대신) 사용자 공간 드라이버를 통해 시스템에 보냅니다.
그러면 이러한 이벤트는 일반 마우스 이벤트와 동일한 경로를 따르므로 화면 보호기를 비활성화할 수 있습니다.
앞으로:
/dev/input -> your_driver -> application
뒤쪽에:
/dev/input -> your_driver -> uinput -> X -> application
드라이버에서 애플리케이션을 완전히 분리할 수도 있습니다.
이 문제이를 수행하는 방법에 대한 몇 가지 답변이 있습니다.