Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
203 lines (195 sloc) 2.73 KB
qwerty = {0 => "a",
1 => "s",
2 => "d",
3 => "f",
4 => "h",
5 => "g",
6 => "z",
7 => "x",
8 => "c",
9 => "v",
10 => "§",
11 => "b",
12 => "q",
13 => "w",
14 => "e",
15 => "r",
16 => "y",
17 => "t",
18 => "1",
19 => "2",
20 => "3",
21 => "4",
22 => "6",
23 => "5",
24 => "=",
25 => "9",
26 => "7",
27 => "-",
28 => "8",
29 => "0",
30 => "]",
31 => "o",
32 => "u",
33 => "[",
34 => "i",
35 => "p",
36 => "
",
37 => "l",
38 => "j",
39 => "'",
40 => "k",
41 => ";",
42 => "\\",
43 => ",",
44 => "/",
45 => "n",
46 => "m",
47 => ".",
48 => "	",
49 => " ",
50 => "`",
51 => "",
52 => "",
53 => ""}
dvorak = {0 => "a",
1 => "o",
2 => "e",
3 => "u",
4 => "d",
5 => "i",
6 => ";",
7 => "q",
8 => "j",
9 => "k",
10 => "§",
11 => "x",
12 => "'",
13 => ",",
14 => ".",
15 => "p",
16 => "f",
17 => "y",
18 => "1",
19 => "2",
20 => "3",
21 => "4",
22 => "6",
23 => "5",
24 => "]",
25 => "9",
26 => "7",
27 => "[",
28 => "8",
29 => "0",
30 => "=",
31 => "r",
32 => "g",
33 => "/",
34 => "c",
35 => "l",
36 => "
",
37 => "n",
38 => "h",
39 => "-",
40 => "t",
41 => "s",
42 => "\\",
43 => "w",
44 => "z",
45 => "b",
46 => "m",
47 => "v",
48 => "	",
49 => " ",
50 => "`",
51 => "",
52 => "",
53 => ""
}
colemak = {0 => "a",
1 => "r",
2 => "s",
3 => "t",
4 => "h",
5 => "d",
6 => "z",
7 => "x",
8 => "c",
9 => "v",
10 => "§",
11 => "b",
12 => "q",
13 => "w",
14 => "f",
15 => "p",
16 => "j",
17 => "g",
18 => "1",
19 => "2",
20 => "3",
21 => "4",
22 => "6",
23 => "5",
24 => "=",
25 => "9",
26 => "7",
27 => "-",
28 => "8",
29 => "0",
30 => "]",
31 => "y",
32 => "l",
33 => "[",
34 => "u",
35 => ";",
36 => "
",
37 => "i",
38 => "n",
39 => "'",
40 => "e",
41 => "o",
42 => "\\",
43 => ",",
44 => "/",
45 => "k",
46 => "m",
47 => ".",
48 => "	",
49 => " ",
50 => "`",
51 => "",
52 => "",
53 => "",}
list = {
'QWERTY' => qwerty,
'Dvorak' => dvorak,
'Colemak' => colemak
}
list.to_a.each do |a|
list.to_a.each do |b|
next if a.first == b.first
puts "Creating keymap for #{a.first} => #{b.first}"
inverted = b.last.invert
File.open("Keymaps/#{a.first}_#{b.first}.plist", "w") do |file|
file << <<-EOS.gsub(' ', '')
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!--
#{a.first}_#{b.first}.plist
Telefrag
Created by chendo on #{Time.now}.
-->
<plist version="1.0">
<dict>
EOS
a.last.each do |k, v|
file << " <key>#{k}</key><integer>#{inverted[v]}</integer>\n"
end
file << <<-EOS.gsub(' ', '')
</dict>
</plist>
EOS
end
end
end