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