Làm thế nào một gamepad có thể điều khiển chuột?


9

Có rất nhiều câu hỏi về chủ đề này:

Nhưng mục đích của những câu hỏi / câu trả lời này là để có thể sử dụng gamepad để chơi game.

Tôi muốn một giải pháp sử dụng gamepad để điều khiển chuột.
Để thay thế chuột bằng gamepad trong tất cả các ứng dụng.
Bằng cách đó tôi có thể điều khiển máy tính của mình trong phòng khách từ chiếc ghế bành của tôi bằng một chiếc gamepad không dây.

Câu trả lời:


8

Theo câu trả lời của Grumbel , tôi đã thử giải pháp xboxdrv với sự hỗ trợ của liên kết của anh ấy và đặc biệt trang này :

1. Cài đặt xboxdrv 0.8.2 từ Trung tâm phần mềm Ubuntu.

Cài đặt cũng uinputjoydev nếu cần. Tôi đã làm theo cách này sudo modprobe uinput+sudo modprobe joydev

2. Cần biết sự kiện của gamepad:

Khởi chạy udevadm monitor --udevvà sau đó cắm bảng trò chơi:

$ 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)

Tôi kết luận rằng sự kiện gamepad của tôi là / dev / input / event8

3. Hiển thị tên của mọi phím, trục, nút của gamepad.

Ý tưởng là để khởi chạy xboxdrvvà kiểm tra mọi nút và ghi chú kết quả trên giấy.

$ 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
...

Trong trường hợp của tôi, kết quả là: nhập mô tả hình ảnh ở đây

4. Đặt tệp cấu hình

Tạo một tệp xboxdrv-mouse.ini để đặt trục XY và nút chuột trái và phải.
Ở đây tôi đặt các nút gamepad 2cho nút chuột trái và 3cho nút chuột phải:

[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 #

Lưu ý rằng giá trị cho REl_X và REL_Y dường như xác định tốc độ của chuột và bằng cách xác định giá trị âm, nó đảo ngược trục (xem tại đây để biết về REL_Y)

Một ví dụ khác với định nghĩa nút nhiều hơn

[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. Khởi chạy nó

sudo xboxdrv --config xboxdrv-mouse.ini

Để tránh khởi chạy nó với sudo, hãy tạo một quy tắc udev .

PHẦN KẾT LUẬN

Nó hoạt động tốt, đó là giải pháp tốt nhất cho tôi.


Điều này chỉ áp dụng cho bộ điều khiển XBOX?
Gman Smith

@gmansmith no Tôi đã sử dụng nó cho pad trò chơi Logitec
Boris

4

Chưa được kiểm tra trên Ubuntu, nhưng công thức đơn giản đó hoạt động trên Debian Jessie (với gamepad usb cổ điển iBuffalo của tôi ):

  1. Cài đặt mô-đun xorg đúng:

$ sudo apt install xserver-xorg-input-joystick

  1. Khởi động lại trình quản lý hiển thị của bạn (hoặc khởi động lại)

Nó hoạt động tốt trên Raspbian Buster - Raspberry Pi 3 B +. Gamepad 8bitdo ở chế độ tương thích xbox 360 và gamepad USB kiểu snes chung hoạt động tốt. Cảm ơn bạn.
suy nghĩ ngày

3

xboxdrv sẽ có thể làm những gì bạn muốn. Tuy nhiên, nó đòi hỏi một chút cấu hình để hoạt động với các gamepad không phải Xbox, một cái gì đó dọc theo dòng (kiểm tra trang man để biết chi tiết, sử dụng --evdev-debug để tìm ra tên nút và trục):

#!/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 #

khó khăn, tôi chỉ nhận được "đối số không hợp lệ"
Boris

Một ít thông tin sẽ hữu ích, cấu hình của bạn trông như thế nào, đầu ra chính xác của xboxdrv, bạn đã sử dụng phiên bản nào, v.v. Ngoài ra, đây chỉ là một ví dụ, bạn phải tùy chỉnh nó cho bộ điều khiển của bạn để có nó công việc.
Grumbel

cảm ơn Grumbel! Cố gắng không được lười biếng, tôi đã đọc tài liệu và cuối cùng tôi đã đặt cấu hình xboxdrv của mình, tôi đã trình bày chi tiết cách trả lời của mình
Boris

2

Tương tự cho một gamepad 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

Một số chi tiết

Mục đích của tôi là thiết lập trò chơi này để chơi trò chơi bắn súng góc nhìn người thứ nhất, vì tôi không quen chơi với chuột và bàn phím. Tuy nhiên, hầu hết các trò chơi trên GNU / Linux không hỗ trợ gamepad rất tốt. Tôi đã cố gắng làm điều đó giống như chế độ gamepad tiên tiến trên N64 Game 007 nổi tiếng - GoldenEye.

Bằng cách này, bạn cũng có thể sử dụng gamepad để thay thế chuột.

Lựa chọn của tôi

  • giả lập chuột trên thanh chính
  • Các nút C (x2 y2) màu vàng được đặt thành LÊN, các phím bàn phím XUỐNG và các phím trên bảng điều khiển azerty để di chuyển bên (Q và D; thay đổi chữ cái cho bố cục bàn phím của bạn)
  • lên phải xuống trái được gán cho thập tự giá
  • nhấp chuột trái là vào Z (quay lại) để bắn và nhấp chuột phải vào R (rb). Bạn có thể muốn thay đổi nút R thành KEYinksACE để nhảy, tùy thuộc vào trò chơi bạn chơi.
  • A và B nằm trên bánh xe chuột, vì vậy bạn có thể dễ dàng thay đổi vũ khí của mình.
  • nút L (lb) không được đặt

Hy vọng điều này sẽ giúp những người chơi khác.

Todo Nếu ai đó biết cách thực hiện, tôi sẽ muốn biết cách thiết lập một loại "khu vực trung tâm" nếu con trỏ chuột không di chuyển, ngay cả khi cây gậy không hoàn hảo ở giữa. Điều này sẽ tránh cho con trỏ di chuyển một chút khi bạn không sử dụng gamepad nhưng nó vẫn được bật.


1

Tôi đã thử xboxdrv và nó đã hoạt động nhưng nó không bao giờ hoàn hảo đối với tôi và tôi phải tự cấu hình tệp cấu hình. Giải pháp tốt hơn có vẻ là dự án AntiMicro: https://github.com/Ryochan7/antimicro cấu hình thực sự đơn giản (mặc dù GUI khá cơ bản), với một vài lần nhấp tôi có thể:

  • cấu hình pad của tôi (F710 Wireless) dưới dạng chuột - chỉ cần gán các nút / gậy thích hợp cho chức năng mong muốn trong một bộ;
  • lấy phím "Logo Logitech" trung tâm để chuyển đổi giữa thao tác chuột và pad - Tôi chỉ cần có bộ thứ hai trong đó không có phím nào được gán và phím trung tâm bật giữa hai chế độ đó, do đó tôi có thể khởi chạy trò chơi bằng "chế độ chuột" và sau đó chuyển sang "chế độ pad" để chơi;
  • AntiMicro dường như cũng tự động áp dụng "vùng chết" - khi tôi đang sử dụng xboxdrv, tôi phải làm điều này bằng tay trong tệp cấu hình vì con trỏ trôi chậm theo một hướng, tất cả đều tốt.

Tôi nghĩ rằng dự án là khá mới nhưng đối với tôi nó dường như hoạt động gần như hoàn hảo cho đến nay. Vấn đề nhỏ là nó tạo ra biểu tượng "khay" cho phép chuyển cấu hình ở góc trên bên trái không phù hợp với sơ đồ menu toàn cầu của Ubuntu.


Cám ơn vì cái này. AntiMicro khá đẹp. Tôi đã có thể nhận được Sixaxis cũ của mình (ví dụ: Dualshock 3 trừ tiếng ầm ầm) gửi cả sự kiện bàn phím và chuột. Việc thiết lập khá đơn giản và từ những gì tôi thấy nhà phát triển rất nhạy cảm với các báo cáo lỗi.
Laurence Gonsalves
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.