Wiimote+Classic Controller OSX

(Posted by Harold Gutch)

If you have a Nintendo Wii or at least a Wii Remote and something Bluetooth-capable that runs OS X (like a MacBook), you probably know DarwiinRemote which allows you to use the Wii Remote on OS X. If you also have a Classic Controller, you then know that support for the Classic Controller is hardly functional in the official release (actually only Left and Up on the D-Pad work, nothing else) and completely missing in the development trunk. But do not fear, spam-filter is here! We present source code patches (1, 2) to fix Classic Controller support, and, for those who prefer this, also the fixed binaries. Read below for problems with this build.

To compile a working DarwiinRemote binary, you will need a working Xcode environment. Then perform the following steps (skip this paragraph if you are using the binaries):

  1. Apply the patches to WiiRemoteFramework and DarwiinRemote
  2. Open the WiiRemoteFramework Xcode project file and build WiiRemoteFramework
  3. Open the DarwiinRemote Xcode project file
  4. Ctrl-click “WiiRemote.framework” in the file list and select “Get Info”
  5. Choose “build/Release/WiiRemote.framework” in the directory where you just compiled WiiRemoteFramework and close the “Info” window
  6. Ctrl-click “WiiRemote.framework” in the file list and select “Compile”
  7. Click “Build”

This might be a bit elaborate for experienced Xcode-users, but I at first missed the 6th step (and I still don't understand why it is required at all), so if you don't know your way around Xcode (just like me), the list above might come in handy.

So, this build allows you to use all the keys on your Classic Controller, however there is one more problem: there is a bug in DarwiinRemote which prevents you from specifying your own keybindings in the key configuration screen. You however can use any of the predefined keys, so if the application you are trying to control (most likely a game, if you are using the Classic Controller) allows you to freely redefine the keys, just bind Select to TAB, Start to Return and the A, B, X, Y, L, R keys to F1 to F6. This probably will be a little strange if you think of this from the point of view of using the keyboard, but as you are actually using the Classic Controller, it may make more sense.

Update:
I fixed the problems in the last paragraph, so now your own keybindings also work for the Classic Controller. You can find the updated binary here. If you prefer compiling the source code, get the updated .nib files, unpack them in the directory DarwiinRemote/English.lproj (overwriting the files in the MainMenu.nib subdirectory) and recompile. One last thing to add now is support for key modifiers without keys (e.g. mapping something on the Wii Remote to the shift key).

Update:
As already mentioned in the comments, I fixed the problem mentioned above already a while ago, but completely forgot to upload it. Here are the updated binary, the updated .nib files, and a new patch for DarwiinRemote. Now you can also map buttons on the Wii Remote and the Classic Controller to keys like the shift or the option key. If i missed something, report any problems.