คุณสามารถเล่นเกม 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:
- เปิด Terminal ใส่คำสั่งหา Bluetooth Address ของ Wii Remote:
lswm
- เมื่อระบบ prompt ให้ กดค้างปุ่ม 1 และ 2 พร้อมกัน บน Wii Remote หากสำเร็จ จะเห็น Address แบบนี้:
00:1B:7A:4F:61:C4
⚠️ ต้องเปิด Bluetooth บนคอมพิวเตอร์ อาจต้องลองหลายครั้งก่อน Detect ได้ - ใส่คำสั่งเปิด Nano Editor สร้าง Config ไฟล์ Map ปุ่ม:
sudo nano /etc/cwiid/wminput/gamepad
- 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
- กด Ctrl + O บันทึกไฟล์ Config
- กด Ctrl + X ออกจาก Nano
- รันคำสั่งเชื่อมต่อ:
sudo wminput -c /etc/cwiid/wminput/gamepad
- กดค้าง ปุ่ม 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 Button | Linux Keyboard |
|---|---|
| Up | Left Arrow |
| Down | Right Arrow |
| Left | Down Arrow |
| Right | Up Arrow |
| 1 | Space |
| 2 | Left Ctrl |
| A | Left Alt |
| B | Right 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:
| Key | Code |
|---|---|
| Escape | KEY_ESC |
| 0-9 | KEY_0 - KEY_9 |
| - (minus) | KEY_MINUS |
| = (equals) | KEY_EQUAL |
| BackSpace | KEY_BACKSPACE |
| Tab | KEY_TAB |
| Q-W-E-R-T-Y-U-I-O-P | KEY_Q - KEY_P |
| [ ] | KEY_LEFTBRACE, KEY_RIGHTBRACE |
| Enter | KEY_ENTER |
| Ctrl (Left) | KEY_LEFTCTRL |
| A-S-D-F-G-H-J-K-L | KEY_A - KEY_L |
| ; (semi-colon) | KEY_SEMICOLON |
| ' (apostrophe) | KEY_APOSTROPHE |
| Shift (Left) | KEY_LEFTSHIFT |
| \ | KEY_BACKSLASH |
| Z-X-C-V-B-N-M | KEY_Z - KEY_M |
| , . / | KEY_COMMA, KEY_DOT, KEY_SLASH |
| Shift (Right) | KEY_RIGHTSHIFT |
| Alt (Left) | KEY_LEFTALT |
| Space | KEY_SPACE |
| Caps Lock | KEY_CAPSLOCK |
| F1-F12 | KEY_F1 - KEY_F12 |
| Num Lock | KEY_NUMLOCK |
| Scroll Lock | KEY_SHIFTLOCK |
| Keypad 0-9 | KEY_KP0 - KEY_KP9 |
| Keypad . + - | KEY_KPDOT, KEY_KPPLUS, KEY_KPMINUS |
| Arrow Keys | KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN |
| Home, Insert, Delete | KEY_HOME, KEY_INSERT, KEY_DELETE |
| Page Up, Page Down | KEY_PAGEUP, KEY_PAGEDOWN |