PDA

View Full Version : [ANN] Amelio input library v1.0


calumr
2003.05.09, 10:19 AM
http://doomlegacy.idevgames.com/amelio/

Amelio is a framework for Mac OS X that allows Cocoa and Carbon applications to use USB input devices like gamepads and joysticks. It is released under the BSD license, so feel free to use it in any application, commercial or otherwise.

In order to make up for the lack of information returned by HID devices, Amelio has to download some information that allows it to function better. Currently there are only a handful of devices that I have been able to create this information for, but there is a tool available with Amelio that should allow anyone to create the device specification files with little effort.

Changes since v0.9 include not downloading device descriptions when not connected to the internet, better documentation (including a short tutorial) and some other small fixes.

Codemattic
2003.05.12, 05:10 AM
The Calibration button works really well.

I no longer get the long pause on startup when my internet connection is down.

I like how you can hot-swap devices and the config manager automatically updates. Tres cool.

Still a cinch to add to one's project! Good job. Thanks.


My dual-analog sticks still dont work. The 2nd (rightside) stick isnt fully recognized. I have a Mac Ally iShock and a Thrustmaster dual-analog. The left joystick has axis labeled X-Axis and Y-Axis which works fine. The right joystick has axis labeled Z-Rotation and Slider. Z-Rotation (horizontal axis) works fine. Slider does not. The Action pull-down menu for Slider only gives me Slider and None choices. Same for both pads.

In 'Amelio Configuration Builder' what is the 'Usage' pull-down menu for? I can imagine that developers will always want choices for this that you cant think of ahead of time. Like for buttons you have 'primary fire' and 'secondary fire', (besides the quit, start/pause, and select which should be standard). But what about 'jump'? Or 'smart bomb' etc... Same thing for the axis pull-down. Does what is in the usage pull-down matter? Maybe it should be a textfield where the developer can put any ol crazy thing in there.

I still wonder about the automatic driver downloading. It *is* very neat... but, what about updates? Like the Thrustmaster driver I sent to you - I was looking at it and I saw I forgot two buttons - if I update that and resend it to you - how do users know to get the new versions? What if someone else makes a driver for the same device and uploads it - I could see someone designing a better background (mine is way too dark in retrospect). Are you going to look at all colliding drivers and decide which one you like the best and make that the standard? Can each user choose which driver she likes best?

Minor nit: The holding down option to switch to the standard dialog feels wrong to me. Especially since you cant use it to switch a device that is currently selected - you have to select something else and then reselect the device with option held down. When I first tried it I kept option-clicking on an already selected device and wondering why it wouldnt change. Maybe a button in its place? If a device doesnt have a driver the button is greyed out and you get the standard dialog (non-graphical configuration). If a device has a driver - you get the graphic dialog and the button says "standard dialog" - click on the button and the dialog changes to the standard one and the button title changes to "graphic dialog". Click again , and well, you get the idea. Less confusion I think. But this is a very minor tweak.

Amelio Test doesnt seem to remember the changes I make in the configuration when I quit and relaunch it - shouldnt it?

Amelio is cool,
Codemattic

calumr
2003.05.12, 06:36 AM
Thyanks for the feedback, this is very useful.

Originally posted by codemattic

My dual-analog sticks still dont work. The 2nd (rightside) stick isnt fully recognized. I have a Mac Ally iShock and a Thrustmaster dual-analog. The left joystick has axis labeled X-Axis and Y-Axis which works fine. The right joystick has axis labeled Z-Rotation and Slider. Z-Rotation (horizontal axis) works fine. Slider does not. The Action pull-down menu for Slider only gives me Slider and None choices. Same for both pads.

I think this is a case of different HID usage codes for the iShock, which I may be able to fix by looking at the latest HID utilities code from Apple.

In 'Amelio Configuration Builder' what is the 'Usage' pull-down menu for? I can imagine that developers will always want choices for this that you cant think of ahead of time. Like for buttons you have 'primary fire' and 'secondary fire', (besides the quit, start/pause, and select which should be standard). But what about 'jump'? Or 'smart bomb' etc... Same thing for the axis pull-down. Does what is in the usage pull-down matter? Maybe it should be a textfield where the developer can put any ol crazy thing in there.

Primary/secondary fire should really be Primary/secondary button. The only difference is that the primary buttons are automatically bound before the secondary ones (like the triggers on a joystick having priority over the buttons on the base).

I still wonder about the automatic driver downloading. It *is* very neat... but, what about updates?

I sort of assumed that the users would just ttrash the locally cached versions to force Amelio to re-download the latest version. However I could add a "refresh by" date for each device (there is already something similar in place to prevent attempting to download a device more than once a week if it wasn't found).

Minor nit: The holding down option to switch to the standard dialog feels wrong to me.

Perhaps a contextual menu with a couple of options would be useful here. "Show standard config dialog", "redownload device info" and "reset device bindings" might be good. Thoughts?

Amelio Test doesnt seem to remember the changes I make in the configuration when I quit and relaunch it - shouldnt it?

Amelio is cool,
Codemattic

Does it not remember settings for any device?

Thanks again for taking time to look at this for me.

Codemattic
2003.05.13, 01:25 AM
Originally posted by calumr
Perhaps a contextual menu with a couple of options would be useful here. "Show standard config dialog", "redownload device info" and "reset device bindings" might be good. Thoughts?

that sounds even better!

Originally posted by calumr
Does it not remember settings for any device?
no. But in my home/library/preferences/ I see an "AmelioConfigurationBuilder.plist" and an "AmelioDeviceSpecificationBuilder.plist" - but I dont see an "AmelioTest.plist"!

I should mention that I have more than a few versions of Amelio on my drive. I was worried that an earlier version of the prefs might be colliding - but I cant find any pref file for Test at all.

calumr
2003.05.13, 06:38 AM
Originally posted by codemattic
but I dont see an "AmelioTest.plist"!

It should be "com.amelio.AmelioTest.plist".

Codemattic
2003.05.15, 04:57 AM
After trashing "com.amelio.AmelioTest.plist" I started Amelio Test. Made some changes in the keyboard and joystick settings. Quit and when I restarted Amelio Test - it didnt remember my changes.

Does Amelio Test remember changes on your machine? If so - it could just be my machine acting up. I have this weird problem with my filesystem - so its not impossible its just my machine. I have a G4/400 OS 10.2.4 fyi.

btw - what different device specs have you got so far? On the web site there should be a way to browse and maybe download manually the ones you want. Like, before I buy a new device - Id want to see if there is an Amelio driver for it already. Maybe each one could have a screenshot of the interface so I can pick out the prettiest.

calumr
2003.05.15, 07:26 AM
It works OK for me (0n 10.2.6 but I don't think it'll make a difference what OS version you have, as long as it's >10.2). Could you change some settings, quit the app and then send me the .plist?

I have device specs for the Gravis Gamepad Pro, the Apple puck mouse and the Eliminator Aftershock. I agree that it would be cool to have a list on the website, maybe I could learn php or something to do it dynamically...