Java から Wiiリモコン を触れる WiiRemoteJ というライブラリがあるので試してみた
ライブラリのインストールらへんはググればすぐわかるので,置いといて
記述自体はべりー簡単
これだけで Wiiリモコン をマウスの代わりに使える
import wiiremotej.*; import wiiremotej.event.*; import java.awt.AWTException; import java.io.IOException; public class WiiRemoteMouseEmulator extends WiiRemoteAdapter { public static void main(String[] args) throws IOException { System.setProperty("bluecove.jsr82.psm_minimum_off", "true"); WiiRemoteJ.setConsoleLoggingAll(); WiiRemote remote = null; while (remote == null) { try { System.out.println("scan..."); remote = WiiRemoteJ.findRemote(); } catch(Exception e) { remote = null; e.printStackTrace(); System.out.println("Failed to connect remote. Trying again."); } } remote.addWiiRemoteListener(new WiiRemoteMouseEmulator(remote)); remote.setAccelerometerEnabled(true); remote.setSpeakerEnabled(true); remote.setIRSensorEnabled(true, WRIREvent.BASIC); remote.setLEDIlluminated(0, true); try { remote.setMouse(new IRAccelerometerMouse(1.3, 1.3, 0.0001, 0.0001, Math.PI / 4)); } catch (SecurityException e) { e.printStackTrace(); } catch (AWTException e) { e.printStackTrace(); } remote.getButtonMaps().add(new ButtonMouseMap(WRButtonEvent.A, java.awt.event.InputEvent.BUTTON1_MASK)); remote.getButtonMaps().add(new ButtonMouseMap(WRButtonEvent.B, java.awt.event.InputEvent.BUTTON3_MASK)); remote.getButtonMaps().add(new ButtonKeyMap(WRButtonEvent.UP, java.awt.event.KeyEvent.VK_UP)); remote.getButtonMaps().add(new ButtonKeyMap(WRButtonEvent.DOWN, java.awt.event.KeyEvent.VK_DOWN)); remote.getButtonMaps().add(new ButtonKeyMap(WRButtonEvent.RIGHT, java.awt.event.KeyEvent.VK_RIGHT)); remote.getButtonMaps().add(new ButtonKeyMap(WRButtonEvent.LEFT, java.awt.event.KeyEvent.VK_LEFT)); final WiiRemote remoteF = remote; Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){ public void run() { remoteF.disconnect(); } } )); } WiiRemote remote = null; public WiiRemoteMouseEmulator(WiiRemote remote) { this.remote = remote; } public void disconnected() { System.out.println("Remote disconnected... Please Wii again."); System.exit(0); } public void statusReported(WRStatusEvent evt) { System.out.println("Battery level: " + (double)evt.getBatteryLevel()/2+ "%"); System.out.println("Continuous: " + evt.isContinuousEnabled()); System.out.println("Remote continuous: " + remote.isContinuousEnabled()); } public void IRInputReceived(WRIREvent evt) { } public void buttonInputReceived(WRButtonEvent evt) { try { if (evt.isPressed(WRButtonEvent.HOME)) { boolean lightChanged = false; if (evt.wasPressed(WRButtonEvent.A + WRButtonEvent.B)) { remote.disconnect(); System.exit(0); } } } catch (Exception e) {e.printStackTrace();} } }
起動して,Wiiリモコン の 1 と 2 を押しながら待ってるとコネクションが確立される
ボタンは
A -> 左クリック B -> 右クリック 十字キー -> アローキー
にそれぞれ割り当ててある
なかなかコネクションがつながらなかったり,ぶちぶちコネクションが切れたりでイライラはするけど,Wiiリモコン で Mac が動くので楽しい
テレビの画面とかを使ってる人ならだらだら YouTube とか観るのに使えそう
本当はマリカーとかのアクションを盗聴して Twitter にポストしまくるとかしたかったけど,コネクションを Wii に取られると拾えないみたい
残念