Advertisement
LDDestroier

PB2 Shell With Remote Key Input Nodes

Jan 14th, 2018
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.65 KB | None | 0 0
  1. -- pastebin get BGVe1Ntb shelly
  2.  
  3. local shellrun = function()
  4.     term.clear()
  5.     term.setCursorPos(1,1)
  6.     shell.run("/rom/programs/shell.lua")
  7. end
  8.  
  9. local modem = peripheral.find("modem")
  10. modem.open(8)
  11.  
  12. local keysDown = {}
  13. local getKeyInput = function()
  14.     local charConversion = {
  15.         one = 1,
  16.         two = 2,
  17.         three = 3,
  18.         four = 4,
  19.         five = 5,
  20.         six = 6,
  21.         seven = 7,
  22.         eight = 8,
  23.         nine = 9,
  24.         zero = 0,
  25.         minus = "-",
  26.         equals = "=",
  27.         plus = "+",
  28.         grave = "`",
  29.         leftBracket = "[",
  30.         rightBracket = "]",
  31.         space = " ",
  32.         at = "@",
  33.         circumflex = "^",
  34.         underscore = "_",
  35.         numPad1 = 1,
  36.         numPad2 = 2,
  37.         numPad3 = 3,
  38.         numPad4 = 4,
  39.         numPad5 = 5,
  40.         numPad6 = 6,
  41.         numPad7 = 7,
  42.         numPad8 = 8,
  43.         numPad9 = 9,
  44.         numPad0 = 0,
  45.         numPadAdd = "+",
  46.         numPadSubtract = "-",
  47.         numPadDivide = "/",
  48.         multiply = "*",
  49.         comma = ",",
  50.         period = ".",
  51.         slash = "/",
  52.         colon = ":",
  53.         semiColon = ";",
  54.         apostrophe = "'"
  55.     }
  56.     local charConversionShift = {
  57.         period = ">",
  58.         comma = "<",
  59.         slash = "?",
  60.         apostrophe = "\"",
  61.         leftBracket = "{",
  62.         rightBracket = "}",
  63.         grave = "~",
  64.         equals = "+",
  65.         one = "!",
  66.         three = "#",
  67.         four = "$",
  68.         five = "%",
  69.         seven = "&",
  70.         eight = "*",
  71.         nine = "(",
  72.         zero = ")",
  73.     }
  74.     while true do
  75.         local evt, side, freq, repfreq, message = os.pullEventRaw()
  76.         if evt == "modem_message" then
  77.             if type(message) == "table" then
  78.                 if type(message.key) == "number" and type(message.status) == "boolean" then
  79.                     if message.status then
  80.                         keysDown[message.key] = true
  81.                         if (charConversionShift[keys.getName(message.key)]) and (keysDown[keys.leftShift] or keysDown[keys.rightShift]) then
  82.                             os.queueEvent("char",charConversionShift[keys.getName(message.key)])
  83.                         elseif charConversion[keys.getName(message.key)] then
  84.                             os.queueEvent("char",charConversion[keys.getName(message.key)])
  85.                         elseif #keys.getName(message.key) == 1 then
  86.                             if (keysDown[keys.leftShift] or keysDown[keys.rightShift]) then
  87.                                 os.queueEvent("char",keys.getName(message.key))
  88.                             else
  89.                                 os.queueEvent("char",keys.getName(message.key))
  90.                             end
  91.                         end
  92.                         os.queueEvent("key",message.key,true)
  93.                     else
  94.                         keysDown[message.key] = false
  95.                         os.queueEvent("key_up",message.key)
  96.                     end
  97.                 elseif message.key == "terminate" then
  98.                     os.queueEvent("terminate")
  99.                 elseif message.key == "shutdown" then
  100.                     os.shutdown()
  101.                 elseif message.key == "reboot" then
  102.                     os.reboot()
  103.                 end
  104.             end
  105.         elseif evt == "monitor_touch" then
  106.             os.queueEvent("mouse_click",1,freq,repfreq)
  107.             os.queueEvent("mouse_up",1,freq,repfreq)
  108.         end
  109.     end
  110. end
  111.  
  112. parallel.waitForAny(getKeyInput,shellrun)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement