I'm working on a key-bind mapper and I have a function that's supposed to wait until the player presses any key and returns the key the player pressed.
module.Input = function() frame.Visible = true local key = UserInputService.InputEnded:Wait() frame.Visible = false print(key.KeyCode) return key.KeyCode end
this does not wait for keypress and instantly returns the Unknown Keycode. so i modified it:
module.Input = function() frame.Visible = true local key = nil repeat key = UserInputService.InputEnded:Wait() until UserInputService.InputEnded:Wait() ~= Enum.KeyCode.Unknown frame.Visible = false print(key.KeyCode) return key.KeyCode end
this actually waits for the keypress but still returns unknown Keycode
I've fixed my problem. ill share so others can learn from it.
UserInputService.InputEnded:Wait()
returns the inputObject, in order to know what key was presed, we use inputObject.KeyCode
In repeat key = UserInputService.InputEnded:Wait() until UserInputService.InputEnded:Wait() ~= Enum.KeyCode.Unknown
because i was comparing an inputObject to a keycode it would return true.
module.Input = function() frame.Visible = true local key = nil repeat key = UserInputService.InputEnded:Wait() until key.KeyCode ~= Enum.KeyCode.Unknown frame.Visible = false print(key) return key.KeyCode en