내 노트북의 하드웨어 스위치를 지원하는 커널 드라이버를 작성하려고 합니다. 이 스위치는 터치패드의 활성화 또는 비활성화 여부를 제어하며 노트북의 360° 힌지에 내장되어 있습니다. 거의 동일한 하드웨어에 대한 다른 드라이버의 팁을 따라 스위치에서 하드웨어 이벤트를 캡처하고 스위치 위치에 따라 해당 키코드를 입력 장치에 보냈습니다. 키코드는 사용자 공간에서 처리되도록 남겨져 있습니다. 이는 Windows 10 드라이버에서 이 스위치에 대해 관찰한 것과 동일한 메커니즘입니다.
키코드 191( )을 보낼 수 있다는 것을 알았고 KEY_F21
Gnome 3.18은 이를 요청으로 성공적으로 보냈습니다.스위치터치패드 상태. 노트북이 꺼져 있거나 절전 모드인 동안 스위치를 뒤집으면 토글 상태가 스위치 위치와 동기화되지 않고 이제 스위치가 의도한 효과와 반대되는 효과를 갖게 된다는 점을 제외하면 거의 완벽하게 작동합니다. KEY_F21
키보드의 단축키와 같은 상태 비저장 스위치용으로 설계된 것 같지만 내 노트북의 스위치는 켜기 및 끄기 위치가 다릅니다.
단일 "터치패드를 전환하기 위한 사용자 공간 요청" 대신 "터치패드 비활성화를 위한 사용자 공간 요청" 및 "터치패드 활성화를 위한 사용자 공간 요청"으로 사용할 수 있는 다른 키코드 쌍이 있습니까? 실패하면 어떤 키코드 쌍을 X나 데스크탑 환경에서 사전 정의된 동작 없이 드라이버에서 사용하여 DE(Gnome 3.18)에서 사용할 수 있도록 하는 것이 안전할까요? 이에 대한 사용자 정의 바로가기를 설정하시겠습니까?
시도했지만 작동하지 않는 몇 가지 사항은 다음과 같습니다.
KEY_F22
및 를 사용하세요KEY_F23
. 얼핏 보면 터치패드 켜기/끄기 코드처럼 보입니다. 안타깝게도 사용자 공간에 터치패드 상태를 변경하도록 요청하는 대신 "드라이버나 하드웨어가 터치패드 상태를 변경했으며 경고를 표시하기 위해 사용자 공간에 새 상태를 알리는 것뿐입니다"라고 사용자 공간에 알리는 것으로 나타났습니다.- 이미 봤어input-event-codes.h의 최신 커널 버전기타 분명히 유망한 코드의 경우. 내가 찾은 유일한 것은
KEY_TOUCHPAD_TOGGLE
,KEY_TOUCHPAD_ON
및KEY_TOUCHPAD_OFF
(0x212-0x214)였습니다. 나는 이것을 시도했지만 X 서버가 247(0xF7)보다 높은 키코드를 허용할 수 없기 때문에 아무것도 작동하지 않았습니다. 사용자 공간에서 터치패드 활성화/비활성화 이벤트를 처리하려면 X 또는 DE가 필요하므로 그렇게 높은 키코드를 사용할 수 없습니다.