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