belegost Posted March 3, 2025 Posted March 3, 2025 (edited) I want to unbind Quick Load hot key from anything. I don't use it, I don't want it and I could really use the extra key because, frankly, I've ran out. By unbinding, I mean I do not want this key to be assigned to anything. Blank, null, neutered, whatever. I've looked at ControlMap_Custom.txt but that file is not even in plain text format and I can't make anything out of it. I've extracted interface\controls\pc\controlmap.txt file from Skyrim - Interface.bsa file, found a line Quickload 0x43 0xff 0xff 1 0 0 Changed it to: Quickload 0xff 0xff 0xff 1 0 0 and placed it as loose file in appropriate path in Data folder. That didn't work. The default F9 is still listed in Control settings after booting up the game and functional. So how am I to go about it? I could really do without mods that overhaul whole control schematic. I want one key, just one, not the whole fucking framework for this one, specific task. I'm not going to take a bloody M230 cannon to a M1911 shooting competition (that last sentence is so the Americans understand). Edited March 3, 2025 by belegost
traison Posted March 3, 2025 Posted March 3, 2025 (edited) You can't trust key rebinding in modern (i.e. past 20 years) games. As you stated: 1 hour ago, belegost said: The default F9 is still listed in Control settings... Which would mean that's just hardcoded, it's not actually reading the settings for that. 1 hour ago, belegost said: ...and functional. Oh ok so the UI is correct, but its still not reading the settings file. 1 hour ago, belegost said: So how am I to go about it? I tried changing mine from 0x43 to 0x40 (F6) and the game ignored it. The key however can be changed in the in-game options. That tells me the entry in controlmap.txt is leftovers from a previous game or only used as a default value for when some other setting is not overriding it. This suggests that this specific setting is now stored somewhere else. Using ProcMon to log all ini and txt files accessed by the game reveals that when it saves changes made in the in-game controls menu, it writes them to this file: ...\path\to\Skyrim Special Edition\ControlMap_Custom.txt This, like you already stated is a binary file. Easiest way to quickly map out a binary file is to store a copy of it, make a change in the program that writes to it, then compare the bytes in a hex editor. Using my hex editor to compare the files reveals that 2 bytes were changed at offset 122. 0x43 at 122 became 0x40, and 0x7 at 123 became 0x6. We can assume the byte at 122 is the scancode, just like in the controlmap.txt file, but byte 123 is unfortunate, unless you can figure out why F9 would be associated with the number "6", and why F6 would be associated with "7". Looking at the other bytes in this file, especially the ones set to 0xff, the byte immediately after seems to always be different: 0x27 0x29 0x2a 0x28 and so on. So based on that I'd set the following: Byte at offset 122: 0xff Byte at offset 123: 0x6 Then see what the game says about that. If you can't make this edit yourself, upload your ControlMap_Custom.txt. Edited March 3, 2025 by traison
belegost Posted March 3, 2025 Author Posted March 3, 2025 (edited) 2 hours ago, traison said: hex editor Last time I used a hex editor was back in the DOS days when I would edit my soldier's start in UFO: Enemy Unknown. I am vaguely familiar with the process, though I ahven't used it in... forever. I'm goign to try doing that myself. EDIT: nvm, got one. Any free and simple hex editors you can recommend? Ideally ones that don't need actually installation and can be run just from executable. I don't need to clog up my registry with stuff I'm going to use once. Edited March 3, 2025 by belegost
belegost Posted March 3, 2025 Author Posted March 3, 2025 (edited) Nope. Both bytes were actually empty (00 00). But changing them to what you said (FF 06) did nothing. Edited March 3, 2025 by belegost
traison Posted March 3, 2025 Posted March 3, 2025 (edited) 2 hours ago, belegost said: Any free and simple hex editors... XVI32, but its hardly enough for any serious editing work. I made my own (because of course I did). 2 hours ago, belegost said: Both bytes were actually empty Maybe a game version difference. Search for 0x43 and start editing from that byte offset onwards, instead of 122. Edit: This is assuming you haven't changed the in-game options to something other than F9. Otherwise change it back, then do the search. Edit again: Or, like previously, upload the file here. Edited March 3, 2025 by traison
belegost Posted March 3, 2025 Author Posted March 3, 2025 (edited) 1 hour ago, traison said: This is assuming you haven't changed the in-game options to something other than F9 I haven't. But there is no 43. Assuming of course, it should show up as 43 in hex editor. Which I doubt. I could probably make a copy, change the string and compare the new file, but uh... I no longer possess the skill to work with hexadecimals. It's been a while. Anyway, here's the file: ControlMap_Custom.txt Edited March 3, 2025 by belegost
traison Posted March 3, 2025 Posted March 3, 2025 24 minutes ago, belegost said: But there is no 43 It's at offset 117, followed by a 0x12. I left the 0x12 and set 117 to 0xff. See what the game says about this one. ControlMap_Custom_edited.txt
belegost Posted March 3, 2025 Author Posted March 3, 2025 (edited) 1 hour ago, traison said: See what the game says about this one. Well, what do you know, it fucking works! Thank you. Now, I do wonder if that extracted controlmap.txt file is still needed. Edited March 3, 2025 by belegost
traison Posted March 3, 2025 Posted March 3, 2025 (edited) 8 minutes ago, belegost said: Now, I do wonder if that extracted controlmap.txt file is still needed. I use it to unmap the numpad from favourites, so that I can use those 9+ keys for other stuff. Edit: Also, quite interesting that the key disappeared entirely from the menu too. Edited March 3, 2025 by traison
belegost Posted March 3, 2025 Author Posted March 3, 2025 1 hour ago, traison said: I use it to unmap the numpad from favourites Oh? Please, tell me more. 1 hour ago, traison said: quite interesting that the key disappeared entirely Nothing of value was lost.
traison Posted March 3, 2025 Posted March 3, 2025 Hotkey1 0x02 0xff 0x0004 0 0 0 0x908 Hotkey2 0x03 0xff 0x0008 0 0 0 0x908 Hotkey3 0x04 0xff 0xff 0 0 0 0x908 Hotkey4 0x05 0xff 0xff 0 0 0 0x908 Hotkey5 0x06 0xff 0xff 0 0 0 0x908 Hotkey6 0x07 0xff 0xff 0 0 0 0x908 Hotkey7 0x08 0xff 0xff 0 0 0 0x908 Hotkey8 0x09 0xff 0xff 0 0 0 0x908 1
belegost Posted March 3, 2025 Author Posted March 3, 2025 2 minutes ago, traison said: Hotkey1 0x02 0xff 0x0004 0 0 0 0x908 Hotkey2 0x03 0xff 0x0008 0 0 0 0x908 Hotkey3 0x04 0xff 0xff 0 0 0 0x908 Hotkey4 0x05 0xff 0xff 0 0 0 0x908 Hotkey5 0x06 0xff 0xff 0 0 0 0x908 Hotkey6 0x07 0xff 0xff 0 0 0 0x908 Hotkey7 0x08 0xff 0xff 0 0 0 0x908 Hotkey8 0x09 0xff 0xff 0 0 0 0x908 Awesome. Dude/lass/Apache helicopter, if you ever travel around my parts, hit me up, maybe we can arrange for a drink. I owe you for this one. 1
Dm0n Posted March 4, 2025 Posted March 4, 2025 Sooo, I can use this to unmap F5 and prevent unvoluntary quicksaving? Mara bless you.
belegost Posted March 4, 2025 Author Posted March 4, 2025 22 minutes ago, Dm0n said: Sooo, I can use this to unmap F5 and prevent unvoluntary quicksaving? Mara bless you. Why would you do that, when you can make it so pressing Quicksave will create a regular, hard save instead?
traison Posted March 4, 2025 Posted March 4, 2025 (edited) 5 hours ago, Dm0n said: Sooo, I can use this to unmap F5 and prevent unvoluntary quicksaving? Mara bless you. Maybe. Considering we (or I certainly) don't know anything about the file format in the ControlMap_Custom.txt file, its entirely possible the fix would have to be game version specific or perhaps even personal. I'd suggest you edit your file yourself, rather than use any of the offsets I've posted in this thread. All you need is the hex value of the scancode you currently have bound to the action you want to disable. These can be found online, but keep in mind that scancodes may change with the make and model of your keyboard. For the most part they stay the same I'd say, but there could be differences. Find this byte in the ControlMap_Custom.txt file and change it to 0xff. Edit: Also keep in mind that since the option disappears from the menu, doing this edit in reverse is considerably more difficult. Make sure you have a way to undo the changes if you don't want to have to reset your controls for it. Edited March 4, 2025 by traison
belegost Posted March 4, 2025 Author Posted March 4, 2025 (edited) 40 minutes ago, traison said: the option disappears from the menu I have found a side-effect of this. F9 is now not available in RaceMenu. Load Colour and Load Preset buttons are unbound. They can still be clicked with a mouse though. Minor inconvenience, but I do wonder what else will pop-up. Anyway, I am still immensely satisfied, especially with the fact you showed me how to free up numerical keybindings. I went looking for one button, but found 10. Edited March 4, 2025 by belegost 1
traison Posted March 4, 2025 Posted March 4, 2025 (edited) I mapped out the file format of controlmap_custom.txt. Here's a py parser: Spoiler import sys, struct, os, win32api LEN_HEADER = 3 # Presumed header size LEN_TERMINATOR = 1 # Last byte in file LEN_RECORD = 5 # Size of a keybind record MAPVK_VSC_TO_VK_EX = 3 def main(argv): #argc = len(argv) for arg in argv[1:]: parse(arg) def parse(file): lenFile = os.path.getsize(file) lenData = lenFile - LEN_HEADER - LEN_TERMINATOR test = lenData % LEN_RECORD if test != 0: print('Unexpected data length.') return numRecords = int(lenData / LEN_RECORD) records = [] with open(file, 'rb') as f: magic, unk1 = struct.unpack('hB', f.read(LEN_HEADER)) for i in range(numRecords): actionId, unk2, unk3, unk4, scancode = struct.unpack('BBBBB', f.read(LEN_RECORD)) vk = win32api.MapVirtualKey(scancode, MAPVK_VSC_TO_VK_EX) records.append({ 'actionId': actionId, 'scancode': hex(scancode), 'virtualkey': hex(vk) }) print('magic', magic) print('unk1', unk1) for record in records: print(record) if __name__ == '__main__': main(sys.argv) I do not see any way to unbind quicksave/quickload without it also affecting RaceMenu. I suspect what's going on here is that we unbind a key from an action, and this action is used in different ways depending on the situation. Without a game engine edit to separate the actions, there's nothing we can do from this controlmap file. It is still useful for rebinding keys; if you for instance want to use the function keys for something else, you can move quickload/save out of the way with this. No credit needed for using code or ideas from the parser above. If you're making a tool for this and expand upon the idea, or perhaps even solve some of the issues in this thread, post a link to your tool when its done. Edit: I'll consider making a GUI for editing keybinds in this file if there's interest for it. If this is something you want, give this post a like or something to show interest. Edited March 4, 2025 by traison 2
belegost Posted March 4, 2025 Author Posted March 4, 2025 (edited) 16 minutes ago, traison said: I'll consider making a GUI for editing keybinds in this file if there's interest for it. If you ever do it, make it a regular mod with a download page and all the bells and whistles please, not a download that's lost in a random thread. Otherwise nobody will find it. Edited March 4, 2025 by belegost
belegost Posted November 3, 2025 Author Posted November 3, 2025 (edited) Goddammit I forgot to bookmark this thread for myself and spent 2 days searching for it, because after switching to new Skyrim installation I needed to remind myself how to unbind numpad keys. No F9 issues for now, but I may or may not revisit this thread in the future to kindly ask for a fix. @traison I reiterate: if you're ever traveling, hit me up, and if you happen to be traveling around my parts, I'll buy you a drink. Yes, I am that grateful for that one, single advice. Edited November 3, 2025 by belegost 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now