diff options
author | Elliott Hughes <enh@google.com> | 2015-03-25 16:40:13 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2015-03-25 17:34:22 -0700 |
commit | c7f3c5c10cbe633683888a7e14a5fa436a2b32a6 (patch) | |
tree | 0bd49d1781861e92ca944ae4a4d468aeadfc7b04 /toolbox/generate-input.h-labels.py | |
parent | a0115bf78db6ef373754fade0fe4028ac8c88653 (diff) |
Auto-generate the getevent labels from <linux/input.h>.
Now we only have to remember to update the kernel uapi headers, which
we're pretty good at.
Change-Id: If04eb8c50882fff5e5e2a5d72664f5d4c4c538b1
Diffstat (limited to 'toolbox/generate-input.h-labels.py')
-rwxr-xr-x | toolbox/generate-input.h-labels.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/toolbox/generate-input.h-labels.py b/toolbox/generate-input.h-labels.py new file mode 100755 index 000000000..4d7904350 --- /dev/null +++ b/toolbox/generate-input.h-labels.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +# +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the 'License'); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an 'AS IS' BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# pylint: disable=bad-indentation,bad-continuation + +import os +import re + +input_prop_list = [] +ev_list = [] +syn_list = [] +key_list = [] +rel_list = [] +abs_list = [] +sw_list = [] +msc_list = [] +led_list = [] +rep_list = [] +snd_list = [] +mt_tool_list = [] +ff_status_list = [] +ff_list = [] + +r = re.compile(r'#define\s+(\S+)\s+((?:0x)?\d+)') + +with open(os.environ['ANDROID_BUILD_TOP'] + '/bionic/libc/kernel/uapi/linux/input.h', 'r') as f: + for line in f: + m = r.match(line) + if m: + name = m.group(1) + if name.startswith("INPUT_PROP_"): + input_prop_list.append(name) + elif name.startswith("EV_"): + ev_list.append(name) + elif name.startswith("SYN_"): + syn_list.append(name) + elif name.startswith("KEY_") or name.startswith("BTN_"): + key_list.append(name) + elif name.startswith("REL_"): + rel_list.append(name) + elif name.startswith("ABS_"): + abs_list.append(name) + elif name.startswith("SW_"): + sw_list.append(name) + elif name.startswith("MSC_"): + msc_list.append(name) + elif name.startswith("LED_"): + led_list.append(name) + elif name.startswith("REP_"): + rep_list.append(name) + elif name.startswith("SND_"): + snd_list.append(name) + elif name.startswith("MT_TOOL_"): + mt_tool_list.append(name) + elif name.startswith("FF_STATUS_"): + ff_status_list.append(name) + elif name.startswith("FF_"): + ff_list.append(name) + +def Dump(struct_name, values): + print 'static struct label %s[] = {' % (struct_name) + for value in values: + print ' LABEL(%s),' % (value) + print ' LABEL_END,' + print '};' + +Dump("input_prop_labels", input_prop_list) +Dump("ev_labels", ev_list) +Dump("syn_labels", syn_list) +Dump("key_labels", key_list) +Dump("rel_labels", rel_list) +Dump("abs_labels", abs_list) +Dump("sw_labels", sw_list) +Dump("msc_labels", msc_list) +Dump("led_labels", led_list) +Dump("rep_labels", rep_list) +Dump("snd_labels", snd_list) +Dump("mt_tool_labels", mt_tool_list) +Dump("ff_status_labels", ff_status_list) +Dump("ff_labels", ff_list) |