docs(research): canonical retail keymap + dump-keymap tool
Pre-Phase K research artifact. Captures the AC retail default keymap
in two complementary forms so the upcoming InputAction enum + retail
preset (Phase K.1c) can be built byte-precise.
- docs/research/named-retail/retail-default.keymap.txt — verbatim
copy of the user's test.keymap from
~/Documents/Asheron's Call/. Human-readable text format with
every binding categorized: MovementCommands (W/X/A/D/Z/C/Q/Space/
LShift/S + Y/G/H/B postures), ItemSelectionCommands (F/T/P + 18
punctuation keys for compass/item/monster/player/fellow targeting),
UICommands (F1-F12 panel toggles, R=USE, E=Examine, Esc=close,
Shift+Esc=Logout), QuickslotCommands (1-9 + Ctrl/Alt variants for
hotbar pages), Combat / MeleeCombat / MissileCombat / MagicCombat
(mode-dependent Insert/PgUp/Delete/End/PgDn), Emotes
(U=Cry, I=Laugh, J=Wave, O=Cheer, K=Point), CameraControls (numpad
cluster), MouseCommands, ScrollableControls, EditControls,
CopyAndPasteControls, DialogBoxes. 346 lines.
- docs/research/named-retail/keymap-default.txt — binary dump of
the gmDefaultMap MasterInputMap from client_portal.dat at file id
0x14000000. Decoded via the new tools/dump-keymap utility:
scancodes + modifier flags + action IDs + activation phase per
context. Confirms the text file's bindings against the dat-shipped
default. Cross-referenced against
acclient_2013_pseudo_c.txt:405510 (ACCmdInterp::OnAction) for the
movement dispatch logic and :365889 (CPlayerSystem::OnAction) for
the targeting dispatch.
- tools/dump-keymap/ — dotnet console tool referencing
references/DatReaderWriter. Reads MasterInputMap entries from a
dat directory + emits human-readable per-context binding tables.
Reusable for future custom keymap analysis. Run with:
dotnet run --project tools/dump-keymap/dump-keymap.csproj -c Release
Default dat dir is %USERPROFILE%/Documents/Asheron's Call.
Foundation for Phase K — control system overhaul. Plan documented at
~/.claude/plans/ticklish-conjuring-cake.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
579cbfb48b
commit
4717a5b6f7
5 changed files with 1095 additions and 0 deletions
262
tools/dump-keymap/dump.txt
Normal file
262
tools/dump-keymap/dump.txt
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
C:\Users\erikn\source\repos\acdream\tools\dump-keymap\Program.cs(142,15): warning CS8321: The local function 'Action' is declared but never used [C:\Users\erikn\source\repos\acdream\tools\dump-keymap\dump-keymap.csproj]
|
||||
# Reading dats from: C:\Users\erikn\Documents\Asheron's Call
|
||||
|
||||
## MasterInputMap 0x14000000
|
||||
Name: gmDefaultMap
|
||||
GuidMap: 451f8ccc-a7e9-4df4-9a6b-f4a7c706f300
|
||||
Devices: 2
|
||||
Keyboard 6f1d2b61-d5a0-11cf-bfc7-444553540000
|
||||
Mouse 6f1d2b60-d5a0-11cf-bfc7-444553540000
|
||||
MetaKeys (9):
|
||||
LSHIFT (scan=0x2A, dev=0) ModifierFlag=0x80000000
|
||||
LCONTROL (scan=0x1D, dev=0) ModifierFlag=0x40000000
|
||||
RCONTROL (scan=0x9D, dev=0) ModifierFlag=0x40000000
|
||||
LMENU (scan=0x38, dev=0) ModifierFlag=0x20000000
|
||||
RMENU (scan=0xB8, dev=0) ModifierFlag=0x20000000
|
||||
?0xDB (scan=0xDB, dev=0) ModifierFlag=0x10000000
|
||||
?0xDC (scan=0xDC, dev=0) ModifierFlag=0x10000000
|
||||
TAB (scan=0x0F, dev=1) ModifierFlag=0x08000000
|
||||
Q (scan=0x10, dev=1) ModifierFlag=0x04000000
|
||||
InputMaps (14):
|
||||
|
||||
Context 0x00000004 (22 bindings):
|
||||
Q (scan=0x10, dev=0) Action=0x00000030 Activation=0x03
|
||||
W (scan=0x11, dev=0) Action=0x00000029 Activation=0x03
|
||||
Y (scan=0x15, dev=0) Action=0x10000094 Activation=0x03
|
||||
A +Alt (scan=0x1E, dev=0) Action=0x0000002D Activation=0x03
|
||||
A (scan=0x1E, dev=0) Action=0x0000002F Activation=0x03
|
||||
S (scan=0x1F, dev=0) Action=0x0000002B Activation=0x03
|
||||
D (scan=0x20, dev=0) Action=0x0000002E Activation=0x03
|
||||
D +Alt (scan=0x20, dev=0) Action=0x0000002C Activation=0x03
|
||||
G (scan=0x22, dev=0) Action=0x10000096 Activation=0x03
|
||||
H (scan=0x23, dev=0) Action=0x10000095 Activation=0x03
|
||||
LSHIFT (scan=0x2A, dev=0) Action=0x00000032 Activation=0x03
|
||||
Z (scan=0x2C, dev=0) Action=0x0000002D Activation=0x03
|
||||
X (scan=0x2D, dev=0) Action=0x0000002A Activation=0x03
|
||||
C (scan=0x2E, dev=0) Action=0x0000002C Activation=0x03
|
||||
B (scan=0x30, dev=0) Action=0x10000097 Activation=0x03
|
||||
SPACE (scan=0x39, dev=0) Action=0x00000031 Activation=0x03
|
||||
UP (scan=0xC8, dev=0) Action=0x00000029 Activation=0x03
|
||||
LEFT +Alt (scan=0xCB, dev=0) Action=0x0000002D Activation=0x03
|
||||
LEFT (scan=0xCB, dev=0) Action=0x0000002F Activation=0x03
|
||||
RIGHT (scan=0xCD, dev=0) Action=0x0000002E Activation=0x03
|
||||
RIGHT +Alt (scan=0xCD, dev=0) Action=0x0000002C Activation=0x03
|
||||
DOWN (scan=0xD0, dev=0) Action=0x0000002A Activation=0x03
|
||||
|
||||
Context 0x00000005 (2 bindings):
|
||||
F2 (scan=0x3C, dev=0) Action=0x0000003E Activation=0x03
|
||||
DIVIDE (scan=0xB5, dev=0) Action=0x0000003E Activation=0x03
|
||||
|
||||
Context 0x00000006 (4 bindings):
|
||||
UP (scan=0xC8, dev=0) Action=0x00000037 Activation=0x03
|
||||
LEFT (scan=0xCB, dev=0) Action=0x00000035 Activation=0x03
|
||||
RIGHT (scan=0xCD, dev=0) Action=0x00000036 Activation=0x03
|
||||
DOWN (scan=0xD0, dev=0) Action=0x00000038 Activation=0x03
|
||||
|
||||
Context 0x10000002 (1 bindings):
|
||||
GRAVE (scan=0x29, dev=0) Action=0x1000005A Activation=0x03
|
||||
|
||||
Context 0x10000003 (5 bindings):
|
||||
PRIOR (scan=0xC9, dev=0) Action=0x1000005C Activation=0x03
|
||||
END (scan=0xCF, dev=0) Action=0x1000005E Activation=0x03
|
||||
NEXT (scan=0xD1, dev=0) Action=0x1000005F Activation=0x03
|
||||
INSERT (scan=0xD2, dev=0) Action=0x1000005B Activation=0x03
|
||||
DELETE (scan=0xD3, dev=0) Action=0x1000005D Activation=0x03
|
||||
|
||||
Context 0x10000004 (5 bindings):
|
||||
PRIOR (scan=0xC9, dev=0) Action=0x100000F0 Activation=0x03
|
||||
END (scan=0xCF, dev=0) Action=0x100000F2 Activation=0x03
|
||||
NEXT (scan=0xD1, dev=0) Action=0x100000F3 Activation=0x03
|
||||
INSERT (scan=0xD2, dev=0) Action=0x100000EF Activation=0x03
|
||||
DELETE (scan=0xD3, dev=0) Action=0x100000F1 Activation=0x03
|
||||
|
||||
Context 0x10000005 (18 bindings):
|
||||
1 (scan=0x02, dev=0) Action=0x10000065 Activation=0x03
|
||||
2 (scan=0x03, dev=0) Action=0x10000066 Activation=0x03
|
||||
3 (scan=0x04, dev=0) Action=0x10000067 Activation=0x03
|
||||
4 (scan=0x05, dev=0) Action=0x10000068 Activation=0x03
|
||||
5 (scan=0x06, dev=0) Action=0x10000069 Activation=0x03
|
||||
6 (scan=0x07, dev=0) Action=0x1000006A Activation=0x03
|
||||
7 (scan=0x08, dev=0) Action=0x1000006B Activation=0x03
|
||||
8 (scan=0x09, dev=0) Action=0x1000006C Activation=0x03
|
||||
9 (scan=0x0A, dev=0) Action=0x1000006D Activation=0x03
|
||||
PRIOR (scan=0xC9, dev=0) Action=0x10000064 Activation=0x03
|
||||
PRIOR +Ctrl (scan=0xC9, dev=0) Action=0x10000105 Activation=0x03
|
||||
END (scan=0xCF, dev=0) Action=0x10000060 Activation=0x03
|
||||
NEXT +Ctrl (scan=0xD1, dev=0) Action=0x10000103 Activation=0x03
|
||||
NEXT (scan=0xD1, dev=0) Action=0x10000062 Activation=0x03
|
||||
INSERT +Ctrl (scan=0xD2, dev=0) Action=0x10000104 Activation=0x03
|
||||
INSERT (scan=0xD2, dev=0) Action=0x10000063 Activation=0x03
|
||||
DELETE (scan=0xD3, dev=0) Action=0x10000061 Activation=0x03
|
||||
DELETE +Ctrl (scan=0xD3, dev=0) Action=0x10000102 Activation=0x03
|
||||
|
||||
Context 0x10000006 (5 bindings):
|
||||
U (scan=0x16, dev=0) Action=0x100000A7 Activation=0x03
|
||||
I (scan=0x17, dev=0) Action=0x100000B2 Activation=0x03
|
||||
O (scan=0x18, dev=0) Action=0x100000A2 Activation=0x03
|
||||
J (scan=0x24, dev=0) Action=0x100000E5 Activation=0x03
|
||||
K (scan=0x25, dev=0) Action=0x100000BE Activation=0x03
|
||||
|
||||
Context 0x10000007 (18 bindings):
|
||||
MINUS (scan=0x0C, dev=0) Action=0x10000030 Activation=0x03
|
||||
EQUALS (scan=0x0D, dev=0) Action=0x10000031 Activation=0x03
|
||||
BACK (scan=0x0E, dev=0) Action=0x1000002F Activation=0x03
|
||||
T (scan=0x14, dev=0) Action=0x1000002D Activation=0x03
|
||||
P (scan=0x19, dev=0) Action=0x1000002E Activation=0x03
|
||||
LBRACKET (scan=0x1A, dev=0) Action=0x10000033 Activation=0x03
|
||||
RBRACKET (scan=0x1B, dev=0) Action=0x10000034 Activation=0x03
|
||||
F (scan=0x21, dev=0) Action=0x1000002C Activation=0x03
|
||||
L (scan=0x26, dev=0) Action=0x10000036 Activation=0x03
|
||||
SEMICOLON (scan=0x27, dev=0) Action=0x10000037 Activation=0x03
|
||||
APOSTROPHE (scan=0x28, dev=0) Action=0x10000035 Activation=0x03
|
||||
BACKSLASH (scan=0x2B, dev=0) Action=0x10000032 Activation=0x03
|
||||
N (scan=0x31, dev=0) Action=0x1000003C Activation=0x03
|
||||
M (scan=0x32, dev=0) Action=0x1000003D Activation=0x03
|
||||
COMMA (scan=0x33, dev=0) Action=0x1000003A Activation=0x03
|
||||
PERIOD (scan=0x34, dev=0) Action=0x1000003B Activation=0x03
|
||||
SLASH (scan=0x35, dev=0) Action=0x10000039 Activation=0x03
|
||||
HOME (scan=0xC7, dev=0) Action=0x10000038 Activation=0x03
|
||||
|
||||
Context 0x10000009 (20 bindings):
|
||||
ESCAPE +Shift (scan=0x01, dev=0) Action=0x10000026 Activation=0x03
|
||||
ESCAPE (scan=0x01, dev=0) Action=0x00000027 Activation=0x03
|
||||
1 +Alt (scan=0x02, dev=0) Action=0x10000114 Activation=0x03
|
||||
2 +Alt (scan=0x03, dev=0) Action=0x10000115 Activation=0x03
|
||||
3 +Alt (scan=0x04, dev=0) Action=0x10000116 Activation=0x03
|
||||
4 +Alt (scan=0x05, dev=0) Action=0x10000117 Activation=0x03
|
||||
E (scan=0x12, dev=0) Action=0x1000002B Activation=0x03
|
||||
R (scan=0x13, dev=0) Action=0x10000025 Activation=0x03
|
||||
MULTIPLY (scan=0x37, dev=0) Action=0x00000055 Activation=0x03
|
||||
F1 +Shift|Ctrl (scan=0x3B, dev=0) Action=0x0000007C Activation=0x03
|
||||
F1 (scan=0x3B, dev=0) Action=0x0000007B Activation=0x03
|
||||
F3 (scan=0x3D, dev=0) Action=0x1000000E Activation=0x03
|
||||
F4 (scan=0x3E, dev=0) Action=0x1000000F Activation=0x03
|
||||
F5 (scan=0x3F, dev=0) Action=0x10000011 Activation=0x03
|
||||
F6 (scan=0x40, dev=0) Action=0x10000012 Activation=0x03
|
||||
F8 (scan=0x42, dev=0) Action=0x10000014 Activation=0x03
|
||||
F9 (scan=0x43, dev=0) Action=0x10000015 Activation=0x03
|
||||
F10 (scan=0x44, dev=0) Action=0x10000016 Activation=0x03
|
||||
F11 (scan=0x57, dev=0) Action=0x1000001A Activation=0x03
|
||||
F12 (scan=0x58, dev=0) Action=0x10000019 Activation=0x03
|
||||
|
||||
Context 0x1000000A (1 bindings):
|
||||
RETURN (scan=0x1C, dev=0) Action=0x10000023 Activation=0x03
|
||||
|
||||
Context 0x1000000B (2 bindings):
|
||||
MINUS (scan=0x0C, dev=1) Action=0x00000007 Activation=0x03
|
||||
EQUALS (scan=0x0D, dev=1) Action=0x00000008 Activation=0x03
|
||||
|
||||
Context 0x1000000C (29 bindings):
|
||||
1 (scan=0x02, dev=0) Action=0x10000042 Activation=0x03
|
||||
1 +Alt (scan=0x02, dev=0) Action=0x1000004B Activation=0x03
|
||||
1 +Ctrl (scan=0x02, dev=0) Action=0x10000042 Activation=0x03
|
||||
2 (scan=0x03, dev=0) Action=0x10000043 Activation=0x03
|
||||
2 +Alt (scan=0x03, dev=0) Action=0x1000004C Activation=0x03
|
||||
2 +Ctrl (scan=0x03, dev=0) Action=0x10000043 Activation=0x03
|
||||
3 (scan=0x04, dev=0) Action=0x10000044 Activation=0x03
|
||||
3 +Ctrl (scan=0x04, dev=0) Action=0x10000044 Activation=0x03
|
||||
3 +Alt (scan=0x04, dev=0) Action=0x1000004D Activation=0x03
|
||||
4 (scan=0x05, dev=0) Action=0x10000045 Activation=0x03
|
||||
4 +Ctrl (scan=0x05, dev=0) Action=0x10000045 Activation=0x03
|
||||
4 +Alt (scan=0x05, dev=0) Action=0x10000132 Activation=0x03
|
||||
5 (scan=0x06, dev=0) Action=0x10000046 Activation=0x03
|
||||
5 +Ctrl (scan=0x06, dev=0) Action=0x10000046 Activation=0x03
|
||||
5 +Alt (scan=0x06, dev=0) Action=0x10000133 Activation=0x03
|
||||
6 +Ctrl (scan=0x07, dev=0) Action=0x10000047 Activation=0x03
|
||||
6 +Alt (scan=0x07, dev=0) Action=0x10000134 Activation=0x03
|
||||
6 (scan=0x07, dev=0) Action=0x10000047 Activation=0x03
|
||||
7 +Alt (scan=0x08, dev=0) Action=0x10000135 Activation=0x03
|
||||
7 (scan=0x08, dev=0) Action=0x10000048 Activation=0x03
|
||||
7 +Ctrl (scan=0x08, dev=0) Action=0x10000048 Activation=0x03
|
||||
8 (scan=0x09, dev=0) Action=0x10000049 Activation=0x03
|
||||
8 +Ctrl (scan=0x09, dev=0) Action=0x10000049 Activation=0x03
|
||||
8 +Alt (scan=0x09, dev=0) Action=0x10000136 Activation=0x03
|
||||
9 +Alt (scan=0x0A, dev=0) Action=0x10000137 Activation=0x03
|
||||
9 +Ctrl (scan=0x0A, dev=0) Action=0x1000004A Activation=0x03
|
||||
9 (scan=0x0A, dev=0) Action=0x1000004A Activation=0x03
|
||||
0 (scan=0x0B, dev=0) Action=0x1000010D Activation=0x03
|
||||
0 +Ctrl (scan=0x0B, dev=0) Action=0x1000010D Activation=0x03
|
||||
|
||||
Context 0x1000000D (1 bindings):
|
||||
TAB (scan=0x0F, dev=0) Action=0x10000024 Activation=0x03
|
||||
|
||||
## MasterInputMap 0x14000002
|
||||
Name: DefaultMap
|
||||
GuidMap: 451f8ccc-a7e9-4df4-9a6b-f4a7c706f300
|
||||
Devices: 2
|
||||
Keyboard 6f1d2b61-d5a0-11cf-bfc7-444553540000
|
||||
Mouse 6f1d2b60-d5a0-11cf-bfc7-444553540000
|
||||
MetaKeys (7):
|
||||
LSHIFT (scan=0x2A, dev=0) ModifierFlag=0x80000000
|
||||
LCONTROL (scan=0x1D, dev=0) ModifierFlag=0x40000000
|
||||
RCONTROL (scan=0x9D, dev=0) ModifierFlag=0x40000000
|
||||
LMENU (scan=0x38, dev=0) ModifierFlag=0x20000000
|
||||
RMENU (scan=0xB8, dev=0) ModifierFlag=0x20000000
|
||||
?0xDB (scan=0xDB, dev=0) ModifierFlag=0x10000000
|
||||
?0xDC (scan=0xDC, dev=0) ModifierFlag=0x10000000
|
||||
InputMaps (7):
|
||||
|
||||
Context 0x00000003 (8 bindings):
|
||||
?0x00 (scan=0x00, dev=1) Action=0x00000002 Activation=0x80
|
||||
3 (scan=0x04, dev=1) Action=0x00000003 Activation=0x80
|
||||
MINUS (scan=0x0C, dev=1) Action=0x00000007 Activation=0x03
|
||||
MINUS (scan=0x0C, dev=1) Action=0x0000000A Activation=0x60
|
||||
EQUALS (scan=0x0D, dev=1) Action=0x00000008 Activation=0x03
|
||||
EQUALS (scan=0x0D, dev=1) Action=0x0000000B Activation=0x60
|
||||
BACK (scan=0x0E, dev=1) Action=0x00000009 Activation=0x03
|
||||
BACK (scan=0x0E, dev=1) Action=0x0000000C Activation=0x60
|
||||
|
||||
Context 0x00000005 (11 bindings):
|
||||
BACK (scan=0x0E, dev=1) Action=0x0000003D Activation=0x03
|
||||
NUMPAD8 (scan=0x48, dev=0) Action=0x00000037 Activation=0x03
|
||||
SUBTRACT (scan=0x4A, dev=0) Action=0x00000033 Activation=0x03
|
||||
NUMPAD4 (scan=0x4B, dev=0) Action=0x00000035 Activation=0x03
|
||||
NUMPAD5 (scan=0x4C, dev=0) Action=0x0000003B Activation=0x03
|
||||
NUMPAD6 (scan=0x4D, dev=0) Action=0x00000036 Activation=0x03
|
||||
ADD (scan=0x4E, dev=0) Action=0x00000034 Activation=0x03
|
||||
NUMPAD2 (scan=0x50, dev=0) Action=0x00000038 Activation=0x03
|
||||
NUMPAD0 (scan=0x52, dev=0) Action=0x00000039 Activation=0x03
|
||||
DECIMAL (scan=0x53, dev=0) Action=0x0000003A Activation=0x03
|
||||
NUMPADENTER (scan=0x9C, dev=0) Action=0x0000003C Activation=0x03
|
||||
|
||||
Context 0x00000007 (16 bindings):
|
||||
ESCAPE (scan=0x01, dev=0) Action=0x00000027 Activation=0x03
|
||||
BACK (scan=0x0E, dev=0) Action=0x00000028 Activation=0x03
|
||||
RETURN (scan=0x1C, dev=0) Action=0x00000025 Activation=0x03
|
||||
HOME (scan=0xC7, dev=0) Action=0x0000001A Activation=0x03
|
||||
HOME +Ctrl (scan=0xC7, dev=0) Action=0x0000001C Activation=0x03
|
||||
UP (scan=0xC8, dev=0) Action=0x0000001E Activation=0x03
|
||||
PRIOR (scan=0xC9, dev=0) Action=0x00000020 Activation=0x03
|
||||
LEFT (scan=0xCB, dev=0) Action=0x00000016 Activation=0x03
|
||||
LEFT +Ctrl (scan=0xCB, dev=0) Action=0x00000018 Activation=0x03
|
||||
RIGHT (scan=0xCD, dev=0) Action=0x00000017 Activation=0x03
|
||||
RIGHT +Ctrl (scan=0xCD, dev=0) Action=0x00000019 Activation=0x03
|
||||
END (scan=0xCF, dev=0) Action=0x0000001B Activation=0x03
|
||||
END +Ctrl (scan=0xCF, dev=0) Action=0x0000001D Activation=0x03
|
||||
DOWN (scan=0xD0, dev=0) Action=0x0000001F Activation=0x03
|
||||
NEXT (scan=0xD1, dev=0) Action=0x00000021 Activation=0x03
|
||||
DELETE (scan=0xD3, dev=0) Action=0x00000026 Activation=0x03
|
||||
|
||||
Context 0x00000008 (6 bindings):
|
||||
X +Ctrl (scan=0x2D, dev=0) Action=0x00000023 Activation=0x03
|
||||
C +Ctrl (scan=0x2E, dev=0) Action=0x00000022 Activation=0x03
|
||||
V +Ctrl (scan=0x2F, dev=0) Action=0x00000024 Activation=0x03
|
||||
INSERT +Ctrl (scan=0xD2, dev=0) Action=0x00000022 Activation=0x03
|
||||
INSERT +Shift (scan=0xD2, dev=0) Action=0x00000024 Activation=0x03
|
||||
DELETE +Shift (scan=0xD3, dev=0) Action=0x00000023 Activation=0x03
|
||||
|
||||
Context 0x00000009 (2 bindings):
|
||||
ESCAPE (scan=0x01, dev=0) Action=0x00000027 Activation=0x03
|
||||
RETURN (scan=0x1C, dev=0) Action=0x00000025 Activation=0x03
|
||||
|
||||
Context 0x0000000A (4 bindings):
|
||||
7 (scan=0x08, dev=257) Action=0x00000005 Activation=0x03
|
||||
7 (scan=0x08, dev=513) Action=0x00000006 Activation=0x03
|
||||
UP +Ctrl (scan=0xC8, dev=0) Action=0x00000005 Activation=0x03
|
||||
DOWN +Ctrl (scan=0xD0, dev=0) Action=0x00000006 Activation=0x03
|
||||
|
||||
Context 0x00000010 (4 bindings):
|
||||
ESCAPE +Shift|Ctrl (scan=0x01, dev=0) Action=0x0000007F Activation=0x03
|
||||
TAB +Alt (scan=0x0F, dev=0) Action=0x00000053 Activation=0x03
|
||||
RETURN +Alt (scan=0x1C, dev=0) Action=0x0000007D Activation=0x03
|
||||
F4 +Alt (scan=0x3E, dev=0) Action=0x0000007E Activation=0x03
|
||||
Loading…
Add table
Add a link
Reference in a new issue