View difference between Paste ID: EFVX27ye and 7GugPdRb
SHOW: | | - or go back to the newest paste.
1
local args = {...}
2
local fileHeader =
3
[[
4
-----------------------------------------
5
--          Custom Key Layout          --
6
-----------------------------------------
7
8
----------------Remapper------------------
9
local map = {}
10
11
local function addRemap(expected, modifier)
12
  map[expected] = modifier
13
end
14
15
function os.pullEvent(filter)
16
 local evt = {os.pullEventRaw(filter or nil)}
17
 if(evt[1] == "char") then
18
   for k,v in pairs(map) do
19
     if(k[2] == evt[2]) then
20
       e = v(evt)
21
       return unpack(e)
22
     end
23
   end
24
 end
25
 return unpack(evt)
26
end
27
------------------------------------------
28
29
]]
30
31
local function split(str)
32
  local t = {}
33
  for m in str:gmatch(".") do table.insert(t,m) end
34
  return t
35
end
36
37
local data = {}
38
local layout = {}
39
local priority = "gfhdjskalrueiwoqpvbcnxmy"
40
priority = priority..priority:upper()
41
priority = priority.."1234567890"
42
43
local handle,content = fs.open(args[1],"r"),false
44
content = handle.readAll()
45
handle.close()
46
data = textutils.unserialize(content)
47
48
local datakeys = {}
49
for k,v in pairs(data) do
50
  table.insert(datakeys,k)
51
end
52
table.sort(datakeys,function(i,j) return i>j end)
53
54
local processed = {}
55
for _,i in pairs(datakeys) do
56
  if(#priority==0) then break end
57
  for k,v in pairs(data[i]) do
58
    if(#priority==0) then break end
59
    local c = priority:sub(1,1)
60
    priority = priority:sub(2)
61
    processed[c] = v
62
  end
63
end
64
65
local map = {}
66
for k,v in pairs(processed) do
67
  local val = v
68-
  if(v == "\n") then val = "" end
68+
69
  if(v == "\n") then val = "\\n" end
70
  fileHeader = fileHeader.."addRemap({'char',\""..k.."\"},function(evt) return {'char',\""..val.."\"} end)".."\n"
71
end
72
73
local handle = fs.open("mapped","w")
74
handle.write(fileHeader)
75
handle.close()