Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้คอนโทรลเลอร์ Nintendo Wii (Wii Remote) เล่นเกมบน Linux

คุณสามารถเล่นเกม Nintendo Wii บน Linux ได้ หากรู้วิธีใช้ Wii Remote กับคอมพิวเตอร์ ยังสามารถใช้ Wii Remote แทน Gamepad PC เล่นเกมผ่าน Emulator ได้อีกด้วย

📝 บทความนี้ใช้กับ Debian-based distros: Debian, Mint, Ubuntu (RPM-based ใช้ YUM แทนได้)

สิ่งที่ต้องเตรียม

นอกจาก Wii Controller แล้ว ต้องติดตั้งแพ็กเกจ Linux:

  • lswm
  • wminput
  • libcwiid1

ติดตั้งทั้งหมดด้วยคำสั่งเดียวใน Terminal:

sudo apt-get install lswm wminput libcwiid1

💡 RPM-based distros (Fedora, CentOS) ใช้ YUM หรือตัวจัดการแพ็กเกจอื่น ติดตั้งแพ็กเกจเดียวกันได้

วิธีเชื่อมต่อ Wii Remote กับ Linux (Bluetooth)

ตั้งค่า Wii Remote จาก Command Line:

  1. เปิด Terminal ใส่คำสั่งหา Bluetooth Address ของ Wii Remote:
    lswm
  2. เมื่อระบบ prompt ให้ กดค้างปุ่ม 1 และ 2 พร้อมกัน บน Wii Remote หากสำเร็จ จะเห็น Address แบบนี้:
    00:1B:7A:4F:61:C4
    ⚠️ ต้องเปิด Bluetooth บนคอมพิวเตอร์ อาจต้องลองหลายครั้งก่อน Detect ได้
  3. ใส่คำสั่งเปิด Nano Editor สร้าง Config ไฟล์ Map ปุ่ม:
    sudo nano /etc/cwiid/wminput/gamepad
  4. Copy & Paste โค้ดด้านล่าง ไปวางท้ายไฟล์ใน Nano:
    Wiimote.Down = KEY_RIGHT
    Wiimote.Left = KEY_DOWN
    Wiimote.Right = KEY_UP
    Wiimote.1 = KEY_SPACE
    Wiimote.2 = KEY_LEFTCTRL
    Wiimote.A = KEY_LEFTALT
    Wiimote.B = KEY_RIGHTCTRL
    Wiimote.Plus = KEY_LEFTSHIFT
  5. กด Ctrl + O บันทึกไฟล์ Config
  6. กด Ctrl + X ออกจาก Nano
  7. รันคำสั่งเชื่อมต่อ:
    sudo wminput -c /etc/cwiid/wminput/gamepad
  8. กดค้าง ปุ่ม 1 และ 2 พร้อมกัน อีกครั้ง เมื่อ prompt ปรากฎคำว่า "ready" = เชื่อมต่อสำเร็จ เริ่มเล่นเกมได้เลย

💡 จุดเด่น Wii Remote: D-pad ใช้เล่นเกมเก่า (Retro) ดีกว่า Thumbstick Xbox One เพราะไม่ไวจนเกินไป

การตั้งค่าปุ่ม (Button Mapping) รายละเอียด

ไฟล์ Config อาจมีข้อความเดิมอยู่แล้ว เช่น:

# gameport
Classic.Dpad.X = ABS_X
Classic.Dpad.Y = ABS_Y
Classic.A = BTN_A

รูปแบบแต่ละบรรทัด: Wii controller button = keyboard button ตัวอย่าง:

Wiimote.Up = KEY_UP

Map ปุ่ม Up บน Wii Remote → ปุ่ม Up Arrow บนคีย์บอร์ด แต่ Wii Remote ต้องจับแนวนอน (sideways) เล่นเกมส่วนใหญ่ จึงอาจอยาก Map Up → Left Arrow:

Wiimote.Up = KEY_LEFT

ตาราง Mapping แนะนำ (Wii Remote แนวนอน)

Wii Remote ButtonLinux Keyboard
UpLeft Arrow
DownRight Arrow
LeftDown Arrow
RightUp Arrow
1Space
2Left Ctrl
ALeft Alt
BRight Ctrl
Plus (+)Left Shift

Emulator หลายตัวมี Button Mapping UI เอง – หลังเชื่อมต่อ Wii Remote แล้ว สามารถปรับแต่งต่อสำหรับเกม/คอนโซลเฉพาะได้ บางเกม PC Map Mouse keys ให้ Wii Controller ได้

💝 ดูการตั้งค่าแนะนำสำหรับเกม Retro ได้ที่ Internet Archive Arcade website

รายการปุ่ม Wii Remote และ Accessories ที่ Map ได้

Wii Remote (WiiMote)

  • Wiimote.Up, Wiimote.Down, Wiimote.Left, Wiimote.Right
  • Wiimote.A, Wiimote.B, Wiimote.1, Wiimote.2
  • Wiimote.Plus, Wiimote.Minus, Wiimote.Home
  • Wiimote.Dpad.X, Wiimote.Dpad.Y

Wii Nunchuk

  • Nunchuk.C, Nunchuk.Z
  • Nunchuk.Stick.X, Nunchuk.Stick.Y

Wii Classic Controller

  • Classic.Up, Classic.Down, Classic.Left, Classic.Right
  • Classic.Minus, Classic.Plus, Classic.Home
  • Classic.A, Classic.B, Classic.X, Classic.Y
  • Classic.ZL, Classic.ZR, Classic.L, Classic.R
  • Classic.Dpad.X, Classic.Dpad.Y
  • Classic.LStick.X, Classic.LStick.Y, Classic.RStick.X, Classic.RStick.Y
  • Classic.LAnalog, Classic.RAnalog

⚠️ ไม่สามารถตั้งค่า Motion Controls ของ Wii Remote บน Linux ได้ แต่ยังเล่น ROM เกม Wii ที่ไม่ต้องการ Motion Controls ได้

Keyboard Mapping Reference (สำหรับตั้งค่า Config)

ตารางอ้างอิง Linux Keyboard Codes สำหรับตั้งค่าใน gamepad config file:

KeyCode
EscapeKEY_ESC
0-9KEY_0 - KEY_9
- (minus)KEY_MINUS
= (equals)KEY_EQUAL
BackSpaceKEY_BACKSPACE
TabKEY_TAB
Q-W-E-R-T-Y-U-I-O-PKEY_Q - KEY_P
[ ]KEY_LEFTBRACE, KEY_RIGHTBRACE
EnterKEY_ENTER
Ctrl (Left)KEY_LEFTCTRL
A-S-D-F-G-H-J-K-LKEY_A - KEY_L
; (semi-colon)KEY_SEMICOLON
' (apostrophe)KEY_APOSTROPHE
Shift (Left)KEY_LEFTSHIFT
\KEY_BACKSLASH
Z-X-C-V-B-N-MKEY_Z - KEY_M
, . /KEY_COMMA, KEY_DOT, KEY_SLASH
Shift (Right)KEY_RIGHTSHIFT
Alt (Left)KEY_LEFTALT
SpaceKEY_SPACE
Caps LockKEY_CAPSLOCK
F1-F12KEY_F1 - KEY_F12
Num LockKEY_NUMLOCK
Scroll LockKEY_SHIFTLOCK
Keypad 0-9KEY_KP0 - KEY_KP9
Keypad . + -KEY_KPDOT, KEY_KPPLUS, KEY_KPMINUS
Arrow KeysKEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN
Home, Insert, DeleteKEY_HOME, KEY_INSERT, KEY_DELETE
Page Up, Page DownKEY_PAGEUP, KEY_PAGEDOWN