RedM Keybind Hashes
Many RedM resources ask for a numeric control hash rather than a key name, because IsControlJustPressed and friends take a hash and never resolve names. This is the lookup table.
-- RedM Emotes, config.lua — the menu key
RM.Keys = {
open = { active = true, control = 0x4CC0E2FE }, -- B
}Read this before you copy a hash
These are controls, not physical keys
Each hash is a control — a named game action — listed under the key it is bound to by default. It is not a scancode.
Two consequences:
- A player who rebinds that action in RedM's own key settings moves it. The hash still refers to the action; the key underneath it changed.
- More than one control can share a default key. Both of the hashes below are "E", and they are different actions.
That second point is not theoretical. RedM Emotes uses 0x7DA48D2A for X and 0x41AC83D1 for E, and neither appears in the table below — which lists 0x8CC9CD42 for X and 0xCEFD9220 for E. All four are valid; they are simply different controls that happen to share a default binding.
So do not treat a swap as cosmetic. If a script ships a working hash, changing it to the one in this table for the same letter gives you a different control, which can behave differently around suppression and conflicts. Pick from this table when you need a key a script does not already provide.
Letters
| Key | Hash | Key | Hash |
|---|---|---|---|
A | 0x7065027D | N | 0x4BC9DABB |
B | 0x4CC0E2FE | O | 0xF1301666 |
C | 0x9959A6F0 | P | 0xD82E0BD2 |
D | 0xB4E465B4 | Q | 0xDE794E3E |
E | 0xCEFD9220 | R | 0xE30CD707 |
F | 0xB2F377E8 | S | 0xD27782E3 |
G | 0x760A9C6F | T | not known |
H | 0x24978A28 | U | 0xD8F73058 |
I | 0xC1989F95 | V | 0x7F8D09B8 |
J | 0xF3830D8E | W | 0x8FD015D8 |
K | not known | X | 0x8CC9CD42 |
L | 0x80F28E95 | Y | not known |
M | 0xE31C6A41 | Z | 0x26E9DC00 |
N is the push-to-talk key
0x4BC9DABB is voice chat by default. Binding a script to it will fight with your players' microphones. Pick something else.
K, T and Y have no hash in this list. If a script needs one of those three, use a different key rather than guessing a value.
Numbers
| Key | Hash | Key | Hash |
|---|---|---|---|
1 | 0xE6F612E4 | 5 | 0xAB62E997 |
2 | 0x1CE6D9EB | 6 | 0xA1FDE2A6 |
3 | 0x4F49CC4C | 7 | 0xB03A913B |
4 | 0x8F9F9E58 | 8 | 0x42385422 |
9 and 0 are not listed.
Modifiers and editing keys
| Key | Hash | Key | Hash |
|---|---|---|---|
CTRL | 0xDB096B85 | BACKSPACE | 0x156F7119 |
SHIFT | 0x8FFC75D6 | DEL | 0x4AF4D473 |
LALT | 0x8AAA0AD4 | PGUP | 0x446258B6 |
TAB | 0xB238FE0B | PGDN | 0x3C3DD371 |
SPACEBAR | 0xD9D0E1C0 | ||
ENTER | 0xC7B5340A |
Arrow keys
| Key | Hash |
|---|---|
UP | 0x6319DB71 |
DOWN | 0x05CA7C52 |
LEFT | 0xA65EBAB4 |
RIGHT | 0xDEB34313 |
Mouse
| Button | Hash |
|---|---|
MOUSE1 | 0x07CE1E61 |
MOUSE2 | 0xF84FA74F |
MOUSE3 | 0xCEE12B50 |
| Wheel up | 0x3076E97C |
Function keys
| Key | Hash |
|---|---|
F1 | 0xA8E3F467 |
F4 | 0x1F6D95E5 |
F6 | 0x3C0A40F2 |
Only these three are listed. F2, F3, F5 and F7–F12 are not.
F-keys are usually already taken
F1 is commonly a help or menu binding, F8 is the client console and F3 is frequently claimed by other resources. Some scripts refuse to bind F-keys at all — RedM Emotes rejects F1–F12 outright for saved-emote binds.
Symbols
| Key | Hash |
|---|---|
[ | 0x430593AA |
] | 0xA5BDCD3C |
Picking a key that will not clash
Before you bind anything, check what is already spoken for on your own server:
| Commonly taken by | Typical keys |
|---|---|
| Voice chat | N |
| Inventory and satchel | B, TAB |
| Framework menus | L, M, F1 |
| Client console | F8 |
| Movement and interaction | W A S D, E, SPACEBAR, SHIFT |
Two resources polling the same hash is not an error — neither poll is exclusive, so both react to the same press. That shows up as two menus opening at once rather than as a console message, which makes it easy to misread as a bug in one of them.
If a script will not take a hash
Some settings accept a RedM input name such as INPUT_FRONTEND_ACCEPT, hashed at runtime, and some take only a raw number. They are not interchangeable, and passing a name where a number is expected usually fails silently rather than erroring.
Check the script's own documentation for which it wants. In RedMorrow resources the split is explicit — for example, RedM Emotes takes numeric hashes in RM.Keys but accepts input names in RM.Adjust.keys.
When you are not certain of a hash, the safer route is to leave the built-in key switched off and drive the action from your own keybinding resource or a chat command instead.