hunters2020

Keyboard NS API

Oct 21st, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Keyboard API, created by Detective_Smith. Forum topic can be found below.
  2. -- http://www.computercraft.info/forums2/index.php?/topic/24268-keyboard/page__pid__231026#entry231026
  3.  
  4. local keyRepeat = true
  5. local keysHeld = {}
  6. local tblr = table.remove
  7.  
  8. local function search(key)
  9.     for i = 1, #keysHeld do
  10.         if keysHeld[i] == key then return true end
  11.     end
  12. end
  13.  
  14. local function apply(key, held)
  15.     if held then if not search(key) then keysHeld[#keysHeld + 1] = key end
  16.     else for i = 1, #keysHeld do if keysHeld[i] == key then tblr(keysHeld, i); break end end end
  17. end
  18.  
  19. Keyboard = {
  20.     version      = function()      return "1.032-NS"  end, -- NS stands for Non-String
  21.     isDown       = function(key)   return search(key) end,
  22.     getHeldKeys  = function()      return keysHeld    end,
  23.     setKeyRepeat = function(kBool) keyRepeat = kBool  end,
  24.     getKeyRepeat = function()      return keyRepeat   end,
  25.     reset        = function()      keysHeld = {}      end,
  26.     updateKeys   = function(event, key, held)
  27.         if event == "key" then apply(key, not held or keyRepeat)
  28.         elseif event == "key_up" then apply(key)
  29.         elseif event == "paste" then apply(keys.v, true) end
  30.     end
  31. }
  32.  
  33. --[[
  34. local update = Keyboard.updateKeys
  35. os.pullEvent = function(...)
  36.     local eventData = {os.pullEventRaw()}
  37.     update(eventData[1], eventData[2], eventData[3])
  38.     return unpack(eventData)
  39. end
  40. --]]
Advertisement
Add Comment
Please, Sign In to add comment