
KeylessUniversal

local CoreGui = game:GetService("CoreGui")
local Players = game:GetService("Players")
local VirtualInputManager = game:GetService("VirtualInputManager")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
local Player = Players.LocalPlayer
pcall(function()
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, true)
end)
if CoreGui:FindFirstChild("MobileKeyboard") then
CoreGui.MobileKeyboard:Destroy()
end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "MobileKeyboard"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = CoreGui
local function makeDraggable(guiObject)
local dragging, dragInput, dragStart, startPos
guiObject.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = guiObject.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
guiObject.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
guiObject.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
end
local ToggleButton = Instance.new("TextButton")
ToggleButton.Name = "CenterToggleBtn"
ToggleButton.Size = UDim2.new(0, 50, 0, 50)
ToggleButton.Position = UDim2.new(0.5, -25, 0, 10)
ToggleButton.BackgroundColor3 = Color3.fromRGB(80, 150, 255)
ToggleButton.BorderSizePixel = 0
ToggleButton.Text = "⌨"
ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleButton.TextSize = 22
ToggleButton.ZIndex = 100
ToggleButton.Active = true
ToggleButton.Parent = ScreenGui
local UICornerBtn = Instance.new("UICorner")
UICornerBtn.CornerRadius = UDim.new(0, 10)
UICornerBtn.Parent = ToggleButton
makeDraggable(ToggleButton)
local KeyboardFrame = Instance.new("Frame")
KeyboardFrame.Name = "FullKeyboardPanel"
KeyboardFrame.Size = UDim2.new(0, 680, 0, 210)
KeyboardFrame.Position = UDim2.new(0.5, -340, 0, 65)
KeyboardFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
KeyboardFrame.BorderSizePixel = 0
KeyboardFrame.Visible = false
KeyboardFrame.ZIndex = 99
KeyboardFrame.Active = true
KeyboardFrame.Parent = ScreenGui
local FrameCorner = Instance.new("UICorner")
FrameCorner.CornerRadius = UDim.new(0, 8)
FrameCorner.Parent = KeyboardFrame
makeDraggable(KeyboardFrame)
local function createKey(name, text, keyCode, sizeX, sizeY, posX, posY)
local btn = Instance.new("TextButton")
btn.Name = name
btn.Size = UDim2.new(0, sizeX, 0, sizeY)
btn.Position = UDim2.new(0, posX, 0, posY)
btn.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
btn.BorderSizePixel = 0
btn.Text = text
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = 11
btn.ZIndex = 100
btn.Active = true
btn.Parent = KeyboardFrame
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 4)
corner.Parent = btn
if keyCode then
btn.MouseButton1Down:Connect(function()
pcall(function()
VirtualInputManager:SendKeyEvent(true, keyCode, false, game)
end)
btn.BackgroundColor3 = Color3.fromRGB(50, 200, 100)
end)
btn.MouseButton1Up:Connect(function()
pcall(function()
VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end)
btn.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
end)
btn.MouseLeave:Connect(function()
pcall(function()
VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end)
btn.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
end)
end
return btn
end
createKey("Esc", "Esc", Enum.KeyCode.Escape, 40, 24, 10, 8)
createKey("F1", "F1", Enum.KeyCode.F1, 35, 24, 55, 8)
createKey("F2", "F2", Enum.KeyCode.F2, 35, 24, 95, 8)
createKey("F3", "F3", Enum.KeyCode.F3, 35, 24, 135, 8)
createKey("F4", "F4", Enum.KeyCode.F4, 35, 24, 175, 8)
createKey("F5", "F5", Enum.KeyCode.F5, 35, 24, 215, 8)
createKey("F6", "F6", Enum.KeyCode.F6, 35, 24, 255, 8)
createKey("F7", "F7", Enum.KeyCode.F7, 35, 24, 295, 8)
createKey("F8", "F8", Enum.KeyCode.F8, 35, 24, 335, 8)
createKey("F9", "F9", Enum.KeyCode.F9, 35, 24, 375, 8)
createKey("F10", "F10", Enum.KeyCode.F10, 35, 24, 415, 8)
createKey("F11", "F11", Enum.KeyCode.F11, 35, 24, 455, 8)
createKey("F12", "F12", Enum.KeyCode.F12, 35, 24, 495, 8)
createKey("Tilde", "`", Enum.KeyCode.Backquote, 38, 26, 10, 36)
createKey("1", "1", Enum.KeyCode.One, 38, 26, 51, 36)
createKey("2", "2", Enum.KeyCode.Two, 38, 26, 92, 36)
createKey("3", "3", Enum.KeyCode.Three, 38, 26, 133, 36)
createKey("4", "4", Enum.KeyCode.Four, 38, 26, 174, 36)
createKey("5", "5", Enum.KeyCode.Five, 38, 26, 215, 36)
createKey("6", "6", Enum.KeyCode.Six, 38, 26, 256, 36)
createKey("7", "7", Enum.KeyCode.Seven, 38, 26, 297, 36)
createKey("8", "8", Enum.KeyCode.Eight, 38, 26, 338, 36)
createKey("9", "9", Enum.KeyCode.Nine, 38, 26, 379, 36)
createKey("0", "0", Enum.KeyCode.Zero, 38, 26, 420, 36)
createKey("Dash", "-", Enum.KeyCode.Minus, 38, 26, 461, 36)
createKey("Equals", "=", Enum.KeyCode.Equals, 38, 26, 502, 36)
createKey("Tab", "Tab", Enum.KeyCode.Tab, 50, 26, 10, 64)
createKey("Q", "Q", Enum.KeyCode.Q, 38, 26, 63, 64)
createKey("W", "W", Enum.KeyCode.W, 38, 26, 104, 64)
createKey("E", "E", Enum.KeyCode.E, 38, 26, 145, 64)
createKey("R", "R", Enum.KeyCode.R, 38, 26, 186, 64)
createKey("T", "T", Enum.KeyCode.T, 38, 26, 227, 64)
createKey("Y", "Y", Enum.KeyCode.Y, 38, 26, 268, 64)
createKey("U", "U", Enum.KeyCode.U, 38, 26, 309, 64)
createKey("I", "I", Enum.KeyCode.I, 38, 26, 350, 64)
createKey("O", "O", Enum.KeyCode.O, 38, 26, 391, 64)
createKey("P", "P", Enum.KeyCode.P, 38, 26, 432, 64)
createKey("LBracket", "[", Enum.KeyCode.LeftBracket, 38, 26, 473, 64)
createKey("RBracket", "]", Enum.KeyCode.RightBracket, 38, 26, 514, 64)
createKey("Slash", "\\", Enum.KeyCode.BackSlash, 45, 26, 555, 64)
createKey("Caps", "Caps", Enum.KeyCode.CapsLock, 58, 26, 10, 92)
createKey("A", "A", Enum.KeyCode.A, 38, 26, 71, 92)
createKey("S", "S", Enum.KeyCode.S, 38, 26, 112, 92)
createKey("D", "D", Enum.KeyCode.D, 38, 26, 153, 92)
createKey("F", "F", Enum.KeyCode.F, 38, 26, 194, 92)
createKey("G", "G", Enum.KeyCode.G, 38, 26, 235, 92)
createKey("H", "H", Enum.KeyCode.H, 38, 26, 276, 92)
createKey("J", "J", Enum.KeyCode.J, 38, 26, 317, 92)
createKey("K", "K", Enum.KeyCode.K, 38, 26, 358, 92)
createKey("L", "L", Enum.KeyCode.L, 38, 26, 399, 92)
createKey("Semi", ";", Enum.KeyCode.Semicolon, 38, 26, 440, 92)
createKey("Quote", "'", Enum.KeyCode.Quote, 38, 26, 481, 92)
createKey("Enter", "Enter", Enum.KeyCode.Return, 75, 26, 522, 92)
createKey("LShift", "Shift", Enum.KeyCode.LeftShift, 70, 26, 10, 120)
createKey("Z", "Z", Enum.KeyCode.Z, 38, 26, 83, 120)
createKey("X", "X", Enum.KeyCode.X, 38, 26, 124, 120)
createKey("C", "C", Enum.KeyCode.C, 38, 26, 165, 120)
createKey("V", "V", Enum.KeyCode.V, 38, 26, 206, 120)
createKey("B", "B", Enum.KeyCode.B, 38, 26, 247, 120)
createKey("N", "N", Enum.KeyCode.N, 38, 26, 288, 120)
createKey("M", "M", Enum.KeyCode.M, 38, 26, 329, 120)
createKey("Comma", ",", Enum.KeyCode.Comma, 38, 26, 370, 120)
createKey("Dot", ".", Enum.KeyCode.Period, 38, 26, 411, 120)
createKey("Slash2", "/", Enum.KeyCode.Slash, 38, 26, 452, 120)
createKey("RShift", "RShift", Enum.KeyCode.RightShift, 70, 26, 493, 120)
createKey("LCtrl", "Ctrl", Enum.KeyCode.LeftControl, 55, 26, 10, 148)
createKey("LAlt", "Alt", Enum.KeyCode.LeftAlt, 50, 26, 68, 148)
createKey("Space", "Spacebar", Enum.KeyCode.Space, 220, 26, 121, 148)
createKey("RAlt", "Alt", Enum.KeyCode.RightAlt, 50, 26, 344, 148)
createKey("RCtrl", "Ctrl", Enum.KeyCode.RightControl, 55, 26, 397, 148)
createKey("Left", "◄", Enum.KeyCode.Left, 38, 26, 455, 148)
createKey("Down", "▼", Enum.KeyCode.Down, 38, 26, 496, 148)
createKey("Right", "►", Enum.KeyCode.Right, 38, 26, 537, 148)
local StickZone = Instance.new("TextButton")
StickZone.Name = "StickTouchZone"
StickZone.Size = UDim2.new(0, 120, 0, 120)
StickZone.Position = UDim2.new(0, 15, 1, -135)
StickZone.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
StickZone.BackgroundTransparency = 0
StickZone.BorderSizePixel = 0
StickZone.Text = ""
StickZone.Active = true
StickZone.ZIndex = 99
StickZone.Parent = ScreenGui
local StickZoneCorner = Instance.new("UICorner")
StickZoneCorner.CornerRadius = UDim.new(1, 0)
StickZoneCorner.Parent = StickZone
local StickKnob = Instance.new("Frame")
StickKnob.Name = "Knob"
StickKnob.Size = UDim2.new(0, 40, 0, 40)
StickKnob.Position = UDim2.new(0.5, -20, 0.5, -20)
StickKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
StickKnob.BackgroundTransparency = 0.2
StickKnob.BorderSizePixel = 0
StickKnob.ZIndex = 101
StickKnob.Parent = StickZone
local StickKnobCorner = Instance.new("UICorner")
StickKnobCorner.CornerRadius = UDim.new(1, 0)
StickKnobCorner.Parent = StickKnob
local activeInput = nil
local knobCenter = Vector2.new(60, 60)
local maxDist = 35
local function resetMovement()
activeInput = nil
StickKnob.Position = UDim2.new(0.5, -20, 0.5, -20)
pcall(function()
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.W, false, game)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.S, false, game)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.A, false, game)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.D, false, game)
end)
end
StickZone.InputBegan:Connect(function(input)
if (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1) and not activeInput then
activeInput = input
end
end)
UserInputService.InputEnded:Connect(function(input)
if input == activeInput then
resetMovement()
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == activeInput and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then
local absPos = StickZone.AbsolutePosition
local touchPos = Vector2.new(input.Position.X, input.Position.Y)
local relPos = touchPos - absPos - knobCenter
if relPos.Magnitude > maxDist then
relPos = relPos.Unit * maxDist
end
StickKnob.Position = UDim2.new(0.5, relPos.X - 20, 0.5, relPos.Y - 20)
pcall(function()
VirtualInputManager:SendKeyEvent(relPos.Y < -8, Enum.KeyCode.W, false, game)
VirtualInputManager:SendKeyEvent(relPos.Y > 8, Enum.KeyCode.S, false, game)
VirtualInputManager:SendKeyEvent(relPos.X < -8, Enum.KeyCode.A, false, game)
VirtualInputManager:SendKeyEvent(relPos.X > 8, Enum.KeyCode.D, false, game)
end)
end
end)
local JumpButton = Instance.new("TextButton")
JumpButton.Name = "CustomJumpBtn"
JumpButton.Size = UDim2.new(0, 70, 0, 70)
JumpButton.Position = UDim2.new(1, -90, 1, -90)
JumpButton.BackgroundColor3 = Color3.fromRGB(255, 90, 90)
JumpButton.BackgroundTransparency = 0.2
JumpButton.BorderSizePixel = 0
JumpButton.Text = "JUMP"
JumpButton.TextColor3 = Color3.fromRGB(255, 255, 255)
JumpButton.TextSize = 16
JumpButton.ZIndex = 100
JumpButton.Active = true
JumpButton.Parent = ScreenGui
local JumpCorner = Instance.new("UICorner")
JumpCorner.CornerRadius = UDim.new(1, 0)
JumpCorner.Parent = JumpButton
local isHoldingJump = false
JumpButton.MouseButton1Down:Connect(function()
isHoldingJump = true
end)
JumpButton.MouseButton1Up:Connect(function()
isHoldingJump = false
end)
JumpButton.MouseLeave:Connect(function()
isHoldingJump = false
end)
task.spawn(function()
while true do
if isHoldingJump then
local char = Player.Character
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid:GetState() == Enum.HumanoidStateType.Running then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end
task.wait(0.1)
end
end)
local isOpen = false
ToggleButton.MouseButton1Click:Connect(function()
isOpen = not isOpen
KeyboardFrame.Visible = isOpen
ToggleButton.BackgroundColor3 = isOpen and Color3.fromRGB(50, 200, 100) or Color3.fromRGB(80, 150, 255)
end)



Peak