RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Activity ManagerAudio Bank ManagerAudio Ribbon SystemBus Route ManagerCamera SystemCore Chat (IRC)Core CheckpointsCore Command HandlerCoupler Camera ModifierDevices (RGB Peripherals)Dynamic PropsEnvironmentFlowgraph ManagerForestFun StuffGame ContextGame StateGround Marker ArrowsGround MarkersHardware InfoHighscoresHotlappingInventoryJob SystemLap TimesLevelsLoad Map CommandMetricsMod ManagerMultiseatMultiseat CameraMulti SpawnOnlinePaths (Camera Paths)Quick Access (Radial Menu)Recovery PromptRemote ControllerReplayRepositoryRope Visual TestScheme Command ServerCore SnapshotCore SoundsCore TerrainTraffic SignalsTrailer RespawnVehicle Active PoolingVehicle Bridge (GE ↔ VLua Communication)Vehicle MirrorsVehicle PaintsCore VehiclesVehicle TriggersVersion UpdateWeather SystemWindows Console
Input Action FilterInput ActionsInput BindingsInput CategoriesDeprecated ActionsVehicle SwitchingVibration DebugVirtual Input

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE Extensionscoreinput

Input Bindings

Manages input device bindings: reads default + custom bindings from disk, applies diffs, sends to the engine's ActionMap system, handles force feedback (FFB) configuration, device hot-plug, multiseat

Manages input device bindings: reads default + custom bindings from disk, applies diffs, sends to the engine's ActionMap system, handles force feedback (FFB) configuration, device hot-plug, multiseat player assignment, and menu action map toggling.


Public API - Bindings

FunctionSignatureDescription
M.resetBindings(desiredDevName?)Resets custom bindings to defaults. If nil, resets all devices.
M.saveBindingsToDisk(data)Saves modified bindings from UI. Computes diff against defaults, writes .diff files per device and vehicle.
M.notifyUI(reason?)Sends current bindings, actions, and categories to UI via InputBindingsChanged.
M.getControlForAction(actionName) → string|nilReturns the control name bound to the given action.
M.getUsedBindingsFiles() → tableReturns list of all binding files read during the last reload.
M.enableCustomModifier(player, enabled, modifier)Enables/disables a custom input modifier for a player.
M.getRecentDevices() → tableReturns devices sorted by recent activity.
M.menuActive(enabled)Deprecated. Logs error and calls setMenuActionMapEnabled. Use setMenuActionMapEnabled instead.

Public API - Menu Actions

FunctionSignatureDescription
M.setMenuActionMapEnabled(enabled)Enables/disables the Menu ActionMap and all MenuIndependent action maps.
M.getMenuActionMapEnabled() → boolReturns whether menu action maps are active.
M.setMenuActionEnabled(enabled, actionName?, actionMapName?)Enables/disables a specific menu-related action map.

Public API - Players

FunctionSignatureDescription
M.getAssignedPlayers() → tableReturns device→player assignment map.
M.setPlayerToDevice(devname, player)Manually assigns a player to a device and reloads bindings.

Module Fields

FieldTypeDescription
M.devicestableCurrently plugged devices: devname → {guid, productName, pidvid}.
M.bindingstableCurrent binding data per device.
M.assignedPlayerstabledevname → player mapping.
M.isMenuActiveboolWhether menu action maps are enabled.
M.autoAssignPlayersToDevicesboolAuto-assign players via core_multiseat (default true).

Binding File Format

Bindings are stored as JSON with a layered system:

  1. Base files (.json) - shipped defaults per device type/pidvid.
  2. Diff files (.diff) - user customizations (added/modified/removed bindings).
  3. Vehicle-specific - stored under settings/inputmaps/{vehicleName}/.

FFB Configuration

FunctionSignatureDescription
Internal: getFFBConfig(veh)→ tableReturns FFB config for steering, accelerate, and brake actions.
Internal: notifyFFB()Pushes FFB config to all vehicles via hydros.onFFBConfigChanged.

Hooks

FunctionDescription
M.onFirstUpdateInitial device scan, player assignment, and binding load.
M.onVehicleSwitchedReloads bindings for new vehicle's specific actions.
M.onVehicleSpawnedReloads bindings.
M.onDeviceChangedUpdates device list, reassigns players, reloads bindings.
M.onFileChangedReloads on inputmap or action file changes.
M.onSettingsChangedReloads on multiseat setting change.
M.onUIStateTriggeredToggles menu action map based on UI state stack.
M.updateGFXHandles walking-mode ActionMap disable and deferred file-change reload.
M.onExtensionLoadedCalled on ExtensionLoaded event
M.onRecentDevicesChangedCalled on RecentDevicesChanged event
M.dependenciesTable. Required extensions: {'core_input_actions', 'core_input_categories', 'core_multiseat', 'tech_license', 'core_versionUpdate'}

Module State

VariableTypeDefault
dependenciestable{ "core_input_actions", "core_input_categories"...

Usage Example

-- Reset all bindings to defaults
core_input_bindings.resetBindings()

-- Check what control is bound to steering
local control = core_input_bindings.getControlForAction("steering")
log('I', '', 'Steering bound to: ' .. tostring(control))

-- Toggle menu action map
core_input_bindings.setMenuActionMapEnabled(true)

Key Internals

  • Device detection uses WinInput.getRegisteredDevices().
  • FFB response curves can be loaded from .lut, .log, .fcm, .csv files.
  • Binding diff system preserves only user changes, not full binding sets.
  • SCE Pad (PlayStation) controller migration from old GUID-based files to unified sce_pad_standard.diff.

See Also

  • Input Action Filter - Related reference
  • Input Actions - Related reference
  • Input Categories - Related reference
  • Core Systems Guide - Guide

Input Actions

Loads and manages input action definitions from JSON files. Actions define what happens when an input binding triggers (key press, axis movement, etc.), including the command context (vehicle Lua, GE

Input Categories

Static lookup table defining input binding categories for the controls options UI. Each category has a display order, icon, and localization title.

On this page

Public API - BindingsPublic API - Menu ActionsPublic API - PlayersModule FieldsBinding File FormatFFB ConfigurationHooksModule StateUsage ExampleKey InternalsSee Also