Run event on keypress? How?

Hello, how do I make a script run an event when I press on a specific key?

I’ve tried my luck with these scripts, but they don’t seem to work.

client.lua

RegisterNetEvent("keypress")

Citizen.CreateThread(function()
	if IsControlPressed(1, 168) then -- F7
		TriggerServerEvent("keypress")
	end
end)

server.lua

RegisterNetEvent("keypress")

AddEventHandler("keypress", function()
    print("test")
end)

It must be on while true do loop
Because it must check it every frame. If user click it then trigger event. So code would look that:

Citizen.CreateThread(function()
  while true do
	if IsControlPressed(1, 168) then -- F7
	   TriggerServerEvent("keypress")
    end
    Citizen.Wait(0)
  end
end)

PS. If you registered event in server-side as a net event, you don’t have to do the same in client-side

Creating a thread that constantly loops to listen for a key press is “deprecated”. Moreover, the example will result in an insane amount of events sent :stuck_out_tongue:. Just RegisterKeyMapping instead - FiveM native reference

-- client side
RegisterKeyMapping('+keypress', ' My Keypress Key', 'keyboard', 'f7')

RegisterCommand('+keypress', function()
  -- key F7 has been pressed
  TriggerServerEvent('keypress')
end)
5 Likes

Hmm, it seems like it doesn’t trigger the event?

@d0p3t
Thanks! But this types image in the chat.

And why is it “RegisterCommand”? :slight_smile:

To get rid of that also register a command for -keypress which indicates a key has been released.

Okay, just registered -keypress, but why does the event not print?

1 Like

I don’t know. Your server code looks fine. You don’t need to RegisterNetEvent for server side events though if i remember correctly.

Apparently I do, or else it gives me an error…

But everything works perfectly now, thank you very much! :wink:

1 Like

Working :slight_smile: