95 lines
2.0 KiB
Bash
95 lines
2.0 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
INPUT=$1
|
||
|
OUTPUT=$2
|
||
|
|
||
|
types=""
|
||
|
keys=""
|
||
|
rels=""
|
||
|
abss=""
|
||
|
sws=""
|
||
|
mscs=""
|
||
|
leds=""
|
||
|
reps=""
|
||
|
snds=""
|
||
|
ffstatuss=""
|
||
|
|
||
|
while read LINE; do
|
||
|
tab=$'\t'
|
||
|
space="[ ${tab}]"
|
||
|
regex="^#define ((EV|KEY|BTN|REL|ABS|SW|MSC|LED|REP|SND|FF_STATUS)_[A-Z0-9_]+)${space}"
|
||
|
if [[ $LINE =~ $regex ]]; then
|
||
|
type=${BASH_REMATCH[2]}
|
||
|
name=${BASH_REMATCH[1]}
|
||
|
if [[ $type = "EV" ]]; then
|
||
|
if [[ $name != "EV_VERSION" ]]; then
|
||
|
types="${types} [${name}] = \"${name}\",
|
||
|
"
|
||
|
fi
|
||
|
elif [[ $type = "KEY" ]] || [[ $type = "BTN" ]]; then
|
||
|
if [[ $name != "KEY_MIN_INTERESTING" ]]; then
|
||
|
keys="${keys} [${name}] = \"${name}\",
|
||
|
"
|
||
|
fi
|
||
|
elif [[ $type = "REL" ]]; then
|
||
|
rels="${rels} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "ABS" ]]; then
|
||
|
abss="${abss} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "SW" ]]; then
|
||
|
sws="${sws} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "MSC" ]]; then
|
||
|
mscs="${mscs} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "LED" ]]; then
|
||
|
leds="${leds} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "REP" ]]; then
|
||
|
reps="${reps} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "SND" ]]; then
|
||
|
snds="${snds} [${name}] = \"${name}\",
|
||
|
"
|
||
|
elif [[ $type = "FF_STATUS" ]]; then
|
||
|
ffstatuss="${ffstatuss} [${name}] = \"${name}\",
|
||
|
"
|
||
|
fi
|
||
|
fi
|
||
|
done < "${INPUT}"
|
||
|
|
||
|
(
|
||
|
echo "
|
||
|
static const char *type_names[] = {
|
||
|
${types}};
|
||
|
|
||
|
static const char *key_names[] = {
|
||
|
${keys}};
|
||
|
|
||
|
static const char *rel_names[] = {
|
||
|
${rels}};
|
||
|
|
||
|
static const char *abs_names[] = {
|
||
|
${abss}};
|
||
|
|
||
|
static const char *sw_names[] = {
|
||
|
${sws}};
|
||
|
|
||
|
static const char *msc_names[] = {
|
||
|
${mscs}};
|
||
|
|
||
|
static const char *led_names[] = {
|
||
|
${leds}};
|
||
|
|
||
|
static const char *rep_names[] = {
|
||
|
${reps}};
|
||
|
|
||
|
static const char *snd_names[] = {
|
||
|
${snds}};
|
||
|
|
||
|
static const char *ffstatus_names[] = {
|
||
|
${ffstatuss}};
|
||
|
"
|
||
|
) >"${OUTPUT}"
|