Changing Keyboard mappings.
To change DMDX's input mappings the first thing that must be done is to to use the TimeDX input test and find out what the name of your keyboard device is. While you are there you will also want to find out what the name of the space bar is (which will be used as the request key to advance from item to item) and the names left and right shift keys (that will be the response keys). A key point to know is that the name TimeDX reports for a button will have a plus sign (+) in front of it when used in DMDX.
Having done that you will need to edit the parameter line of the item file. For instance the demo has the following parameter line:<ep> s8 <azk> f25 <id "keyboard"> <mr +g> <mnr +f> <mpr +h>
This item file binds the G key to the request (in addition to the spacebar), the F key to the negative response and the H key to the positive response (in addition to the shift keys). You will need to replace <id "keyboard"> with the name of your keyboard from TimeDX, similarly you will need to edit the mappings:
<ep> s8 <azk>
f25 <id "your-keyboard-name"> <mr +your-spacebar-name> <mnr +your-left-shiftkey-name> <mpr +your-right-shiftkey-name>
<safemode 1> <vm desktop> <eop>
The use of quotes is optional, sometimes spaces in the names devices and buttons necessitate their use, at other times they appear to break things (we're still looking into that). The same sort of thing would be required for the mouse.
And of course as with all things in DMDX old features are superseded by better ones, here driven by the need for item files that operate in multiple countries. Not to mention that in some Arabic and Asian fonts you can't even map the keyboard regardless of it's name (although I'm willing to bet that recent modifications to the Unicode option will in fact allow any special characters in names of devices and buttons as long as the Unicode option is in use). So three devices exist that can be mapped on all Windows machines, the #keyboard, the #mouse and the #joystick and they all use #nnn names for keys, the nnn numbers of which you can find out with the TimeDX Input test.
The examples above would be rendered this way using the # devices for a remote testing setup that works in multiple countries:<ep> s8 <azk> f25 <id #keyboard> <mr +#34> <mnr +#33> <mpr +#35>
Note # is not a general purpose switch for any DirectInput device and is in fact part of the name of the built in devices #keyboard, #mouse and #joystick.
Note that these examples originally included a keyboard and a mouse device, for instance the later example had <id #mouse> <mr +#4> in it. This doesn't work because the #keyboard device also has a #4 button and DMDX is probably only going to see the first one on the #keyboard device. If you really have to use two input devices you'll have to use the local names of them and if anyone ever has to build an international item file that works with two devices I'll have to come up with some scheme to handle them, seeing as I'm only one likely to ever want two devices for now I'll forgo the privilege...
International USB device considerations.
Since the advent of Windows 2000 the #joystick device is no longer an option as that refers to the old analog device with the 15 pin connector, not the USB ones. You'll have to use the name that TimeDX enumerates for the device and the button names it provides. To make this easier DMDX's test mode 10 exists and it will spew these names whenever <id> is used (so <testmode 10> should occur before you attempt to specify the device you want) so you can cut and paste them out of diagnostics.txt into your item file. Also note that turning the Unicode option on will facilitate mapping names using non-Roman characters.
International Typing considerations.
While traditional typing methods such as <ztr> and macro based typing only support Roman characters (although the macro based typing could be customized for others) <prose> has always stood a chance of working as long as the characters you wanted typed were in the active code page on your machine. As of version 18.104.22.168 of DMDX however with the Unicode option on and the use <prose utf8bom> <prose> should now handle actual Unicode characters generated by whatever keyboard software you have to handle typing extended characters such as those found in East Asian languages.