1# 输入法服务 2 3> **说明:** 4> 5> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 6 7## 导入模块 8 9```js 10import inputMethodEngine from '@ohos.inputmethodengine'; 11``` 12 13## inputMethodEngine 14 15常量值。 16 17**系统能力**:SystemCapability.Miscservices.InputMethodFramework 18 19| 名称 | 参数类型 | 可读 | 可写 | 说明 | 20| -------------------- | -------- | ---- | ---- | ------------------- | 21| ENTER_KEY_TYPE_UNSPECIFIED | number | 是 | 否 | 无功能键。| 22| ENTER_KEY_TYPE_GO | number | 是 | 否 | “前往”功能键。| 23| ENTER_KEY_TYPE_SEARCH | number | 是 | 否 | “搜索”功能键。| 24| ENTER_KEY_TYPE_SEND | number | 是 | 否 | “发送”功能键。| 25| ENTER_KEY_TYPE_NEXT | number | 是 | 否 | “下一个”功能键。 | 26| ENTER_KEY_TYPE_DONE | number | 是 | 否 | “回车”功能键。 | 27| ENTER_KEY_TYPE_PREVIOUS | number | 是 | 否 | “前一个”功能键。 | 28| PATTERN_NULL | number | 是 | 否 | 无特殊性编辑框。 | 29| PATTERN_TEXT | number | 是 | 否 | 文本编辑框。 | 30| PATTERN_NUMBER | number | 是 | 否 | 数字编辑框。 | 31| PATTERN_PHONE | number | 是 | 否 | 电话号码编辑框。| 32| PATTERN_DATETIME | number | 是 | 否 | 日期编辑框。 | 33| PATTERN_EMAIL | number | 是 | 否 | 邮件编辑框。 | 34| PATTERN_URI | number | 是 | 否 | 超链接编辑框。| 35| PATTERN_PASSWORD | number | 是 | 否 | 密码编辑框。| 36| OPTION_ASCII | number | 是 | 否 | 允许输入ASCII值。 | 37| OPTION_NONE | number | 是 | 否 | 不指定编辑框输入属性。 | 38| OPTION_AUTO_CAP_CHARACTERS | number | 是 | 否 | 允许输入字符。 | 39| OPTION_AUTO_CAP_SENTENCES | number | 是 | 否 | 允许输入句子。| 40| OPTION_AUTO_WORDS | number | 是 | 否 | 允许输入单词。| 41| OPTION_MULTI_LINE | number | 是 | 否 | 允许输入多行。 | 42| OPTION_NO_FULLSCREEN | number | 是 | 否 | 半屏样式。| 43| FLAG_SELECTING | number | 是 | 否 | 编辑框处于选择状态。| 44| FLAG_SINGLE_LINE | number | 是 | 否 | 编辑框为单行。 | 45| DISPLAY_MODE_PART | number | 是 | 否 | 编辑框显示为半屏。| 46| DISPLAY_MODE_FULL | number | 是 | 否 | 编辑框显示为全屏。 | 47 48## inputMethodEngine.getInputMethodEngine 49 50getInputMethodEngine(): InputMethodEngine 51 52获取服务端实例。 53 54**系统能力**: SystemCapability.Miscservices.InputMethodFramework 55 56**返回值:** 57 58| 类型 | 说明 | 59| --------------------------------------- | ------------ | 60| [InputMethodEngine](#InputMethodEngine) | 服务端实例。 | 61 62**示例:** 63 64```js 65let InputMethodEngine = inputMethodEngine.getInputMethodEngine(); 66``` 67 68## inputMethodEngine.createKeyboardDelegate 69 70createKeyboardDelegate(): KeyboardDelegate 71 72获取客户端监听实例。 73 74**系统能力**: SystemCapability.Miscservices.InputMethodFramework 75 76**返回值:** 77 78| 类型 | 说明 | 79| ------------------------------------- | ---------------- | 80| [KeyboardDelegate](#KeyboardDelegate) | 客户端监听实例。 | 81 82**示例:** 83 84```js 85let KeyboardDelegate = inputMethodEngine.createKeyboardDelegate(); 86``` 87 88## InputMethodEngine 89 90下列API示例中都需使用[getInputMethodEngine](#getInputMethodEngine)回调获取到InputMethodEngine实例,再通过此实例调用对应方法。 91 92### on('inputStart') 93 94on(type: 'inputStart', callback: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void 95 96订阅输入法绑定成功事件,使用callback回调返回输入法操作相关实例。 97 98**系统能力**: SystemCapability.Miscservices.InputMethodFramework 99 100**参数:** 101 102| 参数名 | 类型 | 必填 | 说明 | 103| -------- | --------------------- | ---- | ------------------- | 104| type | string | 是 | 设置监听类型。<br/>-type为‘inputStart’时表示订阅输入法绑定。 | 105| callback | [KeyboardController](#KeyboardController), [TextInputClient](#TextInputClient) | 是 | 回调返回输入法操作相关实例。 | 106 107**示例:** 108 109```js 110InputMethodEngine.on('inputStart', (kbController, textInputClient) => { 111 KeyboardController = kbController; 112 TextInputClient = textInputClient; 113}); 114``` 115 116### off('inputStart') 117 118off(type: 'inputStart', callback?: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void 119 120取消订阅输入法绑定成功事件。 121 122**系统能力**: SystemCapability.Miscservices.InputMethodFramework 123 124**参数:** 125 126| 参数名 | 类型 | 必填 | 说明 | 127| -------- | ------------------- | ---- | --------------------------- | 128| type | string | 是 | 设置监听类型。<br/>-type为‘inputStart’时表示订阅输入法绑定。 | 129| callback | [KeyboardController](#KeyboardController), [TextInputClient](#TextInputClient) | 否 | 回调返回输入法操作相关实例。 | 130 131 132**示例:** 133 134```js 135InputMethodEngine.off('inputStart'); 136``` 137 138### on('keyboardShow'|'keyboardHide') 139 140on(type: 'keyboardShow'|'keyboardHide', callback: () => void): void 141 142订阅输入法事件。 143 144**系统能力**: SystemCapability.Miscservices.InputMethodFramework 145 146**参数:** 147 148| 参数名 | 类型 | 必填 | 说明 | 149| -------- | ------ | ---- | --------------------------- | 150| type | string | 是 | 设置监听类型。<br/>- type为'keyboardShow',表示订阅输入法显示。<br/>- type为'keyboardHide',表示订阅输入法隐藏。 | 151| callback | void | 否 | 回调函数。 | 152 153**示例:** 154 155```js 156InputMethodEngine.on('keyboardShow', (err) => { 157 console.info('keyboardShow'); 158}); 159``` 160 161### off('keyboardShow'|'keyboardHide') 162 163off(type: 'keyboardShow'|'keyboardHide', callback?: () => void): void 164 165取消订阅输入法事件。 166 167**系统能力**: SystemCapability.Miscservices.InputMethodFramework 168 169**参数:** 170 171| 参数名 | 类型 | 必填 | 说明 | 172| -------- | ------ | ---- | ------------------------- | 173| type | string | 是 | 设置监听类型。<br/>- type为'keyboardShow',表示订阅输入法显示。<br/>- type为'keyboardHide',表示订阅输入法隐藏。 | 174| callback | void | 否 | 回调函数。 | 175 176**示例:** 177 178```js 179InputMethodEngine.off('keyboardShow'); 180``` 181 182## KeyboardDelegate 183 184下列API示例中都需使用[createKeyboardDelegate](#createKeyboardDelegate)回调获取到KeyboardDelegate实例,再通过此实例调用对应方法。 185 186### on('keyDown'|'keyUp') 187 188on(type: 'keyDown'|'keyUp', callback: (event: KeyEvent) => boolean): void 189 190订阅硬键盘事件,使用callback回调返回按键信息。 191 192**系统能力**: SystemCapability.Miscservices.InputMethodFramework 193 194**参数:** 195 196| 参数名 | 类型 | 必填 | 说明 | 197| -------- | --------------- | ---- | ----------------- | 198| type | string | 是 | 设置监听类型。<br/>- type为'keyDown',表示订阅硬键盘按下。<br/>- type为'keyUp',表示订阅硬键盘抬起。 | 199| callback | [KeyEvent](#KeyEvent) | 是 | 回调返回按键信息。 | 200 201**示例:** 202 203```js 204KeyboardDelegate.on('keyDown', (event) => { 205 console.info('keyDown'); 206}); 207``` 208 209### off('keyDown'|'keyUp') 210 211off(type: 'keyDown'|'keyUp', callback?: (event: KeyEvent) => boolean): void 212 213取消订阅硬键盘事件。 214 215**系统能力**: SystemCapability.Miscservices.InputMethodFramework 216 217**参数:** 218 219| 参数名 | 类型 | 必填 | 说明 | 220| -------- | --------------------- | ---- | -------------------------- | 221| type | string | 是 | 设置监听类型。<br/>- type为'keyDown',表示订阅硬键盘按下。<br/>- type为'keyUp',表示订阅硬键盘抬起。 | 222| callback | [KeyEvent](#KeyEvent) | 否 | 回调返回按键信息。 | 223 224**示例:** 225 226```js 227KeyboardDelegate.off('keyDown'); 228``` 229 230### on('cursorContextChange') 231 232on(type: 'cursorContextChange', callback: (x: number, y:number, height:number) => void): void 233 234订阅光标变化事件,使用callback回调返回光标信息。 235 236**系统能力**: SystemCapability.Miscservices.InputMethodFramework 237 238**参数:** 239 240| 参数名 | 类型 | 必填 | 说明 | 241| -------- | ------ | ---- | ----------------- | 242| type | string | 是 | 光标变化事件。<br/>-type为’cursorContextChange‘时,表示光标变化。 | 243| callback | number | 是 | 回调返回光标信息。 | 244 245**示例:** 246 247```js 248KeyboardDelegate.on('cursorContextChange', (x, y, height) => { 249 console.info('cursorContextChange'); 250}); 251``` 252 253### off('cursorContextChange') 254 255off(type: 'cursorContextChange', callback?: (x: number, y:number, height:number) => void): void 256 257取消订阅光标变化事件。 258 259**系统能力**: SystemCapability.Miscservices.InputMethodFramework 260 261**参数:** 262 263| 参数名 | 类型 | 必填 | 说明 | 264| -------- | -------------------- | ---- | ------------------------ | 265| type | string | 是 | 光标变化事件。<br/>-type为’cursorContextChange‘时,表示光标变化。 | 266| callback | number | 否 | 回调返回光标信息。 | 267 268**示例:** 269 270```js 271KeyboardDelegate.off('cursorContextChange'); 272``` 273 274### on('selectionChange') 275 276on(type: 'selectionChange', callback: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void 277 278订阅文本选择变化事件,使用callback回调返回文本选择信息。 279 280**系统能力**: SystemCapability.Miscservices.InputMethodFramework 281 282**参数:** 283 284| 参数名 | 类型 | 必填 | 说明 | 285| -------- | ------ | ---- | ------------------------------ | 286| type | string | 是 | 文本选择变化事件。<br/>-type为’selectionChange‘时,表示选择文本变化。 | 287| callback | number | 是 | 回调返回文本选择信息。 | 288 289**示例:** 290 291```js 292KeyboardDelegate.on('selectionChange', (oldBegin, oldEnd, newBegin, newEnd) => { 293 console.info('selectionChange'); 294}); 295``` 296 297### off('selectionChange') 298 299off(type: 'selectionChange', callback?: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void 300 301取消订阅文本选择变化事件。 302 303**系统能力**: SystemCapability.Miscservices.InputMethodFramework 304 305**参数:** 306 307| 参数名 | 类型 | 必填 | 说明 | 308| -------- | -------------------- | ---- | ------------------------ | 309| type | string | 是 | 文本选择变化事件。<br/>-type为’selectionChange‘时,表示选择文本变化。 | 310| callback | number | 否 | 回调返回文本选择信息。 | 311 312**示例:** 313 314```js 315KeyboardDelegate.off('selectionChange'); 316``` 317 318### on('textChange') 319 320on(type: 'textChange', callback: (text: string) => void): void 321 322订阅文本变化事件,使用callback回调返回当前文本内容。 323 324**系统能力**: SystemCapability.Miscservices.InputMethodFramework 325 326**参数:** 327 328| 参数名 | 类型 | 必填 | 说明 | 329| -------- | ---------------------- | ---- | ------------------------- | 330| type | string | 是 | 文本变化事件。<br/>-type为’textChange‘时,表示当前文本变化。 | 331| callback | string | 是 | 回调返回当前文本内容。 | 332 333**示例:** 334 335```js 336KeyboardDelegate.on('textChange', (text) => { 337 console.info('textChange'); 338}); 339``` 340 341### off('textChange') 342 343off(type: 'textChange', callback?: (text: string) => void): void 344 345取消订阅文本变化事件。 346 347**系统能力**: SystemCapability.Miscservices.InputMethodFramework 348 349**参数:** 350 351| 参数名 | 类型 | 必填 | 说明 | 352| -------- | -------------------- | ---- | ------------------------ | 353| type | string | 是 | 文本变化事件。<br/>-type为’textChange‘时,表示当前文本变化。 | 354| callback | string | 否 | 回调返回当前文本内容。 | 355 356**示例:** 357 358```js 359KeyboardDelegate.off('textChange'); 360``` 361 362## KeyboardController 363 364下列API示例中都需使用[inputStart](#inputStart)回调获取到KeyboardController实例,再通过此实例调用对应方法。 365 366### hideKeyboard 367 368hideKeyboard(callback: AsyncCallback<void>): void 369 370隐藏输入法。 371 372**系统能力**: SystemCapability.Miscservices.InputMethodFramework 373 374**参数:** 375 376| 参数名 | 类型 | 必填 | 说明 | 377| -------- | ---------------------- | ---- | -------- | 378| callback | AsyncCallback<void> | 否 | 回调函数 | 379 380**示例:** 381 382```js 383KeyboardController.hideKeyboard(()=>{ 384}); 385``` 386 387### hideKeyboard 388 389hideKeyboard(): Promise<void> 390 391隐藏输入法。 392 393**系统能力**: SystemCapability.Miscservices.InputMethodFramework 394 395**返回值:** 396 397| 类型 | 说明 | 398| ---------------- | -------- | 399| Promise<void> | 回调函数 | 400 401**示例:** 402 403```js 404KeyboardController.hideKeyboard(); 405``` 406 407## TextInputClient 408 409下列API示例中都需使用[inputStart](#inputStart)回调获取到TextInputClient实例,再通过此实例调用对应方法。 410 411### getForward 412 413getForward(length:number, callback: AsyncCallback<string>): void 414 415获取光标前固定长度的文本。 416 417**系统能力**: SystemCapability.Miscservices.InputMethodFramework 418 419**参数:** 420 421| 参数名 | 类型 | 必填 | 说明 | 422| -------- | --------------------------- | ---- | ---------- | 423| length | number | 是 | 文本长度。 | 424| callback | AsyncCallback<string> | 是 | 返回文本。 | 425 426**示例:** 427 428```js 429TextInputClient.getForward(5,(text) =>{ 430 console.info("text = " + text); 431}); 432``` 433 434### getForward 435 436getForward(length:number): Promise<string> 437 438获取光标前固定长度的文本。 439 440**系统能力**: SystemCapability.Miscservices.InputMethodFramework 441 442**参数:** 443 444| 参数名 | 类型 | 必填 | 说明 | 445| ------ | ------ | ---- | ---------- | 446| length | number | 是 | 文本长度。 | 447 448**返回值:** 449 450| 类型 | 说明 | 451| --------------------- | ---------- | 452| Promise<string> | 返回文本。 | 453 454**示例:** 455 456```js 457let text = TextInputClient.getForward(5); 458console.info("text = " + text); 459``` 460 461### getBackward 462 463getBackward(length:number, callback: AsyncCallback<string>): void 464 465获取光标后固定长度的文本。 466 467**系统能力**: SystemCapability.Miscservices.InputMethodFramework 468 469**参数:** 470 471| 参数名 | 类型 | 必填 | 说明 | 472| -------- | --------------------------- | ---- | ---------- | 473| length | number | 是 | 文本长度。 | 474| callback | AsyncCallback<string> | 是 | 返回文本。 | 475 476**示例:** 477 478```js 479TextInputClient.getBackward(5,(text)=>{ 480 console.info("text = " + text); 481}); 482``` 483 484### getBackward 485 486getBackward(length:number): Promise<string> 487 488获取光标后固定长度的文本。 489 490**系统能力**: SystemCapability.Miscservices.InputMethodFramework 491 492**参数:** 493 494| 参数名 | 类型 | 必填 | 说明 | 495| ------ | ------ | ---- | ---------- | 496| length | number | 是 | 文本长度。 | 497 498**返回值:** 499 500| 类型 | 说明 | 501| --------------------- | ---------- | 502| Promise<string> | 返回文本。 | 503 504**示例:** 505 506```js 507let text = TextInputClient.getBackward(5); 508console.info("text = " + text); 509``` 510 511### deleteForward 512 513deleteForward(length:number, callback: AsyncCallback<boolean>): void 514 515删除光标前固定长度的文本。 516 517**系统能力**: SystemCapability.Miscservices.InputMethodFramework 518 519**参数:** 520 521| 参数名 | 类型 | 必填 | 说明 | 522| -------- | ---------------------------- | ---- | -------------- | 523| length | number | 是 | 文本长度。 | 524| callback | AsyncCallback<boolean> | 是 | 操作成功与否。 | 525 526**示例:** 527 528```js 529TextInputClient.deleteForward(5,(isSuccess)=>{ 530 console.info("isSuccess = " + isSuccess); 531}); 532``` 533 534### deleteForward 535 536deleteForward(length:number): Promise<boolean> 537 538删除光标前固定长度的文本。 539 540**系统能力**: SystemCapability.Miscservices.InputMethodFramework 541 542**参数:** 543 544| 参数名 | 类型 | 必填 | 说明 | 545| -------- | -------- | -------- | -------- | 546| length | number | 是 | 文本长度。 | 547 548**返回值:** 549 550| 类型 | 说明 | 551| -------------------------- | ---------------------------------- | 552| Promise<boolean> | 操作成功与否。 | 553 554**示例:** 555 556```js 557let isSuccess = TextInputClient.deleteForward(5); 558console.info("isSuccess = " + isSuccess); 559``` 560 561### deleteBackward 562 563deleteBackward(length:number, callback: AsyncCallback<boolean>): void 564 565删除光标后固定长度的文本。 566 567**系统能力**: SystemCapability.Miscservices.InputMethodFramework 568 569**参数:** 570 571| 参数名 | 类型 | 必填 | 说明 | 572| -------- | -------- | -------- | -------- | 573| length | number | 是 | 文本长度。 | 574| callback | AsyncCallback<boolean> | 是 | 操作成功与否。 | 575 576**示例:** 577 578```js 579TextInputClient.deleteBackward(5, (isSuccess)=>{ 580 console.info("isSuccess = " + isSuccess); 581}); 582``` 583 584### deleteBackward 585 586deleteBackward(length:number): Promise<boolean> 587 588删除光标后固定长度的文本。 589 590**系统能力**: SystemCapability.Miscservices.InputMethodFramework 591 592**参数:** 593| 参数名 | 类型 | 必填 | 说明 | 594| ------ | ------ | ---- | ---------- | 595| length | number | 是 | 文本长度。 | 596 597**返回值:** 598 599| 类型 | 说明 | 600| ---------------------- | -------------- | 601| Promise<boolean> | 操作成功与否。 | 602 603**示例:** 604 605```js 606let isSuccess = TextInputClient.deleteBackward(5); 607console.info("isSuccess = " + isSuccess); 608``` 609 610### sendKeyFunction 611 612sendKeyFunction(action:number, callback: AsyncCallback<boolean>): void 613 614发送功能键。 615 616**系统能力**: SystemCapability.Miscservices.InputMethodFramework 617 618**参数:** 619 620| 参数名 | 类型 | 必填 | 说明 | 621| -------- | -------- | -------- | -------- | 622| action | number | 是 | 编辑框属性。 | 623| callback | AsyncCallback<boolean> | 是 | 操作成功与否。 | 624 625**示例:** 626 627```js 628TextInputClient.sendKeyFunction(inputMethod.ENTER_KEY_TYPE_NEXT,(isSuccess)=>{ 629 console.info("isSuccess = " + isSuccess); 630}); 631``` 632 633### sendKeyFunction 634 635sendKeyFunction(action:number): Promise<boolean> 636 637发送功能键。 638 639**系统能力**: SystemCapability.Miscservices.InputMethodFramework 640 641**参数:** 642 643| 参数名 | 类型 | 必填 | 说明 | 644| ------ | ------ | ---- | ------------ | 645| action | number | 是 | 编辑框属性。 | 646 647**返回值:** 648 649| 类型 | 说明 | 650| ---------------------- | -------------- | 651| Promise<boolean> | 操作成功与否。 | 652 653**示例:** 654 655```js 656let isSuccess = TextInputClient.sendKeyFunction(inputMethod.ENTER_KEY_TYPE_NEXT); 657console.info("isSuccess = " + isSuccess); 658``` 659 660### insertText 661 662insertText(text:string, callback: AsyncCallback<boolean>): void 663 664插入文本。 665 666**系统能力**: SystemCapability.Miscservices.InputMethodFramework 667 668**参数:** 669 670| 参数名 | 类型 | 必填 | 说明 | 671| -------- | -------- | -------- | -------- | 672| text | string | 是 | 文本。 | 673| callback | AsyncCallback<boolean> | 是 | 操作成功与否。 | 674 675**示例:** 676 677```js 678TextInputClient.insertText("test", (isSuccess)=>{ 679 console.info("isSuccess = " + isSuccess); 680}); 681``` 682 683### insertText 684 685insertText(text:string): Promise<boolean> 686 687插入文本。 688 689**系统能力**: SystemCapability.Miscservices.InputMethodFramework 690 691**参数:** 692 693| 参数名 | 类型 | 必填 | 说明 | 694| ------ | ------ | ---- | ------ | 695| text | string | 是 | 文本。 | 696 697**返回值:** 698 699| 类型 | 说明 | 700| ---------------------- | -------------- | 701| Promise<boolean> | 操作成功与否。 | 702 703**示例:** 704 705```js 706let isSuccess = TextInputClient.insertText("test"); 707console.info("isSuccess = " + isSuccess); 708``` 709 710### getEditorAttribute 711 712getEditorAttribute(callback: AsyncCallback<EditorAttribute>): void 713 714获取编辑框属性值。 715 716**系统能力**: SystemCapability.Miscservices.InputMethodFramework 717 718**参数:** 719 720| 参数名 | 类型 | 必填 | 说明 | 721| -------- | ----------------------- | ---- | -------------- | 722| callback | AsyncCallback<[EditorAttribute](#EditorAttribute)> | 是 | 编辑框属性值。 | 723 724**示例:** 725 726```js 727TextInputClient.getEditorAttribute((EditorAttribute)=>{ 728}); 729``` 730 731### getEditorAttribute 732 733getEditorAttribute(): Promise<EditorAttribute> 734 735获取编辑框属性值。 736 737**系统能力**: SystemCapability.Miscservices.InputMethodFramework 738 739**返回值:** 740 741| 类型 | 说明 | 742| -------------------------- | ------------------ | 743| Promise<[EditorAttribute](#EditorAttribute)> | 返回编辑框属性值。 | 744 745**示例:** 746 747```js 748let EditorAttribute = TextInputClient.getEditorAttribute(); 749``` 750 751## EditorAttribute 752 753编辑框属性值。 754 755**系统能力**: SystemCapability.Miscservices.InputMethodFramework 756 757| 名称 | 参数类型 | 可读 | 可写 | 说明 | 758| ------------ | -------- | ---- | ---- | ------------------ | 759| enterKeyType | number | 是 | 否 | 编辑框的功能属性。 | 760| inputPattern | number | 是 | 否 | 编辑框的文本属性。 | 761 762## KeyEvent 763 764按键属性值。 765 766**系统能力**: SystemCapability.Miscservices.InputMethodFramework 767 768| 名称 | 参数类型 | 可读 | 可写 | 说明 | 769| --------- | -------- | ---- | ---- | ------------ | 770| keyCode | number | 是 | 否 | 按键的键值。 | 771| keyAction | number | 是 | 否 | 按键的状态。 |