arrow-key signals have been fixed. not in the best way possible, but they have been fixed.

This commit is contained in:
ocawesome101 2021-06-04 16:40:00 -04:00
parent 193afd3853
commit 4331bdf482
1 changed files with 15 additions and 14 deletions

View File

@ -98,23 +98,23 @@ local asciitr = {
}
local escmap = {
A = 200, -- up
B = 208, -- down
C = 205, -- right
D = 203, -- left
[65] = 200, -- up
[66] = 208, -- down
[67] = 205, -- right
[68] = 203, -- left
}
local inesc = 0
local inesc_down = false
function computer.signalTransformers.key_down(s, a, ascii, key, user)
if key ~= -1 then
return s, a, ascii, key, user
end
if ascii == 27 then
inesc = true
inesc_down = true
return nil
elseif inesc then
if ascii < 48 and ascii > 57 and ascii ~= 59 and ascii ~= 91 then
inesc = false
elseif inesc_down then
if (ascii < 48 or ascii > 57) and ascii ~= 59 and ascii ~= 91 then
inesc_down = false
key = escmap[ascii] or 0
ascii = 0
else
@ -124,16 +124,17 @@ function computer.signalTransformers.key_down(s, a, ascii, key, user)
return s, a, math.floor(asciitr[ascii] or ascii), keymap[ascii] or key, user
end
local inesc_up = false
function computer.signalTransformers.key_up(s, a, ascii, key, user)
if key ~= -1 then
return s, a, ascii, key, user
end
if ascii == 27 then
inesc = true
inesc_up = true
return nil
elseif inesc then
if ascii < 48 and ascii > 57 and ascii ~= 59 and ascii ~= 91 then
inesc = false
elseif inesc_up then
if (ascii < 48 or ascii > 57) and ascii ~= 59 and ascii ~= 91 then
inesc_up = false
key = escmap[ascii] or 0
ascii = 0
else
@ -147,7 +148,7 @@ end
function api.pushSignal(s, ...)
local result = table.pack(computer.signalTransformers[s](s, ...))
if result.n == 0 then return end
if result.n == 0 or not result[1] then return end
result.n = nil
signalQueue[#signalQueue + 1] = result
end