xref: /aosp_15_r20/system/core/toolbox/generate-input.h-labels.py (revision 00c7fec1bb09f3284aad6a6f96d2f63dfc3650ad)
1*00c7fec1SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*00c7fec1SAndroid Build Coastguard Worker#
3*00c7fec1SAndroid Build Coastguard Worker# Copyright (C) 2015 The Android Open Source Project
4*00c7fec1SAndroid Build Coastguard Worker#
5*00c7fec1SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the 'License');
6*00c7fec1SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*00c7fec1SAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*00c7fec1SAndroid Build Coastguard Worker#
9*00c7fec1SAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
10*00c7fec1SAndroid Build Coastguard Worker#
11*00c7fec1SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*00c7fec1SAndroid Build Coastguard Worker# distributed under the License is distributed on an 'AS IS' BASIS,
13*00c7fec1SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*00c7fec1SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*00c7fec1SAndroid Build Coastguard Worker# limitations under the License.
16*00c7fec1SAndroid Build Coastguard Worker#
17*00c7fec1SAndroid Build Coastguard Worker# pylint: disable=bad-indentation,bad-continuation
18*00c7fec1SAndroid Build Coastguard Worker
19*00c7fec1SAndroid Build Coastguard Worker
20*00c7fec1SAndroid Build Coastguard Workerimport os
21*00c7fec1SAndroid Build Coastguard Workerimport re
22*00c7fec1SAndroid Build Coastguard Workerimport sys
23*00c7fec1SAndroid Build Coastguard Worker
24*00c7fec1SAndroid Build Coastguard Workerinput_prop_list = []
25*00c7fec1SAndroid Build Coastguard Workerev_list = []
26*00c7fec1SAndroid Build Coastguard Workersyn_list = []
27*00c7fec1SAndroid Build Coastguard Workerkey_list = []
28*00c7fec1SAndroid Build Coastguard Workerrel_list = []
29*00c7fec1SAndroid Build Coastguard Workerabs_list = []
30*00c7fec1SAndroid Build Coastguard Workersw_list = []
31*00c7fec1SAndroid Build Coastguard Workermsc_list = []
32*00c7fec1SAndroid Build Coastguard Workerled_list = []
33*00c7fec1SAndroid Build Coastguard Workerrep_list = []
34*00c7fec1SAndroid Build Coastguard Workersnd_list = []
35*00c7fec1SAndroid Build Coastguard Workermt_tool_list = []
36*00c7fec1SAndroid Build Coastguard Workerff_status_list = []
37*00c7fec1SAndroid Build Coastguard Workerff_list = []
38*00c7fec1SAndroid Build Coastguard Worker
39*00c7fec1SAndroid Build Coastguard Workerr = re.compile(r'#define\s+(\S+)\s+((?:0x)?\d+)')
40*00c7fec1SAndroid Build Coastguard Worker
41*00c7fec1SAndroid Build Coastguard Workerfor arg in sys.argv[1:]:
42*00c7fec1SAndroid Build Coastguard Worker  with open(arg, 'r') as f:
43*00c7fec1SAndroid Build Coastguard Worker    for line in f:
44*00c7fec1SAndroid Build Coastguard Worker      m = r.match(line)
45*00c7fec1SAndroid Build Coastguard Worker      if m:
46*00c7fec1SAndroid Build Coastguard Worker        name = m.group(1)
47*00c7fec1SAndroid Build Coastguard Worker        if name.startswith("INPUT_PROP_"):
48*00c7fec1SAndroid Build Coastguard Worker          input_prop_list.append(name)
49*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("EV_"):
50*00c7fec1SAndroid Build Coastguard Worker          ev_list.append(name)
51*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("SYN_"):
52*00c7fec1SAndroid Build Coastguard Worker          syn_list.append(name)
53*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("KEY_") or name.startswith("BTN_"):
54*00c7fec1SAndroid Build Coastguard Worker          key_list.append(name)
55*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("REL_"):
56*00c7fec1SAndroid Build Coastguard Worker          rel_list.append(name)
57*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("ABS_"):
58*00c7fec1SAndroid Build Coastguard Worker          abs_list.append(name)
59*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("SW_"):
60*00c7fec1SAndroid Build Coastguard Worker          sw_list.append(name)
61*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("MSC_"):
62*00c7fec1SAndroid Build Coastguard Worker          msc_list.append(name)
63*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("LED_"):
64*00c7fec1SAndroid Build Coastguard Worker          led_list.append(name)
65*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("REP_"):
66*00c7fec1SAndroid Build Coastguard Worker          rep_list.append(name)
67*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("SND_"):
68*00c7fec1SAndroid Build Coastguard Worker          snd_list.append(name)
69*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("MT_TOOL_"):
70*00c7fec1SAndroid Build Coastguard Worker          mt_tool_list.append(name)
71*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("FF_STATUS_"):
72*00c7fec1SAndroid Build Coastguard Worker          ff_status_list.append(name)
73*00c7fec1SAndroid Build Coastguard Worker        elif name.startswith("FF_"):
74*00c7fec1SAndroid Build Coastguard Worker          ff_list.append(name)
75*00c7fec1SAndroid Build Coastguard Worker
76*00c7fec1SAndroid Build Coastguard Workerdef Dump(struct_name, values):
77*00c7fec1SAndroid Build Coastguard Worker  print('static struct label %s[] = {' % (struct_name))
78*00c7fec1SAndroid Build Coastguard Worker  for value in values:
79*00c7fec1SAndroid Build Coastguard Worker    print('    LABEL(%s),' % (value))
80*00c7fec1SAndroid Build Coastguard Worker  print('    LABEL_END,')
81*00c7fec1SAndroid Build Coastguard Worker  print('};')
82*00c7fec1SAndroid Build Coastguard Worker
83*00c7fec1SAndroid Build Coastguard WorkerDump("input_prop_labels", input_prop_list)
84*00c7fec1SAndroid Build Coastguard WorkerDump("ev_labels", ev_list)
85*00c7fec1SAndroid Build Coastguard WorkerDump("syn_labels", syn_list)
86*00c7fec1SAndroid Build Coastguard WorkerDump("key_labels", key_list)
87*00c7fec1SAndroid Build Coastguard WorkerDump("rel_labels", rel_list)
88*00c7fec1SAndroid Build Coastguard WorkerDump("abs_labels", abs_list)
89*00c7fec1SAndroid Build Coastguard WorkerDump("sw_labels", sw_list)
90*00c7fec1SAndroid Build Coastguard WorkerDump("msc_labels", msc_list)
91*00c7fec1SAndroid Build Coastguard WorkerDump("led_labels", led_list)
92*00c7fec1SAndroid Build Coastguard WorkerDump("rep_labels", rep_list)
93*00c7fec1SAndroid Build Coastguard WorkerDump("snd_labels", snd_list)
94*00c7fec1SAndroid Build Coastguard WorkerDump("mt_tool_labels", mt_tool_list)
95*00c7fec1SAndroid Build Coastguard WorkerDump("ff_status_labels", ff_status_list)
96*00c7fec1SAndroid Build Coastguard WorkerDump("ff_labels", ff_list)
97