1#!/usr/bin/perl 2use strict; 3 4my @ev; 5my @msc; 6my @key; 7my @key; 8my @rel; 9my @abs; 10 11my %key_hash; 12 13while (<>) { 14 if (m/^\#define\s+(EV_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) { 15 next if ($1 eq "EV_VERSION"); 16 my @e = ($1, $2); 17 push(@ev, \@e); 18 } 19 20 if (m/^\#define\s+(MSC_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) { 21 my @e = ($1, $2); 22 push(@msc, \@e); 23 } 24 25 if (m/^\#define\s+(KEY_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) { 26 next if ($1 eq "KEY_MAX"); 27 $key_hash{$1} = $2; 28 my @e = ($1, $2); 29 push(@key, \@e); 30 } 31 32 if (m/^\#define\s+(KEY_[^\s]+)\s+(KEY_[^\s]+)/) { 33 next if ($1 eq "KEY_MIN_INTERESTING"); 34 my @e = ($1, $key_hash{$2}); 35 push(@key, \@e); 36 } 37 38 if (m/^\#define\s+(BTN_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) { 39 my @e = ($1, $2); 40 push(@key, \@e); 41 } 42 43 if (m/^\#define\s+(REL_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) { 44 my @e = ($1, $2); 45 push(@rel, \@e); 46 } 47 48 if (m/^\#define\s+(ABS_[^\s]+)\s+(0x[\d\w]+|[\d]+)/) { 49 my @e = ($1, $2); 50 push(@abs, \@e); 51 } 52} 53 54print "struct parse_event {\n\tchar *name;\n\tunsigned int value;\n};\n"; 55print "struct parse_event events_type[] = {\n"; 56for my $e (@ev) { 57 my $name = @$e[0]; 58 my $val = @$e[1]; 59 print "\t{\"$name\", $val},\n"; 60} 61print "\t{ NULL, 0}\n};\n"; 62 63print "struct parse_event msc_events[] = {\n"; 64for my $e (@msc) { 65 my $name = @$e[0]; 66 my $val = @$e[1]; 67 print "\t{\"$name\", $val},\n"; 68} 69print "\t{ NULL, 0}\n};\n"; 70 71print "struct parse_event key_events[] = {\n"; 72for my $e (@key) { 73 my $name = @$e[0]; 74 my $val = @$e[1]; 75 print "\t{\"$name\", $val},\n"; 76} 77print "\t{ NULL, 0}\n};\n"; 78 79print "struct parse_event rel_events[] = {\n"; 80for my $e (@rel) { 81 my $name = @$e[0]; 82 my $val = @$e[1]; 83 print "\t{\"$name\", $val},\n"; 84} 85print "\t{ NULL, 0}\n};\n"; 86 87print "struct parse_event abs_events[] = {\n"; 88for my $e (@abs) { 89 my $name = @$e[0]; 90 my $val = @$e[1]; 91 print "\t{\"$name\", $val},\n"; 92} 93print "\t{ NULL, 0}\n};\n"; 94 95