VirtualBox mouse integration
저는 기존 포인터 입력 외에 두 번째 포인터 입력을 생성하는 "마우스 통합" 기능이 있는 VirtualBox를 사용하고 있습니다 .
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ VirtualBox mouse integration id=9 [slave pointer (2)]
⎜ ↳ ImExPS/2 Generic Explorer Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Sleep Button id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
이 스레드에는 "VirtualBox의 다중 커서 입력" 문제에 대한 자세한 내용이 있습니다.마우스를 움직일 때 스크롤할 수 없음 - Win10의 Fedora 28 VM 게스트
이 스레드에 따르면 VirtualBox mouse integration
이동 이벤트만 수신되고 다른 장치는 스크롤 이벤트만 수신됩니다. 그러므로,마우스가 움직일 때 스크롤이 작동하지 않습니다, 많은 프로그램이 한 번에 하나의 활성 입력 장치만 허용하기 때문입니다.
데스크탑 프로그램이 해당 장치를 활성 입력 장치로 사용할 수 있도록 이 두 입력 장치를 "가상" 입력 장치로 결합하는 것이 가능합니까?
마우스 입력 이벤트는 다음을 통해 확인할 수 있습니다.
xinput test-xi2 --root
내 컴퓨터에서는 다른 장치에서 보낸 마우스 위치와 스크롤 이벤트가 명확하게 표시됩니다.
EVENT type 17 (RawMotion)
device: 2 (9)
detail: 0
flags:
valuators:
0: 1704.97 (1704.97)
1: 39323.40 (39323.40)
EVENT type 6 (Motion)
device: 9 (9)
detail: 0
flags:
root: 55.23/570.23
event: 55.23/570.23
buttons:
modifiers: locked 0x10 latched 0 base 0 effective: 0x10
group: locked 0 latched 0 base 0 effective: 0
valuators:
0: 1704.97
1: 39323.40
windows: root 0x532 event 0x532 child 0x4600003
EVENT type 17 (RawMotion)
device: 2 (12)
detail: 0
flags:
valuators:
3: 15.00 (15.00)
EVENT type 6 (Motion)
device: 12 (12)
detail: 0
flags:
root: 55.23/571.23
event: 55.23/571.23
buttons:
modifiers: locked 0x10 latched 0 base 0 effective: 0x10
group: locked 0 latched 0 base 0 effective: 0
valuators:
3: -1470.00
windows: root 0x532 event 0x532 child 0x4600003
EVENT type 15 (RawButtonPress)
device: 2 (12)
detail: 5
flags: emulated
valuators:
EVENT type 4 (ButtonPress)
device: 12 (12)
detail: 5
flags: emulated
root: 55.23/571.23
event: 55.23/571.23
buttons:
modifiers: locked 0x10 latched 0 base 0 effective: 0x10
group: locked 0 latched 0 base 0 effective: 0
valuators:
windows: root 0x532 event 0x532 child 0x4600003
EVENT type 16 (RawButtonRelease)
device: 2 (12)
detail: 5
flags: emulated
valuators:
EVENT type 5 (ButtonRelease)
device: 12 (12)
detail: 5
flags: emulated
root: 55.23/571.23
event: 55.23/571.23
buttons: 5
modifiers: locked 0x10 latched 0 base 0 effective: 0x10
group: locked 0 latched 0 base 0 effective: 0
valuators:
windows: root 0x532 event 0x532 child 0x4600003
답변1
다음을 사용하여 코딩이 필요하므로 완전한 답변은 아닙니다.레비데프그러나 두 입력 장치의 독점 읽기를 "잡아" 해당 이벤트를 단일 스트림으로 결합하는 새로운 Uinput 가상 장치를 생성하는 것이 가능해야 합니다. 별도의 읽기 이벤트와 쓰기 이벤트를 사용할 수 있는 C 예제가 있지만 이 Python 단일 페이지지도 시간흥미로운 빌딩 블록 예제 섹션이 많이 있습니다(동일한 URL, 페이지의 다른 지점).
Rust 프로그램이 있습니다효과적인evdev 장치의 많은 병합 및 매핑을 수행할 수 있습니다. 필요한 작업을 수행하도록 구성할 수 있는지 확인해야 합니다.