게임 패드는 어떻게 마우스를 제어 할 수 있습니까?


9

이 주제에 대해 많은 질문이 있습니다.

그러나 이러한 질문 / 답변의 목적은 게임 패드를 사용하여 게임을하는 것입니다.

게임 패드를 사용하여 마우스를 제어하는 ​​솔루션을 원합니다.
모든 응용 프로그램에서 게임 패드로 마우스를 교체합니다.
이렇게하면 무선 게임 패드가있는 소파에서 거실의 컴퓨터를 제어 할 수 있습니다.

답변:


8

Grumbel 의 답변에 따라 링크특히이 페이지를 지원하여 xboxdrv 솔루션을 시도 했습니다 .

1. 우분투 소프트웨어 센터에서 xboxdrv 0.8.2 를 설치하십시오 .

필요한 경우 uinputjoydev 도 설치하십시오 . 나는 이런 식으로 했어 sudo modprobe uinput+sudo modprobe joydev

2. 게임 패드 의 이벤트 를 알아야합니다 :

실행 udevadm monitor --udev후 게임 패드를 연결 :

$ udevadm monitor --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [6722.377700] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1 (usb)
UDEV  [6722.383264] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0 (usb)
UDEV  [6722.383333] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003 (hid)
UDEV  [6722.383389] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003/hidraw/hidraw1 (hidraw)
UDEV  [6722.387123] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10 (input)
UDEV  [6722.399284] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/event8 (input)
UDEV  [6722.412128] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/js0 (input)

게임 패드의 이벤트는 / dev / input / event8 이라고 결론지었습니다.

3. 게임 패드의 모든 키, 축, 버튼의 이름을 표시합니다.

아이디어는 xboxdrv모든 버튼 을 시작 하고 테스트하고 결과를 종이에 기록하는 것입니다.

$ sudo xboxdrv --evdev /dev/input/event8 --evdev-debug
Your Xbox/Xbox360 controller should now be available as:
/dev/input/js1
/dev/input/event9
Press Ctrl-c to quit, use '--silent' to suppress the event output
EV_ABS ABS_X 128
EV_ABS ABS_Y 128
...

필자의 경우 결과는 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

4. 설정 파일을 설정하십시오

xboxdrv-mouse.ini 파일을 생성하여 XY 축과 왼쪽 및 오른쪽 마우스 버튼을 설정하십시오.
여기서 2마우스 왼쪽 버튼과 3마우스 오른쪽 버튼 에 게임 패드 버튼 을 설정 했습니다.

[xboxdrv]
evdev=/dev/input/event8
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1

[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10

[evdev-keymap]
BTN_THUMB=a
BTN_THUMB2=b

[ui-buttonmap]
a=BTN_LEFT
b=BTN_RIGHT

# EOF #

REl_X 및 REL_Y의 값은 마우스의 속도를 정의하는 것으로 보이며 음의 값을 정의하면 축이 반전됩니다 (REL_Y는 여기 참조).

버튼 정의가 더 많은 다른 예

[xboxdrv]
evdev=/dev/input/event8
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_HAT0X=x2
ABS_HAT0Y=y2

[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10
x2=KEY_LEFT:KEY_RIGHT
y2=KEY_DOWN:KEY_UP

[evdev-keymap]
BTN_TRIGGER=x
BTN_TOP=y
BTN_THUMB=a
BTN_THUMB2=b
BTN_PINKIE=rt
BTN_BASE2=rb
BTN_TOP2=lt
BTN_BASE=lb
BTN_BASE3=back
BTN_BASE4=start

[ui-buttonmap]
x=KEY_KPENTER
y=KEY_SPACE
a=BTN_LEFT
b=BTN_RIGHT
rt=KEY_KP8
rb=KEY_KP2
lt=KEY_KP6
lb=KEY_KP4
back=KEY_LEFTSHIFT
start=KEY_RIGHTCTRL

# EOF #

5. 시작

sudo xboxdrv --config xboxdrv-mouse.ini

그것을 실행 방지하기 위해 sudo, udev에 규칙을 만듭니다 .

결론

그것은 잘 작동합니다, 그것은 나를위한 최고의 솔루션입니다.


이것은 XBOX 컨트롤러에만 적용됩니까?
Gman Smith

@gmansmith 아니오 Logitec 게임 패드에 사용했습니다
Boris

5

우분투에서 테스트되지 않았지만 간단한 레시피는 Debian Jessie (내 iBuffalo 클래식 USB 게임 패드 사용 )에서 작동합니다.

  1. 올바른 xorg 모듈을 설치하십시오.

$ sudo apt install xserver-xorg-input-joystick

  1. 디스플레이 관리자를 다시 시작하거나 재부팅하십시오.

Raspbian Buster--Raspberry Pi 3 B +에서 잘 작동했습니다. xbox 360 호환 모드 및 일반 snes 스타일 usb 게임 패드의 8bitdo 게임 패드가 잘 작동합니다. 감사합니다.
12

3

xboxdrv 는 당신이 원하는 것을 할 수 있어야합니다. 그러나 Xbox가 아닌 게임 패드에서 작동하려면 약간의 구성이 필요합니다 (자세한 내용은 맨 페이지를 확인하고 버튼과 축 이름을 찾으려면 --evdev-debug를 사용하십시오).

#!/bin/sh

xboxdrv \
  --evdev /dev/input/event9 \
  --evdev-absmap ABS_X=X1,ABS_Y=y1 \
  --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
  --evdev-keymap BTN_BASE=LB,BTN_BASE2=RB \
  --evdev-keymap BTN_BASE3=guide,BTN_TOP2=start,BTN_PINKIE=back \
  --evdev-keymap BTN_THUMB=x,BTN_TOP=a,BTN_THUMB2=b,BTN_TRIGGER=y \
  \
 --ui-clear \
  --ui-buttonmap rb=BTN_LEFT,lb=BTN_RIGHT,start=KEY_ESC,back=KEY_F1 \
  --ui-buttonmap a=KEY_SPACE \
  --ui-axismap X1=REL_X:20,Y1=REL_Y:20 \
  --ui-axismap DPAD_X=KEY_A:KEY_D:1,DPAD_Y=KEY_W:KEY_S:1 \
  -s "$@"

# EOF #

난 단지 "유효하지 않은 주장"을 얻는다
Boris

좀 더 자세한 정보, 구성의 모양, xboxdrv의 정확한 출력, 사용 된 버전 등이 도움이 될 것입니다. 위의 예는 단지 예일 뿐이므로 컨트롤러에 맞게 사용자 지정해야합니다. 작업.
Grumbel

당신에게 Grumbel 감사합니다! 게으른하지 않을려고, 나는 문서를 읽고, 내가 설명 나는 결국 내 xboxdrv의 설정을 설정하는 방법 내 대답에
보리스

2

Nintendo 64 게임 패드와 동일

[xboxdrv]
evdev=/dev/input/event9
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_RZ=x2
ABS_Z=y2
ABS_HAT0X=dpad_x
ABS_HAT0Y=dpad_y

[axismap]
-X2=X2

[ui-axismap]
x1=REL_X:30
y1=REL_Y:30
x2=KEY_Q:KEY_D
y2=KEY_DOWN:KEY_UP
dpad_x=KEY_LEFT:KEY_RIGHT
dpad_y=KEY_DOWN:KEY_UP

[evdev-keymap]
BTN_THUMB2=b
BTN_THUMB=a
BTN_BASE3=back
BTN_BASE4=start
BTN_BASE=lb
BTN_BASE2=rb

[ui-buttonmap]
start=KEY_KPENTER
rb=BTN_RIGHT
lb=void
a=REL_WHEEL:-1:150
b=REL_WHEEL:1:150
back=BTN_LEFT

일부 세부 사항

내 목표는 마우스와 키보드로 게임하는 데 익숙하지 않기 때문에 1 인칭 슈팅 게임을 플레이하도록 설정하는 것이 었습니다. 그러나 GNU / Linux의 게임은 대부분 게임 패드를 지원하지 않습니다. 나는 유명한 N64 Game 007-GoldenEye의 고급 게임 패드 모드와 같이하려고했습니다.

이 방법으로 게임 패드를 사용하여 마우스를 교체 할 수도 있습니다.

내 선택

  • 메인 스틱에서 마우스를 에뮬레이션
  • 노란색 C (x2 y2) 버튼이 UP, DOWN 키보드 키 및 측면 이동을 위해 아제 라이트 보드의 키로 설정 됨 (Q 및 D; 키보드 레이아웃의 문자 변경)
  • 위 오른쪽 아래 왼쪽은 십자가에 할당
  • 마우스 왼쪽 클릭은 Z (뒤로)에 있고 마우스 오른쪽 버튼으로 클릭하면 R (rb)에 있습니다. 플레이하는 게임에 따라 R 버튼을 KEY_SPACE로 변경하여 점프 할 수 있습니다.
  • A와 B는 마우스 휠에 있으므로 무기를 쉽게 변경할 수 있습니다.
  • L 버튼 (lb)이 설정되지 않은 상태로 있습니다.

이것이 다른 플레이어에게 도움이되기를 바랍니다.

할 일이 누군가가 그것을 할 방법을 알고있는 경우에, 나는 스틱이 중간에 완벽하게없는 경우에도 설정에 "중심 지역"의 종류가 움직이지 않는 커서가 마우스를 qhere 방법을 알고 관심을 가질 것입니다. 게임 패드를 사용하지 않지만 여전히 활성화되어 있으면 커서가 약간 움직이지 않습니다.


1

xboxdrv를 사용해 보았지만 일종의 효과가 있었지만 결코 완벽하지 않았으며 구성 파일을 수동으로 구성해야했습니다. 더 나은 솔루션은 AntiMicro 프로젝트 인 것 같습니다 : https://github.com/Ryochan7/antimicro 몇 번의 클릭만으로 구성이 정말 간단합니다 (GUI는 다소 기본적이지만).

  • 마우스로 내 패드 (F710 Wireless)를 구성하십시오. 원하는 기능에 적절한 버튼 / 스틱을 한 세트로 지정하면됩니다.
  • 마우스와 패드 작동 사이를 전환하기 위해 중앙 "Logitech 로고"키를 얻습니다. 키가 할당되지 않은 두 번째 세트가 있고 중앙 키가이 두 모드간에 전환되므로 "마우스 모드"를 사용하여 게임을 시작할 수 있습니다. 그런 다음 "패드 모드"로 전환하여 재생하십시오.
  • AntiMicro는 "데드 존"도 자동으로 적용하는 것 같습니다. xboxdrv를 사용할 때 커서가 한 방향으로 항상 천천히 표류하기 때문에 구성 파일에서 수동으로이 작업을 수행해야했습니다.

나는 프로젝트가 매우 새롭다 고 생각하지만 나에게는 거의 완벽하게 작동하는 것 같습니다. 작은 문제는 Utraytu 전역 메뉴 구성표에 맞지 않는 왼쪽 상단 모서리의 프로파일을 전환 할 수있는 "트레이"아이콘을 생성한다는 것입니다.


고마워 AntiMicro는 꽤 좋습니다. 키보드와 마우스 이벤트를 모두 보내는 오래된 Sixaxis (예 : Dualshock 3 빼기 럼블)를받을 수있었습니다. 설정은 매우 간단하며 개발자가 버그 보고서에 매우 반응하는 것을 보았습니다.
Laurence Gonsalves
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.