Basically what I want to do is similar to this post, (How do I disable arrow keys?) which is disable arrow keys, but instead I want to be able to use the arrow keys to move a gui around.
The issue with this post is that it makes the arrow keys unusable.
It would be helpful if you were a lot more specific, because this can mean virtually anything.
Though I made an attempt, and using a script in the post you linked, the input will still get detected by the UserInputService. With that, you can do ‘something else’.
E.g:
local ContextActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
ContextActionService:BindActionAtPriority("DisableArrowKeys", function()
return Enum.ContextActionResult.Sink
end, false, Enum.ContextActionPriority.High.Value, Enum.KeyCode.Up, Enum.KeyCode.Down, Enum.KeyCode.Left, Enum.KeyCode.Right)
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
if input.KeyCode == Enum.KeyCode.Up or input.KeyCode == Enum.KeyCode.Down or input.KeyCode == Enum.KeyCode.Left or input.KeyCode == Enum.KeyCode.Right then
local fullInput = tostring(input.KeyCode)
print(string.sub(fullInput, 14), "arrow detected.")
end
end)
Basically how you could handle this. Probably not exactly how you would want to handle this depending on how/when it’s being used. More of a starting point …
-- ServerScript in ServerScriptService
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
Players.PlayerAdded:Connect(function(player)
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
humanoidRootPart.Anchored = true
UIS.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed then
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.Up then
elseif input.KeyCode == Enum.KeyCode.Down then
elseif input.KeyCode == Enum.KeyCode.Left then
elseif input.KeyCode == Enum.KeyCode.Right then
end
end
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.Up then
elseif input.KeyCode == Enum.KeyCode.Down then
elseif input.KeyCode == Enum.KeyCode.Left then
elseif input.KeyCode == Enum.KeyCode.Right then
end
end
end)
end)