There doesn't seem to have been much in the way of interfaces for using ManyMouse - which as the name suggests, allows you to use more than one mouse in a program - hence this post.
I've got a small C interface up and running for use in BlitzMax, as well as using the original routines for initialising the interface.
First, the test program :
And the C interface program :
ManyMouse works on Windows and Mac (Intel and should work on PPC). It should also work on Linux, but I haven't tried it yet.
ManyMouse itself can only be retrieved using SVN (unfortunately), but is availiable at http://icculus.org/manymouse/
I've got a small C interface up and running for use in BlitzMax, as well as using the original routines for initialising the interface.
First, the test program :
SuperStrict Import "manymouse.c" Import "macosx_hidmanager.c" Import "macosx_hidutilities.c" Import "windows_wminput.c" Import "linux_evdev.c" Import "x11_xinput.c" Import "BlitzMaxManyMouseInterface.c" Const MANYMOUSE_EVENT_ABSMOTION:Int = 0 Const MANYMOUSE_EVENT_RELMOTION:Int=1 Const MANYMOUSE_EVENT_BUTTON:Int=2 Const MANYMOUSE_EVENT_SCROLL:Int=3 Const MANYMOUSE_EVENT_DISCONNECT:Int=4 Const MANYMOUSE_EVENT_MAX:Int=5 Extern Function ManyMouse_Init:Int() Function ManyMouse_Quit() Function ManyMouse_DeviceName:Byte Ptr(index:Int) Function manyMouse_BMInterface_PollEvent:Byte() Function manyMouse_BMInterface_ReturnDeviceID:Int() Function manyMouse_BMInterface_ReturnItem:Int() Function manyMouse_BMInterface_ReturnValue:Int() Function manyMouse_BMInterface_ReturnType:Int() EndExtern Local numMice:Int Local loop:Int Local device:Int Local eType:Int Local item:Int Local value:Int Graphics 640,480,32 numMice=ManyMouse_Init() Print "Number Of Mice:"+numMice For loop=0 To numMice-1 Print deviceNameToString(loop) 'Print "Mouse Name : "+ManyMouse_DeviceName(loop) Next While Not KeyHit(KEY_ESCAPE) Cls While manyMouse_BMInterface_PollEvent() device=manyMouse_BMInterface_ReturnDeviceID() eType=manyMouse_BMInterface_ReturnType() item=manyMouse_BMInterface_ReturnItem() value=manyMouse_BMInterface_ReturnValue() Select eType Case MANYMOUSE_EVENT_ABSMOTION DrawText "Mouse "+device+" absolute motion ",0,0 If item=0 DrawText "X:"+value,0,16 Else DrawText "Y:"+value,0,16 EndIf Case MANYMOUSE_EVENT_RELMOTION DrawText "Mouse "+device+" relative motion ",0,32 If item=0 DrawText "X:"+value,0,48 Else DrawText "Y:"+value,0,48 EndIf Case MANYMOUSE_EVENT_BUTTON DrawText "A Button has been pressed ("+device+"/"+item+")",0,64 If value DrawText "Down",0,64+16 Else DrawText "Up",0,64+16 EndIf Case MANYMOUSE_EVENT_SCROLL DrawText "Scroll wheel on mouse "+device,0,128 If item=0 DrawText "Vertical",0,128+16 If value>0 DrawText "Up",0,128+32 Else DrawText "Down",0,128+32 EndIf Else DrawText "Horizontal",0,128+16 If value>0 DrawText "Right",0,128+32 Else DrawText "Left",0,128+32 EndIf EndIf EndSelect EndWhile Flip EndWhile ManyMouse_Quit() End Function deviceNameToString:String(index:Int) Local temp:Byte Ptr Local result:String Local index2:Int result="" temp=ManyMouse_DeviceName(index) index2=0 While temp[index2]<>0 result:+Chr$(temp[index2]) index2:+1 EndWhile Return result EndFunction
And the C interface program :
/* * BlitzMaxManyMouseInterface.h * * * Created by Nicholas Kingsley on 31/03/2008. * Copyright 2008 __MyCompanyName__. All rights reserved. * */ #include "ManyMouse.h" #include "stdio.h" #include "stdlib.h" #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif ManyMouseEvent event; void manyMouse_BMInterface_Clear(void) { memset(&event,(char) 0,sizeof(event)); } char manyMouse_BMInterface_PollEvent(void) { if (ManyMouse_PollEvent(&event)) { return TRUE; } return FALSE; } int manyMouse_BMInterface_ReturnDeviceID(void) { return event.device; } int manyMouse_BMInterface_ReturnItem(void) { return event.item; } int manyMouse_BMInterface_ReturnValue(void) { return event.value; } int manyMouse_BMInterface_ReturnType(void) { return event.type; }
ManyMouse works on Windows and Mac (Intel and should work on PPC). It should also work on Linux, but I haven't tried it yet.
ManyMouse itself can only be retrieved using SVN (unfortunately), but is availiable at http://icculus.org/manymouse/