![Linux 사용자 영역 응용 프로그램에서 노트북 덮개가 항상 열려 있다고 생각하게 만드는 방법은 무엇입니까?](https://linux55.com/image/164119/Linux%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%98%81%EC%97%AD%20%EC%9D%91%EC%9A%A9%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%97%90%EC%84%9C%20%EB%85%B8%ED%8A%B8%EB%B6%81%20%EB%8D%AE%EA%B0%9C%EA%B0%80%20%ED%95%AD%EC%83%81%20%EC%97%B4%EB%A0%A4%20%EC%9E%88%EB%8B%A4%EA%B3%A0%20%EC%83%9D%EA%B0%81%ED%95%98%EA%B2%8C%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
표적:
내 Linux 노트북(Libreboot가 설치된 T400 ThinkPad)을 실행하려고 합니다.정확히뚜껑을 열었든 닫았든 같은 방법으로 해주세요. 즉, 항상 "뚜껑 열림" 위치에 있는 부러진 덮개 스위치가 있는 노트북을 시뮬레이션하려고 합니다. 나는 특정 초기화 시스템이나 특정 전원 관리자가 필요하지 않은 낮은 수준의 솔루션을 찾고 있습니다. 모든 GNU/Linux 시스템에 존재할 것으로 예상되는 소프트웨어만 찾고 있습니다.
제가 사용하는 운영 체제는 Devuan ASCII(64비트)와 Tiny Core Linux 10.1(64비트)이며 만약을 대비해 Xorg와 Fluxbox를 실행합니다. 커널 버전은 4.16.2(Devuan) 및 4.19.10(Tiny Core Linux)입니다.
시험을 치르다:
저는 xscreensaver(비활동 1분 후 애니메이션을 시작하도록 설정됨)를 테스트 애플리케이션으로 사용하고 있습니다. 왜냐하면 덮개가 닫힐 때 xscreensaver가 애니메이션을 시작하거나 시작하지 않는다는 것을 알았기 때문입니다. 그래서 뚜껑을 닫고 1분 이상 기다렸다가 뚜껑을 다시 열고 xscreensaver 애니메이션이 재생되는 것을 보면 해결책을 찾았다는 것을 알았습니다.
내가 지금까지 시도한 것:
기계. 내 노트북은 T400이며 덮개 스위치로 Bluetooth LED 위의 작은 자석을 사용합니다. 작은 냉장고 자석을 이 위치에 놓으면 뚜껑 스위치가 "꺼짐" 위치에 걸리고 xscreensaver 테스트가 실패합니다. 시작 시 사용됨Button.lid_init_state=열기커널 부팅 매개변수는 도움이 되지 않습니다.
버튼 모듈시작 매개변수. 이 내장 모듈은 노트북 덮개 스위치용 드라이버입니다. 사용버튼.lid_report_interval=0또는=-1또는=500000도움이 안돼.
i915 모듈시작 매개변수. Devuan의 커널 지원i915.panel_ignore_lid시작 매개변수. -2로 설정하면 xscreensaver 테스트를 통과하는 데 도움이 되지 않습니다.
비디오 모듈시작 매개변수. 사용video.report_key_events=0도움이 안돼.
ACPI. 비활성화ACPI=꺼짐커널 부팅 매개변수는 테스트 통과에 도움이 되지 않습니다.
뚜껑 스위치 비활성화. 놀랍게도 덮개 스위치를 비활성화해도 도움이 되지 않았습니다. 비활성화하기 어렵다단추모듈은 커널에 내장되어 있기 때문에(즉, 다음과 같이 나타납니다.)ls /시스템/모듈하지만 함께는 아니야lsmod). 그러나 시스템이 시작된 후 키 모듈을 사용하여 모든 장치를 바인딩 해제할 수 있습니다.
# 1. find the devices that use the button driver:
$ ls /sys/bus/acpi/drivers/button
LNXPWRBN:00 PNP0C0D:00 PNP0C0E:00 bind uevent unbind
# 2. disable the devices one by one:
$ echo "LNXPWRBN:00" | sudo tee /sys/bus/acpi/drivers/button/unbind
LNXPWRBN:00
$ echo "PNP0C0D:00" | sudo tee /sys/bus/acpi/drivers/button/unbind
PNP0C0D:00
$ echo "PNP0C0E:00" | sudo tee /sys/bus/acpi/drivers/button/unbind
PNP0C0E:00
# 3. satisfy oneself that the devices are gone:
$ ls /sys/bus/acpi/drivers/button
bind uevent unbind
그럼에도 불구하고 xscreensaver 애니메이션은 덮개가 열릴 때 시작되지만 덮개를 닫을 때는 시작되지 않습니다.
터치패드 이벤트 캡처. 출력을 관찰하면서 알아차렸습니다.고양이/개발자/입력/이벤트5노트북 덮개를 열고 닫으면 시냅틱스 터치패드가 일부 입력을 생성합니다. 모든 입력을 잡아라evtest --grab /dev/input/event5 >/dev/null도움이 안돼.
X에게 방해가 되지 않도록 말하세요. X가 시작된 후 시작 시 일반 사용자로 다음 명령을 실행합니다.xset 꺼짐; xset s noblank. 이 명령은 X에게 빈 화면 화면 보호기를 원하지 않고, DPMS도 원하지 않으며, 화면을 비워서는 안 된다는 것을 알려줍니다. 이것은 도움이 되지 않습니다.
바이오스. BIOS(내 경우에는 Libreboot) 수준에서 덮개 스위치를 비활성화하는 방법을 검색했지만 관련된 내용을 찾지 못했습니다.
그것이 내가 지금까지 시도한 전부입니다. 위의 모든 항목을 결합하더라도 사용자 공간 응용 프로그램(xscreensaver는 그대로)은 노트북 덮개가 열려 있는지 닫혀 있는지에 따라 여전히 다르게 작동합니다. (xscreensaver의 경우 노트북 덮개가 열려 있을 때만 애니메이션이 시작되고 노트북 덮개가 닫힐 때는 애니메이션이 시작되지 않습니다.)
물론 소프트웨어를 통해 노트북 덮개 스위치를 완전히 비활성화하고 사용자 영역 응용 프로그램이 노트북 덮개가 항상 열려 있다고 생각하도록 하는 방법이 있어야 합니다. 내가 무엇을 놓치고 있나요?
답변1
실제로는 위의 6번입니다하다덮개 스위치를 완전히 비활성화합니다.
문제는 덮개를 닫을 때 T400의 터치패드에서 실제로 약간의 소음이 발생하여 xscreensaver(입력 장치가 유휴 상태가 될 때까지 기다리는)와 같은 응용 프로그램이 실행되지 않는다는 것입니다. 출력을 보고 알아냈습니다.
$ sudo cat /dev/input/event5
(내 시스템에서는 event5가 터치패드입니다)
뚜껑 스위치 비활성화그리고이와 같은 터치패드는 예상된 동작을 발생시킵니다.
# echo "PNP0C0D:00" > /sys/bus/acpi/drivers/button/unbind
# echo "PNP0C0E:00" > /sys/bus/acpi/drivers/button/unbind
# echo "serio1" > /sys/bus/serio/drivers/psmouse/unbind
이제 덮개가 열려 있는지 닫혀 있는지에 관계없이 모든 앱이 동일하게 작동합니다.
그러나 serio1을 바인딩 해제하면 트랙 포인트("니플 마우스")가 응답하지 않게 됩니다. 이는 바람직하지 않은 부작용입니다.