Grand opening25% off everything with FAM-261023-261025-UL4B9this weekendAdded for you at checkout Halloween Edition36 maps, limited runlimited runShop the drop

FREE TOOL · IsControlJustPressed

FiveM controls list

All 361 GTA 5 control indices — 0 to 360, no gaps — with the INPUT_ name, the default keyboard key and the default Xbox binding. Press a key in the panel below and we tell you which control indices sit on it, which is usually the question: you know the key, you need the number. Every row copies out as a finished IsControlJustPressed or DisableControlAction call.

Indices, names and both binding columns come straight from the Cfx.re controls reference — nothing on this page is renamed or invented. 331 controls have a keyboard default, 294 have a pad default, 10 have neither. The nine group labels are ours, derived from the INPUT_ names so that 361 rows can be narrowed to the ones you care about; the game does not publish a category for a control.

WHICH CONTROL IS THIS KEY?

Arm the listener, then press a key, a mouse button or the wheel. We look the physical input up in the default QWERTY bindings and show every control index bound to it — one key is very often three or four controls at once.

361 of 361

IndexControlKeyboardXbox padCopy
INPUT_NEXT_CAMERACameraVBACK
INPUT_LOOK_LRCameraMOUSE RIGHTRIGHT STICK
INPUT_LOOK_UDCameraMOUSE DOWNRIGHT STICK
INPUT_LOOK_UP_ONLYCameraunboundRIGHT STICK
INPUT_LOOK_DOWN_ONLYCameraMOUSE DOWNRIGHT STICK
INPUT_LOOK_LEFT_ONLYCameraunboundRIGHT STICK
INPUT_LOOK_RIGHT_ONLYCameraMOUSE RIGHTRIGHT STICK
INPUT_CINEMATIC_SLOWMOCameraunboundR3
INPUT_SCRIPTED_FLY_UDScriptSLEFT STICK
INPUT_SCRIPTED_FLY_LRScriptDLEFT STICK
INPUT_SCRIPTED_FLY_ZUPScriptPAGEUPLT
INPUT_SCRIPTED_FLY_ZDOWNScriptPAGEDOWNRT
INPUT_WEAPON_WHEEL_UDCombatMOUSE DOWNRIGHT STICK
INPUT_WEAPON_WHEEL_LRCombatMOUSE RIGHTRIGHT STICK
INPUT_WEAPON_WHEEL_NEXTCombatSCROLLWHEEL DOWNDPAD RIGHT
INPUT_WEAPON_WHEEL_PREVCombatSCROLLWHEEL UPDPAD LEFT
INPUT_SELECT_NEXT_WEAPONCombatSCROLLWHEEL DOWNunbound
INPUT_SELECT_PREV_WEAPONCombatSCROLLWHEEL UPunbound
INPUT_SKIP_CUTSCENEOn footENTER / LEFT MOUSE BUTTON / SPACEBARA
INPUT_CHARACTER_WHEELFrontendLEFT ALTDPAD DOWN
INPUT_MULTIPLAYER_INFOFrontendZDPAD DOWN
INPUT_SPRINTOn footLEFT SHIFTA
INPUT_JUMPOn footSPACEBARX
INPUT_ENTEROn footFY
INPUT_ATTACKCombatLEFT MOUSE BUTTONRT
INPUT_AIMCombatRIGHT MOUSE BUTTONLT
INPUT_LOOK_BEHINDCameraCR3
INPUT_PHONEPhoneARROW UP / SCROLLWHEEL BUTTON (PRESS)DPAD UP
INPUT_SPECIAL_ABILITYCombatunboundL3
INPUT_SPECIAL_ABILITY_SECONDARYCombatBR3
INPUT_MOVE_LROn footDLEFT STICK
INPUT_MOVE_UDOn footSLEFT STICK
INPUT_MOVE_UP_ONLYOn footWLEFT STICK
INPUT_MOVE_DOWN_ONLYOn footSLEFT STICK
INPUT_MOVE_LEFT_ONLYOn footALEFT STICK
INPUT_MOVE_RIGHT_ONLYOn footDLEFT STICK
INPUT_DUCKOn footLEFT CTRLL3
INPUT_SELECT_WEAPONCombatTABLB
INPUT_PICKUPOn footELB
INPUT_SNIPER_ZOOMCombat[LEFT STICK
INPUT_SNIPER_ZOOM_IN_ONLYCombat]LEFT STICK
INPUT_SNIPER_ZOOM_OUT_ONLYCombat[LEFT STICK
INPUT_SNIPER_ZOOM_IN_SECONDARYCombat]DPAD UP
INPUT_SNIPER_ZOOM_OUT_SECONDARYCombat[DPAD DOWN
INPUT_COVEROn footQRB
INPUT_RELOADCombatRB
INPUT_TALKOn footEDPAD RIGHT
INPUT_DETONATECombatGDPAD LEFT
INPUT_HUD_SPECIALFrontendZDPAD DOWN
INPUT_ARRESTCombatFY
INPUT_ACCURATE_AIMCombatSCROLLWHEEL DOWNR3
INPUT_CONTEXTOn footEDPAD RIGHT
INPUT_CONTEXT_SECONDARYOn footQDPAD LEFT
INPUT_WEAPON_SPECIALCombatunboundY
INPUT_WEAPON_SPECIAL_TWOCombatEDPAD RIGHT
INPUT_DIVEOn footSPACEBARRB
INPUT_DROP_WEAPONOn footF9Y
INPUT_DROP_AMMOOn footF10B
INPUT_THROW_GRENADECombatGDPAD LEFT
INPUT_VEH_MOVE_LRVehicleDLEFT STICK
INPUT_VEH_MOVE_UDVehicleLEFT CTRLLEFT STICK
INPUT_VEH_MOVE_UP_ONLYVehicleLEFT SHIFTLEFT STICK
INPUT_VEH_MOVE_DOWN_ONLYVehicleLEFT CTRLLEFT STICK
INPUT_VEH_MOVE_LEFT_ONLYVehicleALEFT STICK
INPUT_VEH_MOVE_RIGHT_ONLYVehicleDLEFT STICK
INPUT_VEH_SPECIALVehicleunboundunbound
INPUT_VEH_GUN_LRVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_GUN_UDVehicleMOUSE DOWNRIGHT STICK
INPUT_VEH_AIMVehicleRIGHT MOUSE BUTTONLB
INPUT_VEH_ATTACKVehicleLEFT MOUSE BUTTONRB
INPUT_VEH_ATTACK2VehicleRIGHT MOUSE BUTTONA
INPUT_VEH_ACCELERATEVehicleWRT
INPUT_VEH_BRAKEVehicleSLT
INPUT_VEH_DUCKVehicleXA
INPUT_VEH_HEADLIGHTVehicleHDPAD RIGHT
INPUT_VEH_EXITVehicleFY
INPUT_VEH_HANDBRAKEVehicleSPACEBARRB
INPUT_VEH_HOTWIRE_LEFTVehicleWLT
INPUT_VEH_HOTWIRE_RIGHTVehicleSRT
INPUT_VEH_LOOK_BEHINDVehicleCR3
INPUT_VEH_CIN_CAMVehicleRB
INPUT_VEH_NEXT_RADIOVehicle.unbound
INPUT_VEH_PREV_RADIOVehicle,unbound
INPUT_VEH_NEXT_RADIO_TRACKVehicle=unbound
INPUT_VEH_PREV_RADIO_TRACKVehicle-unbound
INPUT_VEH_RADIO_WHEELVehicleQDPAD LEFT
INPUT_VEH_HORNVehicleEL3
INPUT_VEH_FLY_THROTTLE_UPVehicleWRT
INPUT_VEH_FLY_THROTTLE_DOWNVehicleSLT
INPUT_VEH_FLY_YAW_LEFTVehicleALB
INPUT_VEH_FLY_YAW_RIGHTVehicleDRB
INPUT_VEH_PASSENGER_AIMVehicleRIGHT MOUSE BUTTONLT
INPUT_VEH_PASSENGER_ATTACKVehicleLEFT MOUSE BUTTONRT
INPUT_VEH_SPECIAL_ABILITY_FRANKLINVehicleunboundR3
INPUT_VEH_STUNT_UDVehicleunboundunbound
INPUT_VEH_CINEMATIC_UDVehicleMOUSE DOWNRIGHT STICK
INPUT_VEH_CINEMATIC_UP_ONLYVehicleNUMPAD- / SCROLLWHEEL UPunbound
INPUT_VEH_CINEMATIC_DOWN_ONLYVehicleNUMPAD+ / SCROLLWHEEL DOWNunbound
INPUT_VEH_CINEMATIC_LRVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_SELECT_NEXT_WEAPONVehicleSCROLLWHEEL UPX
INPUT_VEH_SELECT_PREV_WEAPONVehicle[unbound
INPUT_VEH_ROOFVehicleHDPAD RIGHT
INPUT_VEH_JUMPVehicleSPACEBARRB
INPUT_VEH_GRAPPLING_HOOKVehicleEDPAD RIGHT
INPUT_VEH_SHUFFLEVehicleHDPAD RIGHT
INPUT_VEH_DROP_PROJECTILEVehicleXA
INPUT_VEH_MOUSE_CONTROL_OVERRIDEVehicleLEFT MOUSE BUTTONunbound
INPUT_VEH_FLY_ROLL_LRVehicleNUMPAD 6LEFT STICK
INPUT_VEH_FLY_ROLL_LEFT_ONLYVehicleNUMPAD 4LEFT STICK
INPUT_VEH_FLY_ROLL_RIGHT_ONLYVehicleNUMPAD 6LEFT STICK
INPUT_VEH_FLY_PITCH_UDVehicleNUMPAD 5LEFT STICK
INPUT_VEH_FLY_PITCH_UP_ONLYVehicleNUMPAD 8LEFT STICK
INPUT_VEH_FLY_PITCH_DOWN_ONLYVehicleNUMPAD 5LEFT STICK
INPUT_VEH_FLY_UNDERCARRIAGEVehicleGL3
INPUT_VEH_FLY_ATTACKVehicleRIGHT MOUSE BUTTONA
INPUT_VEH_FLY_SELECT_NEXT_WEAPONVehicleSCROLLWHEEL UPDPAD LEFT
INPUT_VEH_FLY_SELECT_PREV_WEAPONVehicle[unbound
INPUT_VEH_FLY_SELECT_TARGET_LEFTVehicleNUMPAD 7LB
INPUT_VEH_FLY_SELECT_TARGET_RIGHTVehicleNUMPAD 9RB
INPUT_VEH_FLY_VERTICAL_FLIGHT_MODEVehicleEDPAD RIGHT
INPUT_VEH_FLY_DUCKVehicleXA
INPUT_VEH_FLY_ATTACK_CAMERAVehicleINSERTR3
INPUT_VEH_FLY_MOUSE_CONTROL_OVERRIDEVehicleLEFT MOUSE BUTTONunbound
INPUT_VEH_SUB_TURN_LRVehicleNUMPAD 6LEFT STICK
INPUT_VEH_SUB_TURN_LEFT_ONLYVehicleNUMPAD 4LEFT STICK
INPUT_VEH_SUB_TURN_RIGHT_ONLYVehicleNUMPAD 6LEFT STICK
INPUT_VEH_SUB_PITCH_UDVehicleNUMPAD 5LEFT STICK
INPUT_VEH_SUB_PITCH_UP_ONLYVehicleNUMPAD 8LEFT STICK
INPUT_VEH_SUB_PITCH_DOWN_ONLYVehicleNUMPAD 5LEFT STICK
INPUT_VEH_SUB_THROTTLE_UPVehicleWRT
INPUT_VEH_SUB_THROTTLE_DOWNVehicleSLT
INPUT_VEH_SUB_ASCENDVehicleLEFT SHIFTX
INPUT_VEH_SUB_DESCENDVehicleLEFT CTRLA
INPUT_VEH_SUB_TURN_HARD_LEFTVehicleALB
INPUT_VEH_SUB_TURN_HARD_RIGHTVehicleDRB
INPUT_VEH_SUB_MOUSE_CONTROL_OVERRIDEVehicleLEFT MOUSE BUTTONunbound
INPUT_VEH_PUSHBIKE_PEDALVehicleWA
INPUT_VEH_PUSHBIKE_SPRINTVehicleCAPSLOCKA
INPUT_VEH_PUSHBIKE_FRONT_BRAKEVehicleQLT
INPUT_VEH_PUSHBIKE_REAR_BRAKEVehicleSRT
INPUT_MELEE_ATTACK_LIGHTCombatRB
INPUT_MELEE_ATTACK_HEAVYCombatQA
INPUT_MELEE_ATTACK_ALTERNATECombatLEFT MOUSE BUTTONRT
INPUT_MELEE_BLOCKCombatSPACEBARX
INPUT_PARACHUTE_DEPLOYParachute and rappelF / LEFT MOUSE BUTTONY
INPUT_PARACHUTE_DETACHParachute and rappelFY
INPUT_PARACHUTE_TURN_LRParachute and rappelDLEFT STICK
INPUT_PARACHUTE_TURN_LEFT_ONLYParachute and rappelALEFT STICK
INPUT_PARACHUTE_TURN_RIGHT_ONLYParachute and rappelDLEFT STICK
INPUT_PARACHUTE_PITCH_UDParachute and rappelSLEFT STICK
INPUT_PARACHUTE_PITCH_UP_ONLYParachute and rappelWLEFT STICK
INPUT_PARACHUTE_PITCH_DOWN_ONLYParachute and rappelSLEFT STICK
INPUT_PARACHUTE_BRAKE_LEFTParachute and rappelQLB
INPUT_PARACHUTE_BRAKE_RIGHTParachute and rappelERB
INPUT_PARACHUTE_SMOKEParachute and rappelXA
INPUT_PARACHUTE_PRECISION_LANDINGParachute and rappelLEFT SHIFTunbound
INPUT_MAPFrontendunboundunbound
INPUT_SELECT_WEAPON_UNARMEDCombat1unbound
INPUT_SELECT_WEAPON_MELEECombat2unbound
INPUT_SELECT_WEAPON_HANDGUNCombat6unbound
INPUT_SELECT_WEAPON_SHOTGUNCombat3unbound
INPUT_SELECT_WEAPON_SMGCombat7unbound
INPUT_SELECT_WEAPON_AUTO_RIFLECombat8unbound
INPUT_SELECT_WEAPON_SNIPERCombat9unbound
INPUT_SELECT_WEAPON_HEAVYCombat4unbound
INPUT_SELECT_WEAPON_SPECIALCombat5unbound
INPUT_SELECT_CHARACTER_MICHAELFrontendF5unbound
INPUT_SELECT_CHARACTER_FRANKLINFrontendF6unbound
INPUT_SELECT_CHARACTER_TREVORFrontendF7unbound
INPUT_SELECT_CHARACTER_MULTIPLAYERFrontendF8 (CONSOLE)unbound
INPUT_SAVE_REPLAY_CLIPReplay and creatorF3B
INPUT_SPECIAL_ABILITY_PCCombatCAPSLOCKunbound
INPUT_CELLPHONE_UPPhoneARROW UPDPAD UP
INPUT_CELLPHONE_DOWNPhoneARROW DOWNDPAD DOWN
INPUT_CELLPHONE_LEFTPhoneARROW LEFTDPAD LEFT
INPUT_CELLPHONE_RIGHTPhoneARROW RIGHTDPAD RIGHT
INPUT_CELLPHONE_SELECTPhoneENTER / LEFT MOUSE BUTTONA
INPUT_CELLPHONE_CANCELPhoneBACKSPACE / ESC / RIGHT MOUSE BUTTONB
INPUT_CELLPHONE_OPTIONPhoneDELETEY
INPUT_CELLPHONE_EXTRA_OPTIONPhoneSPACEBARX
INPUT_CELLPHONE_SCROLL_FORWARDPhoneSCROLLWHEEL DOWNunbound
INPUT_CELLPHONE_SCROLL_BACKWARDPhoneSCROLLWHEEL UPunbound
INPUT_CELLPHONE_CAMERA_FOCUS_LOCKPhoneLRT
INPUT_CELLPHONE_CAMERA_GRIDPhoneGRB
INPUT_CELLPHONE_CAMERA_SELFIEPhoneER3
INPUT_CELLPHONE_CAMERA_DOFPhoneFLB
INPUT_CELLPHONE_CAMERA_EXPRESSIONPhoneXL3
INPUT_FRONTEND_DOWNFrontendARROW DOWNDPAD DOWN
INPUT_FRONTEND_UPFrontendARROW UPDPAD UP
INPUT_FRONTEND_LEFTFrontendARROW LEFTDPAD LEFT
INPUT_FRONTEND_RIGHTFrontendARROW RIGHTDPAD RIGHT
INPUT_FRONTEND_RDOWNFrontendENTERA
INPUT_FRONTEND_RUPFrontendTABY
INPUT_FRONTEND_RLEFTFrontendunboundX
INPUT_FRONTEND_RRIGHTFrontendBACKSPACEB
INPUT_FRONTEND_AXIS_XFrontendDLEFT STICK
INPUT_FRONTEND_AXIS_YFrontendSLEFT STICK
INPUT_FRONTEND_RIGHT_AXIS_XFrontend]RIGHT STICK
INPUT_FRONTEND_RIGHT_AXIS_YFrontendSCROLLWHEEL DOWNRIGHT STICK
INPUT_FRONTEND_PAUSEFrontendPSTART
INPUT_FRONTEND_PAUSE_ALTERNATEFrontendESCunbound
INPUT_FRONTEND_ACCEPTFrontendENTER / NUMPAD ENTERA
INPUT_FRONTEND_CANCELFrontendBACKSPACE / ESCB
INPUT_FRONTEND_XFrontendSPACEBARX
INPUT_FRONTEND_YFrontendTABY
INPUT_FRONTEND_LBFrontendQLB
INPUT_FRONTEND_RBFrontendERB
INPUT_FRONTEND_LTFrontendPAGE DOWNLT
INPUT_FRONTEND_RTFrontendPAGE UPRT
INPUT_FRONTEND_LSFrontendLEFT SHIFTL3
INPUT_FRONTEND_RSFrontendLEFT CONTROLR3
INPUT_FRONTEND_LEADERBOARDFrontendTABRB
INPUT_FRONTEND_SOCIAL_CLUBFrontendHOMEBACK
INPUT_FRONTEND_SOCIAL_CLUB_SECONDARYFrontendHOMERB
INPUT_FRONTEND_DELETEFrontendDELETEX
INPUT_FRONTEND_ENDSCREEN_ACCEPTFrontendENTERA
INPUT_FRONTEND_ENDSCREEN_EXPANDFrontendSPACEBARX
INPUT_FRONTEND_SELECTFrontendCAPSLOCKBACK
INPUT_SCRIPT_LEFT_AXIS_XScriptDLEFT STICK
INPUT_SCRIPT_LEFT_AXIS_YScriptSLEFT STICK
INPUT_SCRIPT_RIGHT_AXIS_XScriptMOUSE RIGHTRIGHT STICK
INPUT_SCRIPT_RIGHT_AXIS_YScriptMOUSE DOWNRIGHT STICK
INPUT_SCRIPT_RUPScriptRIGHT MOUSE BUTTONY
INPUT_SCRIPT_RDOWNScriptLEFT MOUSE BUTTONA
INPUT_SCRIPT_RLEFTScriptLEFT CTRLX
INPUT_SCRIPT_RRIGHTScriptRIGHT MOUSE BUTTONB
INPUT_SCRIPT_LBScriptunboundLB
INPUT_SCRIPT_RBScriptunboundRB
INPUT_SCRIPT_LTScriptunboundLT
INPUT_SCRIPT_RTScriptLEFT MOUSE BUTTONRT
INPUT_SCRIPT_LSScriptunboundL3
INPUT_SCRIPT_RSScriptunboundR3
INPUT_SCRIPT_PAD_UPScriptWDPAD UP
INPUT_SCRIPT_PAD_DOWNScriptSDPAD DOWN
INPUT_SCRIPT_PAD_LEFTScriptADPAD LEFT
INPUT_SCRIPT_PAD_RIGHTScriptDDPAD RIGHT
INPUT_SCRIPT_SELECTScriptVBACK
INPUT_CURSOR_ACCEPTFrontendLEFT MOUSE BUTTONunbound
INPUT_CURSOR_CANCELFrontendRIGHT MOUSE BUTTONunbound
INPUT_CURSOR_XFrontendunboundunbound
INPUT_CURSOR_YFrontendunboundunbound
INPUT_CURSOR_SCROLL_UPFrontendSCROLLWHEEL UPunbound
INPUT_CURSOR_SCROLL_DOWNFrontendSCROLLWHEEL DOWNunbound
INPUT_ENTER_CHEAT_CODEOn foot~ / `unbound
INPUT_INTERACTION_MENUFrontendMBACK
INPUT_MP_TEXT_CHAT_ALLFrontendTunbound
INPUT_MP_TEXT_CHAT_TEAMFrontendYunbound
INPUT_MP_TEXT_CHAT_FRIENDSFrontendunboundunbound
INPUT_MP_TEXT_CHAT_CREWFrontendunboundunbound
INPUT_PUSH_TO_TALKOn footNunbound
INPUT_CREATOR_LSReplay and creatorRL3
INPUT_CREATOR_RSReplay and creatorFR3
INPUT_CREATOR_LTReplay and creatorXLT
INPUT_CREATOR_RTReplay and creatorCRT
INPUT_CREATOR_MENU_TOGGLEReplay and creatorLEFT SHIFTunbound
INPUT_CREATOR_ACCEPTReplay and creatorSPACEBARA
INPUT_CREATOR_DELETEReplay and creatorDELETEX
INPUT_ATTACK2CombatLEFT MOUSE BUTTONRT
INPUT_RAPPEL_JUMPParachute and rappelunboundA
INPUT_RAPPEL_LONG_JUMPParachute and rappelunboundX
INPUT_RAPPEL_SMASH_WINDOWParachute and rappelunboundRT
INPUT_PREV_WEAPONCombatSCROLLWHEEL UPDPAD LEFT
INPUT_NEXT_WEAPONCombatSCROLLWHEEL DOWNDPAD RIGHT
INPUT_MELEE_ATTACK1CombatRB
INPUT_MELEE_ATTACK2CombatQA
INPUT_WHISTLEOn footunboundunbound
INPUT_MOVE_LEFTOn footDLEFT STICK
INPUT_MOVE_RIGHTOn footDLEFT STICK
INPUT_MOVE_UPOn footSLEFT STICK
INPUT_MOVE_DOWNOn footSLEFT STICK
INPUT_LOOK_LEFTCameraMOUSE RIGHTRIGHT STICK
INPUT_LOOK_RIGHTCameraMOUSE RIGHTRIGHT STICK
INPUT_LOOK_UPCameraMOUSE DOWNRIGHT STICK
INPUT_LOOK_DOWNCameraMOUSE DOWNRIGHT STICK
INPUT_SNIPER_ZOOM_INCombat[RIGHT STICK
INPUT_SNIPER_ZOOM_OUTCombat[RIGHT STICK
INPUT_SNIPER_ZOOM_IN_ALTERNATECombat[LEFT STICK
INPUT_SNIPER_ZOOM_OUT_ALTERNATECombat[LEFT STICK
INPUT_VEH_MOVE_LEFTVehicleDLEFT STICK
INPUT_VEH_MOVE_RIGHTVehicleDLEFT STICK
INPUT_VEH_MOVE_UPVehicleLEFT CTRLLEFT STICK
INPUT_VEH_MOVE_DOWNVehicleLEFT CTRLLEFT STICK
INPUT_VEH_GUN_LEFTVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_GUN_RIGHTVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_GUN_UPVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_GUN_DOWNVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_LOOK_LEFTVehicleMOUSE RIGHTRIGHT STICK
INPUT_VEH_LOOK_RIGHTVehicleMOUSE RIGHTRIGHT STICK
INPUT_REPLAY_START_STOP_RECORDINGReplay and creatorF1A
INPUT_REPLAY_START_STOP_RECORDING_SECONDARYReplay and creatorF2X
INPUT_SCALED_LOOK_LROn footMOUSE RIGHTRIGHT STICK
INPUT_SCALED_LOOK_UDOn footMOUSE DOWNRIGHT STICK
INPUT_SCALED_LOOK_UP_ONLYOn footunboundRIGHT STICK
INPUT_SCALED_LOOK_DOWN_ONLYOn footunboundRIGHT STICK
INPUT_SCALED_LOOK_LEFT_ONLYOn footunboundRIGHT STICK
INPUT_SCALED_LOOK_RIGHT_ONLYOn footunboundRIGHT STICK
INPUT_REPLAY_MARKER_DELETEReplay and creatorDELETEX
INPUT_REPLAY_CLIP_DELETEReplay and creatorDELETEY
INPUT_REPLAY_PAUSEReplay and creatorSPACEBARA
INPUT_REPLAY_REWINDReplay and creatorARROW DOWNLB
INPUT_REPLAY_FFWDReplay and creatorARROW UPRB
INPUT_REPLAY_NEWMARKERReplay and creatorMA
INPUT_REPLAY_RECORDReplay and creatorSunbound
INPUT_REPLAY_SCREENSHOTReplay and creatorUDPAD UP
INPUT_REPLAY_HIDEHUDReplay and creatorHR3
INPUT_REPLAY_STARTPOINTReplay and creatorBunbound
INPUT_REPLAY_ENDPOINTReplay and creatorNunbound
INPUT_REPLAY_ADVANCEReplay and creatorARROW RIGHTDPAD RIGHT
INPUT_REPLAY_BACKReplay and creatorARROW LEFTDPAD LEFT
INPUT_REPLAY_TOOLSReplay and creatorTDPAD DOWN
INPUT_REPLAY_RESTARTReplay and creatorRBACK
INPUT_REPLAY_SHOWHOTKEYReplay and creatorKDPAD DOWN
INPUT_REPLAY_CYCLEMARKERLEFTReplay and creator[DPAD LEFT
INPUT_REPLAY_CYCLEMARKERRIGHTReplay and creator]DPAD RIGHT
INPUT_REPLAY_FOVINCREASEReplay and creatorNUMPAD +RB
INPUT_REPLAY_FOVDECREASEReplay and creatorNUMPAD -LB
INPUT_REPLAY_CAMERAUPReplay and creatorPAGE UPunbound
INPUT_REPLAY_CAMERADOWNReplay and creatorPAGE DOWNunbound
INPUT_REPLAY_SAVEReplay and creatorF5START
INPUT_REPLAY_TOGGLETIMEReplay and creatorCunbound
INPUT_REPLAY_TOGGLETIPSReplay and creatorVunbound
INPUT_REPLAY_PREVIEWReplay and creatorSPACEBARunbound
INPUT_REPLAY_TOGGLE_TIMELINEReplay and creatorESCunbound
INPUT_REPLAY_TIMELINE_PICKUP_CLIPReplay and creatorXunbound
INPUT_REPLAY_TIMELINE_DUPLICATE_CLIPReplay and creatorCunbound
INPUT_REPLAY_TIMELINE_PLACE_CLIPReplay and creatorVunbound
INPUT_REPLAY_CTRLReplay and creatorLEFT CTRLunbound
INPUT_REPLAY_TIMELINE_SAVEReplay and creatorF5unbound
INPUT_REPLAY_PREVIEW_AUDIOReplay and creatorSPACEBARRT
INPUT_VEH_DRIVE_LOOKVehicleLEFT MOUSE BUTTONunbound
INPUT_VEH_DRIVE_LOOK2VehicleRIGHT MOUSE BUTTONunbound
INPUT_VEH_FLY_ATTACK2VehicleRIGHT MOUSE BUTTONunbound
INPUT_RADIO_WHEEL_UDOn footMOUSE DOWNRIGHT STICK
INPUT_RADIO_WHEEL_LROn footMOUSE RIGHTRIGHT STICK
INPUT_VEH_SLOWMO_UDVehicleSCROLLWHEEL DOWNLEFT STICK
INPUT_VEH_SLOWMO_UP_ONLYVehicleSCROLLWHEEL UPLEFT STICK
INPUT_VEH_SLOWMO_DOWN_ONLYVehicleSCROLLWHEEL DOWNLEFT STICK
INPUT_VEH_HYDRAULICS_CONTROL_TOGGLEVehicleXA
INPUT_VEH_HYDRAULICS_CONTROL_LEFTVehicleALEFT STICK
INPUT_VEH_HYDRAULICS_CONTROL_RIGHTVehicleDLEFT STICK
INPUT_VEH_HYDRAULICS_CONTROL_UPVehicleLEFT SHIFTLEFT STICK
INPUT_VEH_HYDRAULICS_CONTROL_DOWNVehicleLEFT CTRLLEFT STICK
INPUT_VEH_HYDRAULICS_CONTROL_UDVehicleDLEFT STICK
INPUT_VEH_HYDRAULICS_CONTROL_LRVehicleLEFT CTRLLEFT STICK
INPUT_SWITCH_VISOROn footF11DPAD RIGHT
INPUT_VEH_MELEE_HOLDVehicleXA
INPUT_VEH_MELEE_LEFTVehicleLEFT MOUSE BUTTONLB
INPUT_VEH_MELEE_RIGHTVehicleRIGHT MOUSE BUTTONRB
INPUT_MAP_POIFrontendSCROLLWHEEL BUTTON (PRESS)Y
INPUT_REPLAY_SNAPMATIC_PHOTOReplay and creatorTABX
INPUT_VEH_CAR_JUMPVehicleEL3
INPUT_VEH_ROCKET_BOOSTVehicleEL3
INPUT_VEH_FLY_BOOSTVehicleLEFT SHIFTL3
INPUT_VEH_PARACHUTEVehicleSPACEBARA
INPUT_VEH_BIKE_WINGSVehicleXA
INPUT_VEH_FLY_BOMB_BAYVehicleEDPAD RIGHT
INPUT_VEH_FLY_COUNTERVehicleEDPAD RIGHT
INPUT_VEH_TRANSFORMVehicleXA
INPUT_QUAD_LOCO_REVERSEVehicleunboundRB
INPUT_RESPAWN_FASTEROn footunboundunbound
INPUT_HUDMARKER_SELECTFrontendunboundunbound
Disable a whole set of controls every frame

The pattern every script that takes the keyboard off the player ends up writing.

-- Lock the player out of a set of inputs while something is open.
-- Only the controls in the list are taken away, so walking, looking around and
-- the pause menu all still work. DisableAllControlActions(0) is the blunt
-- version and it takes the pause menu with it, which players notice.
local BLOCKED = {
    24,  -- INPUT_ATTACK
    25,  -- INPUT_AIM
    37,  -- INPUT_SELECT_WEAPON
    47,  -- INPUT_DETONATE
    140, -- INPUT_MELEE_ATTACK_LIGHT
    141, -- INPUT_MELEE_ATTACK_HEAVY
    142, -- INPUT_MELEE_ATTACK_ALTERNATE
    143, -- INPUT_MELEE_BLOCK
    257, -- INPUT_ATTACK2
    263, -- INPUT_MELEE_ATTACK1
    264, -- INPUT_MELEE_ATTACK2
}

local locked = false

function SetControlsLocked(state)
    locked = state
end

CreateThread(function()
    while true do
        -- Wait(0) while locked, a long wait otherwise: an idle resource that
        -- runs an empty loop every frame is a measurable cost on a full server.
        if locked then
            for i = 1, #BLOCKED do
                DisableControlAction(0, BLOCKED[i], true)
            end
            Wait(0)
        else
            Wait(250)
        end
    end
end)

HOW TO USE IT

Five steps, and two of them are where the time goes

Reading an input in GTA 5 is three lines. Keeping it working once you also want the game to stop reacting to the same key is where most of the questions come from.

  1. 01 Find the index, not the key

    Look the control up here by name or by pressing the key in the panel above. From that point on your script talks about the index. A player who moved interact to F still triggers control 51, and you never have to know.

  2. 02 Poll it every frame

    All of these checks describe one frame. Put the check inside CreateThread with Wait(0), and keep that loop small — it runs sixty-odd times a second for every player on the server.

  3. 03 Pass 0 as the first argument

    The reference calls it padIndex and lists two control types, 0 and 2. The documentation for DisableControlAction states outright that groups 0 and 1 give the same results as 2, so 0 is the honest default and anything else is cargo cult.

  4. 04 If you disable it, read the disabled variant

    DisableControlAction makes the plain checks blind to that control. Swap IsControlJustPressed for IsDisabledControlJustPressed in the same loop and the key is yours alone.

  5. 05 Stop the loop when nothing is open

    A keybind resource that runs Wait(0) forever costs the same whether a menu is open or not. Gate the fast loop behind a flag and wait 250ms when there is nothing to do.

Read a control — the whole pattern

Client side. Control 51 is INPUT_CONTEXT, the generic interact input, on E by default.

-- INPUT_CONTEXT — control 51
-- Client side. IsControlJustPressed is true on the single frame the input
-- goes down, so it has to be polled every frame: a thread that waits 100ms
-- will miss presses and feel broken rather than look broken.
CreateThread(function()
    while true do
        Wait(0)
        if IsControlJustPressed(0, 51) then
            print('INPUT_CONTEXT pressed')
        end
    end
end)

THE FIRST ARGUMENT

0, 1 or 2 — what the control group really is

Half the snippets on the internet pass 0 and half pass 2, nobody explains why, and the honest answer is shorter than the folklore.

  • What the reference actually says

    The native signature names that argument padIndex, not a control group. The Cfx.re controls page has a short “control types” table with two rows: 0 is PLAYER_CONTROL and 2 is FRONTEND_CONTROL. There is no published name for 1 — the value people call CONTROL_CAMERA is a community label, not something the documentation gives.

    And the documentation for DISABLE_CONTROL_ACTION states it outright: control group 1 and 0 give the same results as 2. So on PC, with one player and one pad, the three values behave the same for these natives.

    Practical answer: pass 0. A menu snippet that passes 2 is not wrong, it is a habit inherited from the decompiled scripts. If a tutorial tells you 2 is required for frontend input, it is repeating something the reference contradicts.

THE CHECKS

Pressed, just-pressed, and the disabled pair

Four natives that look interchangeable and are not. Picking the wrong one produces a menu that flickers or a keybind that silently dies.

  • IsControlPressed(padIndex, control)

    True on every frame the input is held down.

    Continuous things: a horn, a torch, holding a door open. If you use this for a toggle you get the toggle flipping sixty times a second.

  • IsControlJustPressed(padIndex, control)

    True only on the frame the input goes from up to down. The reference describes it as newly pressed since the last check.

    Everything discrete: open a menu, pick something up, fire a one-shot action. This is the one you want nine times in ten.

  • IsControlJustReleased(padIndex, control)

    True on the frame the input comes back up.

    Hold-to-act, and anything where you need to know how long the key was down. Pair it with GetGameTimer at the press.

  • IsDisabledControlPressed(padIndex, control)

    The same as IsControlPressed, but it still reports a control that your own script has disabled this frame.

    Any key you took away from the game with DisableControlAction and still want to read. The plain check will not see it.

  • IsDisabledControlJustPressed(padIndex, control)

    The just-pressed edge, for a disabled control.

    The combination most menus need: the game must not act on E, but the menu must.

  • DisableControlAction(padIndex, control, disable)

    Takes one control away from the game for one frame. Its own documentation says it needs to be executed each frame.

    Inside a per-frame loop, never once at startup. Call it once and it is undone before the player notices.

  • GetControlNormal(padIndex, control)

    The analogue value of an input as a float rather than a boolean.

    Sticks, triggers and the mouse axes — the inputs a pressed check cannot describe.

  • GetControlInstructionalButton(padIndex, control, p2)

    Returns the glyph string for a control, as the pause menu and the help text draw it.

    Showing the player which key to press without hardcoding "E" — it follows their own bindings and their pad.

Disable a control and still read it

Client side. This is the pair that confuses everyone: the plain check goes blind the moment you disable the control, so the loop reads the disabled variant instead.

-- Take INPUT_PICKUP (control 38) off the game and read it yourself.
-- Two things matter here. DisableControlAction has to run every frame — it
-- lasts exactly one frame. And once a control is disabled, IsControlJustPressed
-- stops returning true for it, which is why the check below is the DISABLED
-- variant. Mixing those two up is the single most common reason a keybind
-- "stops working" the moment somebody disables the key.
CreateThread(function()
    while true do
        Wait(0)
        DisableControlAction(0, 38, true)

        if IsDisabledControlJustPressed(0, 38) then
            print('INPUT_PICKUP pressed, and the game never saw it')
        end
    end
end)
Analogue inputs — sticks, triggers and the mouse axes

Client side. A pressed check cannot describe a stick, so the axes have their own getter — with a disabled twin for the same reason.

-- The analogue inputs are not on/off, so they are read as a normal.
-- GetControlNormal returns -1.0 to 1.0 for an axis and 0.0 to 1.0 for a
-- trigger, on both a pad and mouse-and-keyboard.
CreateThread(function()
    while true do
        Wait(0)
        local lr = GetControlNormal(0, 1)  -- INPUT_LOOK_LR
        local ud = GetControlNormal(0, 2)  -- INPUT_LOOK_UD

        if math.abs(lr) > 0.2 or math.abs(ud) > 0.2 then
            print(('looking %.2f / %.2f'):format(lr, ud))
        end
    end
end)

-- Disabled the control but still want the stick value? There is a separate
-- getter for that too, for the same reason the pressed checks have one.
-- GetDisabledControlNormal(0, 1)

OUR GROUPING

Nine buckets, so 361 rows are usable

These labels are ours. We derive them from the INPUT_ name because the published table has no category column — they are a filter, not a fact about the engine.

  • On foot 36

    Walking, sprinting, jumping, cover, entering vehicles.

  • Combat 46

    Aiming, firing, melee, weapon selection, the sniper zoom.

  • Vehicle 116

    Every INPUT_VEH_ control - cars, bikes, boats, planes, submarines.

  • Camera 13

    The look axes, the camera switch, the cinematic slow-motion.

  • Frontend 52

    Pause menu, the map, the cursor, the character and interaction wheels.

  • Phone 16

    The in-game phone, including the camera mode keys.

  • Script 23

    The INPUT_SCRIPT_ controls the game leaves for scripts to read.

  • Replay and creator 44

    The Rockstar Editor and the mission creator.

  • Parachute and rappel 15

    Parachute steering, smoke, and rappelling out of a helicopter.

QUESTIONS

About FiveM control IDs

What is the first argument of IsControlPressed — 0, 1 or 2?
The native reference calls that argument padIndex, and the controls reference lists two control types: 0 (PLAYER_CONTROL) and 2 (FRONTEND_CONTROL). There is no published name for 1. The documentation for DISABLE_CONTROL_ACTION says in plain words that control group 1 and 0 give the same results as 2, which matches what people find in practice: on PC, with one pad, all three behave the same for these natives. Pass 0. If you see a snippet using 2 for a menu, that is a habit rather than a requirement — it works, and so does 0.
Why does my keybind stop working as soon as I disable the key?
Because that is what disabling means. DisableControlAction takes the control away from the input system for that frame, and IsControlPressed and IsControlJustPressed stop returning true for it — including for you. There is a parallel set of natives for exactly this case: IsDisabledControlPressed and IsDisabledControlJustPressed still report the input. Disable the control so the game ignores it, read it with the disabled variant so your script does not.
What is the difference between IsControlPressed and IsControlJustPressed?
IsControlPressed is true on every frame the key is held, so a loop running at 60 fps sees it sixty times a second. IsControlJustPressed is true on one frame only, the one where the key went down. Use just-pressed for anything that happens once — opening a menu, taking an item — and pressed for anything that continues while held. A menu that opens and closes repeatedly is almost always this bug.
One key shows several control indices. Which one do I use?
That is normal rather than a mistake in the data: 43 default keys are shared by more than one control, and the busiest single key is D with 18 controls on it. E is both INPUT_PICKUP (38) and INPUT_CONTEXT (51). The game decides which applies from what the player is doing. For your own script, pick the index whose name matches the situation you are in — INPUT_CONTEXT for a generic interaction prompt — and if you need the key to yourself regardless, disable all of the indices that share it.
Is the keyboard column what my players actually have bound?
No, and that is the whole reason to use indices. The keyboard and pad columns are the game's defaults as the Cfx.re reference publishes them. A player who rebound a key in the pause menu, uses a non-QWERTY layout, or plays on a pad has different keys and the same indices. 30 of the 361 controls have no keyboard default at all — those are the safe ones to claim for your own resource, and GetControlInstructionalButton will draw whatever the player has bound, so you never have to print a key name yourself.
How many control indices are there?
361, numbered 0 to 360 with no gaps. 331 have a default keyboard binding, 294 have a default Xbox pad binding, and 10 have neither. Later indices tend to be newer additions, so an index that exists in the published table may still do nothing useful in a given build.