• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Bestechnic (Shanghai) Co., Ltd. All rights reserved.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef __APP_KEY_H__
16 #define __APP_KEY_H__
17 
18 #include "hal_key.h"
19 
20 #define APP_KEY_SET_MESSAGE(appevt, code, evt) (appevt = (((uint32_t)code&0xffffff)<<8)|(evt&0xff))
21 #define APP_KEY_GET_CODE(appevt, code) (code = (appevt>>8)&0xffffff)
22 #define APP_KEY_GET_EVENT(appevt, evt) (evt = appevt&0xff)
23 
24 #define APP_KEY_CODE_GOOGLE                 APP_KEY_CODE_FN15
25 #define APP_KEY_CODE_VOICEPATH              APP_KEY_CODE_FN15
26 #define APP_KEY_CODE_TILE                   APP_KEY_CODE_FN15
27 
28 
29 enum APP_KEY_CODE_T {
30     APP_KEY_CODE_NONE = HAL_KEY_CODE_NONE,
31     APP_KEY_CODE_PWR =  HAL_KEY_CODE_PWR,
32     APP_KEY_CODE_FN1 =  HAL_KEY_CODE_FN1,
33     APP_KEY_CODE_FN2 =  HAL_KEY_CODE_FN2,
34     APP_KEY_CODE_FN3 =  HAL_KEY_CODE_FN3,
35     APP_KEY_CODE_FN4 =  HAL_KEY_CODE_FN4,
36     APP_KEY_CODE_FN5 =  HAL_KEY_CODE_FN5,
37     APP_KEY_CODE_FN6 =  HAL_KEY_CODE_FN6,
38     APP_KEY_CODE_FN7 =  HAL_KEY_CODE_FN7,
39     APP_KEY_CODE_FN8 =  HAL_KEY_CODE_FN8,
40     APP_KEY_CODE_FN9 =  HAL_KEY_CODE_FN9,
41     APP_KEY_CODE_FN10 = HAL_KEY_CODE_FN10,
42     APP_KEY_CODE_FN11 = HAL_KEY_CODE_FN11,
43     APP_KEY_CODE_FN12 = HAL_KEY_CODE_FN12,
44     APP_KEY_CODE_FN13 = HAL_KEY_CODE_FN13,
45     APP_KEY_CODE_FN14 = HAL_KEY_CODE_FN14,
46     APP_KEY_CODE_FN15 = HAL_KEY_CODE_FN15,
47 };
48 
49 enum APP_KEY_EVENT_T {
50     APP_KEY_EVENT_NONE               = HAL_KEY_EVENT_NONE,
51     APP_KEY_EVENT_DOWN               = HAL_KEY_EVENT_DOWN,
52     APP_KEY_EVENT_FIRST_DOWN         = HAL_KEY_EVENT_FIRST_DOWN,
53     APP_KEY_EVENT_CONTINUED_DOWN     = HAL_KEY_EVENT_CONTINUED_DOWN,
54     APP_KEY_EVENT_UP                 = HAL_KEY_EVENT_UP,
55     APP_KEY_EVENT_UP_AFTER_LONGPRESS = HAL_KEY_EVENT_UP_AFTER_LONGPRESS,
56     APP_KEY_EVENT_LONGPRESS          = HAL_KEY_EVENT_LONGPRESS,
57     APP_KEY_EVENT_LONGLONGPRESS      = HAL_KEY_EVENT_LONGLONGPRESS,
58     APP_KEY_EVENT_CLICK              = HAL_KEY_EVENT_CLICK,
59     APP_KEY_EVENT_DOUBLECLICK        = HAL_KEY_EVENT_DOUBLECLICK,
60     APP_KEY_EVENT_TRIPLECLICK        = HAL_KEY_EVENT_TRIPLECLICK,
61     APP_KEY_EVENT_ULTRACLICK         = HAL_KEY_EVENT_ULTRACLICK,
62     APP_KEY_EVENT_RAMPAGECLICK       = HAL_KEY_EVENT_RAMPAGECLICK,
63     APP_KEY_EVENT_REPEAT             = HAL_KEY_EVENT_REPEAT,
64     APP_KEY_EVENT_GROUPKEY_DOWN      = HAL_KEY_EVENT_GROUPKEY_DOWN,
65     APP_KEY_EVENT_GROUPKEY_REPEAT    = HAL_KEY_EVENT_GROUPKEY_REPEAT,
66     APP_KEY_EVENT_INITDOWN           = HAL_KEY_EVENT_INITDOWN,
67     APP_KEY_EVENT_INITUP             = HAL_KEY_EVENT_INITUP,
68     APP_KEY_EVENT_INITLONGPRESS      = HAL_KEY_EVENT_INITLONGPRESS,
69     APP_KEY_EVENT_INITLONGLONGPRESS  = HAL_KEY_EVENT_INITLONGLONGPRESS,
70     APP_KEY_EVENT_INITFINISHED       = HAL_KEY_EVENT_INITFINISHED,
71 
72     APP_KEY_EVENT_NUM = HAL_KEY_EVENT_NUM,
73 };
74 
75 typedef struct {
76     uint32_t code;
77     uint8_t event;
78 }APP_KEY_STATUS;
79 
80 typedef void (*APP_KEY_HANDLE_CB_T)(APP_KEY_STATUS*, void *param);
81 
82 typedef struct {
83     APP_KEY_STATUS key_status;
84     const char* string;
85     APP_KEY_HANDLE_CB_T function;
86     void *param;
87 } APP_KEY_HANDLE;
88 
89 #ifdef __cplusplus
90 extern "C" {
91 #endif
92 
93 int app_key_open(int checkPwrKey);
94 
95 int app_key_close(void);
96 
97 uint32_t app_key_read_status(uint32_t code);
98 
99 int app_key_handle_registration(const APP_KEY_HANDLE *key_handle);
100 
101 void app_key_handle_clear(void);
102 
103 void app_key_simulate_key_event(uint32_t key_code, uint8_t key_event);
104 
105 int simul_key_event_process(uint32_t key_code, uint8_t key_event);
106 
107 #ifdef __cplusplus
108 }
109 #endif
110 #endif//__FMDEC_H__
111