This package provides joystick mapping support for a limited EXAMPLESset of applications in Mac OS X. The intention is to provide an equivalent interface to joymap for linux (http://linuxjoymap.sourceforge.net/). The best way to do this is probably with kernel extensions (.kext). Developments in Mac OS X makes this approach less desirable (to me), since maintaining a signed kext could limit the applicability of this work. Instead, joymap for OSX uses DYLD_INSERT_LIBRARIES to replace the IOKit implementation for an application, and simulate a joystick in the library layer. The program assumes a HOTAS kind of layout, where each product occurs only once in the system (a current limitation). The IOKit replacement library communicates with the joymap process using a unix socket. RUDIMENTARY INSTALLATION AND USAGE ================================== Make the package with: make This creates two dylib files which you can place wherever you wish: * joymap_iokit.dylib * joymap_boxer.dylib There are also two CLI applications that are built: * joymap * jsinfo jsinfo can be used to examine the existing joystick devices, or the programmed virtual joystick. ./jsinfo (shows a list of devices with vendor and product) ./jsinfo -v (shows additional element information) ./jsinfo vendor product (Continuosly display button and axes values) The program loadmap is used to load a joystick configuration as specified the doc subfolder, including a joystick program to allow more advanced programming of joystick actions. The loadmap program opens a socket in $HOME/.joymap to publish virtual joystick information to any program which includes joymap_iokit.dylib or joymap_boxer.dylib. Some example programs are included in the doc subfolder. To benefit from the virtual joystick you need to launch the application with DYLD_INSERT_LIBRARIES. For example: DYLD_INSERT_LIBRARIES=$HOME/joymap/joymap_boxer.dylib open /Applications/Boxer.app You can use the joymap_boxer.dylib for Boxer (available from http://boxerapp.com/) (which does not use the newer IOKIT libraries) and joymap_iokit.dylib for applications that do use the newer IOKIT libraries. For example wine (https://www.winehq.org/). The libraries *only* simulate a joystick, not a keyboard or mouse. The loadmap program simulates the keyboard and mouse directly, so it can be used to simulate keyboard and mouse events using the joystick for any program. LIMITATIONS =========== This is a work in development. Although I find it usable in the current state, the implementation is incomplete. * Queues aren't implemented. * Anything that falls back to using mach_port in some way will not work. * For the latter case I have resorted to custom built libraries (such as the boxer dylib). Use of the software is entirely at your own risk. ========= |