Brick_LuaLogic/bricks/inputs/keyboard-input.lua
2022-10-27 20:44:46 -06:00

27 lines
569 B
Lua

local function queueBit(gate, bit)
table.insert(gate.queueBits, 1, bit)
end
return function(gate, argv)
if argv[1]=="\\:" then argv[1] = ";" end
local keycode = keyboard_keyToCode[argv[1]] or keyboard_keyToCode["invalid"]
local status = keyboard_strToBool[argv[2]]
local code = keycode+(status and 128 or 0)
if #gate.queueBits > 1024 return end
queueBit(gate, 1)
for bitidx = 1, 8 do
local val = bit.band(code, 0x80)
queueBit(gate, val)
code = bit.lshift(code, 1)
end
queueBit(gate, 0)
Gate.queue(gate, 0)
end