Controls

From RAGE Multiplayer Wiki

Game Control

Control Id

Equivalent Keyboard / Mouse Button

INPUT_NEXT_CAMERA 0 V
INPUT_LOOK_LR 1 Left Mouse Button
INPUT_LOOK_UD 2 Right Mouse Button
INPUT_LOOK_UP_ONLY 3 Control-Break Processing
INPUT_LOOK_DOWN_ONLY 4 Middle Mouse Button
INPUT_LOOK_LEFT_ONLY 5
INPUT_LOOK_RIGHT_ONLY 6 Right Mouse Button
INPUT_CINEMATIC_SLOWMO 7 L
INPUT_SCRIPTED_FLY_UD 8 S
INPUT_SCRIPTED_FLY_LR 9 D
INPUT_SCRIPTED_FLY_ZUP 10 PAGE UP
INPUT_SCRIPTED_FLY_ZDOWN 11 PAGE DOWN
INPUT_WEAPON_WHEEL_UD 12 MOUSE DOWN
INPUT_WEAPON_WHEEL_LR 13 MOUSE RIGHT
INPUT_WEAPON_WHEEL_NEXT 14 MOUSE SCROLL WHEEL DOWN
INPUT_WEAPON_WHEEL_PREV 15 MOUSE SCROLL WHEEL UP
INPUT_SELECT_NEXT_WEAPON 16 MOUSE SCROLL WHEEL DOWN
INPUT_SELECT_PREV_WEAPON 17 MOUSE SCROLL WHEEL UP
INPUT_SKIP_CUTSCENE 18 ENTER / LEFT MOUSE BUTTON / SPACEBAR
INPUT_CHARACTER_WHEEL 19 LEFT ALT
INPUT_MULTIPLAYER_INFO 20 Z
INPUT_SPRINT 21 Shift Key
INPUT_JUMP 22 Space Key
INPUT_ENTER 23 Enter Key
INPUT_ATTACK 24 Left Mouse Button
INPUT_AIM 25 Right Mouse Button
INPUT_LOOK_BEHIND 26 C
INPUT_PHONE 27 ARROW UP/SCROLLWHEEL BUTTON (press)
INPUT_SPECIAL_ABILITY 28
INPUT_SPECIAL_ABILITY_SECONDARY 29 B
INPUT_MOVE_LR 30 D
INPUT_MOVE_UD 31 S
INPUT_MOVE_UP_ONLY 32 W
INPUT_MOVE_DOWN_ONLY 33 S
INPUT_MOVE_LEFT_ONLY 34 A
INPUT_MOVE_RIGHT_ONLY 35 D
INPUT_DUCK 36 LEFT CONTROL
INPUT_SELECT_WEAPON 37 TAB
INPUT_PICKUP 38 E
INPUT_SNIPER_ZOOM 39 [
INPUT_SNIPER_ZOOM_IN_ONLY 40 ]
INPUT_SNIPER_ZOOM_OUT_ONLY 41 [
INPUT_SNIPER_ZOOM_IN_SECONDARY 42 ]
INPUT_SNIPER_ZOOM_OUT_SECONDARY 43 [
INPUT_COVER 44 Q
INPUT_RELOAD 45 R
INPUT_TALK 46 E
INPUT_DETONATE 47 G
INPUT_HUD_SPECIAL 48 Z
INPUT_ARREST 49 F
INPUT_ACCURATE_AIM 50 SCROLLWHEEL DOWN
INPUT_CONTEXT 51 E
INPUT_CONTEXT_SECONDARY 52 Q
INPUT_WEAPON_SPECIAL 53
INPUT_WEAPON_SPECIAL_TWO 54 E
INPUT_DIVE 55 SPACEBAR
INPUT_DROP_WEAPON 56 F9
INPUT_DROP_AMMO 57 F10
INPUT_THROW_GRENADE 58 G
INPUT_VEH_MOVE_LR 59 D
INPUT_VEH_MOVE_UD 60 LEFT CTRL
INPUT_VEH_MOVE_UP_ONLY 61 LEFT SHIFT
INPUT_VEH_MOVE_DOWN_ONLY 62 LEFT CTRL
INPUT_VEH_MOVE_LEFT_ONLY 63 A
INPUT_VEH_MOVE_RIGHT_ONLY 64 D
INPUT_VEH_SPECIAL 65
INPUT_VEH_GUN_LR 66 MOUSE RIGHT
INPUT_VEH_GUN_UD 67 MOUSE DOWN
INPUT_VEH_AIM 68 RIGHT MOUSE BUTTON
INPUT_VEH_ATTACK 69 LEFT MOUSE BUTTON
INPUT_VEH_ATTACK2 70 RIGHT MOUSE BUTTON
INPUT_VEH_ACCELERATE 71 W
INPUT_VEH_BRAKE 72 S
INPUT_VEH_DUCK 73 X
INPUT_VEH_HEADLIGHT 74 H
INPUT_VEH_EXIT 75 F
INPUT_VEH_HANDBRAKE 76 SPACEBAR
INPUT_VEH_HOTWIRE_LEFT 77 W
INPUT_VEH_HOTWIRE_RIGHT 78 S
INPUT_VEH_LOOK_BEHIND 79 C
INPUT_VEH_CIN_CAM 80 R
INPUT_VEH_NEXT_RADIO 81 .
INPUT_VEH_PREV_RADIO 82 ,
INPUT_VEH_NEXT_RADIO_TRACK 83 =
INPUT_VEH_PREV_RADIO_TRACK 84 -
INPUT_VEH_RADIO_WHEEL 85 Q
INPUT_VEH_HORN 86 E
INPUT_VEH_FLY_THROTTLE_UP 87 W
INPUT_VEH_FLY_THROTTLE_DOWN 88 S
INPUT_VEH_FLY_YAW_LEFT 89 A
INPUT_VEH_FLY_YAW_RIGHT 90 D
INPUT_VEH_PASSENGER_AIM 91 RIGHT MOUSE BUTTON
INPUT_VEH_PASSENGER_ATTACK 92 LEFT MOUSE BUTTON
INPUT_VEH_SPECIAL_ABILITY_FRANKLIN 93
INPUT_VEH_STUNT_UD 94
INPUT_VEH_CINEMATIC_UD 95 MOUSE DOWN
INPUT_VEH_CINEMATIC_UP_ONLY 96 NUMPAD- / SCROLLWHEEL UP
INPUT_VEH_CINEMATIC_DOWN_ONLY 97 NUMPAD+ / SCROLLWHEEL DOWN
INPUT_VEH_CINEMATIC_LR 98 MOUSE RIGHT
INPUT_VEH_SELECT_NEXT_WEAPON 99 SCROLLWHEEL UP
INPUT_VEH_SELECT_PREV_WEAPON 100 [
INPUT_VEH_ROOF 101 H
INPUT_VEH_JUMP 102 SPACEBAR
INPUT_VEH_GRAPPLING_HOOK 103 E
INPUT_VEH_SHUFFLE 104 H
INPUT_VEH_DROP_PROJECTILE 105 X
INPUT_VEH_MOUSE_CONTROL_OVERRIDE 106 LEFT MOUSE BUTTON
INPUT_VEH_FLY_ROLL_LR 107 NUMPAD 6
INPUT_VEH_FLY_ROLL_LEFT_ONLY 108 NUMPAD 4
INPUT_VEH_FLY_ROLL_RIGHT_ONLY 109 NUMPAD 6
INPUT_VEH_FLY_PITCH_UD 110 NUMPAD 5
INPUT_VEH_FLY_PITCH_UP_ONLY 111 NUMPAD 8
INPUT_VEH_FLY_PITCH_DOWN_ONLY 112 NUMPAD 5
INPUT_VEH_FLY_UNDERCARRIAGE 113 G
INPUT_VEH_FLY_ATTACK 114 RIGHT MOUSE BUTTON
INPUT_VEH_FLY_SELECT_NEXT_WEAPON 115 SCROLLWHEEL UP
INPUT_VEH_FLY_SELECT_PREV_WEAPON 116 [
INPUT_VEH_FLY_SELECT_TARGET_LEFT 117 NUMPAD 7
INPUT_VEH_FLY_SELECT_TARGET_RIGHT 118 NUMPAD 9
INPUT_VEH_FLY_VERTICAL_FLIGHT_MODE 119 E
INPUT_VEH_FLY_DUCK 120 X
INPUT_VEH_FLY_ATTACK_CAMERA 121 INSERT
INPUT_VEH_FLY_MOUSE_CONTROL_OVERRIDE 122 LEFT MOUSE BUTTON
INPUT_VEH_SUB_TURN_LR 123 NUMPAD 6
INPUT_VEH_SUB_TURN_LEFT_ONLY 124 NUMPAD 4
INPUT_VEH_SUB_TURN_RIGHT_ONLY 125 NUMPAD 6
INPUT_VEH_SUB_PITCH_UD 126 NUMPAD 5
INPUT_VEH_SUB_PITCH_UP_ONLY 127 NUMPAD 8
INPUT_VEH_SUB_PITCH_DOWN_ONLY 128 NUMPAD 5
INPUT_VEH_SUB_THROTTLE_UP 129 W
INPUT_VEH_SUB_THROTTLE_DOWN 130 S
INPUT_VEH_SUB_ASCEND 131 LEFT SHIFT
INPUT_VEH_SUB_DESCEND 132 LEFT CTRL
INPUT_VEH_SUB_TURN_HARD_LEFT 133 A
INPUT_VEH_SUB_TURN_HARD_RIGHT 134 D
INPUT_VEH_SUB_MOUSE_CONTROL_OVERRIDE 135 LEFT MOUSE BUTTON
INPUT_VEH_PUSHBIKE_PEDAL 136 W
INPUT_VEH_PUSHBIKE_SPRINT 137 CAPSLOCK
INPUT_VEH_PUSHBIKE_FRONT_BRAKE 138 Q
INPUT_VEH_PUSHBIKE_REAR_BRAKE 139 S
INPUT_MELEE_ATTACK_LIGHT 140 R
INPUT_MELEE_ATTACK_HEAVY 141 Q
INPUT_MELEE_ATTACK_ALTERNATE 142 LEFT MOUSE BUTTON
INPUT_MELEE_BLOCK 143 SPACEBAR
INPUT_PARACHUTE_DEPLOY 144 F / LEFT MOUSE BUTTON
INPUT_PARACHUTE_DETACH 145 F
INPUT_PARACHUTE_TURN_LR 146 D
INPUT_PARACHUTE_TURN_LEFT_ONLY 147 A
INPUT_PARACHUTE_TURN_RIGHT_ONLY 148 D
INPUT_PARACHUTE_PITCH_UD 149 S
INPUT_PARACHUTE_PITCH_UP_ONLY 150 W
INPUT_PARACHUTE_PITCH_DOWN_ONLY 151 S
INPUT_PARACHUTE_BRAKE_LEFT 152 Q
INPUT_PARACHUTE_BRAKE_RIGHT 153 E
INPUT_PARACHUTE_SMOKE 154 X
INPUT_PARACHUTE_PRECISION_LANDING 155 LEFT SHIFT
INPUT_MAP 156
INPUT_SELECT_WEAPON_UNARMED 157 1
INPUT_SELECT_WEAPON_MELEE 158 2
INPUT_SELECT_WEAPON_HANDGUN 159 6
INPUT_SELECT_WEAPON_SHOTGUN 160 3
INPUT_SELECT_WEAPON_SMG 161 7
INPUT_SELECT_WEAPON_AUTO_RIFLE 162 8
INPUT_SELECT_WEAPON_SNIPER 163 9
INPUT_SELECT_WEAPON_HEAVY 164 4
INPUT_SELECT_WEAPON_SPECIAL 165 5
INPUT_SELECT_CHARACTER_MICHAEL 166 F5
INPUT_SELECT_CHARACTER_FRANKLIN 167 F6
INPUT_SELECT_CHARACTER_TREVOR 168 F7
INPUT_SELECT_CHARACTER_MULTIPLAYER 169 F8
INPUT_SAVE_REPLAY_CLIP 170 F3
INPUT_SPECIAL_ABILITY_PC 171 CAPSLOCK
INPUT_CELLPHONE_UP 172 ARROW UP
INPUT_CELLPHONE_DOWN 173 ARROW DOWN
INPUT_CELLPHONE_LEFT 174 ARROW LEFT
INPUT_CELLPHONE_RIGHT 175 ARROW RIGHT
INPUT_CELLPHONE_SELECT 176 ENTER/LEFT MOUSE BUTTON
INPUT_CELLPHONE_CANCEL 177 BACKSPACE/ESC/RIGHT MOUSE BUTTON
INPUT_CELLPHONE_OPTION 178 DELETE
INPUT_CELLPHONE_EXTRA_OPTION 179 SPACEBAR
INPUT_CELLPHONE_SCROLL_FORWARD 180 SCROLLWHEEL DOWN
INPUT_CELLPHONE_SCROLL_BACKWARD 181 SCROLLWHEEL UP
INPUT_CELLPHONE_CAMERA_FOCUS_LOCK 182 L
INPUT_CELLPHONE_CAMERA_GRID 183 G
INPUT_CELLPHONE_CAMERA_SELFIE 184 E
INPUT_CELLPHONE_CAMERA_DOF 185 F
INPUT_CELLPHONE_CAMERA_EXPRESSION 186 X
INPUT_FRONTEND_DOWN 187 ARROW DOWN
INPUT_FRONTEND_UP 188 ARROW UP
INPUT_FRONTEND_LEFT 189 ARROW LEFT
INPUT_FRONTEND_RIGHT 190 ARROW RIGHT
INPUT_FRONTEND_RDOWN 191 ENTER
INPUT_FRONTEND_RUP 192 TAB
INPUT_FRONTEND_RLEFT 193
INPUT_FRONTEND_RRIGHT 194 BACKSPACE
INPUT_FRONTEND_AXIS_X 195 D
INPUT_FRONTEND_AXIS_Y 196 S
INPUT_FRONTEND_RIGHT_AXIS_X 197 ]
INPUT_FRONTEND_RIGHT_AXIS_Y 198 SCROLLWHEEL DOWN
INPUT_FRONTEND_PAUSE 199 P
INPUT_FRONTEND_PAUSE_ALTERNATE 200 ESC
INPUT_FRONTEND_ACCEPT 201 ENTER/NUMPAD ENTER
INPUT_FRONTEND_CANCEL 202 BACKSPACE/ESC
INPUT_FRONTEND_X 203 SPACEBAR
INPUT_FRONTEND_Y 204 TAB
INPUT_FRONTEND_LB 205 Q
INPUT_FRONTEND_RB 206 E
INPUT_FRONTEND_LT 207 PAGE DOWN
INPUT_FRONTEND_RT 208 PAGE UP
INPUT_FRONTEND_LS 209 LEFT SHIFT
INPUT_FRONTEND_RS 210 LEFT CTRL
INPUT_FRONTEND_LEADERBOARD 211 TAB
INPUT_FRONTEND_SOCIAL_CLUB 212 HOME
INPUT_FRONTEND_SOCIAL_CLUB_SECONDARY 213 HOME
INPUT_FRONTEND_DELETE 214 DELETE
INPUT_FRONTEND_ENDSCREEN_ACCEPT 215 ENTER
INPUT_FRONTEND_ENDSCREEN_EXPAND 216 SPACEBAR
INPUT_FRONTEND_SELECT 217 CAPSLOCK
INPUT_SCRIPT_LEFT_AXIS_X 218 D
INPUT_SCRIPT_LEFT_AXIS_Y 219 S
INPUT_SCRIPT_RIGHT_AXIS_X 220 MOUSE RIGHT
INPUT_SCRIPT_RIGHT_AXIS_Y 221 MOUSE DOWN
INPUT_SCRIPT_RUP 222 RIGHT MOUSE BUTTON
INPUT_SCRIPT_RDOWN 223 LEFT MOUSE BUTTON
INPUT_SCRIPT_RLEFT 224 LEFT CTRL
INPUT_SCRIPT_RRIGHT 225 RIGHT MOUSE BUTTON
INPUT_SCRIPT_LB 226
INPUT_SCRIPT_RB 227
INPUT_SCRIPT_LT 228
INPUT_SCRIPT_RT 229 LEFT MOUSE BUTTON
INPUT_SCRIPT_LS 230
INPUT_SCRIPT_RS 231
INPUT_SCRIPT_PAD_UP 232 W
INPUT_SCRIPT_PAD_DOWN 233 S
INPUT_SCRIPT_PAD_LEFT 234 A
INPUT_SCRIPT_PAD_RIGHT 235 D
INPUT_SCRIPT_SELECT 236 V
INPUT_CURSOR_ACCEPT 237 LEFT MOUSE BUTTON
INPUT_CURSOR_CANCEL 238 RIGHT MOUSE BUTTON
INPUT_CURSOR_X 239
INPUT_CURSOR_Y 240
INPUT_CURSOR_SCROLL_UP 241 SCROLLWHEEL UP
INPUT_CURSOR_SCROLL_DOWN 242 SCROLLWHEEL DOWN
INPUT_ENTER_CHEAT_CODE 243 ~ / `
INPUT_INTERACTION_MENU 244 M
INPUT_MP_TEXT_CHAT_ALL 245 T
INPUT_MP_TEXT_CHAT_TEAM 246 Y
INPUT_MP_TEXT_CHAT_FRIENDS 247
INPUT_MP_TEXT_CHAT_CREW 248
INPUT_PUSH_TO_TALK 249 N
INPUT_CREATOR_LS 250 R
INPUT_CREATOR_RS 251 F
INPUT_CREATOR_LT 252 X
INPUT_CREATOR_RT 253 C
INPUT_CREATOR_MENU_TOGGLE 254 LEFT SHIFT
INPUT_CREATOR_ACCEPT 255 SPACEBAR
INPUT_CREATOR_DELETE 256 DELETE
INPUT_ATTACK2 257 LEFT MOUSE BUTTON
INPUT_RAPPEL_JUMP 258
INPUT_RAPPEL_LONG_JUMP 259
INPUT_RAPPEL_SMASH_WINDOW 260
INPUT_PREV_WEAPON 261 SCROLLWHEEL UP
INPUT_NEXT_WEAPON 262 SCROLLWHEEL DOWN
INPUT_MELEE_ATTACK1 263 R
INPUT_MELEE_ATTACK2 264 Q
INPUT_WHISTLE 265
INPUT_MOVE_LEFT 266 D
INPUT_MOVE_RIGHT 267 D
INPUT_MOVE_UP 268 S
INPUT_MOVE_DOWN 269 S
INPUT_LOOK_LEFT 270 MOUSE RIGHT
INPUT_LOOK_RIGHT 271 MOUSE RIGHT
INPUT_LOOK_UP 272 MOUSE DOWN
INPUT_LOOK_DOWN 273 MOUSE DOWN
INPUT_SNIPER_ZOOM_IN 274 [
INPUT_SNIPER_ZOOM_OUT 275 [
INPUT_SNIPER_ZOOM_IN_ALTERNATE 276 [
INPUT_SNIPER_ZOOM_OUT_ALTERNATE 277 [
INPUT_VEH_MOVE_LEFT 278 D
INPUT_VEH_MOVE_RIGHT 279 D
INPUT_VEH_MOVE_UP 280 LEFT CTRL
INPUT_VEH_MOVE_DOWN 281 LEFT CTRL
INPUT_VEH_GUN_LEFT 282 MOUSE RIGHT
INPUT_VEH_GUN_RIGHT 283 MOUSE RIGHT
INPUT_VEH_GUN_UP 284 MOUSE RIGHT
INPUT_VEH_GUN_DOWN 285 MOUSE RIGHT
INPUT_VEH_LOOK_LEFT 286 MOUSE RIGHT
INPUT_VEH_LOOK_RIGHT 287 MOUSE RIGHT
INPUT_REPLAY_START_STOP_RECORDING 288 F1
INPUT_REPLAY_START_STOP_RECORDING_SECONDARY 289 F2
INPUT_SCALED_LOOK_LR 290 MOUSE RIGHT
INPUT_SCALED_LOOK_UD 291 MOUSE DOWN
INPUT_SCALED_LOOK_UP_ONLY 292
INPUT_SCALED_LOOK_DOWN_ONLY 293
INPUT_SCALED_LOOK_LEFT_ONLY 294
INPUT_SCALED_LOOK_RIGHT_ONLY 295
INPUT_REPLAY_MARKER_DELETE 296 DELETE
INPUT_REPLAY_CLIP_DELETE 297 DELETE
INPUT_REPLAY_PAUSE 298 SPACEBAR
INPUT_REPLAY_REWIND 299 ARROW DOWN
INPUT_REPLAY_FFWD 300 ARROW UP
INPUT_REPLAY_NEWMARKER 301 M
INPUT_REPLAY_RECORD 302 S
INPUT_REPLAY_SCREENSHOT 303 U
INPUT_REPLAY_HIDEHUD 304 H
INPUT_REPLAY_STARTPOINT 305 B
INPUT_REPLAY_ENDPOINT 306 N
INPUT_REPLAY_ADVANCE 307 ARROW RIGHT
INPUT_REPLAY_BACK 308 ARROW LEFT
INPUT_REPLAY_TOOLS 309 T
INPUT_REPLAY_RESTART 310 R
INPUT_REPLAY_SHOWHOTKEY 311 K
INPUT_REPLAY_CYCLEMARKERLEFT 312 [
INPUT_REPLAY_CYCLEMARKERRIGHT 313 ]
INPUT_REPLAY_FOVINCREASE 314 NUMPAD+
INPUT_REPLAY_FOVDECREASE 315 NUMPAD-
INPUT_REPLAY_CAMERAUP 316 PAGE UP
INPUT_REPLAY_CAMERADOWN 317 PAGE DOWN
INPUT_REPLAY_SAVE 318 F5
INPUT_REPLAY_TOGGLETIME 319 C
INPUT_REPLAY_TOGGLETIPS 320 V
INPUT_REPLAY_PREVIEW 321 SPACEBAR
INPUT_REPLAY_TOGGLE_TIMELINE 322 ESC
INPUT_REPLAY_TIMELINE_PICKUP_CLIP 323 X
INPUT_REPLAY_TIMELINE_DUPLICATE_CLIP 324 C
INPUT_REPLAY_TIMELINE_PLACE_CLIP 325 V
INPUT_REPLAY_CTRL 326 LEFT CTRL
INPUT_REPLAY_TIMELINE_SAVE 327 F5
INPUT_REPLAY_PREVIEW_AUDIO 328 SPACEBAR
INPUT_VEH_DRIVE_LOOK 329 LEFT MOUSE BUTTON
INPUT_VEH_DRIVE_LOOK2 330 RIGHT MOUSE BUTTON
INPUT_VEH_FLY_ATTACK2 331 RIGHT MOUSE BUTTON
INPUT_RADIO_WHEEL_UD 332 MOUSE DOWN
INPUT_RADIO_WHEEL_LR 333 MOUSE RIGHT
INPUT_VEH_SLOWMO_UD 334 SCROLLWHEEL DOWN
INPUT_VEH_SLOWMO_UP_ONLY 335 SCROLLWHEEL UP
INPUT_VEH_SLOWMO_DOWN_ONLY 336 SCROLLWHEEL DOWN
INPUT_VEH_HYDRAULICS_CONTROL_TOGGLE 337 X
INPUT_VEH_HYDRAULICS_CONTROL_LEFT 338 A
INPUT_VEH_HYDRAULICS_CONTROL_RIGHT 339 D
INPUT_VEH_HYDRAULICS_CONTROL_UP 340 LEFT SHIFT
INPUT_VEH_HYDRAULICS_CONTROL_DOWN 341 LEFT CTRL
INPUT_VEH_HYDRAULICS_CONTROL_LR 342 D
INPUT_VEH_HYDRAULICS_CONTROL_UD 343 LEFT CTRL
INPUT_SWITCH_VISOR 344 F11
INPUT_VEH_MELEE_HOLD 345 X
INPUT_VEH_MELEE_LEFT 346 LEFT MOUSE BUTTON
INPUT_VEH_MELEE_RIGHT 347 RIGHT MOUSE BUTTON
INPUT_MAP_POI 348 SCROLLWHEEL BUTTON (PRESS)
INPUT_REPLAY_SNAPMATIC_PHOTO 349 TAB
INPUT_VEH_CAR_JUMP 350 E
INPUT_VEH_ROCKET_BOOST 351 E
INPUT_VEH_FLY_BOOST 352 LEFT SHIFT
INPUT_VEH_PARACHUTE 353 SPACEBAR
INPUT_VEH_BIKE_WINGS 354 X
INPUT_VEH_FLY_BOMB_BAY 355 E
INPUT_VEH_FLY_COUNTER 356 E
INPUT_VEH_TRANSFORM 357 X
INPUT_QUAD_LOCO_REVERSE 358
INPUT_RESPAWN_FASTER 359
INPUT_HUDMARKER_SELECT 360
INPUT_EAT_SNACK 361
INPUT_USE_ARMOR 362

Taken from here.

Functions