bedit: Added scrolling around the screen and basic event handling

This commit is contained in:
2026-06-06 18:16:47 +03:00
parent 16214c253d
commit b756bc516e
+31 -3
View File
@@ -2,6 +2,7 @@ local fs = require("filesystem")
local shell = require("shell")
local gpu = require("component").gpu
local event = require("event")
local computer = require("computer")
local resX, resY = gpu.getResolution()
local textBuffer = gpu.allocateBuffer(resX, resY - 1)
@@ -58,9 +59,15 @@ gpu.setForeground(0xFFFFFF)
gpu.setBackground(0x000000)
gpu.set(4, resY, "Exit")
gpu.set(13, resY, "Save")
local textOffsetX = 0
local textOffsetY = 0
while true do
local renderBufferFlag = false -- Flag to render the whole text buffer
-- Handle events
local eventArgs = {event.pull("key_down")}
repeat
local eventArgs = {event.pull("key_down", 0.05)}
if eventArgs[1] == "key_down" then
-- Mouse events might be added later, that's why this if statement is here
@@ -68,14 +75,35 @@ while true do
-- Special commands
print(eventArgs[4], keyboard.keys[eventArgs[4]])
if keyboard.keys[eventArgs[4]] == "x" then
break
goto exit
end
end
if keyboard.keys[eventArgs[4]] == "up" and textOffsetY > 0 then
textOffsetY = textOffsetY - 1
renderBufferFlag = true
end
if keyboard.keys[eventArgs[4]] == "down" then
textOffsetY = textOffsetY + 1
renderBufferFlag = true
end
if keyboard.keys[eventArgs[4]] == "left" and textOffsetX > 0 then
textOffsetX = textOffsetX - 1
renderBufferFlag = true
end
if keyboard.keys[eventArgs[4]] == "right" then
textOffsetX = textOffsetX + 1
renderBufferFlag = true
end
end
until not next(eventArgs)
if renderBufferFlag then
renderText(textOffsetX, textOffsetY)
end
renderText(0, 0)
end
-- Cleanup
::exit::
gpu.freeBuffer(textBuffer)
gpu.setActiveBuffer(0)
terminal.clear()