This shows you the differences between two versions of the page.
start [2009/02/25 14:31] 84.9.60.50 |
start [2014/10/13 17:21] (current) hydra removing spam status update |
||
---|---|---|---|
Line 6: | Line 6: | ||
Ergodex created the device in 2005 and released it to the world where it received much praise, especially from left-handed gamers who until now have had to suffer with remapping the keys on every single game they play to the opposite side of the keyboard. Some games, including many popular games, don't even allow keyboard remapping thus forcing their users to struggle to play the games how their narrow minded right-handed developers designed them. The Ergodex is a godsend to left-handed people as it allows you to place up to 50 keys where ever you like on the pad and assign any keys (and macros) to each key and have the pad automatically reconfigure itself depending on the current application in use. It's also great for many other users, for right-handed users it allows you easier (and faster) access to more keys. Many disabled users are also finding it very useful. In fact the device is so good it recevied an award from popular science in 2005 [[http://www.popsci.com/popsci/bown2005/computing/8cccc18872927010vgnvcm1000004eecbccdrcrd.html|Best of what's new 2005]]. | Ergodex created the device in 2005 and released it to the world where it received much praise, especially from left-handed gamers who until now have had to suffer with remapping the keys on every single game they play to the opposite side of the keyboard. Some games, including many popular games, don't even allow keyboard remapping thus forcing their users to struggle to play the games how their narrow minded right-handed developers designed them. The Ergodex is a godsend to left-handed people as it allows you to place up to 50 keys where ever you like on the pad and assign any keys (and macros) to each key and have the pad automatically reconfigure itself depending on the current application in use. It's also great for many other users, for right-handed users it allows you easier (and faster) access to more keys. Many disabled users are also finding it very useful. In fact the device is so good it recevied an award from popular science in 2005 [[http://www.popsci.com/popsci/bown2005/computing/8cccc18872927010vgnvcm1000004eecbccdrcrd.html|Best of what's new 2005]]. | ||
- | Unfortunately Ergodex have not created any drivers for MacOS X or Linux, nor even Windows XP64 bit, now Windows Vista is out and there's still no drivers for these 4 important operating systems! Ergodex will not give ANY information regarding support for these 4 operating systems for which drivers do not exist. Nor will they give ANY information regarding driver updates and new features - not that the existing drivers on Windows XP 32bit don't work, they do, and very well, it's just that we want more from our DX1's than Ergodex seem to be willing to provide. | + | Unfortunately Ergodex have not created any drivers for MacOS X or Linux, nor even Windows XP64 bit, now Windows Vista is out and there's still no offical drivers for these 4 important operating systems! Ergodex will not give ANY information regarding support for these 4 operating systems for which drivers do not exist. Nor will they give ANY information regarding driver updates and new features - not that the existing drivers on Windows XP 32bit don't work, they do, and very well, it's just that we want more from our DX1's than Ergodex seem to be willing to provide. |
- | This site aims to bring together as many developers as possible in order to first document the USB protocol the device uses and second to write new drivers, primarily for Windows XP (32 and 64bit) and Windows Vista (32 and 64bit) while attempting to keep as much of the code as reusable as possible so that it may be used to create MacOS X and Linux drivers too. | + | This site aims to bring together as many developers as possible in order to first document the USB protocol the device uses and second to write new drivers, primarily for Windows 7, Windows Vista and Windows XP and (all 64 and 32bit editions) while attempting to keep as much of the code as reusable as possible so that it may be used to create MacOS X and Linux drivers too. |
- | This project was started in February 2007, just after the retail release of Windows Vista. | + | Thanks to my (Hydra's) work in reverse engineering the USB protocol other developers were able to write Linux drivers and also port them to OSX, they're on the [[downloads|downloads page]] the linux and osx driver offer no GUIs or macro support. Rob Povey over at Polygon hell also has created some UMDF drivers for Windows XP, Vista (32 and 64bit), you can find them here: http://polygonalhell.blogspot.com/2009/01/new-32-and-64-bit-ergodex-dx1-drivers.html and there's an open-source project for them here too: http://code.google.com/p/ew-ergodex-dx1-driver/ |
+ | The primary focus is to provide KMDF based Windows 7 64bit drivers (as opposed to Rob's UDMF drivers or Erogdex's WDM drivers). Only KMDF (Kernel Mode Driver Framework) or MDL can provide the lowest latency macro support which is crucial for advanced macro usage, especially duing cpu intensive tasks (like playing games/video editing). | ||
+ | |||
+ | This project was started in February 2007, just after the retail release of Windows Vista. | ||
===== Join In ===== | ===== Join In ===== | ||
- | If you want to help with the project please drop me, hydra, an email at this address: hydra at hydras hyphen world dot com | + | If you want to help with the project please drop me, hydra, an email at this address: me at dominicclifton dot name |
+ | |||
+ | Please note, due to excessive edits by spammers all wiki accounts have NO write access until they are verified personally by me, please email me if you'd like your account verified or just email me with any changes you'd like to see added if that's too much trouble. Sorry about this, damn spammers! | ||
Or, you can join the #ergodex IRC channel on freenode [[irc://irc.freenode.net/#ergodex]]. | Or, you can join the #ergodex IRC channel on freenode [[irc://irc.freenode.net/#ergodex]]. | ||
If you've not used IRC before then grab a copy of [[http://www.HydraIRC.com|HydraIRC]] (which I, Hydra, also wrote :-) ), install it, start it, create a profile then click the irc:// link above to join the channel or use file/connect and paste in the irc:// link from above and click "Ok". Shortly after you should see a connection to irc.freenode.net being made and then a new window will appear for the channel. If the channel is empty just wait and someone will appear. If you want to page me then just say my name (Hydra) in the channel. | If you've not used IRC before then grab a copy of [[http://www.HydraIRC.com|HydraIRC]] (which I, Hydra, also wrote :-) ), install it, start it, create a profile then click the irc:// link above to join the channel or use file/connect and paste in the irc:// link from above and click "Ok". Shortly after you should see a connection to irc.freenode.net being made and then a new window will appear for the channel. If the channel is empty just wait and someone will appear. If you want to page me then just say my name (Hydra) in the channel. | ||
- | |||
- | |||
- | |||
Line 73: | Line 75: | ||
[[http://qliner.com/hotkeys/|QLiner hotkeys]] - More keyboard/mouse related code. | [[http://qliner.com/hotkeys/|QLiner hotkeys]] - More keyboard/mouse related code. | ||
+ | [[https://launchpad.net/pystromo|Pystromo]] - Originally only targeted at improving Linux support for the Belkin Nostromo n52 with arbitrary macros, it was expanded to cover any USB device in linux | ||
===== Donations ===== | ===== Donations ===== | ||
Line 81: | Line 83: | ||
Many thanks to those that have already donated, your donations have been graciously received - Hydra | Many thanks to those that have already donated, your donations have been graciously received - Hydra | ||
===== Current Status ===== | ===== Current Status ===== | ||
+ | |||
+ | * 2009/10/17 - Hydra | ||
+ | |||
+ | I played my first game of Team Fortress 2 using my Ergodex programmed with a test keymap! The keymap is currently hard coded into the padcontroller command line utility. | ||
+ | |||
+ | * 2009/10/13 - Hydra | ||
+ | |||
+ | While waiting for MS to hurry up and give me a product key I *cough* installed a *cough* test version of Window s7 on my main box which now no-longer has Windows XP on it. Now there's a milestone if there ever was one. | ||
+ | |||
+ | * 2009/10/05 - Hydra | ||
+ | |||
+ | I ordered Windows 7 64bit and I'll be upgrading my main machine to use Windows 7 as soon as possible. I'm going to try and get very basic drivers before Windows 7 comes out but progress should be good once my main box is upgraded as i can't live without my ergodex. | ||
+ | |||
+ | * 2009/07/15 - Hydra | ||
+ | |||
+ | The drivers can now sends data received from the device to the app that wants read notification. Driver wise there's not much left to do now, application wise there's lots to do! | ||
+ | |||
+ | * 2009/07/02 - Hydra | ||
+ | |||
+ | An app can now send write requests to the driver, the test tool now successfully issues the 'get device information' command using the new code. | ||
+ | |||
+ | * 2009/07/01 - Hydra | ||
+ | |||
+ | More significant progress! An application can request that the driver notify the app when the driver recieves data from the device, the priority of the application is also boosted when notification is sent. This means that there is now device->application communication where as before all other communication was app->driver. | ||
+ | |||
+ | I also decided to keep the driver dumber that I was previously going to in order to keep the amount of code in the driver itself as small as possible. The main reasons for this are: code duplication of things like keymap processing in non-dx1 drivers, it's simpler, less driver code to maintain, kernel mode code is time consuming to create, debug and maintain, you can't use OO (no C++ in KMDF), there's no IDE integration for Visual Studio for KMDF code, my lack of expertise in kernel-land is a time-sink and I'll make faster progress, more reusable cross-platform C++ classes (i.e. the ones I wrote back in 2007!). | ||
+ | |||
+ | * 2009/06/29 - Hydra | ||
+ | |||
+ | Added the ability to enable/disable the test mode and set the led's to indicate a test mode. | ||
+ | |||
+ | * 2009/06/28 - Hydra | ||
+ | |||
+ | Made good progress today, my new WDMF driver can continuously read data from one or more (tested with 2) DX1 pads and dump it to a kernel debug console. The command line tool can be used to trigger various actions within the driver and I'm very happy at being at this stage as it's quite an accompishment for me as until know I didn't really know much about writing drivers, real kernel debugging, the differences between WDM, KMDF, UMDF and how PnP power management, io requests, usb device management and configuration really worked, now I do! I also managed to leverage some features of KMDF which made implementing 4 parallel IO read requests *very* simple indeed. I must also say that there's some great whitepapers and documentation on MSDN regarding kernel device driver data flow, objects and such like. Thanks Microsoft tech dudes!!! | ||
+ | |||
+ | * 2009/06/26 - Hydra | ||
+ | |||
+ | I had big issues getting my drivers working again after I changed the .inx/.inf files which has taken me all morning to solve. I did find and bookmark some good documents on the subject of device driver installation, driver stores, driver signing and pnputil so it wasn't a total waste of time. Right, now back to coding | ||
+ | |||
+ | * 2009/06/25 - Hydra | ||
+ | |||
+ | The name for the driver project has been decided - 'Pad Controller'. The idea being that the software will support multiple pads, and will (maybe) later support other kinds of pads (like Nostromo n52's, etc). | ||
+ | |||
+ | I have created a subversion repository for the new source code and a trac project, the url for which is this: http://dev.padcontroller.hydraproductions.com/ (Offline as on 26/August/2011 due to server move). | ||
+ | |||
+ | * 2009/06/24 - Hydra | ||
+ | |||
+ | With the release date of Windows 7 set for October 22nd 2009 and an updated Windows Driver Kit now available I thought it about time I got on the case of getting this project moving. Luckily in the process of changing jobs I've got a weeks paid holiday, starting today, and I plan to use the time before my next job to get some drivers released! I've already upgraded my other development machines to Windows 7 RC1 in preperation and I'm about to begin coding in earnest. | ||
+ | |||
+ | 12:52 - I got my Windows 7 RC1 x64 box doing remote debugging via Firewire (the previous Windows 7 version on the same box wouldn't play ball) and I documented how to set up and use kernel debugging for the USBSAMP WDK driver example and a DX1 including setting break points and stepping though source in WinDBG. I'll put the docs on the wiki soon. Next up: learning the API's used in the USBSAMP example. | ||
+ | |||
+ | * 2009/04/15 - Hydra | ||
+ | |||
+ | In order to debug the device and see trace messages i need to use remote kernel debugging but annoyingly I've not been able to establish a 1394 remote debug session to my Windows 7 box, however I have managed to establish a connection to Windows Vista running on my laptop so I'll try adding a spare PCI 1394 card to the Windows 7 box and/or try installing Windows 7 on my laptop instead of Vista. | ||
+ | |||
+ | Today I also managed to get WinDbg on the host to display DbgPrint messages called from the code running on the target. I also figured out how to get the driver's debugging symbols loaded in WinDbg and can successfully view and change memory, set breakpoints and step though the source code in the debugger. This means that should (when!) I encounter any issues in the driver then I'll at least be able to see what's going on! | ||
+ | |||
+ | * 2009/04/14 - Hydra | ||
+ | |||
+ | I've installed Visual Studio 2008 and The Windows 7 DDK on my 64 bit Windows 7 development machine and have successfully compiled and tested a basic usb driver from the DDK and read data from a connected DX1. I had to jump though a few "driver-signing" hoops to get this far. Currently the 64 bit driver is only test signed and eventually I'll need a way to sign it properly. | ||
+ | |||
+ | I've also decided to take the approach used by the official ergodex drivers (different from the other available drivers) in that the driver itself will be constantly retrieving data from the DX1 rather than a user-mode application (or [[http://www.microsoft.com/whdc/driver/wdf/UMDF_Intro.mspx|UMDF]] driver) doing so. The main reason is response time within games or other time-sensitive applications, like music. User-mode apps and drivers are slower than kernel mode drivers. | ||
+ | |||
+ | This means that I won't be able to use some of the code I've already written (it's C++, not plain C) but it'll be better in the long run. | ||
+ | |||
+ | * 2009/04/13 - Hydra | ||
+ | |||
+ | I downloaded the latest [[https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=704&DownloadID=15857&wa=wsignin1.0|Windows 7 DDK]] from Microsoft Connect today and rebuilt and re-tested the padmonitor code. I created a (local) git repository for the project which I'll get around to hosting or moving to svn + trac. I also plugged my second Ergodex DX1 into my main machine and had one pad using my drivers one one using the ergodex drivers and as expected they co-existed quite happily. I tweaked the pad monitor shutdown code and everything seems to be 100% working for me right now as per the last code-related update around this time last year! More progress soon! | ||
* 2009/02/25 - Hydra | * 2009/02/25 - Hydra |