mirror of
https://github.com/oasislinux/oasis.git
synced 2025-12-20 09:13:52 +01:00
182 lines
3.3 KiB
Lua
182 lines
3.3 KiB
Lua
local duplicates = {
|
|
EV_VERSION=true,
|
|
BTN_MISC=true,
|
|
BTN_MOUSE=true,
|
|
BTN_JOYSTICK=true,
|
|
BTN_GAMEPAD=true,
|
|
BTN_DIGI=true,
|
|
BTN_WHEEL=true,
|
|
BTN_TRIGGER_HAPPY=true,
|
|
SW_MAX=true,
|
|
REP_MAX=true,
|
|
FF_STATUS_MAX=true,
|
|
}
|
|
|
|
local skip = {
|
|
BTN=true,
|
|
EV=true,
|
|
INPUT_PROP=true,
|
|
MT_TOOL=true,
|
|
}
|
|
|
|
local prefixes = {
|
|
'EV',
|
|
'REL',
|
|
'ABS',
|
|
'KEY',
|
|
'BTN',
|
|
'LED',
|
|
'SND',
|
|
'MSC',
|
|
'SW',
|
|
'FF',
|
|
'SYN',
|
|
'REP',
|
|
'INPUT_PROP',
|
|
'MT_TOOL',
|
|
}
|
|
|
|
local bits = {}
|
|
for _, prefix in ipairs(prefixes) do
|
|
bits[prefix] = {}
|
|
end
|
|
bits.EV.map = {}
|
|
|
|
local function lookuptable(prefix)
|
|
local entries = {}
|
|
for _, name in ipairs(bits[prefix]) do
|
|
table.insert(entries, name)
|
|
end
|
|
local max = prefix..'_MAX'
|
|
if duplicates[max] then
|
|
table.insert(entries, max)
|
|
end
|
|
table.sort(entries)
|
|
for _, name in ipairs(entries) do
|
|
io.write(string.format(' { .name = "%s", .value = %s },\n', name, name))
|
|
end
|
|
end
|
|
|
|
for i = 1, #arg do
|
|
for line in io.lines(arg[i]) do
|
|
local name, value = line:match('^#define%s+([%w_]+)%s+(%dx?%x*)')
|
|
value = tonumber(value)
|
|
if name and not duplicates[name] then
|
|
for prefix, b in pairs(bits) do
|
|
if name:sub(1, #prefix + 1) == prefix..'_' then
|
|
if b.map then
|
|
b.map[value] = name
|
|
b.map[name] = value
|
|
end
|
|
table.insert(b, name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
io.write[[
|
|
/* THIS FILE IS GENERATED, DO NOT EDIT */
|
|
|
|
#ifndef EVENT_NAMES_H
|
|
#define EVENT_NAMES_H
|
|
|
|
]]
|
|
for _, prefix in ipairs(prefixes) do
|
|
if prefix ~= 'BTN' then
|
|
io.write(string.format('static const char * const %s_map[%s_MAX + 1] = {\n', prefix:lower(), prefix))
|
|
for _, name in ipairs(bits[prefix]) do
|
|
io.write(string.format(' [%s] = "%s",\n', name, name))
|
|
end
|
|
if prefix == 'KEY' then
|
|
for _, name in ipairs(bits.BTN) do
|
|
io.write(string.format(' [%s] = "%s",\n', name, name))
|
|
end
|
|
end
|
|
io.write[[
|
|
};
|
|
|
|
]]
|
|
end
|
|
end
|
|
for _, name in ipairs{'BTN_A', 'BTN_B', 'BTN_X', 'BTN_Y'} do
|
|
table.insert(bits.BTN, name)
|
|
end
|
|
io.write[[
|
|
static const char * const * const event_type_map[EV_MAX + 1] = {
|
|
]]
|
|
for _, prefix in ipairs(prefixes) do
|
|
if not skip[prefix] then
|
|
print(string.format(' [EV_%s] = %s_map,', prefix, prefix:lower()))
|
|
end
|
|
end
|
|
io.write[[
|
|
};
|
|
|
|
#if __clang__
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Winitializer-overrides"
|
|
#elif __GNUC__
|
|
#pragma GCC diagnostic push
|
|
#pragma GCC diagnostic ignored "-Woverride-init"
|
|
#endif
|
|
static const int ev_max[EV_MAX + 1] = {
|
|
]]
|
|
for i = 0, bits.EV.map.EV_MAX do
|
|
local name = bits.EV.map[i]
|
|
if name and bits[name:sub(4)] then
|
|
io.write(string.format(' %s_MAX,\n', name:sub(4)))
|
|
else
|
|
io.write(' -1,\n')
|
|
end
|
|
end
|
|
io.write[[
|
|
};
|
|
#if __clang__
|
|
#pragma clang diagnostic pop /* "-Winitializer-overrides" */
|
|
#elif __GNUC__
|
|
#pragma GCC diagnostic pop /* "-Woverride-init" */
|
|
#endif
|
|
|
|
struct name_entry {
|
|
const char *name;
|
|
unsigned int value;
|
|
};
|
|
|
|
static const struct name_entry tool_type_names[] = {
|
|
]]
|
|
lookuptable('MT_TOOL')
|
|
io.write[[
|
|
};
|
|
|
|
static const struct name_entry ev_names[] = {
|
|
]]
|
|
lookuptable('EV')
|
|
io.write[[
|
|
};
|
|
|
|
static const struct name_entry code_names[] = {
|
|
]]
|
|
lookuptable('ABS')
|
|
lookuptable('BTN')
|
|
lookuptable('FF')
|
|
lookuptable('KEY')
|
|
lookuptable('LED')
|
|
lookuptable('MSC')
|
|
lookuptable('REL')
|
|
lookuptable('REP')
|
|
lookuptable('SND')
|
|
lookuptable('SW')
|
|
lookuptable('SYN')
|
|
io.write[[
|
|
};
|
|
|
|
static const struct name_entry prop_names[] = {
|
|
]]
|
|
lookuptable('INPUT_PROP')
|
|
io.write[[
|
|
};
|
|
|
|
#endif /* EVENT_NAMES_H */
|
|
]]
|