Download DX1 App
I've added support to use ScanCodes instead of VKey codes in macros. Macros that use ScanCodes will work in a wider variety of games. I've tested both timed and multikey macros in Dragon Age Origins where VKey macros do not work ScanCode macros do.
All your old macros should still work fine, you'll have to manually convert them to ScanCode macros if you want them to work in games that use DirectInput. By default all new macros are ScanCode macros.
This is a list of ScanCodes for most of the basic stuff - you'll need to convert them to decimal.
#define DIK_ESCAPE          0x01
#define DIK_1               0x02
#define DIK_2               0x03
#define DIK_3               0x04
#define DIK_4               0x05
#define DIK_5               0x06
#define DIK_6               0x07
#define DIK_7               0x08
#define DIK_8               0x09
#define DIK_9               0x0A
#define DIK_0               0x0B
#define DIK_MINUS           0x0C    /* - on main keyboard */
#define DIK_EQUALS          0x0D
#define DIK_BACK            0x0E    /* backspace */
#define DIK_TAB             0x0F
#define DIK_Q               0x10
#define DIK_W               0x11
#define DIK_E               0x12
#define DIK_R               0x13
#define DIK_T               0x14
#define DIK_Y               0x15
#define DIK_U               0x16
#define DIK_I               0x17
#define DIK_O               0x18
#define DIK_P               0x19
#define DIK_LBRACKET        0x1A
#define DIK_RBRACKET        0x1B
#define DIK_RETURN          0x1C    /* Enter on main keyboard */
#define DIK_LCONTROL        0x1D
#define DIK_A               0x1E
#define DIK_S               0x1F
#define DIK_D               0x20
#define DIK_F               0x21
#define DIK_G               0x22
#define DIK_H               0x23
#define DIK_J               0x24
#define DIK_K               0x25
#define DIK_L               0x26
#define DIK_SEMICOLON       0x27
#define DIK_APOSTROPHE      0x28
#define DIK_GRAVE           0x29    /* accent grave */
#define DIK_LSHIFT          0x2A
#define DIK_BACKSLASH       0x2B
#define DIK_Z               0x2C
#define DIK_X               0x2D
#define DIK_C               0x2E
#define DIK_V               0x2F
#define DIK_B               0x30
#define DIK_N               0x31
#define DIK_M               0x32
#define DIK_COMMA           0x33
#define DIK_PERIOD          0x34    /* . on main keyboard */
#define DIK_SLASH           0x35    /* / on main keyboard */
#define DIK_RSHIFT          0x36
#define DIK_MULTIPLY        0x37    /* * on numeric keypad */
#define DIK_LMENU           0x38    /* left Alt */
#define DIK_SPACE           0x39
#define DIK_CAPITAL         0x3A
#define DIK_F1              0x3B
#define DIK_F2              0x3C
#define DIK_F3              0x3D
#define DIK_F4              0x3E
#define DIK_F5              0x3F
#define DIK_F6              0x40
#define DIK_F7              0x41
#define DIK_F8              0x42
#define DIK_F9              0x43
#define DIK_F10             0x44
#define DIK_NUMLOCK         0x45
#define DIK_SCROLL          0x46    /* Scroll Lock */
#define DIK_NUMPAD7         0x47
#define DIK_NUMPAD8         0x48
#define DIK_NUMPAD9         0x49
#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
#define DIK_NUMPAD4         0x4B
#define DIK_NUMPAD5         0x4C
#define DIK_NUMPAD6         0x4D
#define DIK_ADD             0x4E    /* + on numeric keypad */
#define DIK_NUMPAD1         0x4F
#define DIK_NUMPAD2         0x50
#define DIK_NUMPAD3         0x51
#define DIK_NUMPAD0         0x52
#define DIK_DECIMAL         0x53    /* . on numeric keypad */
#define DIK_F11             0x57
#define DIK_F12             0x58
#define DIK_F13             0x64    /*                     (NEC PC98) */
#define DIK_F14             0x65    /*                     (NEC PC98) */
#define DIK_F15             0x66    /*                     (NEC PC98) */
#define DIK_KANA            0x70    /* (Japanese keyboard)            */
#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
#define DIK_YEN             0x7D    /* (Japanese keyboard)            */
#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
#define DIK_CIRCUMFLEX      0x90    /* (Japanese keyboard)            */
#define DIK_AT              0x91    /*                     (NEC PC98) */
#define DIK_COLON           0x92    /*                     (NEC PC98) */
#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
#define DIK_KANJI           0x94    /* (Japanese keyboard)            */
#define DIK_STOP            0x95    /*                     (NEC PC98) */
#define DIK_AX              0x96    /*                     (Japan AX) */
#define DIK_UNLABELED       0x97    /*                        (J3100) */
#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
#define DIK_RCONTROL        0x9D
#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
#define DIK_DIVIDE          0xB5    /* / on numeric keypad */
#define DIK_SYSRQ           0xB7
#define DIK_RMENU           0xB8    /* right Alt */
#define DIK_HOME            0xC7    /* Home on arrow keypad */
#define DIK_UP              0xC8    /* UpArrow on arrow keypad */
#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
#define DIK_END             0xCF    /* End on arrow keypad */
#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
#define DIK_INSERT          0xD2    /* Insert on arrow keypad */
#define DIK_DELETE          0xD3    /* Delete on arrow keypad */
#define DIK_LWIN            0xDB    /* Left Windows key */
#define DIK_RWIN            0xDC    /* Right Windows key */
#define DIK_APPS            0xDD    /* AppMenu key */
Seem to have a problem recording any macros ie CTR + E. Using win 7 64bit
ReplyDeleteYou need to select multikey macro and add the two keys (press insert in the left hand panel and edit).
ReplyDeleteI run Win7 64bit and I use similar macros almost exclusively.
I hope that Rob doesn't mind that if I post this.
ReplyDeleteBut, I made a small C# application that will quickly (but, crudely) convert your messages or whatever into the decimal form needed for making macros.
I know it is easier to look them up or whatever. But, I figured it would be nice if you were typing out a message or something.
Anyway: http://themashew.com/Downloads/DecimalCreator.zip
Whatever. I know it is crude, I like it. I figured someone else might want it.
This comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThank you for your help!
ReplyDeleteI'm having lots of problems running the utility app - it takes up to 2 minutes to refresh after clicking on anything, meanwhile the window title gets "Not responding".
ReplyDeletee.g. From the main form, I left-click on "NEW MACRO". For about 40 seconds, the main form goes "not responding", then it suddenly repaints and the macro form draws. But then the macro form takes around 2-3 minutes to finish painting/drawing before I can start entering keycodes. Once I've entered the keycode, and renamed the macro, when I click "OK", it takes about 50 seconds then the form disappears. Then the main form is repainted with no macros in the list, and "not responding" in the title, then it takes around 3 minutes while it slowly repaints and moves on the screen slightly, then delays, then moves and repaints the macros field, then delays, then moves and repaints again, etc, etc, etc.
Interestingly, the very FIRST macro doesn't take this long - but each subsequent macro takes geometrically longer to do.
This is on an unloaded system, running W7 Ultimate x64, latest video drivers, etc, and all up to date. MB is a quad Opteron 2.6GHz, with 4G ECC DRAM and 4TB data raid, 500G boot SATAII IDE.
The sole user on this system has full admin priveleges.
Any ideas or suggestions?
I was working with Hydra and Rymo a couple of years ago trying to get the USB DX1 drivers working.
FWIW, Larry at Ergodex informed me that the new 64-bit W7 drivers are being worked on...
I don't know what the long delay issue would be.
ReplyDeleteLiterally all it's doing when you create macros is winforms stuff. Macros are all client app side.
It's quite possible there is a bug, but I'm also running Win7 X64 Ultimate, and I don't se the issue.
The only thing I can suggest short of building it in VS and attaching a debugger to establish what it's waiting on is deleting any existing macro files.
I think for this one may need bluetooth numeric keypad. Which one to choose?
ReplyDeleteI found the article on choosing one, maybe it will be useful for somebody
http://bluetoothnumerickeypad.com/
I was beating my brains out because I couldn't correctly assign the Tab key; it kept giving me an 8. After unchecking the box next to "Use Scancodes" in that particular macro it worked as I intended.
ReplyDeleteHello! Mashew again.
ReplyDeleteI never realised that someone actually wanted to use my shabby software, but someone who wanted to use my keypad thingie tracked me down.
So, I figured I would give a new URL to get it from: themashew.com/DecimalCreator.zip
Rob,
ReplyDeleteIn the MacroEditor, there is a checkbox to "Use Scancodes". My understanding is that I must convert these Scancodes to decimal first in order for them to work.
How does one convert the scancodes that you provided to decimal?
For some reason my follow-up post didn't show up here. In order to avoid Rob having to post a response to my previous question, here it is again.
ReplyDeleteI discovered that in order to convert, for example, "#define DIK_F10 0x44" to decimal, the trick is to disregard everything but the last two digits, the "44". That's the hex. Then you can use the Windows calculator to switch between "hex" and "dec" for each value.
I've included the full list of converted scancodes below. The number following each equals (=) sign is the actual scancode that you'd enter into Rob's Macro Editor for that particular key.
Also, make sure you have the "scancodes" checkbox checked in order for these to work!
Key ESCAPE = 1
Key 1 = 2
Key 2 = 3
Key 3 = 4
Key 4 = 5
Key 5 = 6
Key 6 = 7
Key 7 = 8
Key 8 = 9
Key 9 = 10
Key0B = 11
Key MINUS (on main keyboard) = 12
Key EQUALS = 13
Key BACK ( backspace ) = 14
Key TAB = 15
Key Q = 16
Key W = 17
Key E = 18
Key R = 19
Key T = 20
Key Y = 21
Key U = 22
Key I = 23
Key O = 24
Key P = 25
Key LBRACKET = 26
Key RBRACKET = 27
Key RETURN ( Enter on main keyboard ) = 28
Key LCONTROL = 29
Key A = 30
Key S = 31
Key D = 32
Key F = 33
Key G = 34
Key H = 35
Key J = 36
Key K = 37
Key L = 38
Key SEMICOLON = 39
Key APOSTROPHE = 40
Key GRAVE ( accent grave ) = 41
Key LSHIFT = 42
Key BACKSLASH = 43
Key Z = 44
Key X = 45
Key C = 46
Key V = 47
Key B = 48
Key N = 49
Key M = 50
Key COMMA = 51
Key PERIOD ( . on main keyboard ) = 52
Key SLASH ( / on main keyboard ) = 53
Key RSHIFT = 54
Key MULTIPLY ( * on numeric keypad ) = 55
Key LMENU ( left Alt ) = 56
Key SPACE = 57
Key CAPITAL = 58
Key F1 = 59
Key F2 = 60
Key F3 = 61
Key F4 = 62
Key F5 = 63
Key F6 = 64
Key F7 = 65
Key F8 = 66
Key F9 = 67
Key F10 = 68
Key NUMLOCK = 69
Key SCROLL ( Scroll Lock ) = 70
Key NUMPAD7 = 71
Key NUMPAD8 = 72
Key NUMPAD9 = 73
Key SUBTRACT ( - on numeric keypad ) = 74
Key NUMPAD4 = 75
Key NUMPAD5 = 76
Key NUMPAD6 = 77
Key ADD ( + on numeric keypad ) = 78
Key NUMPAD1 = 79
Key NUMPAD2 = 80
Key NUMPAD3 = 81
Key NUMPAD0 = 82
Key DECIMAL ( . on numeric keypad ) = 83
Key F11 = 87
Key F12 = 88
Key F13 (NEC PC98) = 100
Key F14 (NEC PC98) = 101
Key F15 (NEC PC98) = 102
Key KANA (Japanese keyboard) = 112
Key CONVERT (Japanese keyboard) = 121
Key NOCONVERT (Japanese keyboard) = 123
Key YEN (Japanese keyboard) = 125
Key NUMPADEQUALS ( = on numeric keypad (NEC PC98) ) = 141
Key CIRCUMFLEX (Japanese keyboard) = 144
Key AT (NEC PC98) = 145
Key COLON (NEC PC98) = 146
Key UNDERLINE (NEC PC98) = 147
Key KANJI (Japanese keyboard) = 148
Key STOP (NEC PC98) = 149
Key AX (Japan AX) = 150
Key UNLABELED (J3100) = 151
Key NUMPADENTER ( Enter on numeric keypad ) = 156
Key RCONTROL = 157
Key NUMPADCOMMA ( , on numeric keypad (NEC PC98) = 179
Key DIVIDE ( / on numeric keypad ) = 181
Key SYSRQ = 183
Key RMENU ( right Alt ) = 184
Key HOME ( Home on arrow keypad ) = 199
Key UP ( UpArrow on arrow keypad ) = 200
Key PRIOR ( PgUp on arrow keypad ) = 201
Key LEFT ( LeftArrow on arrow keypad ) = 203
Key RIGHT ( RightArrow on arrow keypad ) = 205
Key END ( End on arrow keypad ) = 207
Key DOWN ( DownArrow on arrow keypad ) = 208
Key NEXT ( PgDn on arrow keypad ) = 209
Key INSERT ( Insert on arrow keypad ) = 210
Key DELETE ( Delete on arrow keypad ) = 211
Key LWIN ( Left Windows key ) = 219
Key RWIN ( Right Windows key ) = 220
APPS ( AppMenu key ) = 221
One side note: The line following "Key 9", should read "Key 0", not "Key0B".
ReplyDelete