Jump to content

[WIP] Fallout 4 ControlMap.txt aka ControlMap_Custom.txt


InsanePlumber

Recommended Posts

In Skyrim you can define any keyboard button using ControlMap.txt DirectX Scancodes (Data\Interface\Controls\PC\ControlMap.txt)

 

For unknown reasons in F4 Beth did not give us such possibilities.

Are you sure this is the case?

 

As I'm insane and decided to dig in Fallout4.exe and INI files.

Here's what I discovered.

 

INI Files

When you play "run" console and type [saveini]  Gamebryo console commands

This command will overwrite existing INI file (Fallout4.ini saved using this command) with all existing values in the game.

And I found a curious entry:

[MAIN]
sControlsRemapFile=ControlMap_Custom.txt

 

Here's what I found in Fallout4.exe (suspect that this ASCII)

Forward             0xff                0xff                        1    1    0    0x1
Back                0x53                0xff    0xff                1    1    0    0x1
StrafeLeft            0x41                0xff    0xff                1    1    0    0x1
StrafeRight            0x44                0xff    0xff                1    1    0    0x1
Move                0xff                0xff    0x000b                0    0    0    0x1
Look                0xff                0xa00    0x000c                0    0    0    0x2
PrimaryAttack        0xff                0x0        0x000a                1    1    1    0x40
SecondaryAttack        0xff                0x1        0x0009                1    1    1    0x40
Melee                0xa4                0xff    0x0200                1    1    1    0x40
Activate            0x45                0xff    0x1000                1    1    1    0x04
ReadyWeapon            0x52                0xff    0x4000                1    1    1    0x40
Pipboy                0x09                0xff    0x2000                1    1    1    0x108
TogglePOV            0x56                0x2        0x0020                1    1    1    0x20
ZoomIn                0xff                0x800    0xff                0    0    0    0x220
ZoomOut                0xff                0x900    0xff                0    0    0    0x220
Jump                0x20                0xff    0x8000                1    1    1    0x401
Sprint                0xa0                0xff    0x0040                1    1    1    0x1
VATS                0x51                0xff    0x0100                1    1    1    0x40
Sneak                0xa2                0xff    0x0080                1    1    1    0x81
Run                    0x43                0xff    0xff                1    1    0    0x1
ToggleAlwaysRun        0x14                0xff    0xff                1    1    0    0x1
AutoMove            0x58                0xff    0xff                1    1    0    0x1
Quickkeys            0x46                0xff    0xff                1    0    0    0x8
QuickkeyUp            0xff                0xff    0x0001                0    0    0    0x8
QuickkeyDown        0xff                0xff    0x0002                0    0    0    0x8
QuickkeyLeft        0xff                0xff    0x0004                0    0    0    0x8
QuickkeyRight        0xff                0xff    0x0008                0    0    0    0x8
Quickkey1            0x31,0x61            0xff    0xff                0    0    0    0x8
Quickkey2            0x32,0x62            0xff    0xff                0    0    0    0x8
Quickkey3            0x33,0x63            0xff    0xff                0    0    0    0x8
Quickkey4            0x34,0x64            0xff    0xff                0    0    0    0x8
Quickkey5            0x35,0x65            0xff    0xff                0    0    0    0x8
Quickkey6            0x36,0x66            0xff    0xff                0    0    0    0x8
Quickkey7            0x37,0x67            0xff    0xff                0    0    0    0x8
Quickkey8            0x38,0x68            0xff    0xff                0    0    0    0x8
Quickkey9            0x39,0x69            0xff    0xff                0    0    0    0x8
Quickkey10            0x30,0x60            0xff    0xff                0    0    0    0x8
Quickkey11            0xbd,0x6d            0xff    0xff                0    0    0    0x8
Quickkey12            0xbb,0x6b            0xff    0xff                0    0    0    0x8
Quicksave            0x74                0xff    0xff                1    0    0
Quickload            0x78                0xff    0xff                1    0    0
Pause                0x1b                0xff    0x0010                1    1    1    0x8
Screenshot            0x2c                0xff    0xff                0    0    0    0x10
Console                0xc0                0xff    0xff                0    0    0    0x10
ConsoleToggles        0x2d                0xff    0xff                0    0    0    0x10
CameraPath            0x7b                0xff    0xff                0    0    0
QuickStats            0x4b                0xff    0xff                1    1    0    0x108
QuickInventory        0x49                0xff    0xff                1    1    0    0x108
QuickData            0x4a                0xff    0xff                1    1    0    0x108
QuickMap            0x4d                0xff    0xff                1    1    0    0x108
QuickRadio            0x4f                0xff    0xff                1    1    0    0x108

// Menu Mode
Accept                0x0d    0xff    0x1000    0    0    0    0x8
Cancel                0x09    0xff    0x2000    0    0    0    0x8
Up                    0x26    0xff    0x0001    0    0    0    0x8
Down                0x28    0xff    0x0002    0    0    0    0x8
Left                0x25    0xff    0x0004    0    0    0    0x8
Right                0x27    0xff    0x0008    0    0    0    0x8

LeftStick            0xff    0xff    0x000b    0    0    0    0x8
RightStick            0xff    0xff    0x000c    0    0    0    0x8

LTrigger            0xff    0xff    0x0009    0    0    0    0x8
RTrigger            0xff    0xff    0x000a    0    0    0    0x8
XButton                0x52    0xff    0x4000    0    0    0    0x8
YButton                0x54    0xff    0x8000    0    0    0    0x8
LShoulder            0x43    0xff    0x0100    0    0    0    0x8
RShoulder            0x51    0xff    0x0200    0    0    0    0x8
Select                0x56    0x1        0x0020    0    0    0    0x8
L3                    0x5A    0xff    0x0040    0    0    0    0x8
R3                    0x58    0xff    0x0080    0    0    0    0x8

Cursor                0xff    0xa00    0x000c    0    0    0    0x10
Click                0xff    0x0        0x1000    0    0    0    0x10

Cursor                0xff    0xa00    0x000b    0    0    0    0x10
Click                0xff    0x0        0x1000    0    0    0    0x10

PickPrevious        0xff    0x800    0x0002    0    0    0    0x10
PickNext            0xff    0x900    0x0001    0    0    0    0x10
Up                    0x26    0xff    0xff    0    0    0    0x10
Down                0x28    0xff    0xff    0    0    0    0x10
PageUp                0x21    0xff    0xff    0    0    0    0x10
PageDown            0x22    0xff    0xff    0    0    0    0x10
NextFocus            0x09    0xff    0x0200    0    0    0    0x10
PreviousFocus        0xff    0xff    0x0100    0    0    0    0x10

PrevPage            0x26    0xff    0xff    0    0    0    0x10
NextPage            0x28    0xff    0xff    0    0    0    0x10
PrevSubPage            0x21    0xff    0xff    0    0    0    0x10
NextSubPage            0x22    0xff    0xff    0    0    0    0x10

PrevPage            0xff    0x0,0x900    0x0009,0x0100    0    0    0    0x8
NextPage            0xff    0x1,0x800    0x000a,0x0200    0    0    0    0x8

Console                0xc0    0xff    0xff    0    0    0    0x10
NextFocus            0x09    0xff    0x0200    0    0    0    0x10
PreviousFocus        0xff    0xff    0x0100    0    0    0    0x10
Up                    0x26    0xff    0x0001    0    0    0    0x10
Down                0x28    0xff    0x0002    0    0    0    0x10
Left                0x25    0xff    0x0004    0    0    0    0x10
Right                0x27    0xff    0x0008    0    0    0    0x10
PageUp                0x21    0xff    0xff    0    0    0    0x10
PageDown            0x22    0xff    0xff    0    0    0    0x10
ToggleMinimize        0x74    0xff    0x0020    0    0    0    0x10
ToggleMove            0x73    0xff    0x0080    0    0    0    0x10
Close                0x75    0xff    0xff    0    0    0    0x10
F1                    0x70    0xff    0xff    0    0    0    0x10
F2                    0x71    0xff    0xff    0    0    0    0x10
F3                    0x72    0xff    0xff    0    0    0    0x10
F7                    0x76    0xff    0xff    0    0    0    0x10
F8                    0x77    0xff    0xff    0    0    0    0x10
F9                    0x78    0xff    0xff    0    0    0    0x10
F10                    0x79    0xff    0xff    0    0    0    0x10
F11                    0x7a    0xff    0xff    0    0    0    0x10
F12                    0x7b    0xff    0xff    0    0    0    0x10
LTrigger            0xff    0xff    0x0009    0    0    0    0x10
RTrigger            0xff    0xff    0x000a    0    0    0    0x10
Backspace            0x08    0xff    0xff    0    0    0    0x10
Enter                0x0d    0xff    0xff    0    0    0    0x10
B                    0xff    0xff    0x2000    0    0    0    0x10
Y                    0xff    0xff    0x8000    0    0    0    0x10
X                    0xff    0xff    0x4000    0    0    0    0x10

CameraZUp           0xff    0x800    0x000a    0    0    0
CameraZDown            0xff    0x900    0x0009    0    0    0
WorldZUp            0xff    0x0        0x0200    0    0    0
WorldZDown            0xff    0x1        0x0100    0    0    0
LockToZPlane        0xff    0xff    0x4000    0    0    0

Look                0xff    0xff    0x000c    0    0    0    0x8
ZoomIn                0xff    0x800    0x000a    0    0    0    0x8
ZoomOut                0xff    0x900    0x0009    0    0    0    0x8
Move                0xff    0xa        0x000b    0    0    0    0x8

RotatePick            0xff                    0xa00    0x000b    0    0    0    0x8
RotateLock            0x57,0x53,0x41,0x44        0xff    0x000c    0    0    0    0x8
DebugMode            0xbf                    0xff    0x4000    0    0    0    0x8
Cancel                0x1b                    0xff    0x2000    0    0    0    0x8

Pick                0x51        0xff    0x000a            0    0    0    0x8
Accept                0x45        0xff    0x1000            0    0    0    0x8
Cancel                0x09,0x42    0x1        0x2000,0x0100    0    0    0    0x8
ChangePart            0xff        0xff    0x000b            0    0    0    0x8
NextTarget            0x44        0xff    0xff            0    0    0    0x8
PrevTarget            0x41        0xff    0xff            0    0    0    0x8
NextPart            0x57        0x800    0xff            0    0    0    0x8
PrevPart            0x53        0x900    0xff            0    0    0    0x8
ZoomIn                0x56        0x2        0x0009            0    0    0    0x8

Cancel                0x09,0x42    0x1        0x2000,0x0100    0    0    0    0x8
ApplyCritical        0x20        0xff    0x4000            0    0    0    0x8

MultiActivateA        0x28,0x34    0xff    0x1000    0    0    0    0x8
MultiActivateB        0x27,0x33    0xff    0x2000    0    0    0    0x8
MultiActivateX        0x25,0x32    0xff    0x4000    0    0    0    0x8
MultiActivateY        0x26,0x31    0xff    0x8000    0    0    0    0x8

Accept                   0x45    0xff    0x1000    0    0    0    0x8
Cancel                0x09    0xff    0x2000    0    0    0    0x8
Up                    0x26    0xff    0x0001    0    0    0    0x8
Down                0x28    0xff    0x0002    0    0    0    0x8
Left                0x25    0xff    0x0004    0    0    0    0x8
Right                0x27    0xff    0x0008    0    0    0    0x8
LTrigger            0x46    0x0        0x0009    0    0    0    0x8
RTrigger            0x47    0x1        0x000a    0    0    0    0x8
XButton                0x52    0xff    0x4000    0    0    0    0x8
LShoulder            0x5a    0xff    0x0100    0    0    0    0x8
RShoulder            0x51    0xff    0x0200    0    0    0    0x8
CloseMenu            0x1b    0xff    0x0020    0    0    0    0x8
AlternateControlsKey        0xa0    0xff    0x0200    0    0    0    0x8

Steady                0xa4    0xff    0x0040    0    0    0    0x41

StartWait            0x54    0xff    0x8000    0    0    0    0x8

Done                0x0d    0xff    0x0010    0    0    0    0x8
Cancel                0x1b    0xff    0xffff    0    0    0    0x8
KeyLeft                0x41,0x25    0xff    0xffff    0    0    0    0x8
KeyRight            0x44,0x27    0xff    0xffff    0    0    0    0x8
KeyDown                0x53,0x28    0xff    0xffff    0    0    0    0x8
KeyUp                0x57,0x26    0xff    0xffff    0    0    0    0x8
Space                0x20    0xff    0xffff    0    0    0    0x8
B                    0x42    0xff    0xffff    0    0    0    0x8
C                    0x43    0xff    0xffff    0    0    0    0x8
Accept                0x45    0xff    0xffff    0    0    0    0x8
F                    0x46    0xff    0xffff    0    0    0    0x8
R                    0x52    0xff    0xffff    0    0    0    0x8
T                    0x54    0xff    0xffff    0    0    0    0x8
X                      0x58    0xff    0xffff    0    0    0    0x8
Y                    0x59    0xff    0xffff    0    0    0    0x8

YButton                0x20    0xff    0x8000    0    0    0    0x8

Up                    0x57    0xff    0x0001    0    0    0    0x8
Down                0x53    0xff    0x0002    0    0    0    0x8
Left                0x41    0xff    0x0004    0    0    0    0x8
Right                0x44    0xff    0x0008    0    0    0    0x8

DeleteSave            0x58    0xff    0x4000    0    0    0    0x8
ResetToDefault        0x54    0xff    0x8000    0    0    0    0x8
Accept                0x0d    0xff    0xff    0    0    0    0x10
Cancel                0x1b    0xff    0xff    0    0    0    0x10

ZoomOut                0xff    0x900    0x0009    0    0    0    0x8
ZoomIn                0xff    0x800    0x000a    0    0    0    0x8

PrevPerk            0xa2,0xa3    0xff    0x0100    0    0    0    0x8
NextPerk            0xa4,0xa5    0xff    0x0200    0    0    0    0x8

DeleteSave            0x58    0xff    0x4000    0    0    0    0x8
Start                0x1b    0xff    0x0010    0    0    0    0x8

QuickContainerUp    0xff    0x800        0x0001    0    0    0    0xC
QuickContainerDown    0xff    0x900        0x0002    0    0    0    0xC
QCTakeItem            0x45    0xff        0x1000    0    0    0    0xC
QCOpenTransferMenu    0x52    0xff        0x4000    0    0    0    0xC

SpecialActivate    !Activate    0xff    !Activate    0    0    0    0xC

SecondaryActivate    !ReadyWeapon    0xff    !ReadyWeapon    0    0    0    0xC

QuickContainerPerk        0x20    0xff    0x8000        0    0    0    0xC

Land            0x45    0xff    0x1000        0    0    0    0x04
BailOut        0x20    0xff    0x8000        0    0    0    0x401

Start            0x1b    0xff    0x0010    0    0    0    0x8

 

The problems is:

- do not know where to put ControlMap_Custom.txt  to act as I assumed.

- suspect that the contents of ControlMap_Custom.txt I created may contain errors

 

If anyone has any suggestions...

Please share with me what do you think?

 

Link to comment
Share on other sites

Please share with me what do you think?

 

I think this is EXTREMLY interesting and worth investigating for some times :P Lot of users (or rather, every user with non QWERTY keyboards) have a lot of issues with keymapping. This could be a solution.

 

However this could also just be a way to handle cross-platform controls. Note that I've also found some GMST indicating that there could be some kind of support for xbox camera and the like.

 

Edit :

Did you try to rename your own ControlMap_Custom.txt into ControlMap.txt and put it in Data\Interface\Controls\PC\ (with the proper INTERFACE\ added to fallout4.ini under sResourceDataDirsFinal), so it'd overwrite the original file like with any other ressource ?

Link to comment
Share on other sites

Until Thursday I am away from home and I only have with me a laptop that does not run the F4 so I have not tested.
For now poking at the game files and analyze them

When I get home I'll try assigning full path to the file

like

[MAIN]
sControlsRemapFile=C:\Program Files\Steam\SteamApps\common\Fallout 4\Data\Interface\Controls\PC\ControlMap_Custom.txt

It works with screenshots It may work in this case.

Link to comment
Share on other sites

Keymapping even on qwerty keyboards is flaky at best. Anything that can make the process of changing this stuff easier is welcome.

Link to comment
Share on other sites

Super excited about anything that could unlock game's keybinds. It's just too frustrating for me to play until this is resolved (I'm hopeful either Bethesda or a modder will figure this out)

 

Those entries look like hex? I wonder if they translate to anything we could identify?

Link to comment
Share on other sites

Reverse engineer it. We, for instance, know what the default keys for movement are, so see what numbers those correspond to and if it follows a simple incremental pattern, you should be able to figure out at least all of the letter keys. All of the non-letter keys are already on there.

Link to comment
Share on other sites

Problem solved thanks to F4SE Team.

 

F4SE 0.1.0

 

 

 

0.1.0:
- everything
- plugin manager
- simple hooks for papyrus, scaleform, and the classic script system, but nothing useful for modders yet
- customization of internal keymappings
    Copy CustomControlMap.txt to Data\F4SE\CustomControlMap.txt.
    Edit that file to set your bindings. The format is the same as Skyrim, it's a space-separated file.
    The first column is the name of the internal keybind. The second column is the keyboard scan code that should activate the bind in hex, or 0xFF if unbound. Use google to find a table of scan codes. The third column is for mice, the fourth for controllers. The next three columns control whether or not a control should be written to the user's config file. The final column specifies which input layer the bind is associated with - you will probably not want to change that.

- currently-installed version of F4SE is shown in the Settings menu next to the game version
- running GetF4SEVersion from the console will print the current version as well
- log spam is written to My Documents\My Games\Fallout4\F4SE\
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...