1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
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 OHOS_INPUTMETHOD_INPUTMETHOD_PROXY_CAPI_H
16 #define OHOS_INPUTMETHOD_INPUTMETHOD_PROXY_CAPI_H
17 /**
18  * @addtogroup InputMethod
19  * @{
20  *
21  * @brief InputMethod provides functions to use input methods and develop input methods.
22  *
23  * @since 12
24  */
25 
26 /**
27  * @file inputmethod_inputmethod_proxy_capi.h
28  *
29  * @brief Provides functions to use input methods.
30  *
31  * @library libohinputmethod.so
32  * @kit IMEKit
33  * @syscap SystemCapability.MiscServices.InputMethodFramework
34  * @since 12
35  * @version 1.0
36  */
37 #include <stddef.h>
38 
39 #include "inputmethod_types_capi.h"
40 #include "inputmethod_cursor_info_capi.h"
41 #include "inputmethod_private_command_capi.h"
42 #ifdef __cplusplus
43 extern "C"{
44 #endif /* __cplusplus */
45 /**
46  * @brief Define the InputMethod_InputMethodProxy structure type.
47  *
48  * Provides methods for controlling input method.
49  *
50  * @since 12
51  */
52 typedef struct InputMethod_InputMethodProxy InputMethod_InputMethodProxy;
53 
54 /**
55  * @brief Show keyboard.
56  *
57  * @param inputMethodProxy Represents a pointer to an {@link InputMethod_InputMethodProxy} instance.
58  *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
59  * @return Returns a specific error code.
60  *     {@link IME_ERR_OK} - success.
61  *     {@link IME_ERR_IMCLIENT} - input method client error.
62  *     {@link IME_ERR_IMMS} - input method manager service error.
63  *     {@link IME_ERR_DETACHED} - input method client is detached.
64  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
65  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
66  * @since 12
67  */
68 InputMethod_ErrorCode OH_InputMethodProxy_ShowKeyboard(InputMethod_InputMethodProxy *inputMethodProxy);
69 
70 /**
71  * @brief Hide keyboard.
72  *
73  * @param inputMethodProxy Represents a pointer to an {@link InputMethod_InputMethodProxy} instance.
74  *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
75  * @return Returns a specific error code.
76  *     {@link IME_ERR_OK} - success.
77  *     {@link IME_ERR_IMCLIENT} - input method client error.
78  *     {@link IME_ERR_IMMS} - input method manager service error.
79  *     {@link IME_ERR_DETACHED} - input method client is detached.
80  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
81  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
82  * @since 12
83  */
84 InputMethod_ErrorCode OH_InputMethodProxy_HideKeyboard(InputMethod_InputMethodProxy *inputMethodProxy);
85 
86 /**
87  * @brief Notify selection change.
88  *
89  * Notify selection change when text or cursor position or selected text changed.
90  *
91  * @param inputMethodProxy Represents a pointer to an {@link InputMethod_InputMethodProxy} instance.
92  *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
93  * @param text The whole input text.
94  * @param length The length of text. Max length is 8K.
95  * @param start The start position of selected text.
96  * @param end The end position of selected text.
97  * @return Returns a specific error code.
98  *     {@link IME_ERR_OK} - success.
99  *     {@link IME_ERR_PARAMCHECK} - parameter check failed.
100  *     {@link IME_ERR_IMCLIENT} - input method client error.
101  *     {@link IME_ERR_IMMS} - input method manager service error.
102  *     {@link IME_ERR_DETACHED} - input method client is detached.
103  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
104  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
105  * @since 12
106  */
107 InputMethod_ErrorCode OH_InputMethodProxy_NotifySelectionChange(
108     InputMethod_InputMethodProxy *inputMethodProxy, char16_t text[], size_t length, int start, int end);
109 
110 /**
111  * @brief Notify text editor configuration change.
112  *
113  * @param inputMethodProxy Represents a pointer to an {@link InputMethod_InputMethodProxy} instance.
114  *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
115  * @param enterKey The enter key type.
116  * @param textType The text input type.
117  * @return Returns a specific error code.
118  *     {@link IME_ERR_OK} - success.
119  *     {@link IME_ERR_PARAMCHECK} - parameter check failed.
120  *     {@link IME_ERR_IMCLIENT} - input method client error.
121  *     {@link IME_ERR_IMMS} - input method manager service error.
122  *     {@link IME_ERR_DETACHED} - input method client is detached.
123  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
124  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
125  * @since 12
126  */
127 InputMethod_ErrorCode OH_InputMethodProxy_NotifyConfigurationChange(InputMethod_InputMethodProxy *inputMethodProxy,
128     InputMethod_EnterKeyType enterKey, InputMethod_TextInputType textType);
129 
130 /**
131  * @brief Notify cursor update.
132  *
133  * @param inputMethodProxy Represents a pointer to an {@link InputMethod_InputMethodProxy} instance.
134  *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
135  * @param cursorInfo Represents a pointer to an {@link InputMethod_CursorInfo} instance.
136  *     The cursor information.
137  * @return Returns a specific error code.
138  *     {@link IME_ERR_OK} - success.
139  *     {@link IME_ERR_PARAMCHECK} - parameter check failed.
140  *     {@link IME_ERR_IMCLIENT} - input method client error.
141  *     {@link IME_ERR_IMMS} - input method manager service error.
142  *     {@link IME_ERR_DETACHED} - input method client is detached.
143  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
144  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
145  * @since 12
146  */
147 InputMethod_ErrorCode OH_InputMethodProxy_NotifyCursorUpdate(
148     InputMethod_InputMethodProxy *inputMethodProxy, InputMethod_CursorInfo *cursorInfo);
149 
150 /**
151  * @brief Send private command.
152  *
153  * @param inputMethodProxy Represents a pointer to an {@link OH_InputMethod_InputMethodProxy} instance.
154  *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
155  * @param privateCommand The private commands, which is defined in {@link InputMethod_PrivateCommand}. Max size 32KB.
156  * @param size The size of privateCommand. Max is 5.
157  * @return Returns a specific error code.
158  *     {@link IME_ERR_OK} - success.
159  *     {@link IME_ERR_PARAMCHECK} - parameter check failed.
160  *     {@link IME_ERR_IMCLIENT} - input method client error.
161  *     {@link IME_ERR_IMMS} - input method manager service error.
162  *     {@link IME_ERR_DETACHED} - input method client is detached.
163  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
164  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
165  * @since 12
166  */
167 InputMethod_ErrorCode OH_InputMethodProxy_SendPrivateCommand(
168     InputMethod_InputMethodProxy *inputMethodProxy, InputMethod_PrivateCommand *privateCommand[], size_t size);
169 #ifdef __cplusplus
170 }
171 #endif /* __cplusplus */
172 /** @} */
173 #endif // INPUTMETHOD_INPUTMETHOD_PROXY_CAP_H