forgot to commit openos
This commit is contained in:
46
data/openos/boot/93_term.lua
Normal file
46
data/openos/boot/93_term.lua
Normal file
@@ -0,0 +1,46 @@
|
||||
local event = require("event")
|
||||
|
||||
local function components_changed(ename, address, type)
|
||||
local tty = require("tty")
|
||||
local window = tty.window
|
||||
if not window then
|
||||
return
|
||||
end
|
||||
|
||||
if ename == "component_available" or ename == "component_unavailable" then
|
||||
type = address
|
||||
end
|
||||
|
||||
if ename == "component_removed" or ename == "component_unavailable" then
|
||||
-- address can be type, when ename is *_unavailable, but *_removed works here and that's all we need
|
||||
if type == "gpu" and window.gpu.address == address then
|
||||
window.gpu = nil
|
||||
window.keyboard = nil
|
||||
elseif type == "keyboard" then
|
||||
-- we could check if this was our keyboard
|
||||
-- i.e. if address == window.keyboard
|
||||
-- but it is also simple for the terminal to
|
||||
-- recheck what kb to use
|
||||
window.keyboard = nil
|
||||
end
|
||||
if (type == "screen" or type == "gpu") and not tty.isAvailable() then
|
||||
event.push("term_unavailable")
|
||||
end
|
||||
elseif (ename == "component_added" or ename == "component_available") and type == "keyboard" then
|
||||
-- we need to clear the current terminals cached keyboard (if any) when
|
||||
-- a new keyboard becomes available. This is in case the new keyboard was
|
||||
-- attached to the terminal's window. The terminal library has the code to
|
||||
-- determine what the best keyboard to use is, but here we'll just set the
|
||||
-- cache to nil to force term library to reload it. An alternative to this
|
||||
-- method would be to make sure the terminal library doesn't cache the
|
||||
-- wrong keybaord to begin with but, users may actually expect that any
|
||||
-- primary keyboard is a valid keyboard (weird, in my opinion)
|
||||
window.keyboard = nil
|
||||
end
|
||||
end
|
||||
|
||||
event.listen("component_removed", components_changed)
|
||||
event.listen("component_added", components_changed)
|
||||
event.listen("component_available", components_changed)
|
||||
event.listen("component_unavailable", components_changed)
|
||||
|
||||
Reference in New Issue
Block a user