
저는 엄지 손가락 아래에 트랙볼이 있는 사용자 정의 키보드를 만들었고 단축키(예: 왼쪽 Alt)를 누르고 공을 회전할 때 스크롤처럼 동작하도록 스크롤 동작을 매핑하고 싶습니다. 저는 여기서 Xorg를 사용하고 있지만 X와 Wayland에 대한 솔루션을 보는 데 매우 관심이 있습니다(솔루션에 디스플레이 서버가 포함되는 경우).
답변1
다음을 사용하여 수직 및 수평 스크롤을 에뮬레이트합니다.libinput
운전 evdev
기사 출신더크의답변은 수직 스크롤 에뮬레이션만 지원합니다. (나처럼) 가로로 스크롤하려는 경우 드라이버 libinput
를 사용하여 그렇게 할 수 있습니다.
자세한 내용은 맨페이지에 나와 있습니다
libinput(4)
.옵션 "ScrollButton" "int"
버튼을 스크롤 버튼으로 지정합니다. 만약스크롤 방법~이다단추버튼을 논리적으로 누르고 있으면 x/y 축 이동이 스크롤 이벤트로 변환됩니다.
옵션 "ScrollMethod" "문자열"
스크롤 방법을 활성화합니다. 허용되는 값은 다음과 같습니다.없음, 두 손가락, 가장자리, 버튼. 모든 장치가 모든 옵션을 지원하는 것은 아닙니다. 지원되지 않는 옵션이 있는 경우 이 장치의 기본 스크롤 옵션이 사용됩니다.
예를 들어:
Section "InputClass" Identifier "Some Trackball" # ... Stuff to match your trackball, see xorg.conf(5) Driver "libinput" Option "ScrollMethod" "button" Option "ScrollButton" "4" # Or whatever button suits your needs EndSection
답변2
트랙볼로 마우스 휠 시뮬레이션
원하는 것과 유사한 기능을 수행하는 드라이버의 기존 구성 옵션을 사용하거나 고유한 드라이버를 작성할 수 있습니다.
그만큼로지텍 M570USB 수신기가 있는 무선 트랙볼입니다. 즉, 다음과 같이 표시됩니다. HID장치 및 마우스 이벤트는 다음을 통해 사용할 수 있습니다.입력커널의 레이어이며 해당 /dev/event
장치에서 읽을 수 있습니다.
그러면 X 드라이버는 드라이버 를 사용하여 evdev
이 계층에서 이벤트를 읽고 이를 X 이벤트로 변환합니다. 저는 Wayland에 대해 잘 모르지만 그곳에서도 비슷하게 작동할 것이라고 생각합니다.
1) evdev
드라이버에는 트랙볼에서 마우스휠을 에뮬레이트하는 옵션이 이미 포함되어 있습니다 man evdev
. 을 참조하십시오. 가장 중요한 것은
옵션 "EmulateWheel" "부울"
"휠" 에뮬레이션을 활성화/비활성화합니다. 휠 에뮬레이션은 특정 실제 버튼을 누른 상태에서 마우스를 움직일 때 버튼 누름/해제 이벤트를 에뮬레이션하는 것을 의미합니다. 휠 버튼 이벤트(일반적으로 버튼 4와 5)는 일반적으로 스크롤에 사용됩니다. 휠 에뮬레이션은 트랙볼을 사용하여 휠과 같은 동작을 얻는 데 유용합니다.
옵션 "EmulateWheelButton" "정수"
휠 에뮬레이션 모드를 활성화하려면 어떤 버튼을 눌러야 하는지 지정합니다. 이 버튼을 누르고 있는 동안 X 및/또는 Y 포인터 이동은 XAxisMapping 및 YAxisMapping 설정에 지정된 대로 버튼 누름/해제 이벤트를 생성합니다. 버튼이 0이고 EmulateWheel이 켜져 있으면 장치의 모든 동작이 휠 이벤트로 변환됩니다. 기본값: 4.
따라서 이는 키보드 단축키 대신 트랙볼 버튼을 사용하여 작동하며(드라이버는 키보드가 아닌 마우스의 이벤트만 볼 수 있기 때문입니다)움직임휠 이벤트에 들어가지 않고회전.
2) 기존의 여러 드라이버를 수정하여 자신만의 드라이버를 작성합니다. 키보드와 마우스용 드라이버를 결합해야 키를 눌러 휠 에뮬레이션을 실행할 수 있습니다.
소스 코드커널 입력 계층drivers/input
커널 트리에 있습니다 .
소스 코드evdevX 드라이버가 있습니다xorg/driver/xf86-input-evdev/tree/src/evdev.c.
키보드 드라이버는 사용한 키보드 유형에 따라 다릅니다.