#!/usr/bin/perl -w use strict 'vars'; # "/usr/include/linux/input.h our (%strs, %checkunique, %tabaliases, %evtypes); sub strs ($) { my ($t) = @_; $strs{$t}= [ ]; } sub evtype ($) { my ($t) = @_; $evtypes{$t}= 1; strs($t); } our ($t); foreach $t (qw(EV BUS)) { strs($t); } foreach $t (qw(KEY REL ABS MSC LED)) { evtype($t); } $tabaliases{'BTN'}= 'KEY'; our ($tab,$str,$val,$s); while (<>) { if (m/^\#define (\w+)_(\w+)\s+(0|[1-9]\d+|0x[0-9a-f]+)\s*$/) { ($tab,$str,$val)=($1,$2, eval $3); next if "${tab}_${str}" =~ m/^BTN_(?:MISC|MOUSE|JOYSTICK|GAMEPAD|DIGI)$|^EV_VERSION$/; next if $str eq 'MAX'; $t= $tabaliases{$tab} || $tab; $s= $strs{$t}; if (defined $s) { die "$tab $str $val" if defined $s->[$val]; $s->[$val]= [ $tab, $str ]; } die "$tab $str $val" if $checkunique{$t}{"$tab $str"}++; } } our ($i,$iesis,$ien,$n,$si); print <[$i]; print_i(); if (defined $si) { printf " { %10s %-25s },\n", "\"$si->[0]\",", "\"$si->[1]\"" or die $!; } else { print " { 0 },\n" or die $!; } } printf <[$i]; $tab= defined $si ? $si->[1] : undef; $tab= $tab && exists $evtypes{$tab} ? $tab : undef; @sip= $tab ? ("IEN_$tab", "iesis_\L$tab", "iess_\L$tab") : (-1, 0, 0); print_i(); printf " { %-16s %-15s %-15s },\n", "$sip[0],", "$sip[1],", $sip[2], or die $!; } print <