ohos-multi-modal-input-sys 0.1.1

Raw OpenHarmony multimodal InputKit bindings for Rust
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
/* automatically generated by rust-bindgen 0.65.1 */

#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(clippy::missing_safety_doc)]
// bindgen's bitfield accessors transmute/cast between identical types.
#![allow(clippy::useless_transmute)]
#![allow(clippy::unnecessary_cast)]

pub use ohos_image_native_sys::OH_PixelmapNative;

#[link(name = "ohinput")]
unsafe extern "C" {}

#[doc = " Unknown axis type, which is usually used as the initial value.\n @since 12"]
pub const InputEvent_AxisType_AXIS_TYPE_UNKNOWN: InputEvent_AxisType = 0;
#[doc = " Vertical scroll axis. When you scroll the mouse wheel or slide with one or two fingers on the touchpad, the\n status of the vertical scroll axis changes.\n @since 12"]
pub const InputEvent_AxisType_AXIS_TYPE_SCROLL_VERTICAL: InputEvent_AxisType = 1;
#[doc = " Horizontal scroll axis. When you scroll the mouse wheel or slide with two fingers on the touchpad, the status of\n the horizontal scroll axis changes.\n @since 12"]
pub const InputEvent_AxisType_AXIS_TYPE_SCROLL_HORIZONTAL: InputEvent_AxisType = 2;
#[doc = " Pinch axis, which is used to describe a two-finger pinch gesture on the touchpad.\n @since 12"]
pub const InputEvent_AxisType_AXIS_TYPE_PINCH: InputEvent_AxisType = 3;
#[doc = " Rotation axis, which is used to describe a two-finger rotation gesture on the touchpad.\n @since 12"]
pub const InputEvent_AxisType_AXIS_TYPE_ROTATE: InputEvent_AxisType = 4;
#[doc = " @brief Defines the axis type of an input device.\n\n @since 12"]
pub type InputEvent_AxisType = u32;
#[doc = " @brief Two-finger pinch event. The value can be **AXIS_TYPE_PINCH** or **AXIS_TYPE_ROTATE**, both of which are\n of the {@link InputEvent_AxisType} type.\n\n @since 12"]
pub const InputEvent_AxisEventType_AXIS_EVENT_TYPE_PINCH: InputEvent_AxisEventType = 1;
#[doc = " @brief Scroll event. The value can be **AXIS_TYPE_SCROLL_VERTICAL** or **AXIS_TYPE_SCROLL_HORIZONTAL**, both of\n which are of the {@link InputEvent_AxisType} type. For a mouse wheel event, only **AXIS_TYPE_SCROLL_VERTICAL**\n is supported.\n\n @since 12"]
pub const InputEvent_AxisEventType_AXIS_EVENT_TYPE_SCROLL: InputEvent_AxisEventType = 2;
#[doc = " @brief Event type of the input device.\n\n @since 12"]
pub type InputEvent_AxisEventType = u32;
#[doc = " The axis event is canceled.\n @since 12"]
pub const InputEvent_AxisAction_AXIS_ACTION_CANCEL: InputEvent_AxisAction = 0;
#[doc = " The axis event begins.\n @since 12"]
pub const InputEvent_AxisAction_AXIS_ACTION_BEGIN: InputEvent_AxisAction = 1;
#[doc = " The axis event is updated.\n @since 12"]
pub const InputEvent_AxisAction_AXIS_ACTION_UPDATE: InputEvent_AxisAction = 2;
#[doc = " The axis event ends.\n @since 12"]
pub const InputEvent_AxisAction_AXIS_ACTION_END: InputEvent_AxisAction = 3;
#[doc = " @brief Action of the input device.\n\n @since 12"]
pub type InputEvent_AxisAction = u32;
#[doc = " Unknown key"]
pub const Input_KeyCode_KEYCODE_UNKNOWN: Input_KeyCode = -1;
#[doc = " Function (Fn) key"]
pub const Input_KeyCode_KEYCODE_FN: Input_KeyCode = 0;
#[doc = " Function (Home) key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HOME: Input_KeyCode = 1;
#[doc = " Back button\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BACK: Input_KeyCode = 2;
#[doc = " Search key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SEARCH: Input_KeyCode = 9;
#[doc = " Media: Play/Pause key<br>Difference between this key and **KEYCODE_PLAYPAUSE**:<br>**KEYCODE_PLAYPAUSE** is an\n earlier definition, while **KEYCODE_MEDIA_PLAY_PAUSE** is designed for modern media key devices.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_PLAY_PAUSE: Input_KeyCode = 10;
#[doc = " Media: Stop Key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_STOP: Input_KeyCode = 11;
#[doc = " Media: Next key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_NEXT: Input_KeyCode = 12;
#[doc = " Media: Previous key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_PREVIOUS: Input_KeyCode = 13;
#[doc = " Media: Rewind key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_REWIND: Input_KeyCode = 14;
#[doc = " Media: Fast Forward key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_FAST_FORWARD: Input_KeyCode = 15;
#[doc = " Volume Up key"]
pub const Input_KeyCode_KEYCODE_VOLUME_UP: Input_KeyCode = 16;
#[doc = " Volume Down key"]
pub const Input_KeyCode_KEYCODE_VOLUME_DOWN: Input_KeyCode = 17;
#[doc = " Power key"]
pub const Input_KeyCode_KEYCODE_POWER: Input_KeyCode = 18;
#[doc = " Camera key"]
pub const Input_KeyCode_KEYCODE_CAMERA: Input_KeyCode = 19;
#[doc = " Speaker Mute key"]
pub const Input_KeyCode_KEYCODE_VOLUME_MUTE: Input_KeyCode = 22;
#[doc = " Mute key"]
pub const Input_KeyCode_KEYCODE_MUTE: Input_KeyCode = 23;
#[doc = " Brightness Up key"]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_UP: Input_KeyCode = 40;
#[doc = " Brightness Down key"]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_DOWN: Input_KeyCode = 41;
#[doc = " Key 0"]
pub const Input_KeyCode_KEYCODE_0: Input_KeyCode = 2000;
#[doc = " Key 1"]
pub const Input_KeyCode_KEYCODE_1: Input_KeyCode = 2001;
#[doc = " Key 2"]
pub const Input_KeyCode_KEYCODE_2: Input_KeyCode = 2002;
#[doc = " Key 3"]
pub const Input_KeyCode_KEYCODE_3: Input_KeyCode = 2003;
#[doc = " Key 4"]
pub const Input_KeyCode_KEYCODE_4: Input_KeyCode = 2004;
#[doc = " Key 5"]
pub const Input_KeyCode_KEYCODE_5: Input_KeyCode = 2005;
#[doc = " Key 6"]
pub const Input_KeyCode_KEYCODE_6: Input_KeyCode = 2006;
#[doc = " Key 7"]
pub const Input_KeyCode_KEYCODE_7: Input_KeyCode = 2007;
#[doc = " Key 8"]
pub const Input_KeyCode_KEYCODE_8: Input_KeyCode = 2008;
#[doc = " Key 9"]
pub const Input_KeyCode_KEYCODE_9: Input_KeyCode = 2009;
#[doc = " Key *"]
pub const Input_KeyCode_KEYCODE_STAR: Input_KeyCode = 2010;
#[doc = " Key #"]
pub const Input_KeyCode_KEYCODE_POUND: Input_KeyCode = 2011;
#[doc = " Up key on D-pad"]
pub const Input_KeyCode_KEYCODE_DPAD_UP: Input_KeyCode = 2012;
#[doc = " Down key on D-pad"]
pub const Input_KeyCode_KEYCODE_DPAD_DOWN: Input_KeyCode = 2013;
#[doc = " Left key on D-pad"]
pub const Input_KeyCode_KEYCODE_DPAD_LEFT: Input_KeyCode = 2014;
#[doc = " Right key on D-pad"]
pub const Input_KeyCode_KEYCODE_DPAD_RIGHT: Input_KeyCode = 2015;
#[doc = " Center key on D-pad"]
pub const Input_KeyCode_KEYCODE_DPAD_CENTER: Input_KeyCode = 2016;
#[doc = " Key A"]
pub const Input_KeyCode_KEYCODE_A: Input_KeyCode = 2017;
#[doc = " Key B"]
pub const Input_KeyCode_KEYCODE_B: Input_KeyCode = 2018;
#[doc = " Key C"]
pub const Input_KeyCode_KEYCODE_C: Input_KeyCode = 2019;
#[doc = " Key D"]
pub const Input_KeyCode_KEYCODE_D: Input_KeyCode = 2020;
#[doc = " Key E"]
pub const Input_KeyCode_KEYCODE_E: Input_KeyCode = 2021;
#[doc = " Key F"]
pub const Input_KeyCode_KEYCODE_F: Input_KeyCode = 2022;
#[doc = " Key G"]
pub const Input_KeyCode_KEYCODE_G: Input_KeyCode = 2023;
#[doc = " Key H"]
pub const Input_KeyCode_KEYCODE_H: Input_KeyCode = 2024;
#[doc = " Key I"]
pub const Input_KeyCode_KEYCODE_I: Input_KeyCode = 2025;
#[doc = " Key J"]
pub const Input_KeyCode_KEYCODE_J: Input_KeyCode = 2026;
#[doc = " Key K"]
pub const Input_KeyCode_KEYCODE_K: Input_KeyCode = 2027;
#[doc = " Key L"]
pub const Input_KeyCode_KEYCODE_L: Input_KeyCode = 2028;
#[doc = " Key M"]
pub const Input_KeyCode_KEYCODE_M: Input_KeyCode = 2029;
#[doc = " Key N"]
pub const Input_KeyCode_KEYCODE_N: Input_KeyCode = 2030;
#[doc = " Key O"]
pub const Input_KeyCode_KEYCODE_O: Input_KeyCode = 2031;
#[doc = " Key P"]
pub const Input_KeyCode_KEYCODE_P: Input_KeyCode = 2032;
#[doc = " Key Q"]
pub const Input_KeyCode_KEYCODE_Q: Input_KeyCode = 2033;
#[doc = " Key R"]
pub const Input_KeyCode_KEYCODE_R: Input_KeyCode = 2034;
#[doc = " Key S"]
pub const Input_KeyCode_KEYCODE_S: Input_KeyCode = 2035;
#[doc = " Key T"]
pub const Input_KeyCode_KEYCODE_T: Input_KeyCode = 2036;
#[doc = " Key U"]
pub const Input_KeyCode_KEYCODE_U: Input_KeyCode = 2037;
#[doc = " Key V"]
pub const Input_KeyCode_KEYCODE_V: Input_KeyCode = 2038;
#[doc = " Key W"]
pub const Input_KeyCode_KEYCODE_W: Input_KeyCode = 2039;
#[doc = " Key X"]
pub const Input_KeyCode_KEYCODE_X: Input_KeyCode = 2040;
#[doc = " Key Y"]
pub const Input_KeyCode_KEYCODE_Y: Input_KeyCode = 2041;
#[doc = " Key Z"]
pub const Input_KeyCode_KEYCODE_Z: Input_KeyCode = 2042;
#[doc = " Key ,"]
pub const Input_KeyCode_KEYCODE_COMMA: Input_KeyCode = 2043;
#[doc = " Key ."]
pub const Input_KeyCode_KEYCODE_PERIOD: Input_KeyCode = 2044;
#[doc = " Left Alt key"]
pub const Input_KeyCode_KEYCODE_ALT_LEFT: Input_KeyCode = 2045;
#[doc = " Right Alt key"]
pub const Input_KeyCode_KEYCODE_ALT_RIGHT: Input_KeyCode = 2046;
#[doc = " Left Shift key"]
pub const Input_KeyCode_KEYCODE_SHIFT_LEFT: Input_KeyCode = 2047;
#[doc = " Right Shift key"]
pub const Input_KeyCode_KEYCODE_SHIFT_RIGHT: Input_KeyCode = 2048;
#[doc = " Tab key"]
pub const Input_KeyCode_KEYCODE_TAB: Input_KeyCode = 2049;
#[doc = " Space key"]
pub const Input_KeyCode_KEYCODE_SPACE: Input_KeyCode = 2050;
#[doc = " Symbol key"]
pub const Input_KeyCode_KEYCODE_SYM: Input_KeyCode = 2051;
#[doc = " Browser function key, used to launch the browser application."]
pub const Input_KeyCode_KEYCODE_EXPLORER: Input_KeyCode = 2052;
#[doc = " Email function key, used to launch the email application."]
pub const Input_KeyCode_KEYCODE_ENVELOPE: Input_KeyCode = 2053;
#[doc = " Enter key"]
pub const Input_KeyCode_KEYCODE_ENTER: Input_KeyCode = 2054;
#[doc = " Delete key"]
pub const Input_KeyCode_KEYCODE_DEL: Input_KeyCode = 2055;
#[doc = " Key *"]
pub const Input_KeyCode_KEYCODE_GRAVE: Input_KeyCode = 2056;
#[doc = " Key -"]
pub const Input_KeyCode_KEYCODE_MINUS: Input_KeyCode = 2057;
#[doc = " Key ="]
pub const Input_KeyCode_KEYCODE_EQUALS: Input_KeyCode = 2058;
#[doc = " Key ["]
pub const Input_KeyCode_KEYCODE_LEFT_BRACKET: Input_KeyCode = 2059;
#[doc = " Key ]"]
pub const Input_KeyCode_KEYCODE_RIGHT_BRACKET: Input_KeyCode = 2060;
#[doc = " Key \\|"]
pub const Input_KeyCode_KEYCODE_BACKSLASH: Input_KeyCode = 2061;
#[doc = " Key ;"]
pub const Input_KeyCode_KEYCODE_SEMICOLON: Input_KeyCode = 2062;
#[doc = " Key '"]
pub const Input_KeyCode_KEYCODE_APOSTROPHE: Input_KeyCode = 2063;
#[doc = " Key /"]
pub const Input_KeyCode_KEYCODE_SLASH: Input_KeyCode = 2064;
#[doc = " Key @"]
pub const Input_KeyCode_KEYCODE_AT: Input_KeyCode = 2065;
#[doc = " Key +"]
pub const Input_KeyCode_KEYCODE_PLUS: Input_KeyCode = 2066;
#[doc = " Menu key"]
pub const Input_KeyCode_KEYCODE_MENU: Input_KeyCode = 2067;
#[doc = " Page Up key"]
pub const Input_KeyCode_KEYCODE_PAGE_UP: Input_KeyCode = 2068;
#[doc = " Page Down key"]
pub const Input_KeyCode_KEYCODE_PAGE_DOWN: Input_KeyCode = 2069;
#[doc = " Esc key"]
pub const Input_KeyCode_KEYCODE_ESCAPE: Input_KeyCode = 2070;
#[doc = " Forward Delete key"]
pub const Input_KeyCode_KEYCODE_FORWARD_DEL: Input_KeyCode = 2071;
#[doc = " Left Ctrl key"]
pub const Input_KeyCode_KEYCODE_CTRL_LEFT: Input_KeyCode = 2072;
#[doc = " Right Ctrl key"]
pub const Input_KeyCode_KEYCODE_CTRL_RIGHT: Input_KeyCode = 2073;
#[doc = " Caps Lock key"]
pub const Input_KeyCode_KEYCODE_CAPS_LOCK: Input_KeyCode = 2074;
#[doc = " Scroll Lock key"]
pub const Input_KeyCode_KEYCODE_SCROLL_LOCK: Input_KeyCode = 2075;
#[doc = " Left Meta key"]
pub const Input_KeyCode_KEYCODE_META_LEFT: Input_KeyCode = 2076;
#[doc = " Right Meta key"]
pub const Input_KeyCode_KEYCODE_META_RIGHT: Input_KeyCode = 2077;
#[doc = " Function key"]
pub const Input_KeyCode_KEYCODE_FUNCTION: Input_KeyCode = 2078;
#[doc = " System Request/Print Screen key"]
pub const Input_KeyCode_KEYCODE_SYSRQ: Input_KeyCode = 2079;
#[doc = " Break/Pause key"]
pub const Input_KeyCode_KEYCODE_BREAK: Input_KeyCode = 2080;
#[doc = " Move to Home key"]
pub const Input_KeyCode_KEYCODE_MOVE_HOME: Input_KeyCode = 2081;
#[doc = " Move to End key"]
pub const Input_KeyCode_KEYCODE_MOVE_END: Input_KeyCode = 2082;
#[doc = " Insert key"]
pub const Input_KeyCode_KEYCODE_INSERT: Input_KeyCode = 2083;
#[doc = " Forward key"]
pub const Input_KeyCode_KEYCODE_FORWARD: Input_KeyCode = 2084;
#[doc = " Media: Play key"]
pub const Input_KeyCode_KEYCODE_MEDIA_PLAY: Input_KeyCode = 2085;
#[doc = " Media: Pause key"]
pub const Input_KeyCode_KEYCODE_MEDIA_PAUSE: Input_KeyCode = 2086;
#[doc = " Media: Close key"]
pub const Input_KeyCode_KEYCODE_MEDIA_CLOSE: Input_KeyCode = 2087;
#[doc = " Media: Reject key"]
pub const Input_KeyCode_KEYCODE_MEDIA_EJECT: Input_KeyCode = 2088;
#[doc = " Media: Record key"]
pub const Input_KeyCode_KEYCODE_MEDIA_RECORD: Input_KeyCode = 2089;
#[doc = " F1 key"]
pub const Input_KeyCode_KEYCODE_F1: Input_KeyCode = 2090;
#[doc = " F2 key"]
pub const Input_KeyCode_KEYCODE_F2: Input_KeyCode = 2091;
#[doc = " F3 key"]
pub const Input_KeyCode_KEYCODE_F3: Input_KeyCode = 2092;
#[doc = " F4 key"]
pub const Input_KeyCode_KEYCODE_F4: Input_KeyCode = 2093;
#[doc = " F5 key"]
pub const Input_KeyCode_KEYCODE_F5: Input_KeyCode = 2094;
#[doc = " F6 key"]
pub const Input_KeyCode_KEYCODE_F6: Input_KeyCode = 2095;
#[doc = " F7 key"]
pub const Input_KeyCode_KEYCODE_F7: Input_KeyCode = 2096;
#[doc = " F8 key"]
pub const Input_KeyCode_KEYCODE_F8: Input_KeyCode = 2097;
#[doc = " F9 key"]
pub const Input_KeyCode_KEYCODE_F9: Input_KeyCode = 2098;
#[doc = " F10 key"]
pub const Input_KeyCode_KEYCODE_F10: Input_KeyCode = 2099;
#[doc = " F11 key"]
pub const Input_KeyCode_KEYCODE_F11: Input_KeyCode = 2100;
#[doc = " F12 key"]
pub const Input_KeyCode_KEYCODE_F12: Input_KeyCode = 2101;
#[doc = " Number Lock key"]
pub const Input_KeyCode_KEYCODE_NUM_LOCK: Input_KeyCode = 2102;
#[doc = " Key 0 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_0: Input_KeyCode = 2103;
#[doc = " Key 1 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_1: Input_KeyCode = 2104;
#[doc = " Key 2 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_2: Input_KeyCode = 2105;
#[doc = " Key 3 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_3: Input_KeyCode = 2106;
#[doc = " Key 4 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_4: Input_KeyCode = 2107;
#[doc = " Key 5 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_5: Input_KeyCode = 2108;
#[doc = " Key 6 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_6: Input_KeyCode = 2109;
#[doc = " Key 7 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_7: Input_KeyCode = 2110;
#[doc = " Key 8 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_8: Input_KeyCode = 2111;
#[doc = " Key 9 on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_9: Input_KeyCode = 2112;
#[doc = " Key / on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_DIVIDE: Input_KeyCode = 2113;
#[doc = " Key * on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_MULTIPLY: Input_KeyCode = 2114;
#[doc = " Key - on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_SUBTRACT: Input_KeyCode = 2115;
#[doc = " Key + on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_ADD: Input_KeyCode = 2116;
#[doc = " Key . on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_DOT: Input_KeyCode = 2117;
#[doc = " Key , on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_COMMA: Input_KeyCode = 2118;
#[doc = " Enter key on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_ENTER: Input_KeyCode = 2119;
#[doc = " Key = on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_EQUALS: Input_KeyCode = 2120;
#[doc = " Key ( on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_LEFT_PAREN: Input_KeyCode = 2121;
#[doc = " Key ) on numeric keypad"]
pub const Input_KeyCode_KEYCODE_NUMPAD_RIGHT_PAREN: Input_KeyCode = 2122;
#[doc = " Multi-task key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VIRTUAL_MULTITASK: Input_KeyCode = 2210;
#[doc = " Joystick key A\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_A: Input_KeyCode = 2301;
#[doc = " Joystick key B\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_B: Input_KeyCode = 2302;
#[doc = " Joystick key X\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_X: Input_KeyCode = 2304;
#[doc = " Joystick key Y\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_Y: Input_KeyCode = 2305;
#[doc = " Joystick key L1\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_L1: Input_KeyCode = 2307;
#[doc = " Joystick key R1\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_R1: Input_KeyCode = 2308;
#[doc = " Joystick key L2\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_L2: Input_KeyCode = 2309;
#[doc = " Joystick key R2\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_R2: Input_KeyCode = 2310;
#[doc = " Joystick key Select\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_SELECT: Input_KeyCode = 2311;
#[doc = " Joystick key Start\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_START: Input_KeyCode = 2312;
#[doc = " Joystick key Mode\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_MODE: Input_KeyCode = 2313;
#[doc = " Joystick key THUMBL\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_THUMBL: Input_KeyCode = 2314;
#[doc = " Joystick key THUMBR\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTON_THUMBR: Input_KeyCode = 2315;
#[doc = "Sleep key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SLEEP: Input_KeyCode = 2600;
#[doc = " Zenkaku/Hankaku key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ZENKAKU_HANKAKU: Input_KeyCode = 2601;
#[doc = "International Keyboard Extension key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_102ND: Input_KeyCode = 2602;
#[doc = " Ro key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_RO: Input_KeyCode = 2603;
#[doc = " Katakana key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KATAKANA: Input_KeyCode = 2604;
#[doc = " Hiragana key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HIRAGANA: Input_KeyCode = 2605;
#[doc = " Henkan key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HENKAN: Input_KeyCode = 2606;
#[doc = " Katakana/Hiragana key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KATAKANA_HIRAGANA: Input_KeyCode = 2607;
#[doc = " Muhenkan key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MUHENKAN: Input_KeyCode = 2608;
#[doc = " Linefeed key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_LINEFEED: Input_KeyCode = 2609;
#[doc = " Macro key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MACRO: Input_KeyCode = 2610;
#[doc = " Plus/Minus key on the numeric keypad\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_NUMPAD_PLUSMINUS: Input_KeyCode = 2611;
#[doc = " Scale key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SCALE: Input_KeyCode = 2612;
#[doc = " Hanguel key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HANGUEL: Input_KeyCode = 2613;
#[doc = " Hanja key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HANJA: Input_KeyCode = 2614;
#[doc = " Yen key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_YEN: Input_KeyCode = 2615;
#[doc = " Stop key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_STOP: Input_KeyCode = 2616;
#[doc = " Again key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_AGAIN: Input_KeyCode = 2617;
#[doc = " Props key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PROPS: Input_KeyCode = 2618;
#[doc = " Undo key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_UNDO: Input_KeyCode = 2619;
#[doc = " Copy key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_COPY: Input_KeyCode = 2620;
#[doc = " Open key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_OPEN: Input_KeyCode = 2621;
#[doc = " Paste key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PASTE: Input_KeyCode = 2622;
#[doc = " Find key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_FIND: Input_KeyCode = 2623;
#[doc = " Cut key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CUT: Input_KeyCode = 2624;
#[doc = " Help key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HELP: Input_KeyCode = 2625;
#[doc = " Calculator special function key, used to launch the calculator application.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CALC: Input_KeyCode = 2626;
#[doc = " File key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_FILE: Input_KeyCode = 2627;
#[doc = " Bookmarks key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BOOKMARKS: Input_KeyCode = 2628;
#[doc = " Page Down key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_NEXT: Input_KeyCode = 2629;
#[doc = " Media: Play/Pause key<br>Difference between this key and **KEYCODE_MEDIA_PLAY_PAUSE**:<br>**KEYCODE_PLAYPAUSE**\n is an earlier definition, while **KEYCODE_MEDIA_PLAY_PAUSE** is designed for modern media key devices.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PLAYPAUSE: Input_KeyCode = 2630;
#[doc = " Page Up key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PREVIOUS: Input_KeyCode = 2631;
#[doc = " Stop CD key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_STOPCD: Input_KeyCode = 2632;
#[doc = " Configuration key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CONFIG: Input_KeyCode = 2634;
#[doc = " Refresh key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_REFRESH: Input_KeyCode = 2635;
#[doc = " Exit key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_EXIT: Input_KeyCode = 2636;
#[doc = " Edit key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_EDIT: Input_KeyCode = 2637;
#[doc = " Scroll Up key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SCROLLUP: Input_KeyCode = 2638;
#[doc = " Scroll Down key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SCROLLDOWN: Input_KeyCode = 2639;
#[doc = " New key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_NEW: Input_KeyCode = 2640;
#[doc = " Redo key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_REDO: Input_KeyCode = 2641;
#[doc = " Close key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CLOSE: Input_KeyCode = 2642;
#[doc = " Play key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PLAY: Input_KeyCode = 2643;
#[doc = "Bass Boost key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BASSBOOST: Input_KeyCode = 2644;
#[doc = " Print key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PRINT: Input_KeyCode = 2645;
#[doc = " Chat key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CHAT: Input_KeyCode = 2646;
#[doc = " Finance key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_FINANCE: Input_KeyCode = 2647;
#[doc = " Cancel key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CANCEL: Input_KeyCode = 2648;
#[doc = " Keyboard Illumination Toggle key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDILLUM_TOGGLE: Input_KeyCode = 2649;
#[doc = " Keyboard Illumination Down key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDILLUM_DOWN: Input_KeyCode = 2650;
#[doc = " Keyboard Illumination Up key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDILLUM_UP: Input_KeyCode = 2651;
#[doc = " Send key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SEND: Input_KeyCode = 2652;
#[doc = " Reply key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_REPLY: Input_KeyCode = 2653;
#[doc = " Forward Mail key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_FORWARDMAIL: Input_KeyCode = 2654;
#[doc = " Save key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SAVE: Input_KeyCode = 2655;
#[doc = " Documents key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DOCUMENTS: Input_KeyCode = 2656;
#[doc = " Next Video key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VIDEO_NEXT: Input_KeyCode = 2657;
#[doc = " Previous Video key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VIDEO_PREV: Input_KeyCode = 2658;
#[doc = " Brightness Cycle key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_CYCLE: Input_KeyCode = 2659;
#[doc = " Brightness Zero key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_ZERO: Input_KeyCode = 2660;
#[doc = " Display Off Key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DISPLAY_OFF: Input_KeyCode = 2661;
#[doc = " Misc Button key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_MISC: Input_KeyCode = 2662;
#[doc = " Goto key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_GOTO: Input_KeyCode = 2663;
#[doc = " Info key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_INFO: Input_KeyCode = 2664;
#[doc = " Program key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PROGRAM: Input_KeyCode = 2665;
#[doc = " PVR key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PVR: Input_KeyCode = 2666;
#[doc = " Subtitle key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SUBTITLE: Input_KeyCode = 2667;
#[doc = " Full Screen key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_FULL_SCREEN: Input_KeyCode = 2668;
#[doc = " Keyboard\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KEYBOARD: Input_KeyCode = 2669;
#[doc = " Aspect Ratio key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ASPECT_RATIO: Input_KeyCode = 2670;
#[doc = " Port Control key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PC: Input_KeyCode = 2671;
#[doc = " TV key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_TV: Input_KeyCode = 2672;
#[doc = " TV key 2\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_TV2: Input_KeyCode = 2673;
#[doc = " VCR key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VCR: Input_KeyCode = 2674;
#[doc = " VCR key 2\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VCR2: Input_KeyCode = 2675;
#[doc = " SAT key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SAT: Input_KeyCode = 2676;
#[doc = " CD key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CD: Input_KeyCode = 2677;
#[doc = " Tape key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_TAPE: Input_KeyCode = 2678;
#[doc = " Tuner key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_TUNER: Input_KeyCode = 2679;
#[doc = " Player key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PLAYER: Input_KeyCode = 2680;
#[doc = " DVD key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DVD: Input_KeyCode = 2681;
#[doc = " Audio key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_AUDIO: Input_KeyCode = 2682;
#[doc = " Video key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VIDEO: Input_KeyCode = 2683;
#[doc = " Memo key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEMO: Input_KeyCode = 2684;
#[doc = " Calendar key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CALENDAR: Input_KeyCode = 2685;
#[doc = " Red indicator\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_RED: Input_KeyCode = 2686;
#[doc = " Green indicator\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_GREEN: Input_KeyCode = 2687;
#[doc = " Yellow indicator\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_YELLOW: Input_KeyCode = 2688;
#[doc = " Blue indicator\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BLUE: Input_KeyCode = 2689;
#[doc = " Channel Up key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CHANNELUP: Input_KeyCode = 2690;
#[doc = " Channel Down key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CHANNELDOWN: Input_KeyCode = 2691;
#[doc = " Last key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_LAST: Input_KeyCode = 2692;
#[doc = " Restart key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_RESTART: Input_KeyCode = 2693;
#[doc = " Slow key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SLOW: Input_KeyCode = 2694;
#[doc = " Shuffle key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SHUFFLE: Input_KeyCode = 2695;
#[doc = " Videophone key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VIDEOPHONE: Input_KeyCode = 2696;
#[doc = " Games key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_GAMES: Input_KeyCode = 2697;
#[doc = " Zoom In key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ZOOMIN: Input_KeyCode = 2698;
#[doc = " Zoom Out key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ZOOMOUT: Input_KeyCode = 2699;
#[doc = " Zoom Reset key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ZOOMRESET: Input_KeyCode = 2700;
#[doc = " Word Processor key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_WORDPROCESSOR: Input_KeyCode = 2701;
#[doc = " Editor key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_EDITOR: Input_KeyCode = 2702;
#[doc = " Spreadsheet key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SPREADSHEET: Input_KeyCode = 2703;
#[doc = " Graphics Editor key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_GRAPHICSEDITOR: Input_KeyCode = 2704;
#[doc = " Presentation key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PRESENTATION: Input_KeyCode = 2705;
#[doc = " Database key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DATABASE: Input_KeyCode = 2706;
#[doc = " News key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_NEWS: Input_KeyCode = 2707;
#[doc = " Voice mailbox\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_VOICEMAIL: Input_KeyCode = 2708;
#[doc = " Address book key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ADDRESSBOOK: Input_KeyCode = 2709;
#[doc = " Messenger key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MESSENGER: Input_KeyCode = 2710;
#[doc = " Brightness Toggle key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_TOGGLE: Input_KeyCode = 2711;
#[doc = " Spell Check key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SPELLCHECK: Input_KeyCode = 2712;
#[doc = " Coffee key, which is used to launch screen lock or screen saver\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_COFFEE: Input_KeyCode = 2713;
#[doc = " Media Repeat key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MEDIA_REPEAT: Input_KeyCode = 2714;
#[doc = " Images key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_IMAGES: Input_KeyCode = 2715;
#[doc = " Button Configuration key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BUTTONCONFIG: Input_KeyCode = 2716;
#[doc = " Task Manager\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_TASKMANAGER: Input_KeyCode = 2717;
#[doc = " Log key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_JOURNAL: Input_KeyCode = 2718;
#[doc = " Control Panel key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CONTROLPANEL: Input_KeyCode = 2719;
#[doc = " App Select key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_APPSELECT: Input_KeyCode = 2720;
#[doc = " Screen Saver key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SCREENSAVER: Input_KeyCode = 2721;
#[doc = " Assistant key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ASSISTANT: Input_KeyCode = 2722;
#[doc = " Next Keyboard Layout key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBD_LAYOUT_NEXT: Input_KeyCode = 2723;
#[doc = " Min Brightness key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_MIN: Input_KeyCode = 2724;
#[doc = " Max Brightness key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BRIGHTNESS_MAX: Input_KeyCode = 2725;
#[doc = " Keyboard Input Assist_Previous, used to view input method input history.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDINPUTASSIST_PREV: Input_KeyCode = 2726;
#[doc = " Keyboard Input Assist_Next, used to view input method input extensions.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDINPUTASSIST_NEXT: Input_KeyCode = 2727;
#[doc = " Keyboard Input Assist_Previous, used to switch to the previous input method in the input group.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDINPUTASSIST_PREVGROUP: Input_KeyCode = 2728;
#[doc = " Keyboard Input Assist_Next, used to switch to the next input method in the input group.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDINPUTASSIST_NEXTGROUP: Input_KeyCode = 2729;
#[doc = " Keyboard Input-assisted Accept key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDINPUTASSIST_ACCEPT: Input_KeyCode = 2730;
#[doc = " Keyboard Input-assisted Cancel key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_KBDINPUTASSIST_CANCEL: Input_KeyCode = 2731;
#[doc = " Mouse AI Assistant key\n @since 26.0.0"]
#[cfg(feature = "api-26")]
pub const Input_KeyCode_KEYCODE_MOUSE_ASSISTANT: Input_KeyCode = 2732;
#[doc = " Mouse Smart Selection key\n @since 26.0.0"]
#[cfg(feature = "api-26")]
pub const Input_KeyCode_KEYCODE_MOUSE_INTELLIGENCE_SELECTION: Input_KeyCode = 2733;
#[doc = " Phone touchscreen single-click event, used in Always-On Display state.\n @since 26.0.0"]
#[cfg(feature = "api-26")]
pub const Input_KeyCode_KEYCODE_AOD_SINGLE_CLICK: Input_KeyCode = 2740;
#[doc = " Front key, which is used to launch the windshield defogger\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_FRONT: Input_KeyCode = 2800;
#[doc = " Setup key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SETUP: Input_KeyCode = 2801;
#[doc = " Wakeup key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_WAKEUP: Input_KeyCode = 2802;
#[doc = " Send File key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SENDFILE: Input_KeyCode = 2803;
#[doc = " Delete File key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DELETEFILE: Input_KeyCode = 2804;
#[doc = " XFER key, which is used to start file transfer\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_XFER: Input_KeyCode = 2805;
#[doc = " Program key 1\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PROG1: Input_KeyCode = 2806;
#[doc = " Program key 2\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PROG2: Input_KeyCode = 2807;
#[doc = " DOS key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MSDOS: Input_KeyCode = 2808;
#[doc = " Screen Lock key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SCREENLOCK: Input_KeyCode = 2809;
#[doc = " Directional Rotation Display key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DIRECTION_ROTATE_DISPLAY: Input_KeyCode = 2810;
#[doc = " Window Cycle key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CYCLEWINDOWS: Input_KeyCode = 2811;
#[doc = " Computer key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_COMPUTER: Input_KeyCode = 2812;
#[doc = " Eject CD key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_EJECTCLOSECD: Input_KeyCode = 2813;
#[doc = " ISO key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ISO: Input_KeyCode = 2814;
#[doc = " Move key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_MOVE: Input_KeyCode = 2815;
#[doc = " F13 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F13: Input_KeyCode = 2816;
#[doc = " F14 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F14: Input_KeyCode = 2817;
#[doc = " F15 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F15: Input_KeyCode = 2818;
#[doc = " F16 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F16: Input_KeyCode = 2819;
#[doc = " F17 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F17: Input_KeyCode = 2820;
#[doc = " F18 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F18: Input_KeyCode = 2821;
#[doc = " F19 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F19: Input_KeyCode = 2822;
#[doc = " F20 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F20: Input_KeyCode = 2823;
#[doc = " F21 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F21: Input_KeyCode = 2824;
#[doc = " F22 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F22: Input_KeyCode = 2825;
#[doc = " F23 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F23: Input_KeyCode = 2826;
#[doc = " F24 key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_F24: Input_KeyCode = 2827;
#[doc = " Program key 3\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PROG3: Input_KeyCode = 2828;
#[doc = " Program key 4\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_PROG4: Input_KeyCode = 2829;
#[doc = " Dashboard\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DASHBOARD: Input_KeyCode = 2830;
#[doc = " Suspend key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SUSPEND: Input_KeyCode = 2831;
#[doc = " HP key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_HP: Input_KeyCode = 2832;
#[doc = " Sound key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SOUND: Input_KeyCode = 2833;
#[doc = " Question key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_QUESTION: Input_KeyCode = 2834;
#[doc = " Connect key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CONNECT: Input_KeyCode = 2836;
#[doc = " Sport key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SPORT: Input_KeyCode = 2837;
#[doc = " Shop key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SHOP: Input_KeyCode = 2838;
#[doc = " Alternate key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_ALTERASE: Input_KeyCode = 2839;
#[doc = " Cycle output between available videos (monitor/LCD/TV output/more)\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_SWITCHVIDEOMODE: Input_KeyCode = 2841;
#[doc = " Battery key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BATTERY: Input_KeyCode = 2842;
#[doc = " Bluetooth key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BLUETOOTH: Input_KeyCode = 2843;
#[doc = " WLAN key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_WLAN: Input_KeyCode = 2844;
#[doc = " Ultra-wideband key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_UWB: Input_KeyCode = 2845;
#[doc = " Mobile Network Control key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_WWAN_WIMAX: Input_KeyCode = 2846;
#[doc = " RF Kill key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_RFKILL: Input_KeyCode = 2847;
#[doc = " Channel key\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_CHANNEL: Input_KeyCode = 3001;
#[doc = "Button 0\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_0: Input_KeyCode = 3100;
#[doc = " Button 1\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_1: Input_KeyCode = 3101;
#[doc = " Button 2\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_2: Input_KeyCode = 3102;
#[doc = " Button 3\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_3: Input_KeyCode = 3103;
#[doc = " Button 4\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_4: Input_KeyCode = 3104;
#[doc = " Button 5\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_5: Input_KeyCode = 3105;
#[doc = " Button 6\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_6: Input_KeyCode = 3106;
#[doc = " Button 7\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_7: Input_KeyCode = 3107;
#[doc = " Button 8\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_8: Input_KeyCode = 3108;
#[doc = " Button 9\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_BTN_9: Input_KeyCode = 3109;
#[doc = " Single tapping the smart watch's X-TAP sensor\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DAGGER_CLICK: Input_KeyCode = 3211;
#[doc = " Double tapping the smart watch's X-TAP sensor\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DAGGER_DOUBLE_CLICK: Input_KeyCode = 3212;
#[doc = " Long-pressing the smart watch's X-TAP sensor\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DAGGER_LONG_PRESS: Input_KeyCode = 3213;
#[doc = " Left button of the smart watch\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_KeyCode_KEYCODE_DIV: Input_KeyCode = 3220;
#[doc = " Custom Shortcut Keys\n @since 26.0.0"]
#[cfg(feature = "api-26")]
pub const Input_KeyCode_KEYCODE_XKEY: Input_KeyCode = 3232;
#[doc = " Smart control Key slide-up\n @since 26.0.0"]
#[cfg(feature = "api-26")]
pub const Input_KeyCode_KEYCODE_FINGERPRINT_SLIDE_UP: Input_KeyCode = 3233;
#[doc = " Smart control Key slide-down\n @since 26.0.0"]
#[cfg(feature = "api-26")]
pub const Input_KeyCode_KEYCODE_FINGERPRINT_SLIDE_DOWN: Input_KeyCode = 3234;
#[doc = " @brief Enumerates the key codes.\n\n @since 12"]
pub type Input_KeyCode = i32;
#[doc = " Default\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_DEFAULT: Input_PointerStyle = 0;
#[doc = " East arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_EAST: Input_PointerStyle = 1;
#[doc = " West arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_WEST: Input_PointerStyle = 2;
#[doc = " South arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_SOUTH: Input_PointerStyle = 3;
#[doc = " North arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_NORTH: Input_PointerStyle = 4;
#[doc = " West-east arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_WEST_EAST: Input_PointerStyle = 5;
#[doc = " North-south arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_NORTH_SOUTH: Input_PointerStyle = 6;
#[doc = " North-east arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_NORTH_EAST: Input_PointerStyle = 7;
#[doc = " North-west arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_NORTH_WEST: Input_PointerStyle = 8;
#[doc = " South-east arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_SOUTH_EAST: Input_PointerStyle = 9;
#[doc = "South-west arrow\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_SOUTH_WEST: Input_PointerStyle = 10;
#[doc = " North-east and south-west adjustment\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_NORTH_EAST_SOUTH_WEST: Input_PointerStyle = 11;
#[doc = " North-west and south-east adjustment\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_NORTH_WEST_SOUTH_EAST: Input_PointerStyle = 12;
#[doc = " Cross (accurate selection)\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_CROSS: Input_PointerStyle = 13;
#[doc = " Copy.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_CURSOR_COPY: Input_PointerStyle = 14;
#[doc = " Forbid\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_CURSOR_FORBID: Input_PointerStyle = 15;
#[doc = " Color picker\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_COLOR_SUCKER: Input_PointerStyle = 16;
#[doc = " Grabbing hand\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_HAND_GRABBING: Input_PointerStyle = 17;
#[doc = " Opening hand\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_HAND_OPEN: Input_PointerStyle = 18;
#[doc = " Hand-shaped pointer\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_HAND_POINTING: Input_PointerStyle = 19;
#[doc = " Help\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_HELP: Input_PointerStyle = 20;
#[doc = " Move\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MOVE: Input_PointerStyle = 21;
#[doc = " Left and right resizing\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_RESIZE_LEFT_RIGHT: Input_PointerStyle = 22;
#[doc = " Up and down resizing\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_RESIZE_UP_DOWN: Input_PointerStyle = 23;
#[doc = " Screenshot crosshair\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_SCREENSHOT_CHOOSE: Input_PointerStyle = 24;
#[doc = " Screenshot\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_SCREENSHOT_CURSOR: Input_PointerStyle = 25;
#[doc = " Text selection\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_TEXT_CURSOR: Input_PointerStyle = 26;
#[doc = " Zoom in\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_ZOOM_IN: Input_PointerStyle = 27;
#[doc = " Zoom out\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_ZOOM_OUT: Input_PointerStyle = 28;
#[doc = " Scrolling east\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_EAST: Input_PointerStyle = 29;
#[doc = " Scrolling west\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_WEST: Input_PointerStyle = 30;
#[doc = " Scrolling south\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_SOUTH: Input_PointerStyle = 31;
#[doc = " Scrolling north\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_NORTH: Input_PointerStyle = 32;
#[doc = " Scrolling north-south\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_NORTH_SOUTH: Input_PointerStyle = 33;
#[doc = " Scrolling north-east\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_NORTH_EAST: Input_PointerStyle = 34;
#[doc = " Scrolling north-west\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_NORTH_WEST: Input_PointerStyle = 35;
#[doc = " Scrolling south-east\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_SOUTH_EAST: Input_PointerStyle = 36;
#[doc = " Scrolling south-west\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_SOUTH_WEST: Input_PointerStyle = 37;
#[doc = " Moving as a cone in four directions\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_NORTH_SOUTH_WEST_EAST: Input_PointerStyle = 38;
#[doc = " Horizontal text selection\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_HORIZONTAL_TEXT_CURSOR: Input_PointerStyle = 39;
#[doc = " Cross\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_CURSOR_CROSS: Input_PointerStyle = 40;
#[doc = " Circle\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_CURSOR_CIRCLE: Input_PointerStyle = 41;
#[doc = " Loading\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_LOADING: Input_PointerStyle = 42;
#[doc = " Running in the background\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_RUNNING: Input_PointerStyle = 43;
#[doc = " Scrolling east-west\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_MIDDLE_BTN_EAST_WEST: Input_PointerStyle = 44;
#[doc = " Running in the background (extension 1)\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_RUNNING_LEFT: Input_PointerStyle = 45;
#[doc = " Running in the background (extension 2)\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_RUNNING_RIGHT: Input_PointerStyle = 46;
#[doc = " Custom circular pointer\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_AECH_DEVELOPER_DEFINED_ICON: Input_PointerStyle = 47;
#[doc = " Screen recording\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_SCREENRECORDER_CURSOR: Input_PointerStyle = 48;
#[doc = " Floating This pointer can be used only when the stylus enters the air mouse mode and cannot be directly set.<br>\n In air mouse mode, you can rotate the stylus in the air to control the movement of the virtual pointer on the\n screen and press the button on the stylus to turn pages up or down. This mode is used PPT presentation and air\n gesture control.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_LASER_CURSOR: Input_PointerStyle = 49;
#[doc = " Click This pointer can be used only when the stylus enters the air mouse mode and cannot be directly set.<br>In\n air mouse mode, you can rotate the stylus in the air to control the movement of the virtual pointer on the screen\n and press the button on the stylus to turn pages up or down. This mode is used PPT presentation and air gesture\n control.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_LASER_CURSOR_DOT: Input_PointerStyle = 50;
#[doc = " Laser pointer This pointer can be used only when the stylus enters the air mouse mode and cannot be directly set.\n <br>In air mouse mode, you can rotate the stylus in the air to control the movement of the virtual pointer on\n the screen and press the button on the stylus to turn pages up or down. This mode is used PPT presentation and\n air gesture control.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_LASER_CURSOR_DOT_RED: Input_PointerStyle = 51;
#[doc = " Custom pointer. You can use the {@link OH_Input_SetCustomCursor} to set a custom pointer, but not the\n {@link OH_Input_SetPointerStyle}.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_PointerStyle_DEVELOPER_DEFINED_ICON: Input_PointerStyle = -100;
#[doc = " @brief Enumerates the pointer styles.\n\n @since 22"]
#[cfg(feature = "api-22")]
pub type Input_PointerStyle = i32;
#[doc = " Default state."]
pub const Input_KeyStateAction_KEY_DEFAULT: Input_KeyStateAction = -1;
#[doc = " Key press."]
pub const Input_KeyStateAction_KEY_PRESSED: Input_KeyStateAction = 0;
#[doc = " Key release."]
pub const Input_KeyStateAction_KEY_RELEASED: Input_KeyStateAction = 1;
#[doc = " Key switch enabled."]
pub const Input_KeyStateAction_KEY_SWITCH_ON: Input_KeyStateAction = 2;
#[doc = " Key switch disabled."]
pub const Input_KeyStateAction_KEY_SWITCH_OFF: Input_KeyStateAction = 3;
#[doc = " @brief Provides the enum values of the key status.\n\n @since 12"]
pub type Input_KeyStateAction = i32;
#[doc = " Button action canceled."]
pub const Input_KeyEventAction_KEY_ACTION_CANCEL: Input_KeyEventAction = 0;
#[doc = " Key press."]
pub const Input_KeyEventAction_KEY_ACTION_DOWN: Input_KeyEventAction = 1;
#[doc = " Key release."]
pub const Input_KeyEventAction_KEY_ACTION_UP: Input_KeyEventAction = 2;
#[doc = " @brief Provides the enum values of the key event type.\n\n @since 12"]
pub type Input_KeyEventAction = u32;
#[doc = " Cancellation of the mouse action."]
pub const Input_MouseEventAction_MOUSE_ACTION_CANCEL: Input_MouseEventAction = 0;
#[doc = " Moving of the mouse pointer."]
pub const Input_MouseEventAction_MOUSE_ACTION_MOVE: Input_MouseEventAction = 1;
#[doc = " Pressing of the mouse button."]
pub const Input_MouseEventAction_MOUSE_ACTION_BUTTON_DOWN: Input_MouseEventAction = 2;
#[doc = " Release of the mouse button."]
pub const Input_MouseEventAction_MOUSE_ACTION_BUTTON_UP: Input_MouseEventAction = 3;
#[doc = " Beginning of the mouse axis event."]
pub const Input_MouseEventAction_MOUSE_ACTION_AXIS_BEGIN: Input_MouseEventAction = 4;
#[doc = " Updating of the mouse axis event."]
pub const Input_MouseEventAction_MOUSE_ACTION_AXIS_UPDATE: Input_MouseEventAction = 5;
#[doc = " End of the mouse axis event."]
pub const Input_MouseEventAction_MOUSE_ACTION_AXIS_END: Input_MouseEventAction = 6;
#[doc = " @brief Provides the enum values of mouse actions.\n\n @since 12"]
pub type Input_MouseEventAction = u32;
#[doc = " Vertical scroll axis."]
pub const InputEvent_MouseAxis_MOUSE_AXIS_SCROLL_VERTICAL: InputEvent_MouseAxis = 0;
#[doc = " Horizontal scroll axis."]
pub const InputEvent_MouseAxis_MOUSE_AXIS_SCROLL_HORIZONTAL: InputEvent_MouseAxis = 1;
#[doc = " @brief Provides the enum values of mouse axis event types.\n\n @since 12"]
pub type InputEvent_MouseAxis = u32;
#[doc = " Invalid button."]
pub const Input_MouseEventButton_MOUSE_BUTTON_NONE: Input_MouseEventButton = -1;
#[doc = " Left button."]
pub const Input_MouseEventButton_MOUSE_BUTTON_LEFT: Input_MouseEventButton = 0;
#[doc = " Middle button."]
pub const Input_MouseEventButton_MOUSE_BUTTON_MIDDLE: Input_MouseEventButton = 1;
#[doc = " Right button."]
pub const Input_MouseEventButton_MOUSE_BUTTON_RIGHT: Input_MouseEventButton = 2;
#[doc = " Forward button."]
pub const Input_MouseEventButton_MOUSE_BUTTON_FORWARD: Input_MouseEventButton = 3;
#[doc = " Back button."]
pub const Input_MouseEventButton_MOUSE_BUTTON_BACK: Input_MouseEventButton = 4;
#[doc = " @brief Provides the enum values of mouse buttons.\n\n @since 12"]
pub type Input_MouseEventButton = i32;
#[doc = " Touch cancellation."]
pub const Input_TouchEventAction_TOUCH_ACTION_CANCEL: Input_TouchEventAction = 0;
#[doc = " Touch press."]
pub const Input_TouchEventAction_TOUCH_ACTION_DOWN: Input_TouchEventAction = 1;
#[doc = " Touch moving."]
pub const Input_TouchEventAction_TOUCH_ACTION_MOVE: Input_TouchEventAction = 2;
#[doc = " Touch release."]
pub const Input_TouchEventAction_TOUCH_ACTION_UP: Input_TouchEventAction = 3;
#[doc = " @brief Provides the enum values of touch actions.\n\n @since 12"]
pub type Input_TouchEventAction = u32;
#[doc = " Keyboard without keys."]
#[cfg(feature = "api-13")]
pub const Input_KeyboardType_KEYBOARD_TYPE_NONE: Input_KeyboardType = 0;
#[doc = " Keyboard with unknown keys."]
#[cfg(feature = "api-13")]
pub const Input_KeyboardType_KEYBOARD_TYPE_UNKNOWN: Input_KeyboardType = 1;
#[doc = " Full keyboard."]
#[cfg(feature = "api-13")]
pub const Input_KeyboardType_KEYBOARD_TYPE_ALPHABETIC: Input_KeyboardType = 2;
#[doc = " Numeric keypad."]
#[cfg(feature = "api-13")]
pub const Input_KeyboardType_KEYBOARD_TYPE_DIGITAL: Input_KeyboardType = 3;
#[doc = " Stylus."]
#[cfg(feature = "api-13")]
pub const Input_KeyboardType_KEYBOARD_TYPE_STYLUS: Input_KeyboardType = 4;
#[doc = " Remote control."]
#[cfg(feature = "api-13")]
pub const Input_KeyboardType_KEYBOARD_TYPE_REMOTE_CONTROL: Input_KeyboardType = 5;
#[doc = " @brief Provides the enum values of keyboard types of the input device.\n\n @since 13"]
#[cfg(feature = "api-13")]
pub type Input_KeyboardType = u32;
#[doc = " Permission not granted."]
#[cfg(feature = "api-20")]
pub const Input_InjectionStatus_UNAUTHORIZED: Input_InjectionStatus = 0;
#[doc = " Permission being granted."]
#[cfg(feature = "api-20")]
pub const Input_InjectionStatus_AUTHORIZING: Input_InjectionStatus = 1;
#[doc = " Permission granted."]
#[cfg(feature = "api-20")]
pub const Input_InjectionStatus_AUTHORIZED: Input_InjectionStatus = 2;
#[doc = " @brief Provides the enum values of injection permission states.\n\n @since 20"]
#[cfg(feature = "api-20")]
pub type Input_InjectionStatus = u32;
#[doc = " Source that generates events similar to mouse pointer movement, button press and release, and wheel scrolling.\n @since 12"]
pub const InputEvent_SourceType_SOURCE_TYPE_MOUSE: InputEvent_SourceType = 1;
#[doc = " Source that generates a touchscreen multi-touch event.\n @since 12"]
pub const InputEvent_SourceType_SOURCE_TYPE_TOUCHSCREEN: InputEvent_SourceType = 2;
#[doc = " Source that generates a touchpad multi-touch event.\n @since 12"]
pub const InputEvent_SourceType_SOURCE_TYPE_TOUCHPAD: InputEvent_SourceType = 3;
#[doc = " @brief Provides the enum values of event source types.\n\n @since 12"]
pub type InputEvent_SourceType = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_KeyState {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_KeyEvent {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_MouseEvent {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_TouchEvent {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_AxisEvent {
    _unused: [u8; 0],
}
#[cfg(feature = "api-14")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_Hotkey {
    _unused: [u8; 0],
}
#[cfg(feature = "api-22")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_CursorInfo {
    _unused: [u8; 0],
}
#[doc = " Operation succeeded."]
pub const Input_Result_INPUT_SUCCESS: Input_Result = 0;
#[doc = " Permission verification failed."]
pub const Input_Result_INPUT_PERMISSION_DENIED: Input_Result = 201;
#[doc = " Non-system application."]
pub const Input_Result_INPUT_NOT_SYSTEM_APPLICATION: Input_Result = 202;
#[doc = " Parameter check fails."]
pub const Input_Result_INPUT_PARAMETER_ERROR: Input_Result = 401;
#[doc = " Function not supported."]
pub const Input_Result_INPUT_DEVICE_NOT_SUPPORTED: Input_Result = 801;
#[doc = " Service error."]
pub const Input_Result_INPUT_SERVICE_EXCEPTION: Input_Result = 3800001;
#[doc = " Interceptor repeatedly created."]
pub const Input_Result_INPUT_REPEAT_INTERCEPTOR: Input_Result = 4200001;
#[doc = " Input device occupied by a system application.\n @since 14"]
#[cfg(feature = "api-14")]
pub const Input_Result_INPUT_OCCUPIED_BY_SYSTEM: Input_Result = 4200002;
#[doc = " Input device occupied by another application.\n @since 14"]
#[cfg(feature = "api-14")]
pub const Input_Result_INPUT_OCCUPIED_BY_OTHER: Input_Result = 4200003;
#[doc = " Keyboard not connected.\n @since 15"]
#[cfg(feature = "api-15")]
pub const Input_Result_INPUT_KEYBOARD_DEVICE_NOT_EXIST: Input_Result = 3900002;
#[doc = " Authorization in progress.\n @since 20"]
#[cfg(feature = "api-20")]
pub const Input_Result_INPUT_INJECTION_AUTHORIZING: Input_Result = 3900005;
#[doc = " Repeated request.\n @since 20"]
#[cfg(feature = "api-20")]
pub const Input_Result_INPUT_INJECTION_OPERATION_FREQUENT: Input_Result = 3900006;
#[doc = " Permission granted to the current application.\n @since 20"]
#[cfg(feature = "api-20")]
pub const Input_Result_INPUT_INJECTION_AUTHORIZED: Input_Result = 3900007;
#[doc = " Permission granted to other applications.\n @since 20"]
#[cfg(feature = "api-20")]
pub const Input_Result_INPUT_INJECTION_AUTHORIZED_OTHERS: Input_Result = 3900008;
#[doc = " Application not in focus.\n @since 20"]
#[cfg(feature = "api-20")]
pub const Input_Result_INPUT_APP_NOT_FOCUSED: Input_Result = 3900009;
#[doc = " No mouse device.\n @since 20"]
#[cfg(feature = "api-20")]
pub const Input_Result_INPUT_DEVICE_NO_POINTER: Input_Result = 3900010;
#[doc = " Invalid window ID.\n @since 22"]
#[cfg(feature = "api-22")]
pub const Input_Result_INPUT_INVALID_WINDOWID: Input_Result = 26500001;
#[doc = " @brief Provides return value enumerations.\n\n @since 12"]
pub type Input_Result = u32;
#[doc = " Finger\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_FINGER: Input_TouchEventToolType = 0;
#[doc = " Pen\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_PEN: Input_TouchEventToolType = 1;
#[doc = " Rubber\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_RUBBER: Input_TouchEventToolType = 2;
#[doc = " Brush\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_BRUSH: Input_TouchEventToolType = 3;
#[doc = " Pencil\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_PENCIL: Input_TouchEventToolType = 4;
#[doc = " Air brush\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_AIRBRUSH: Input_TouchEventToolType = 5;
#[doc = " Mouse\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_MOUSE: Input_TouchEventToolType = 6;
#[doc = " lens\n @since 24"]
#[cfg(feature = "api-24")]
pub const Input_TouchEventToolType_TOOL_TYPE_LENS: Input_TouchEventToolType = 7;
#[doc = " @brief Enumerates touch tool types of an input device.\n\n @since 24"]
#[cfg(feature = "api-24")]
pub type Input_TouchEventToolType = u32;
#[doc = " @brief Defines the callback used to return hotkey events.\n\n @since 14"]
#[cfg(feature = "api-14")]
pub type Input_HotkeyCallback =
    ::std::option::Option<unsafe extern "C" fn(hotkey: *mut Input_Hotkey)>;
#[cfg(feature = "api-13")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_DeviceInfo {
    _unused: [u8; 0],
}
#[cfg(feature = "api-22")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_CustomCursor {
    _unused: [u8; 0],
}
#[cfg(feature = "api-22")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_CursorConfig {
    _unused: [u8; 0],
}
#[doc = " @brief Defines a lifecycle callback for **keyEvent**. If the callback is triggered, **keyEvent** will be destroyed.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @since 12"]
pub type Input_KeyEventCallback =
    ::std::option::Option<unsafe extern "C" fn(keyEvent: *const Input_KeyEvent)>;
#[doc = " @brief Defines a lifecycle callback for **mouseEvent**. If the callback is triggered, **mouseEvent** will be\n destroyed.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @since 12"]
pub type Input_MouseEventCallback =
    ::std::option::Option<unsafe extern "C" fn(mouseEvent: *const Input_MouseEvent)>;
#[doc = " @brief Defines the lifecycle callback for **TouchEvent**. If the callback is triggered, **TouchEvent** will be\n destroyed.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @since 12"]
pub type Input_TouchEventCallback =
    ::std::option::Option<unsafe extern "C" fn(touchEvent: *const Input_TouchEvent)>;
#[doc = " @brief Defines a lifecycle callback for **axisEvent**. If the callback is triggered, **axisEvent** will be destroyed.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @since 12"]
pub type Input_AxisEventCallback =
    ::std::option::Option<unsafe extern "C" fn(axisEvent: *const Input_AxisEvent)>;
#[doc = " @brief Callback used to receive input device hot-plug events.\n\n @param deviceId Unique ID of the input device. If a physical device is repeatedly reinstalled or restarted, its ID\n     may change.\n @since 13"]
#[cfg(feature = "api-13")]
pub type Input_DeviceAddedCallback = ::std::option::Option<unsafe extern "C" fn(deviceId: i32)>;
#[doc = " @brief Callback used to receive input device hot-unplug events.\n\n @param deviceId Unique ID of the input device. If a physical device is repeatedly reinstalled or restarted, its ID\n     may change.\n @since 13"]
#[cfg(feature = "api-13")]
pub type Input_DeviceRemovedCallback = ::std::option::Option<unsafe extern "C" fn(deviceId: i32)>;
#[doc = " @brief Defines a callback used to receive the injection permission authorization status.\n\n @param authorizedStatus Injection permission authorization status.\n @since 20"]
#[cfg(feature = "api-20")]
pub type Input_InjectAuthorizeCallback =
    ::std::option::Option<unsafe extern "C" fn(authorizedStatus: Input_InjectionStatus)>;
#[doc = " @brief Defines the structure for the interceptor of event callbacks,\n including mouseCallback, touchCallback, and axisCallback.\n @since 12"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_InterceptorEventCallback {
    #[doc = " Defines a lifecycle callback for **mouseEvent**."]
    pub mouseCallback: Input_MouseEventCallback,
    #[doc = " Defines a lifecycle callback for **touchEvent**."]
    pub touchCallback: Input_TouchEventCallback,
    #[doc = " Defines a lifecycle callback for **axisEvent**."]
    pub axisCallback: Input_AxisEventCallback,
}
#[doc = " @brief Defines the struct for listening for device hot swapping. It is applicable to applications that need to\n respond to input device connection and disconnection in real time, such as games and music players. By listening for\n device hot swapping events, applications can update the input status in a timely manner, improving user experience\n and avoiding exceptions caused by device disconnection.\n\n @since 13"]
#[cfg(feature = "api-13")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_DeviceListener {
    #[doc = " Defines a callback used to receive device hot-plug events."]
    pub deviceAddedCallback: Input_DeviceAddedCallback,
    #[doc = " Defines a callback used to receive device hot-unplug events."]
    pub deviceRemovedCallback: Input_DeviceRemovedCallback,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Input_InterceptorOptions {
    _unused: [u8; 0],
}
extern "C" {
    #[doc = " @brief Queries a key status enum object.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @return If the operation is successful, {@link INPUT_SUCCESS} is returned; if parameter verification fails,\n     {@link INPUT_PARAMETER_ERROR} is returned.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeyState(keyState: *mut Input_KeyState) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates a key status enum object. You can call {@link OH_Input_DestroyKeyState()} to destroy a key status\n enum object.\n\n @return If the operations is successful, {@link Input_KeyState} is returned. Otherwise, a null pointer is returned.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_CreateKeyState() -> *mut Input_KeyState;
}
extern "C" {
    #[doc = " @brief Destroys a key status enum object.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_DestroyKeyState(keyState: *mut *mut Input_KeyState);
}
extern "C" {
    #[doc = " @brief Sets the key value of a key status enum object.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @param keyCode Key code. For details, see {@link KeyCode}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetKeyCode(keyState: *mut Input_KeyState, keyCode: i32);
}
extern "C" {
    #[doc = " @brief Obtains the key value of a key status enum object.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @return Key value of the key status enum object. For details, see {@link Input_KeyStateAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeyCode(keyState: *const Input_KeyState) -> i32;
}
extern "C" {
    #[doc = " @brief Sets whether the key specific to a key status enum object is pressed.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @param keyAction Whether a key is pressed. For details, see {@link Input_KeyEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetKeyPressed(keyState: *mut Input_KeyState, keyAction: i32);
}
extern "C" {
    #[doc = " @brief Checks whether the key specific to a key status enum object is pressed.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @return Key pressing status of the key status enum object. For details, see {@link Input_KeyStateAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeyPressed(keyState: *const Input_KeyState) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the key switch of the key status enum object.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @param keySwitch Key switch.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetKeySwitch(keyState: *mut Input_KeyState, keySwitch: i32);
}
extern "C" {
    #[doc = " @brief Injects a key event.\n <br>This API does not take effect if the user has not granted authorization and the caller does not have the ohos.\n permission.CONTROL_DEVICE permission.\n <br>Since API version 20, you are advised to use {@link OH_Input_RequestInjection()} to request the required\n permission before calling this API. If the status returned by {@link OH_Input_QueryAuthorizedStatus()} is\n {@link AUTHORIZED}, then you can call this API.\n <br>Since API version 22, if the key press event (**KEY_ACTION_DOWN**) of a modifier key (**KEYCODE_META_LEFT**, **\n KEYCODE_META_RIGHT**, **KEYCODE_CTRL_LEFT**, **KEYCODE_CTRL_RIGHT**, **KEYCODE_ALT_LEFT**, **KEYCODE_ALT_RIGHT**, **\n KEYCODE_SHIFT_LEFT**, **KEYCODE_SHIFT_RIGHT**, **KEYCODE_CAPS_LOCK**, **KEYCODE_SCROLL_LOCK**, or **KEYCODE_NUM_LOCK*\n *) is injected, the release event (**KEY_ACTION_UP**) of the key needs to be injected in a timely manner to avoid\n the key being pressed for a long time.\n <br>Since API version 26.0.0, callers that have the ohos.permission.CONTROL_DEVICE permission can use this API\n directly.\n\n @permission ohos.permission.CONTROL_DEVICE\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}. You can call\n     {@link OH_Input_SetKeyEventKeyCode()} and {@link OH_Input_SetKeyEventAction()} to set the key value and key\n     event type of the key event object.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @return Return value of the **OH_Input_InjectKeyEvent** function.\n     <br>- {@link INPUT_SUCCESS} if the operation is successful;\n     <br>- {@link INPUT_PERMISSION_DENIED} if the required permission is missing;\n     <br>- {@link INPUT_PARAMETER_ERROR} if the input parameter is incorrect.\n @since 12"]
    pub fn OH_Input_InjectKeyEvent(keyEvent: *const Input_KeyEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Obtains the key switch of the key status enum object.\n\n @param keyState Key status enum object. For details, see {@link Input_KeyStateAction}.\n @return Key switch of the key status enum object. For details, see {@link Input_KeyStateAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeySwitch(keyState: *const Input_KeyState) -> i32;
}
extern "C" {
    #[doc = " @brief Creates a key event object. You can call {@link OH_Input_DestroyKeyEvent()} to destroy a key event object.\n\n @return {@link Input_KeyEvent} pointer object if the operation is successful; a null pointer otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_CreateKeyEvent() -> *mut Input_KeyEvent;
}
extern "C" {
    #[doc = " @brief Destroys a key event object.\n\n @param keyEvent Key event object.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_DestroyKeyEvent(keyEvent: *mut *mut Input_KeyEvent);
}
extern "C" {
    #[doc = " @brief Sets the key event type.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @param action Key event type. For details, see {@link Input_KeyEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetKeyEventAction(keyEvent: *mut Input_KeyEvent, action: i32);
}
extern "C" {
    #[doc = " @brief Obtains the key event action.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @return Key event type. For details, see {@link Input_KeyEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeyEventAction(keyEvent: *const Input_KeyEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the key code value for a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @param keyCode Key value. For details, see {@link KeyCode}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetKeyEventKeyCode(keyEvent: *mut Input_KeyEvent, keyCode: i32);
}
extern "C" {
    #[doc = " @brief Obtains the key code value of a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @return Key code of a key event. For details, see {@link Input_KeyCode}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeyEventKeyCode(keyEvent: *const Input_KeyEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the time when a key event occurs.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @param actionTime Time when the key event occurred, representing the number of microseconds elapsed since system\n     startup, in microseconds (μs).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetKeyEventActionTime(keyEvent: *mut Input_KeyEvent, actionTime: i64);
}
extern "C" {
    #[doc = " @brief Obtains the time when a key event occurs.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @return Returns the time when the key event occurred, representing the number of microseconds elapsed since system\n     startup, in microseconds (μs).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetKeyEventActionTime(keyEvent: *const Input_KeyEvent) -> i64;
}
extern "C" {
    #[doc = " @brief Sets the window ID of a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @param windowId Window ID of the key event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetKeyEventWindowId(keyEvent: *mut Input_KeyEvent, windowId: i32);
}
extern "C" {
    #[doc = " @brief Obtains the window ID of a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @return Window ID of the key event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetKeyEventWindowId(keyEvent: *const Input_KeyEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the screen ID of a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @param displayId Screen ID of the key event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetKeyEventDisplayId(keyEvent: *mut Input_KeyEvent, displayId: i32);
}
extern "C" {
    #[doc = " @brief Obtains the screen ID of a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @return Screen ID of the key event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetKeyEventDisplayId(keyEvent: *const Input_KeyEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Obtains the ID of a key event.\n\n @param keyEvent **KeyEvent** object, which can be created through {@link OH_Input_CreateKeyEvent()}.\n     <br>If the key event object is no longer needed, destroy it by calling {@link OH_Input_DestroyKeyEvent()}.\n @param eventId ID of the key event.\n @return Return value of the **OH_Input_GetKeyEventId** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 21"]
    #[cfg(feature = "api-21")]
    pub fn OH_Input_GetKeyEventId(
        keyEvent: *const Input_KeyEvent,
        eventId: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a hook function for key event interception.\n <br>You can call {@link OH_Input_RemoveKeyEventHook()} to remove a hook function that has been added. Multiple hook\n functions can be set for an application, but only one hook function can be set for a process. The most recently\n added hook function has a higher priority.\n\n @permission ohos.permission.HOOK_KEY_EVENT\n @param callback Hook function, which is used to intercept all key events to be distributed.\n @return Return value of the **OH_Input_AddKeyEventHook** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails;\n     <br>{@link INPUT_DEVICE_NOT_SUPPORTED} if the function is not supported.\n     <br>{@link INPUT_PERMISSION_DENIED} if the permission verification fails;\n     <br>{@link INPUT_REPEAT_INTERCEPTOR} if the hook function is set repeatedly (only one hook function can be set\n     for a process);\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 21"]
    #[cfg(feature = "api-21")]
    pub fn OH_Input_AddKeyEventHook(callback: Input_KeyEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the hook function for key event interception.\n <br>This API is usually used together with {@link OH_Input_AddKeyEventHook()}.\n\n @param callback Hook function, which is used to intercept all key events to be distributed.\n @return Return value of the **OH_Input_RemoveKeyEventHook** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful; (if a hook is not added, a success message is also\n     returned when the hook is removed);\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 21"]
    #[cfg(feature = "api-21")]
    pub fn OH_Input_RemoveKeyEventHook(callback: Input_KeyEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Redispatches key events.\n <br>Only key events intercepted by the hook function can be redispatched, and these events must maintain the\n original priority sequence.\n <br>After this API is called, key events will be redispatched within 3 seconds. If the redispatch is not completed\n within 3 seconds, {@link INPUT_PARAMETER_ERROR} is reported.\n <br>Successful redispatch requires correct mapping of events. If one or more {@link KEY_ACTION_DOWN} events are\n redispatched, the {@link KEY_ACTION_UP} or {@link KEY_ACTION_CANCEL} event can be redispatched.\n <br>If only the {@link KEY_ACTION_UP} or {@link KEY_ACTION_CANCEL} key events are redispatched, the API call is\n successful, but the dispatch is not actually performed.\n <br>If the redispatched event is not intercepted by the hook function, the API call is successful, but the dispatch\n is not actually performed.\n\n @param eventId ID of the key event, which can be obtained through {@link OH_Input_GetKeyEventId()}.\n @return Return value of the **OH_Input_DispatchToNextHandler** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails; (you can call\n     {@link OH_Input_GetKeyEventId()} to check whether the input eventId is correct);\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 21"]
    #[cfg(feature = "api-21")]
    pub fn OH_Input_DispatchToNextHandler(eventId: i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Injects a mouse event by using coordinates in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n <br>This API does not take effect if the user has not granted authorization and the caller does not have the ohos.\n permission.CONTROL_DEVICE permission.\n <br>Since API version 20, you are advised to use {@link OH_Input_RequestInjection()} to request the required\n permission before calling this API. If the status returned by {@link OH_Input_QueryAuthorizedStatus()} is\n {@link AUTHORIZED}, then you can call this API.\n <br>Since API version 26.0.0, callers that have the ohos.permission.CONTROL_DEVICE permission can use this API\n directly.\n\n @permission ohos.permission.CONTROL_DEVICE\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Return value of the **OH_Input_InjectMouseEvent** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter is incorrect;\n     <br>{@link INPUT_PERMISSION_DENIED} if the permission is denied.\n @since 12"]
    pub fn OH_Input_InjectMouseEvent(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Injects a mouse event by using coordinates in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n <br>This API does not take effect if the user has not granted authorization and the caller does not have the ohos.\n permission.CONTROL_DEVICE permission.\n <br>Since API version 20, you are advised to use {@link OH_Input_RequestInjection()} to request the required\n permission before calling this API. If the status returned by {@link OH_Input_QueryAuthorizedStatus()} is\n {@link AUTHORIZED}, then you can call this API.\n <br>Since API version 26.0.0, callers that have the ohos.permission.CONTROL_DEVICE permission can use this API\n directly.\n\n @permission ohos.permission.CONTROL_DEVICE\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Return value of the **OH_Input_InjectMouseEventGlobal** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter is incorrect;\n     <br>{@link INPUT_PERMISSION_DENIED} if the permission is denied.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_InjectMouseEventGlobal(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Creates a mouse event object. You can call {@link OH_Input_DestroyMouseEvent()} to destroy a mouse event\n object.\n\n @return {@link Input_MouseEvent} pointer object if the operation is successful; a null pointer otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_CreateMouseEvent() -> *mut Input_MouseEvent;
}
extern "C" {
    #[doc = " @brief Destroys a mouse event object.\n\n @param mouseEvent Mouse event object.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_DestroyMouseEvent(mouseEvent: *mut *mut Input_MouseEvent);
}
extern "C" {
    #[doc = " @brief Sets the action for a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param action Mouse action. For details, see {@link Input_MouseEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventAction(mouseEvent: *mut Input_MouseEvent, action: i32);
}
extern "C" {
    #[doc = " @brief Obtains the action of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Mouse action. Returns -1 if mouseEvent is NULL.\n     For details, see {@link Input_MouseEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventAction(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the mouse event in the relative coordinate system with the upper-left corner of the\n specified screen as the origin.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param displayX X-coordinate in the relative coordinate system with the upper left corner of the specified screen as\n     the origin, in pixels (px).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventDisplayX(mouseEvent: *mut Input_MouseEvent, displayX: i32);
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the mouse event in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return The X coordinate of the mouse event in the relative coordinate system with the upper left corner of the\n     specified screen as the origin, in pixels (px). Returns -1 if mouseEvent is NULL.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventDisplayX(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the mouse event in the relative coordinate system with the upper-left corner of the\n specified screen as the origin.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param displayY Y coordinate of the mouse event in the relative coordinate system with the upper left corner of the\n     specified screen as the origin, in pixels (px).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventDisplayY(mouseEvent: *mut Input_MouseEvent, displayY: i32);
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the mouse event in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Y-coordinate of the mouse event in the relative coordinate system with the upper left corner of the\n     specified screen as the origin, in pixels (px). Returns -1 if mouseEvent is NULL.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventDisplayY(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the button for a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param button Mouse button. For details, see {@link Input_MouseEventButton}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventButton(mouseEvent: *mut Input_MouseEvent, button: i32);
}
extern "C" {
    #[doc = " @brief Obtains the button of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Mouse button. Returns -1 if mouseEvent is NULL.\n     For details, see {@link Input_MouseEventButton}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventButton(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the axis type for a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param axisType Mouse axis type, such as vertical axis and horizontal axis. For details, see\n     {@link InputEvent_MouseAxis}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventAxisType(mouseEvent: *mut Input_MouseEvent, axisType: i32);
}
extern "C" {
    #[doc = " @brief Obtains the axis type of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Enumerates mouse axis types. Returns -1 if mouseEvent is NULL.\n     For details, see {@link InputEvent_MouseAxis}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventAxisType(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the axis value for a mouse axis event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param axisValue Axis event value. A positive number means scrolling forward (for example, 1.0 equals one unit\n     forward), and a negative number means scrolling backward (for example, -1.0 equals one unit backward).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventAxisValue(mouseEvent: *mut Input_MouseEvent, axisValue: f32);
}
extern "C" {
    #[doc = " @brief Obtains the axis value of a mouse axis event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Axis event value. Returns -1 if mouseEvent is NULL.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventAxisValue(mouseEvent: *const Input_MouseEvent) -> f32;
}
extern "C" {
    #[doc = " @brief Sets the time when a mouse event occurs.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param actionTime Time when the mouse event occurred, representing the number of microseconds elapsed since system\n     startup, in microseconds (μs).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetMouseEventActionTime(mouseEvent: *mut Input_MouseEvent, actionTime: i64);
}
extern "C" {
    #[doc = " @brief Obtains the time when a mouse event occurs.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Returns the time when the mouse event occurred, representing the number of microseconds elapsed since system\n     startup, in microseconds (μs).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetMouseEventActionTime(mouseEvent: *const Input_MouseEvent) -> i64;
}
extern "C" {
    #[doc = " @brief Sets the window ID of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param windowId Window ID of the mouse event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetMouseEventWindowId(mouseEvent: *mut Input_MouseEvent, windowId: i32);
}
extern "C" {
    #[doc = " @brief Obtains the window ID of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Window ID of the mouse event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetMouseEventWindowId(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the screen ID of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @param displayId Screen ID of the mouse event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetMouseEventDisplayId(mouseEvent: *mut Input_MouseEvent, displayId: i32);
}
extern "C" {
    #[doc = " @brief Obtains the screen ID of a mouse event.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return Screen ID if the operation is successful; **-1** if **mouseEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetMouseEventDisplayId(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the mouse event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param mouseEvent Mouse Event object, which can be created through the {@link OH_Input_CreateMouseEvent()} API.\n     <br>After use, the Mouse Event object must be destroyed through the {@link OH_Input_DestroyMouseEvent()} API.\n @param globalX X coordinate of the Mouse Event in the global coordinate system with the origin at the upper left\n     corner of the primary screen, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_SetMouseEventGlobalX(mouseEvent: *mut Input_MouseEvent, globalX: i32);
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the mouse event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return X-coordinate in the global coordinate system with the origin at the upper left corner of the primary screen,\n     in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetMouseEventGlobalX(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the mouse event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param mouseEvent Mouse Event object, which can be created through the {@link OH_Input_CreateMouseEvent()} API.\n     <br>After use, the Mouse Event object must be destroyed through the {@link OH_Input_DestroyMouseEvent()} API.\n @param globalY Y-coordinate of the mouse event in the global coordinate system with the origin at the upper left\n     corner of the primary screen, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_SetMouseEventGlobalY(mouseEvent: *mut Input_MouseEvent, globalY: i32);
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the mouse event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param mouseEvent Mouse event object. You can call {@link OH_Input_CreateMouseEvent()} to create a mouse event\n     object.\n     <br>If the mouse event object is no longer needed, destroy it by calling {@link OH_Input_DestroyMouseEvent()}.\n @return The Y coordinate of the mouse event in the global coordinate system with the origin at the upper left corner\n     of the primary screen, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetMouseEventGlobalY(mouseEvent: *const Input_MouseEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Injects a touch event by using coordinates in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n <br>This API does not take effect if the user has not granted authorization and the caller does not have the ohos.\n permission.CONTROL_DEVICE permission.\n <br>Since API version 20, you are advised to use {@link OH_Input_RequestInjection()} to request the required\n permission before calling this API. If the status returned by {@link OH_Input_QueryAuthorizedStatus()} is\n {@link AUTHORIZED}, then you can call this API.\n <br>Since API version 26.0.0, callers that have the ohos.permission.CONTROL_DEVICE permission can use this API\n directly.\n\n @permission ohos.permission.CONTROL_DEVICE\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Return value of the OH_Input_InjectTouchEvent function.\n     <br>{@link INPUT_SUCCESS} indicates successful injection.\n     <br>{@link INPUT_PARAMETER_ERROR} indicates a parameter error.\n @since 12"]
    pub fn OH_Input_InjectTouchEvent(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Injects a touch event by using coordinates in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n <br>This API does not take effect if the event injection authorization is not granted and the caller does not have\n the ohos.permission.CONTROL_DEVICE permission.\n <br>Since API version 20, you are advised to use {@link OH_Input_RequestInjection()} to request the required\n permission before calling this API. If the status returned by {@link OH_Input_QueryAuthorizedStatus()} is\n {@link AUTHORIZED}, then you can call this API.\n <br>Since API version 26.0.0, callers that have the ohos.permission.CONTROL_DEVICE permission can use this API\n directly.\n\n @permission ohos.permission.CONTROL_DEVICE\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Return value of the **OH_Input_InjectTouchEventGlobal** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter is incorrect;\n     <br>{@link INPUT_PERMISSION_DENIED} if the permission is denied.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_InjectTouchEventGlobal(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Creates a **TouchEvent** object. You can call {@link OH_Input_DestroyTouchEvent()} to destroy a touch event\n object.\n\n @return {@link Input_TouchEvent} pointer object if the operation is successful; a null pointer otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_CreateTouchEvent() -> *mut Input_TouchEvent;
}
extern "C" {
    #[doc = " @brief Destroys a **TouchEvent** object.\n\n @param touchEvent **TouchEvent** object.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_DestroyTouchEvent(touchEvent: *mut *mut Input_TouchEvent);
}
extern "C" {
    #[doc = " @brief Sets the action of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param action Action of the touch event. For details, see {@link Input_TouchEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetTouchEventAction(touchEvent: *mut Input_TouchEvent, action: i32);
}
extern "C" {
    #[doc = " @brief Obtains the action of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Action of the touch event. For details, see {@link Input_TouchEventAction}.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetTouchEventAction(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the finger ID of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param id Finger ID of a touch event. The ID of the first finger touching the screen is 0, the second is 1, and so\n     on incrementally.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetTouchEventFingerId(touchEvent: *mut Input_TouchEvent, id: i32);
}
extern "C" {
    #[doc = " @brief Obtains the finger ID of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Finger ID of a touch event. The ID of the first finger touching the screen is 0, the second is 1, and so on\n     incrementally.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetTouchEventFingerId(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the touch event in the relative coordinate system with the upper-left corner of the\n specified screen as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param displayX X coordinate of the touch screen input event in the relative coordinate system with the upper left\n     corner of the specified screen as the origin, in pixels (px).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetTouchEventDisplayX(touchEvent: *mut Input_TouchEvent, displayX: i32);
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the touch event in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return The X coordinate of the touch screen input event in the relative coordinate system with the upper left\n     corner of the specified screen as the origin, in pixels (px).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetTouchEventDisplayX(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the touch event in the relative coordinate system with the upper-left corner of the\n specified screen as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param displayY Y-coordinate of the touch screen input event in the relative coordinate system with the upper left\n     corner of the specified screen as the origin, in pixels (px).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetTouchEventDisplayY(touchEvent: *mut Input_TouchEvent, displayY: i32);
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the touch event in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return The Y coordinate of the touch screen input event in the relative coordinate system with the upper left\n     corner of the specified screen as the origin, in pixels (px).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetTouchEventDisplayY(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the time when the touch event occurs.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param actionTime Time when the touch screen input event occurred, indicating the number of microseconds elapsed\n     since system startup, in microseconds (μs).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetTouchEventActionTime(touchEvent: *mut Input_TouchEvent, actionTime: i64);
}
extern "C" {
    #[doc = " @brief Obtains the time when the touch event occurs.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Time when a touch event occurs.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetTouchEventActionTime(touchEvent: *const Input_TouchEvent) -> i64;
}
extern "C" {
    #[doc = " @brief Sets the window ID of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param windowId Window ID of a touch event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetTouchEventWindowId(touchEvent: *mut Input_TouchEvent, windowId: i32);
}
extern "C" {
    #[doc = " @brief Obtains the window ID of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Window ID of a touch event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetTouchEventWindowId(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the screen ID of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param displayId Screen ID of a touch event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetTouchEventDisplayId(touchEvent: *mut Input_TouchEvent, displayId: i32);
}
extern "C" {
    #[doc = " @brief Obtains the screen ID of a touch event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Screen ID of a touch event.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetTouchEventDisplayId(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the touch event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param touchEvent Touch screen input event object, which can be created through the\n     {@link OH_Input_CreateTouchEvent()} interface.\n     <br>After use, the touch screen input event object must be destroyed using the\n     {@link OH_Input_DestroyTouchEvent()} interface.\n @param globalX X coordinate of the touch screen input event in the global coordinate system with the upper left\n     corner of the primary screen as the origin, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_SetTouchEventGlobalX(touchEvent: *mut Input_TouchEvent, globalX: i32);
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the touch event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return The X coordinate in the global coordinate system with the upper left corner of the primary screen as the\n     origin, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetTouchEventGlobalX(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the touch event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param touchEvent Touch screen input event object, which can be created through the\n     {@link OH_Input_CreateTouchEvent()} interface.\n     <br>After use, the touch screen input event object must be destroyed using the\n     {@link OH_Input_DestroyTouchEvent()} interface.\n @param globalY Y coordinate of the touch screen input event in the global coordinate system with the upper left\n     corner of the primary screen as the origin, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_SetTouchEventGlobalY(touchEvent: *mut Input_TouchEvent, globalY: i32);
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the touch event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return The Y coordinate in the global coordinate system with the upper left corner of the primary screen as the\n     origin for the touch screen input event, in pixels (px).\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetTouchEventGlobalY(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the pressure for a touchscreen input event. If the pressure value is not set or is not within the valid\n range, the default value **0.0** is used.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param pressure Pressure value. The value range is [0.0, 1.0]. Currently, the minimum pressure that can be sensed by\n     the touchscreen is 0.0, and the maximum pressure is 1.0. This value has no unit.\n @return Return value of the **OH_Input_SetTouchEventPressure** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_SetTouchEventPressure(
        touchEvent: *mut Input_TouchEvent,
        pressure: f64,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the pressure of a touchscreen input event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Pressure value, without a unit. When touchEvent is NULL, return the default pressure 0.0.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_GetTouchEventPressure(touchEvent: *const Input_TouchEvent) -> f64;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the touch event in the relative coordinate system with the upper-left corner of the\n specified window as the origin. If the X coordinate is not set, the default value **0** is used.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param windowX X-coordinate in the relative coordinate system with the origin at the upper left corner of the\n     specified window, in pixels (px).\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_SetTouchEventWindowX(touchEvent: *mut Input_TouchEvent, windowX: i32);
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the touch event in the relative coordinate system with the upper-left corner of\n the specified window as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return X coordinate in the relative coordinate system with the upper left corner of the specified window as the\n     origin, in pixels (px). When touchEvent is NULL, return the default value 0.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_GetTouchEventWindowX(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the touch event in the relative coordinate system with the upper-left corner of the\n specified window as the origin. If the Y coordinate is not set, the default value **0** is used.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param windowY Y-coordinate in the relative coordinate system with the origin at the upper left corner of the window,\n      in pixels (px).\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_SetTouchEventWindowY(touchEvent: *mut Input_TouchEvent, windowY: i32);
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the touch event in the relative coordinate system with the upper-left corner of\n the specified window as the origin.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Y-coordinate in the relative coordinate system with the origin at the upper left corner of the window, in\n     pixels (px). When touchEvent is NULL, return the default value 0.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_GetTouchEventWindowY(touchEvent: *const Input_TouchEvent) -> i32;
}
extern "C" {
    #[doc = " @brief Sets the time when the most recent down event occurred for the finger or other touchscreen devices associated\n with the current touchscreen event. If the time is not set, the default value **0** is used.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param downTime The time when the most recent press event of the finger or other touch screen peripheral\n     corresponding to the current touch screen event occurred, representing the number of microseconds elapsed since\n     system startup, in microseconds (μs).\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_SetTouchEventDownTime(touchEvent: *mut Input_TouchEvent, downTime: i64);
}
extern "C" {
    #[doc = " @brief Obtains the time when the most recent down event occurred for the finger or other touchscreen devices\n associated with the current touchscreen event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return The time when the most recent press event of the finger or other touch peripherals corresponding to the\n     current touch screen input occurred, representing the number of microseconds elapsed since system startup, in\n     microseconds (μs). When touchEvent is NULL, return 0.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_GetTouchEventDownTime(touchEvent: *const Input_TouchEvent) -> i64;
}
extern "C" {
    #[doc = " @brief Sets the tool type for a touchscreen input event. If **toolType** is not set, the default value **\n Input_TouchEventToolType.TOOL_TYPE_FINGER** is used.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @param toolType Tool type.\n @return Return value of the **OH_Input_SetTouchEventToolType** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_SetTouchEventToolType(
        touchEvent: *mut Input_TouchEvent,
        toolType: Input_TouchEventToolType,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the tool type of a touchscreen input event.\n\n @param touchEvent **TouchEvent** object, which can be created through {@link OH_Input_CreateTouchEvent()}.\n     <br>If the **TouchEvent** object is no longer needed, destroy it by calling {@link OH_Input_DestroyTouchEvent()}.\n @return Tool type.{@link TOOL_TYPE_FINGER} When touchEvent is NULL, return the default toolType.\n @since 24"]
    #[cfg(feature = "api-24")]
    pub fn OH_Input_GetTouchEventToolType(
        touchEvent: *const Input_TouchEvent,
    ) -> Input_TouchEventToolType;
}
extern "C" {
    #[doc = " @brief Requests the permission for {@link OH_Input_InjectKeyEvent}, {@link OH_Input_InjectTouchEvent}, and\n {@link OH_Input_InjectMouseEvent}.\n <br>Since API version 26.0.0, if the ohos.permission.CONTROL_DEVICE permission has been granted, you do not need to\n request the injection permission. The behavior of this API is independent of the ohos.permission.CONTROL_DEVICE\n permission.\n\n @param callback Callback used to return the permission authorization status. For details, see\n     {@link Input_InjectAuthorizeCallback}.\n @return Return value. For details, see {@link Input_Result}.\n     <br>INPUT_SUCCESS = 0: Operation success. The application waits for the user authorization result and returns\n     the authorization status through a callback.\n     <br>INPUT_PARAMETER_ERROR = 401: Parameter error. The callback parameter is empty.\n     <br>INPUT_DEVICE_NOT_SUPPORTED = 801: Function not supported.\n     <br>INPUT_SERVICE_EXCEPTION = 3800001: Service error.\n     <br>INPUT_INJECTION_AUTHORIZING = 3900005: Permission being granted.\n     <br>INPUT_INJECTION_OPERATION_FREQUENT = 3900006: Repeated request. The application continuously requests\n     permission authorization at an interval of no more than 3 seconds.\n     <br>INPUT_INJECTION_AUTHORIZED = 3900007: Permission granted.\n     <br>INPUT_INJECTION_AUTHORIZED_OTHERS = 3900008: Permission granted to other applications.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_RequestInjection(callback: Input_InjectAuthorizeCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Stops event injection and revokes authorization.\n\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_CancelInjection();
}
extern "C" {
    #[doc = " @brief Queries the injection permission authorization status of the current application.\n <br>Since API version 26.0.0, this API returns only the dialog authorization status. It does not indicate whether\n the caller has injection capability due to holding the ohos.permission.CONTROL_DEVICE permission.\n\n @param status Injection permission authorization status of the current application. See\n     {@link Input_InjectionStatus}.\n @return Return value. For details, see {@link Input_Result}.\n     <br>INPUT_SUCCESS = 0: Operation success.\n     <br>INPUT_PARAMETER_ERROR = 401: Parameter error. The status parameter is empty.\n     <br>INPUT_SERVICE_EXCEPTION = 3800001: Service error.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_QueryAuthorizedStatus(status: *mut Input_InjectionStatus) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates an axis event object. You can call {@link OH_Input_DestroyAxisEvent()} to destroy an axis event\n object.\n\n @return {@link Input_AxisEvent} object if the operation is successful; **null** otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_CreateAxisEvent() -> *mut Input_AxisEvent;
}
extern "C" {
    #[doc = " @brief Destroys an axis event object.\n\n @param axisEvent Pointer to the axis event object.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_DestroyAxisEvent(axisEvent: *mut *mut Input_AxisEvent) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the action for an axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param action Axis event action. For details, see {@link InputEvent_AxisAction}.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventAction(
        axisEvent: *mut Input_AxisEvent,
        action: InputEvent_AxisAction,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the action of an axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param action Axis event action. For details, see {@link InputEvent_AxisAction}.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     action** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventAction(
        axisEvent: *const Input_AxisEvent,
        action: *mut InputEvent_AxisAction,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the axis event in the relative coordinate system with the upper-left corner of the\n specified screen as the origin.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param displayX X coordinate in the relative coordinate system with the upper left corner of the specified screen as\n     the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventDisplayX(
        axisEvent: *mut Input_AxisEvent,
        displayX: f32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the axis event in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param displayX Output parameter, returns the X coordinate of the axis event in the relative coordinate system with\n     the upper left corner of the specified screen as the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     displayX** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventDisplayX(
        axisEvent: *const Input_AxisEvent,
        displayX: *mut f32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the axis event in the relative coordinate system with the upper-left corner of the\n specified screen as the origin.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param displayY Y coordinate in the relative coordinate system with the upper left corner of the specified screen as\n     the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventDisplayY(
        axisEvent: *mut Input_AxisEvent,
        displayY: f32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the axis event in the relative coordinate system with the upper-left corner of\n the specified screen as the origin.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param displayY Output parameter, returns the Y coordinate of the axis event in the relative coordinate system with\n     the upper left corner of the specified screen as the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     displayY** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventDisplayY(
        axisEvent: *const Input_AxisEvent,
        displayY: *mut f32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the axis value of the axis type specified by the axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param axisType Axis type. For details, see {@link InputEvent_AxisType}.\n @param axisValue Value of the axis event. A positive value indicates scrolling forward (for example, 1.0 means\n     scrolling forward by one unit), a negative value indicates scrolling backward (for example, -1.0 means scrolling\n     backward by one unit), and zero indicates no scrolling.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventAxisValue(
        axisEvent: *mut Input_AxisEvent,
        axisType: InputEvent_AxisType,
        axisValue: f64,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the axis value for the specified axis type of the axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param axisType Axis type. For details, see {@link InputEvent_AxisType}.\n @param axisValue Axis event value. A positive number means scrolling forward (for example, 1.0 equals one unit\n     forward), and a negative number means scrolling backward (for example, -1.0 equals one unit backward).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     axisValue** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventAxisValue(
        axisEvent: *const Input_AxisEvent,
        axisType: InputEvent_AxisType,
        axisValue: *mut f64,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the time when an axis event occurs.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param actionTime Time when the axis event occurred, representing the number of microseconds elapsed since system\n     startup, in microseconds (μs).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventActionTime(
        axisEvent: *mut Input_AxisEvent,
        actionTime: i64,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the time when an axis event occurs.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param actionTime Output parameter, returns the time when the axis event occurred, representing the number of\n     microseconds elapsed since system startup, in microseconds (μs).\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     actionTime** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventActionTime(
        axisEvent: *const Input_AxisEvent,
        actionTime: *mut i64,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the axis event type.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param axisEventType Axis event type. For details, see {@link InputEvent_AxisEventType}.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventType(
        axisEvent: *mut Input_AxisEvent,
        axisEventType: InputEvent_AxisEventType,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the axis event type.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param axisEventType Axis event type. For details, see {@link InputEvent_AxisEventType}.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     axisEventType** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventType(
        axisEvent: *const Input_AxisEvent,
        axisEventType: *mut InputEvent_AxisEventType,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the axis event source type.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param sourceType Axis event source type. For details, see {@link InputEvent_SourceType}.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_SetAxisEventSourceType(
        axisEvent: *mut Input_AxisEvent,
        sourceType: InputEvent_SourceType,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the axis event source type.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param sourceType Axis event source type. For details, see {@link InputEvent_SourceType}.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     sourceType** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_GetAxisEventSourceType(
        axisEvent: *const Input_AxisEvent,
        sourceType: *mut InputEvent_SourceType,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the window ID of an axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param windowId Window ID of an axis event.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetAxisEventWindowId(
        axisEvent: *mut Input_AxisEvent,
        windowId: i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the window ID of an axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param windowId Window ID of the axis event.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     windowId** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetAxisEventWindowId(
        axisEvent: *const Input_AxisEvent,
        windowId: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the screen ID of an axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param displayId Screen ID of an axis event.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_SetAxisEventDisplayId(
        axisEvent: *mut Input_AxisEvent,
        displayId: i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the screen ID of an axis event.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param displayId Screen ID of the axis event.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PARAMETER_ERROR} if **axisEvent** or **\n     displayId** is null.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetAxisEventDisplayId(
        axisEvent: *const Input_AxisEvent,
        displayId: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the X coordinate of the axis event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param axisEvent Axis event object, which can be created through the {@link OH_Input_CreateAxisEvent()} API.\n     <br>After use, the axis event object must be destroyed through the {@link OH_Input_DestroyAxisEvent()} API.\n @param globalX X coordinate of the axis event in the global coordinate system with the upper left corner of the\n     primary screen as the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **axisEvent** is a null pointer.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_SetAxisEventGlobalX(
        axisEvent: *mut Input_AxisEvent,
        globalX: i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the X coordinate of the axis event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param globalX X-coordinate of the axis event in the global coordinate system with the upper left corner of the\n     primary screen as the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **axisEvent** or **globalX** is a null pointer.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetAxisEventGlobalX(
        axisEvent: *const Input_AxisEvent,
        globalX: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the Y coordinate of the axis event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param axisEvent Axis event object, which can be created using the {@link OH_Input_CreateAxisEvent()} interface.\n     <br>After use, the axis event object must be destroyed using the {@link OH_Input_DestroyAxisEvent()} interface.\n @param globalY Y-coordinate of the axis event in the global coordinate system with the origin at the upper left\n     corner of the primary screen, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **axisEvent** is a null pointer.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_SetAxisEventGlobalY(
        axisEvent: *mut Input_AxisEvent,
        globalY: i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the Y coordinate of the axis event in the global coordinate system with the upper-left corner of the\n primary screen as the origin.\n\n @param axisEvent Axis event object. You can call {@link OH_Input_CreateAxisEvent()} to create an axis event object.\n     <br>If the axis event object is no longer needed, destroy it by calling {@link OH_Input_DestroyAxisEvent()}.\n @param globalY Y-coordinate of the axis event in the global coordinate system with the upper left corner of the\n     primary screen as the origin, in pixels (px).\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **axisEvent** or **globalY** is a null pointer.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetAxisEventGlobalY(
        axisEvent: *const Input_AxisEvent,
        globalY: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a listener for key events. Only the initial addition takes effect. Subsequent attempts will be ignored.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback used to receive key events.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PERMISSION_DENIED} if permission\n     verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty; {@link INPUT_SERVICE_EXCEPTION} if the service is\n     abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddKeyEventMonitor(callback: Input_KeyEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a listener for mouse events, including mouse click and movement events, but not scroll wheel events.\n Scroll wheel events are axis events.\n <br>This API can be called only when the screen recording scenario is in use. Otherwise, the call does not take\n effect.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback used to receive mouse events.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PERMISSION_DENIED} if permission\n     verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty; {@link INPUT_SERVICE_EXCEPTION} if the service is\n     abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddMouseEventMonitor(callback: Input_MouseEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a listener for touch input events.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback used to receive touch events.\n @return {@link INPUT_SUCCESS} if the operation is successful; {@link INPUT_PERMISSION_DENIED} if permission\n     verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty; {@link INPUT_SERVICE_EXCEPTION} if the service is\n     abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddTouchEventMonitor(callback: Input_TouchEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a listener for all types of axis events, which are defined in {@link InputEvent_AxisEventType}.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback used to receive axis events.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddAxisEventMonitorForAll(callback: Input_AxisEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a listener for the specified type of axis events, which are defined in {@link InputEvent_AxisEventType}.\n\n @permission ohos.permission.INPUT_MONITORING\n @param axisEventType Axis event type, which is defined in {@link InputEvent_AxisEventType}.\n @param callback Callback used to receive axis events of a specified type.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddAxisEventMonitor(
        axisEventType: InputEvent_AxisEventType,
        callback: Input_AxisEventCallback,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the listener for key events.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback for key events.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveKeyEventMonitor(callback: Input_KeyEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the listener for mouse events.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback for mouse events.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveMouseEventMonitor(callback: Input_MouseEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the listener for touch events.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback for touch events.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveTouchEventMonitor(callback: Input_TouchEventCallback) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the listener for all types of axis events.\n\n @permission ohos.permission.INPUT_MONITORING\n @param callback Callback for the all types of axis events.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveAxisEventMonitorForAll(callback: Input_AxisEventCallback)
        -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the listener for the specified type of axis events, which are defined in\n {@link InputEvent_AxisEventType}.\n\n @permission ohos.permission.INPUT_MONITORING\n @param axisEventType Axis event type, which is defined in {@link InputEvent_AxisEventType}.\n @param callback Callback for the specified type of axis events.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveAxisEventMonitor(
        axisEventType: InputEvent_AxisEventType,
        callback: Input_AxisEventCallback,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds a key event interceptor. Only the first addition takes effect. Subsequent requests will return error\n code {@link INPUT_REPEAT_INTERCEPTOR}. Key events are intercepted only when the application gains focus.\n\n @permission ohos.permission.INTERCEPT_INPUT_EVENT\n @param callback Callback used to receive key events.\n @param option Options for event interception. If **null** is passed, the default value is used.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_REPEAT_INTERCEPTOR} if an interceptor is repeatedly added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddKeyEventInterceptor(
        callback: Input_KeyEventCallback,
        option: *mut Input_InterceptorOptions,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Adds an interceptor for input events, including mouse, touch, and axis events. Only the first addition takes\n effect. Subsequent requests will return error code {@link INPUT_REPEAT_INTERCEPTOR}. Key events are intercepted only\n when the application window is hit.\n\n @permission ohos.permission.INTERCEPT_INPUT_EVENT\n @param callback Pointer to the structure of the interceptor event callback. For details, see\n     {@link Input_InterceptorEventCallback}.\n @param option Options for event interception. If **null** is passed, the default value is used.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_PARAMETER_ERROR} if the callback is empty or no listener is added;\n     <br>{@link INPUT_REPEAT_INTERCEPTOR} if an interceptor is repeatedly added;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_AddInputEventInterceptor(
        callback: *mut Input_InterceptorEventCallback,
        option: *mut Input_InterceptorOptions,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the interceptor for key events.\n\n @permission ohos.permission.INTERCEPT_INPUT_EVENT\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveKeyEventInterceptor() -> Input_Result;
}
extern "C" {
    #[doc = " @brief Removes the interceptor for input events, including mouse, touch, and axis events.\n\n @permission ohos.permission.INTERCEPT_INPUT_EVENT\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PERMISSION_DENIED} if permission verification fails;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 12"]
    pub fn OH_Input_RemoveInputEventInterceptor() -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the interval since the last system input event.\n\n @param timeInterval Time interval, in microseconds (μs).\n @return Return value of the **OH_Input_GetIntervalSinceLastInput** function.\n     <br>{@link INPUT_SUCCESS} if the interval is obtained successfully;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter is incorrect.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_GetIntervalSinceLastInput(timeInterval: *mut i64) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates a hotkey object. You can call {@link OH_Input_DestroyHotkey()} to destroy a hotkey object.\n\n @return If the operation is successful, a pointer to an {@link Input_Hotkey} object is returned. Otherwise, a null\n     pointer is returned, possibly due to memory allocation failure.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_CreateHotkey() -> *mut Input_Hotkey;
}
extern "C" {
    #[doc = " @brief Destroys a hotkey object.\n\n @param hotkey Hotkey object.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_DestroyHotkey(hotkey: *mut *mut Input_Hotkey);
}
extern "C" {
    #[doc = " @brief Sets the modifier keys.\n\n @param hotkey Hotkey object.\n @param preKeys List of modifier keys.\n @param size Number of modifier keys. One or two modifier keys are supported.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_SetPreKeys(hotkey: *mut Input_Hotkey, preKeys: *mut i32, size: i32);
}
extern "C" {
    #[doc = " @brief Obtains the modifier key.\n\n @param hotkey Hotkey object.\n @param preKeys List of modifier keys.\n @param preKeyCount Number of modifier keys.\n @return Return value of the **OH_Input_GetPreKeys** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_GetPreKeys(
        hotkey: *const Input_Hotkey,
        preKeys: *mut *mut i32,
        preKeyCount: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the modified key.\n\n @param hotkey Hotkey object.\n @param finalKey Modifier key value. Only one modifier key value is allowed.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_SetFinalKey(hotkey: *mut Input_Hotkey, finalKey: i32);
}
extern "C" {
    #[doc = " @brief Obtains the modified key.\n\n @param hotkey Hotkey object.\n @param finalKeyCode Modified key.\n @return Return value of the **OH_Input_GetFinalKey** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_GetFinalKey(
        hotkey: *const Input_Hotkey,
        finalKeyCode: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates an {@link Input_Hotkey} array. You can call {@link OH_Input_GetAllSystemHotkeys()} to obtain a valid *\n *count** parameter. You can call {@link OH_Input_DestroyAllSystemHotkeys()} to destroy the array of the\n {@link Input_Hotkey} instance and reclaim the memory.\n\n @param count Number of {@link Input_Hotkey} instances.\n @return Return value of the **OH_Input_CreateAllSystemHotkeys** function.\n     <br>which is {@link INPUT_SUCCESS} if the operation is successful.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_CreateAllSystemHotkeys(count: i32) -> *mut *mut Input_Hotkey;
}
extern "C" {
    #[doc = " @brief Destroys an {@link Input_Hotkey} array and reclaims the memory.\n\n @param hotkeys Double pointer to the {@link Input_Hotkey} array.\n @param count Number of {@link Input_Hotkey} instances.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_DestroyAllSystemHotkeys(hotkeys: *mut *mut Input_Hotkey, count: i32);
}
extern "C" {
    #[doc = " @brief Obtains all configured hotkeys.\n\n @param hotkey {@link Input_Hotkey} array. When calling this API for the first time, you can pass **NULL** to obtain\n     the array length.\n @param count Number of supported hotkeys.\n @return Return value of the **OH_Input_GetAllSystemHotkeys** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_GetAllSystemHotkeys(
        hotkey: *mut *mut Input_Hotkey,
        count: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Specifies whether to report repeated key events.\n\n @param hotkey Hotkey object.\n @param isRepeat Whether to report repeated key events. The value **true** means to report repeated key events, and\n     the value **false** means the opposite.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_SetRepeat(hotkey: *mut Input_Hotkey, isRepeat: bool);
}
extern "C" {
    #[doc = " @brief Checks whether to report repeated key events.\n\n @param hotkey Hotkey object.\n @param isRepeat Whether the reported key event is repeated. The value **true** indicates that the key event is\n     repeated, and the value **false** indicates that the key event is not repeated.\n @return Return value of the **OH_Input_GetRepeat** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} otherwise.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_GetRepeat(hotkey: *const Input_Hotkey, isRepeat: *mut bool) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Subscribes to hotkey events.\n\n @param hotkey Hotkey object.\n @param callback Defines the callback used to return hotkey events.\n @return Return value of the **OH_Input_AddHotkeyMonitor** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if parameter verification fails;\n     <br>{@link INPUT_OCCUPIED_BY_SYSTEM} if the hotkey has been occupied by the system (you can use\n     {@link OH_Input_GetAllSystemHotkeys()} to query allsystem hotkeys);\n     <br>{@link INPUT_OCCUPIED_BY_OTHER} if the hotkey has been occupied by another application;\n     <br>{@link INPUT_DEVICE_NOT_SUPPORTED} if the function is not supported.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_AddHotkeyMonitor(
        hotkey: *const Input_Hotkey,
        callback: Input_HotkeyCallback,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Unsubscribes from hotkey events.\n\n @param hotkey Hotkey object.\n @param callback Defines the callback used to return hotkey events.\n @return Return value of the **OH_Input_RemoveHotkeyMonitor** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if parameter verification fails.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_Input_RemoveHotkeyMonitor(
        hotkey: *const Input_Hotkey,
        callback: Input_HotkeyCallback,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the IDs of all input devices.\n\n @param deviceIds List of input device IDs.\n @param inSize Size of the input device ID list.\n @param outSize Length of the output device ID list. The value must be less than or equal to the value of **inSize**.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceIds** or **outSize** is a null pointer or **inSize** is less than\n     **0**.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceIds(
        deviceIds: *mut i32,
        inSize: i32,
        outSize: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains information about the input device.\n\n @param deviceId Unique ID of the input device. If a physical device is repeatedly reinstalled or restarted, its ID\n     may change.\n @param deviceInfo Pointer to the {@link Input_DeviceInfo} object.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** is a null pointer or **deviceId** is invalid;\n     <br>You can use {@link OH_Input_GetDeviceIds()} to query the device IDs supported by the system.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDevice(
        deviceId: i32,
        deviceInfo: *mut *mut Input_DeviceInfo,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates a **deviceInfo** object. You can call {@link OH_Input_DestroyDeviceInfo()} to destroy an input device\n information object.\n\n @return Pointer to the {@link Input_DeviceInfo} object if the operation is successful; a null pointer otherwise (\n     possibly because of a memory allocation failure).\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_CreateDeviceInfo() -> *mut Input_DeviceInfo;
}
extern "C" {
    #[doc = " @brief Destroys a **deviceInfo** object.\n\n @param deviceInfo **deviceInfo** object.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_DestroyDeviceInfo(deviceInfo: *mut *mut Input_DeviceInfo);
}
extern "C" {
    #[doc = " @brief Obtains the keyboard type of the input device.\n\n @param deviceId Unique ID of the input device. If a physical device is repeatedly reinstalled or restarted, its ID\n     may change.\n @param keyboardType Pointer to the keyboard type of the input device.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the device ID is invalid or **keyboardType** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetKeyboardType(deviceId: i32, keyboardType: *mut i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the ID of an input device.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param id Pointer to the input device ID.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **ID** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceId(deviceInfo: *mut Input_DeviceInfo, id: *mut i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the name of an input device.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param name Pointer to the input device name.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **name** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceName(
        deviceInfo: *mut Input_DeviceInfo,
        name: *mut *mut ::std::os::raw::c_char,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the capabilities of an input device, for example, a touchscreen, touchpad, or keyboard.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param capabilities Pointer to the capability information of the input device.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **capabilities** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetCapabilities(
        deviceInfo: *mut Input_DeviceInfo,
        capabilities: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the version information of an input device.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param version Pointer to the version information of the input device.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **version** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceVersion(
        deviceInfo: *mut Input_DeviceInfo,
        version: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the product information of an input device.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param product Pointer to the product information of the input device.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **product** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceProduct(
        deviceInfo: *mut Input_DeviceInfo,
        product: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the vendor information of an input device.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param vendor Pointer to the vendor information of the input device.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **vendor** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceVendor(
        deviceInfo: *mut Input_DeviceInfo,
        vendor: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the physical address of an input device.\n\n @param deviceInfo Input device information. For details, see {@link Input_DeviceInfo}.\n @param address Pointer to the physical address of the input device.\n @return {@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **deviceInfo** or **address** is a null pointer.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_GetDeviceAddress(
        deviceInfo: *mut Input_DeviceInfo,
        address: *mut *mut ::std::os::raw::c_char,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Registers a listener for device hot swap events.\n\n @param listener Pointer to the {@link Input_DeviceListener} object.\n @return Return value of the **OH_Input_RegisterDeviceListener** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the listener is null;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_RegisterDeviceListener(listener: *mut Input_DeviceListener) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Unregisters the listener for device hot swap events.\n\n @param listener Pointer to the {@link Input_DeviceListener} object.\n @return Return value of the **OH_Input_UnregisterDeviceListener** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if **listener** is null or the listener is not registered;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_UnregisterDeviceListener(listener: *mut Input_DeviceListener) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Unregisters the listener for all device hot swap events.\n\n @return Return value of the **OH_Input_UnregisterDeviceListener** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 13"]
    #[cfg(feature = "api-13")]
    pub fn OH_Input_UnregisterDeviceListeners() -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the function key status.\n\n @param keyCode Function key. Currently, only the **CapsLock** key is supported. The key value is **1**.\n @param state Function key status. The value **0** indicates that the function key is disabled, and the value **1**\n     indicates that the function key is enabled.\n @return Return value of the **OH_Input_GetFunctionKeyState** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter is incorrect;\n     <br>{@link INPUT_KEYBOARD_DEVICE_NOT_EXIST} if the keyboard device does not exist.\n @syscap SystemCapability.MultimodalInput.Input.Core\n @since 15"]
    #[cfg(feature = "api-15")]
    pub fn OH_Input_GetFunctionKeyState(keyCode: i32, state: *mut i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Queries the maximum number of touch points supported by the device.\n\n @param count Maximum number of touch points supported by the device. The value range is [0, 10]. The value **-1**\n     indicates that the number of touch points is unknown.\n @return Return value of the **OH_Input_QueryMaxTouchPoints** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_QueryMaxTouchPoints(count: *mut i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the coordinates of the mouse pointer on the current screen.\n <br>Since API version 26.0.0, non-focused applications that have the ohos.permission.INPUT_DEVICE_CONFIGURATOR\n permission can call this API.\n\n @param displayId Screen ID of the current screen.\n @param displayX X coordinate of the mouse on the current screen, in pixels (px).\n @param displayY Y coordinate of the mouse on the current screen, in pixels (px).\n @return Return value of the **GetPointerLocation** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter is incorrect;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if a service exception occurs;\n     <br>{@link INPUT_APP_NOT_FOCUSED} if the current application is not in focus;\n     <br>{@link INPUT_DEVICE_NO_POINTER} if no mouse device is available.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_Input_GetPointerLocation(
        displayId: *mut i32,
        displayX: *mut f64,
        displayY: *mut f64,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates a mouse pointer information object. You can call {@link OH_Input_CursorInfo_Destroy()} to destroy a\n mouse pointer information object.\n\n @return An {@link Input_CursorInfo} object if the operation is successful; a null pointer otherwise (possibly\n     because of a memory allocation failure).\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorInfo_Create() -> *mut Input_CursorInfo;
}
extern "C" {
    #[doc = " @brief Destroys the mouse pointer information object.\n\n @param cursorInfo Mouse pointer information object.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorInfo_Destroy(cursorInfo: *mut *mut Input_CursorInfo);
}
extern "C" {
    #[doc = " @brief Obtains the pointer visible status of the specified mouse pointer information object.\n\n @param cursorInfo Mouse pointer information object. You can call {@link OH_Input_GetMouseEventCursorInfo()} to query\n     the mouse pointer information of a specified mouse event, or call {@link OH_Input_GetCursorInfo()} to query the\n     current mouse pointer information.\n @param visible Visible status of the mouse pointer. The value **true** indicates that the mouse pointer is visible,\n     and the value **false** indicates the opposite.\n @return Return value of the **OH_Input_CursorInfo_IsVisible** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorInfo_IsVisible(
        cursorInfo: *mut Input_CursorInfo,
        visible: *mut bool,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the pointer style of the specified mouse pointer information object.\n\n @param cursorInfo Mouse pointer information object. You can call {@link OH_Input_GetMouseEventCursorInfo()} to query\n     the mouse pointer information of a specified mouse event, or call {@link OH_Input_GetCursorInfo()} to query the\n     current mouse pointer information.\n @param style Cursor style of the cursorInfo.\n @return Return value of the **OH_Input_CursorInfo_GetStyle** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails or the pointer is invisible.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorInfo_GetStyle(
        cursorInfo: *mut Input_CursorInfo,
        style: *mut Input_PointerStyle,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the pointer size level of the specified mouse pointer information object.\n\n @param cursorInfo Mouse pointer information object. You can call {@link OH_Input_GetMouseEventCursorInfo()} to query\n     the mouse pointer information of a specified mouse event, or call {@link OH_Input_GetCursorInfo()} to query the\n     current mouse pointer information.\n @param sizeLevel Pointer size level of the mouse pointer information object. The value is an integer ranging from 1\n     to 7. A larger value indicates a higher pointer size level. The size of the custom pointer\n     {@link DEVELOPER_DEFINED_ICON} is subject to the actual bitmap size.\n @return Return value of the **OH_Input_CursorInfo_GetSizeLevel** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails or the pointer is invisible.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorInfo_GetSizeLevel(
        cursorInfo: *mut Input_CursorInfo,
        sizeLevel: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Gets the cursor color corresponding to a specified mouse cursor info object, represented as a 32-bit ARGB\n integer.\n\n @param cursorInfo Mouse pointer information object. You can call {@link OH_Input_GetMouseEventCursorInfo()} to query\n     the mouse pointer information of a specified mouse event, or call {@link OH_Input_GetCursorInfo()} to query the\n     current mouse pointer information.\n @param color Cursor color of the mouse cursor info, represented by a 32-bit ARGB integer. For application-defined\n     custom cursors {@link DEVELOPER_DEFINED_ICON}, the actual bitmap color shall prevail.\n @return Return value of the **OH_Input_CursorInfo_GetColor** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails or the pointer is invisible.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorInfo_GetColor(
        cursorInfo: *mut Input_CursorInfo,
        color: *mut u32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the mouse pointer information of the mouse event, including the pointer visible status, pointer style,\n pointer size level, and pointer color.\n\n @param mouseEvent Mouse event object. You can obtain the mouse event object from the callback of\n     {@link OH_Input_AddMouseEventMonitor()} or {@link OH_Input_AddInputEventInterceptor()}.\n @param cursorInfo Mouse pointer information object. You can call {@link OH_Input_CursorInfo_Create()} to create a\n     mouse pointer information object.\n @return Return value of the **OH_Input_GetMouseEventCursorInfo** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_GetMouseEventCursorInfo(
        mouseEvent: *const Input_MouseEvent,
        cursorInfo: *mut Input_CursorInfo,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the mouse pointer information, including the pointer visible status, pointer style, pointer size\n level, and pointer color. If the **pixelmap** parameter is not empty and the pointer style is\n {@link DEVELOPER_DEFINED_ICON}, the **PixelMap** object of the pointer is returned.\n\n @param cursorInfo Mouse pointer information object. You can call {@link OH_Input_CursorInfo_Create()} to create a\n     mouse pointer information object.\n @param pixelmap **PixelMap** object. If this parameter is not empty and the pointer is a custom one, the **PixelMap**\n     object of the pointer is returned. Otherwise, the **PixelMap** object is not returned. Firstly, create an **\n     OH_PixelmapInitializationOptions** object through {@link OH_PixelmapInitializationOptions_Create}. Then, set the\n     width to a value greater than **0** through {@link OH_PixelmapInitializationOptions_SetWidth}, set the height to\n     a value greater than **0** through {@link OH_PixelmapInitializationOptions_SetHeight}. Finally, create a **\n     PixelMap** object by calling {@link OH_PixelmapNative_CreateEmptyPixelmap} with the **\n     OH_PixelmapInitializationOptions** object passed in.\n     <br>When the **PixelMap** object is no longer needed, you need to call {@link OH_PixelmapNative_Release} to\n     release the object and then call {@link OH_PixelmapNative_Destroy} to destroy it.\n @return Return value of the **OH_Input_GetCursorInfo** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_GetCursorInfo(
        cursorInfo: *mut Input_CursorInfo,
        pixelmap: *mut *mut OH_PixelmapNative,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the visible status of the mouse pointer in the current window.\n\n @param visible Whether the mouse pointer is visible. The value **true** indicates that the mouse pointer is visible,\n     and the value **false** indicates the opposite.\n @return Return value of the **OH_Input_SetPointerVisible** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_DEVICE_NOT_SUPPORTED} if the device is not supported;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_SetPointerVisible(visible: bool) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Gets the mouse cursor style of a specified window. This API only supports getting the mouse cursor style of\n windows within the current application process.\n\n @param windowId Window ID. The value is an integer greater than or equal to **-1**. The value **-1** indicates the\n     global window.\n     <br>Only the ID of the current window or global window can be specified. If any other ID is specified, the\n     default pointer style of the global window is returned. You can obtain the ID of the current window through\n     {@link getWindowProperties}.\n @param pointerStyle Mouse cursor style, which is an enum value of {@link Input_PointerStyle}.\n @return Return value of the **OH_Input_GetPointerStyle** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_GetPointerStyle(windowId: i32, pointerStyle: *mut i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the mouse cursor style for a specified window. This API only supports setting the mouse cursor style for\n windows within the current application process.\n\n @param windowId Window ID. The value is an integer greater than or equal to 0.\n     <br>Only the ID of the current window can be specified. If any other ID is specified, the API call is successful,\n     but the setting does not take effect. You can obtain the ID of the current window through\n     {@link getWindowProperties}.\n @param pointerStyle Mouse pointer style. The value is an enumerated value of {@link Input_PointerStyle}.\n @return Return value of the **OH_Input_SetPointerStyle** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_SetPointerStyle(windowId: i32, pointerStyle: i32) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates a custom mouse pointer object. You can call {@link OH_Input_CustomCursor_Destroy()} to destroy a\n custom mouse pointer resource object.\n\n @param pixelMap Pixel map of the custom mouse pointer object. For details, see {@link OH_PixelmapNative}. The\n     minimum value is the minimum size of the resource image. The maximum value is 256 x 256 px.\n @param anchorX Horizontal coordinate of the custom mouse cursor focus. This coordinate is limited by the size of the\n     custom mouse cursor. The minimum value is 0, and the maximum value is the maximum width of the resource image,\n     in pixels (px).\n @param anchorY Vertical coordinate of the custom mouse cursor focus. This coordinate is limited by the size of the\n     custom mouse cursor. The minimum value is 0, and the maximum value is the maximum height of the resource image,\n     in pixels (px).\n @return {@link Input_CustomCursor} object. The pointer to the custom mouse pointer object is returned if the\n     operation is successful, and a null pointer is returned if an exception occurs.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CustomCursor_Create(
        pixelMap: *mut OH_PixelmapNative,
        anchorX: i32,
        anchorY: i32,
    ) -> *mut Input_CustomCursor;
}
extern "C" {
    #[doc = " @brief Destroys a custom mouse pointer object.\n\n @param customCursor Custom mouse pointer object. For details, see {@link Input_CustomCursor}.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CustomCursor_Destroy(customCursor: *mut *mut Input_CustomCursor);
}
extern "C" {
    #[doc = " @brief Obtains the pixel map of a custom mouse pointer object.\n\n @param customCursor Custom mouse pointer object. For details, see {@link Input_CustomCursor}.\n @param pixelMap Pixel map of the custom mouse pointer object. For details, see {@link OH_PixelmapNative}.\n @return Return value of the **OH_Input_CustomCursor_GetPixelMap** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CustomCursor_GetPixelMap(
        customCursor: *mut Input_CustomCursor,
        pixelMap: *mut *mut OH_PixelmapNative,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Obtains the focus coordinates of a custom mouse pointer object.\n\n @param customCursor Custom mouse pointer object. For details, see {@link Input_CustomCursor}.\n @param anchorX Horizontal coordinate of the focus point of the custom mouse cursor resource, in pixels (px).\n @param anchorY Vertical coordinate of the focus point of the custom mouse cursor resource, in pixels (px).\n @return Return value of the **OH_Input_CustomCursor_GetAnchor** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CustomCursor_GetAnchor(
        customCursor: *mut Input_CustomCursor,
        anchorX: *mut i32,
        anchorY: *mut i32,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Creates a custom mouse pointer configuration object. You can call {@link OH_Input_CursorConfig_Destroy()} to\n destroy a custom mouse pointer configuration object.\n\n @param followSystem Whether to adjust the mouse cursor size based on system settings. false means using the custom\n     mouse cursor style size, true means adjusting the mouse cursor size based on system settings. The adjustable\n     range is: [cursor resource image size, 256×256], in pixels (px).\n @return Custom mouse pointer configuration object. For details, see {@link Input_CursorConfig}.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorConfig_Create(followSystem: bool) -> *mut Input_CursorConfig;
}
extern "C" {
    #[doc = " @brief Destroys a custom mouse pointer configuration object.\n\n @param cursorConfig Custom mouse pointer configuration object. For details, see {@link Input_CursorConfig}.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorConfig_Destroy(cursorConfig: *mut *mut Input_CursorConfig);
}
extern "C" {
    #[doc = " @brief Queries whether the custom mouse pointer configuration follows the system setting to adjust the pointer size.\n\n @param cursorConfig Custom mouse pointer configuration object. For details, see {@link Input_CursorConfig}.\n @param followSystem Whether to adjust the pointer size based on the system setting. The value **true** means to\n     adjust the pointer size based on the system setting, and the value **false** means to use the size of custom\n     mouse pointer.\n @return Return value of the **OH_Input_CursorConfig_IsFollowSystem** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_CursorConfig_IsFollowSystem(
        cursorConfig: *mut Input_CursorConfig,
        followSystem: *mut bool,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Sets the custom mouse pointer style.\n <br>The cursor may revert to the system style in the following scenarios: application window layout changes, hotspot\n switching, page navigation, the cursor leaving and re-entering the window, or the cursor moving between different\n areas of the window. In these cases, the developer needs to set the cursor style again. This API only supports\n setting the custom mouse cursor style for windows within the current application process.\n\n @param windowId Window ID. The value must be an integer greater than or equal to **0**. Only the pointer style of\n     the current window can be specified.\n @param customCursor Custom mouse pointer object. For details, see {@link Input_CustomCursor}.\n @param cursorConfig Custom mouse pointer configuration object. For details, see {@link Input_CursorConfig}.\n @return Return value of the **OH_Input_SetCustomCursor** function.\n     <br>{@link INPUT_SUCCESS} if the operation is successful;\n     <br>{@link INPUT_PARAMETER_ERROR} if the parameter verification fails;\n     <br>{@link INPUT_INVALID_WINDOWID} if the window ID is invalid;\n     <br>{@link INPUT_DEVICE_NOT_SUPPORTED} if the device is not supported;\n     <br>{@link INPUT_SERVICE_EXCEPTION} if the service is abnormal.\n @since 22"]
    #[cfg(feature = "api-22")]
    pub fn OH_Input_SetCustomCursor(
        windowId: i32,
        customCursor: *mut Input_CustomCursor,
        cursorConfig: *mut Input_CursorConfig,
    ) -> Input_Result;
}
extern "C" {
    #[doc = " @brief Binds a specified input device to a specified screen.\n\n @permission ohos.permission.INPUT_DEVICE_CONFIGURATOR\n @param inputDeviceId ID of the input device.\n @param displayId ID of the screen.\n @return Return values of the OH_Input_BindInputDeviceToDisplay function:\n     <br>{@link INPUT_SUCCESS} indicates that the operation is successful.\n     <br>{@link INPUT_PERMISSION_DENIED} indicates that the permission verification fails.\n     <br>{@link INPUT_PARAMETER_ERROR} indicates that the parameter check fails (the input device does not exist, the\n     display device does not exist, or the input device is not a stylus device).\n     <br>{@link INPUT_SERVICE_EXCEPTION} indicates that the service is abnormal. Try again.\n @since 26.0.0"]
    #[cfg(feature = "api-26")]
    pub fn OH_Input_BindInputDeviceToDisplay(inputDeviceId: i32, displayId: i32) -> Input_Result;
}