95 lines
2.0 KiB
Bash
Executable File
95 lines
2.0 KiB
Bash
Executable File
#!/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}"
|