mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-09-08 10:54:35 +00:00
46 lines
1.3 KiB
Plaintext
46 lines
1.3 KiB
Plaintext
|
#!/usr/bin/env ruby
|
||
|
|
||
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "vendor"))
|
||
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "lib"))
|
||
|
|
||
|
require 'pp'
|
||
|
require 'plist'
|
||
|
|
||
|
usb_hid_usages = ARGV[0]
|
||
|
|
||
|
usage_tables = {}
|
||
|
current_usage = 0;
|
||
|
current_usage_table = nil
|
||
|
|
||
|
File.open(usb_hid_usages).each_line do |line|
|
||
|
next if line =~ /^\s*#/
|
||
|
next if line =~ /^\s*$/
|
||
|
|
||
|
if (line =~ /^(\d+)\s+(.*)\s*$/)
|
||
|
current_usage = $1.to_i
|
||
|
usage_description = $2
|
||
|
current_usage_table = {'usages' => {}, 'ranges' => {}}
|
||
|
current_usage_table['description'] = usage_description
|
||
|
usage_tables[current_usage] = current_usage_table
|
||
|
elsif (line =~ /^\s+(\S+)\s+(.*)\s*$/)
|
||
|
usage_page = $1
|
||
|
usage_page_description = $2
|
||
|
|
||
|
if (usage_page =~ /^0x((?:\d|[a-fA-F])+)$/)
|
||
|
usage_page = $1.hex
|
||
|
current_usage_table['usages'][usage_page] = usage_page_description
|
||
|
elsif (usage_page =~ /^0x((?:\d|[a-fA-F])+)-((?:\d|[a-fA-F])+)$/)
|
||
|
range_start = $1.hex
|
||
|
range_end = $2.hex
|
||
|
range = "{#{range_start}, #{range_end}}";
|
||
|
current_usage_table['ranges'][range] = usage_page_description
|
||
|
elsif (usage_page == '*')
|
||
|
current_usage_table['default'] = usage_page_description
|
||
|
else
|
||
|
puts "Uknown page: #{usage_page}"
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
|
||
|
puts Plist.dump(usage_tables)
|