Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function printUsage()
- print( "Usage: monitor <side> <program> <arguments>" )
- return
- end
- local tArgs = { ... }
- if #tArgs < 2 then
- printUsage()
- return
- end
- local sSide = tArgs[1]
- if peripheral.getType( sSide ) ~= "monitor" then
- print( "No monitor on "..sSide.." side" )
- return
- end
- local sProgram = tArgs[2]
- local sPath = shell.resolveProgram( sProgram )
- if sPath == nil then
- print( "No such program: "..sProgram )
- return
- end
- print( "Running "..sProgram.." on "..sSide.." monitor" )
- local monitor = peripheral.wrap( sSide )
- term.redirect( monitor )
- local args = {...}
- local function runProgram()
- shell.run( sProgram, select( 3, unpack( args ) ) )
- end
- local co = coroutine.create(runProgram)
- local event = {}
- local tFilter = {}
- while true do
- if event[1] == "monitor_touch" and event[2] == sSide then
- os.queueEvent( "mouse_click", 1, unpack( event, 3 ) )
- end
- local ok, param = coroutine.resume( co, unpack(event) )
- if not ok then
- term.restore()
- error(param)
- else
- tFilter = param
- end
- if coroutine.status(co) == "dead" then
- break
- end
- event = { os.pullEventRaw() }
- end
- term.restore()
Add Comment
Please, Sign In to add comment