Перейти к основному содержимому

keyboard

Синтетический keyboard input + чтение key-state. 4 канонические функции.

Функций4 (9 с алиасами)
Проверено вживую4 из 4
Требуемый eventнет
Сайд-эффектыClick, Press, Release инжектят OS-level keystrokes которые игра и OS видят как реальные

Алиасы. Click, Press, Release имеют по две формы (PascalCase + lowercase). IsPressed имеет три формы. См. Обзор / Конвенция именования.

Имена клавиш

IsPressed (и остальные функции по конвенции) принимают эти формы, case-insensitive для букв и имён:

Принято (verified)

ФормаПримерЗначение
Одиночная буква"A", "a"соответствующая буквенная клавиша
Одиночная цифра"1", "5"top-row digit
Function key"F1", "F12"F-row
Special key (named)"Space"пробел
Special key"Enter"return / enter
Special key"Escape"escape
Modifier (без L/R)"Shift", "Ctrl", "Alt"любая сторона, чит не различает left/right
Windows VK code (число)0x41 (= 65)VK_A
Windows VK code0x20VK_SPACE
Windows VK code0x1BVK_ESCAPE

Отвергнуто (Unknown key or button name: '<lowercased>')

ФормаИспользуй вместо
"Return""Enter"
"Esc""Escape"
"LeftShift", "RightShift""Shift"
"LeftControl", "RightControl""Ctrl"
"LeftAlt", "RightAlt""Alt"
" " (одиночный space char)"Space"

Чит нормализует вход в lowercase перед lookup (проверено: "LeftShift" ошибается как "'leftshift'").

Краткий справочник

ФункцияСигнатураЗаметкаСтатус
Click(key: string | number)press + release одним вызовом (synthetic)проверено
Press(key: string | number)нажать, оставить удержаннойпроверено
Release(key: string | number)отпуститьпроверено
IsPressed(key: string | number) → booltrue пока клавиша удерживаетсяпроверено

Все 4 функции проверены вживую. Press("Shift") с последующим Release("Shift") подтверждены через IsPressed("Shift") который вернул true между вызовами и false после.


IsPressed

keyboard.IsPressed(key: string | number) → bool

Возвращает true пока названная клавиша удерживается.

Проверено вживую (вернули bool чисто):

"A", "a", "1", "Space", "Enter", "Escape", "Shift", "Ctrl", "Alt", "F1", "F12", 0x41, 65, 0x20, 0x1B.

Проверено отвергнуто:

ВызовРезультат
IsPressed("Return")"Unknown key or button name: 'return'"
IsPressed("Esc")"Unknown key or button name: 'esc'"
IsPressed("LeftShift")"Unknown key or button name: 'leftshift'"
IsPressed("LeftControl")"Unknown key or button name: 'leftcontrol'"
IsPressed("LeftAlt")"Unknown key or button name: 'leftalt'"
IsPressed(" ")"Unknown key or button name: ' '"
IsPressed("garbage_key")"Unknown key or button name: 'garbage_key'"
IsPressed()"bad argument #1 to '?' (string expected, got no value)"
IsPressed(nil)"bad argument #1 to '?' (string expected, got nil)"
cheat.Register("onUpdate", function()
if keyboard.IsPressed("Shift") and keyboard.IsPressed("E") then

end
end)

Click

keyboard.Click(key: string | number)

Синтетический press-and-release названной клавиши. Проверено вживую с keyboard.Click("Shift") (ok=true, ret=nil, modifier был кратко нажат и отпущен).

keyboard.Click("Space")
OS-level input

Этот вызов идёт через Windows synthetic-input API. Keystroke доставляется в фокусное окно, включая non-Roblox окна. Убедись что Roblox в фокусе или защищай через utility.GetMenuState.


Press / Release

keyboard.Press(key: string | number, delay_ms?: number)
keyboard.Release(key: string | number)

Press удерживает клавишу, Release отпускает. Всегда парь их, иначе клавиша останется удержанной до следующего реального OS-event'а. Опциональный delay_ms на Press автоматически отпускает клавишу через указанное время (keyboard.Press("W", 100)Press + ожидание 100мс + Release).

Проверено вживую: keyboard.Press("Shift") с задержкой 5 мс и затем keyboard.Release("Shift") наблюдаемо через keyboard.IsPressed("Shift"):

  • before: false
  • после Press: true
  • после Release: false

keyboard.Press("W")

keyboard.Release("W")

Паттерны

Hold W пока цель спереди

local was_holding = false

cheat.Register("onUpdate", function()
local target = entity.GetTarget()
local should_hold = target ~= nil and target.IsAlive

if should_hold and not was_holding then
keyboard.Press("W")
was_holding = true
elseif not should_hold and was_holding then
keyboard.Release("W")
was_holding = false
end
end)

cheat.Register("shutdown", function()
if was_holding then keyboard.Release("W") end
end)

Modifier-driven panic key

cheat.Register("onUpdate", function()
if keyboard.IsPressed("F1") then

end
end)

Repeating keystroke (autotype)

local last_send = 0
cheat.Register("onUpdate", function()
if keyboard.IsPressed("F2") then
local now = utility.GetTickCount()
if now - last_send > 250 then
keyboard.Click("Space")
last_send = now
end
end
end)