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 */
15import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
16import commoneventmanager from '@ohos.commonEventManager';
17import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry';
18import subtype from '@ohos.InputMethodSubtype';
19import inputMethod from '@ohos.inputMethod';
20import display from '@ohos.display';
21import { Driver, ON, MatchPattern, Component } from '@ohos.UiTest'
22import { BusinessError } from '@ohos.base'
23
24export default function inputMethodEngineKeyJSUnit() {
25  describe('inputMethodEngineKeyEvent', () => {
26    let extra: ESObject = {};
27    let inputSever: ESObject = {
28      packageName: '',
29      methodId: '',
30      name: '',
31      id: '',
32      extra: extra
33    }
34    beforeAll(async (done: Function) => {
35      let inputM = inputMethod.getCurrentInputMethod();
36      console.info("====>beforeAll: getCurrentInputMethod inputMethodEngineJSUnit to: " + JSON.stringify(inputM));
37      inputSever.packageName = inputM.packageName;
38      inputSever.methodId = inputM.methodId;
39      inputSever.name = inputM.packageName;
40      inputSever.id = inputM.methodId;
41
42      let InputKeyService: subtype = {
43        id: "InputKeyService",
44        label: "",
45        name: "com.acts.inputmethodengine.test",
46        mode: "lower",
47        locale: "",
48        language: "",
49        icon: "",
50        iconId: 0,
51        extra: {}
52      }
53      try {
54        await inputMethod.switchCurrentInputMethodSubtype(InputKeyService);
55        setTimeout(() => {
56          console.info("====>beforeAll: inputMethodEngineJSUnit switchCurrentInputMethodSubtype success");
57          done();
58        }, 2000)
59      } catch (err) {
60        console.info("====>beforeAll: inputMethodEngineJSUnit fail" + JSON.stringify(err));
61      }
62    })
63
64    /**
65     * afterEach: Test case-level clearance conditions, which are executed after each test case is executed.
66     */
67    afterAll(async (done: Function) => {
68      done();
69    })
70
71    let dis = display.getDefaultDisplaySync();
72    let driver = Driver.create();
73    const delegator:AbilityDelegatorRegistry.AbilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator();
74
75    /*
76    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0010
77    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0010
78    * @tc.desc    Function test
79    * @tc.size    MediumTest
80    * @tc.type    Function
81    * @tc.level   Level2
82    */
83    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0010', 0, async (done: Function) => {
84
85      let unSubscriberCallback = (err: BusinessError) => {
86        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 unSubscriberCallback start");
87        if (err) {
88          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 unSubscriberCallback failed:" +
89          JSON.stringify(err));
90        } else {
91          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 unSubscriberCallback finish");
92        }
93      }
94
95      let subscriberCallback = (err: BusinessError, data: ESObject) => {
96        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 subscriberCallback data:"
97          + JSON.stringify(data));
98        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
99        let t = setTimeout(() => {
100          try {
101            expect(data.data).assertEqual("SUCCESS");
102            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 end");
103            clearTimeout(t);
104            done();
105          } catch (err) {
106            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 err:" + JSON.stringify(err));
107            clearTimeout(t);
108            done();
109          }
110        }, 1000)
111      }
112
113      let publishCallback = async (err: BusinessError) => {
114        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 publishCallback start");
115        if (err) {
116          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 publishCallback failed:" +
117          JSON.stringify(err));
118        } else {
119          let t = setTimeout(async () => {
120            await driver.triggerKey(2045)
121            clearTimeout(t);
122          }, 200)
123        }
124      }
125
126      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
127        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0010"]
128      }
129      let subscriber: ESObject;
130      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
131        try {
132          subscriber = data;
133          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 subscriber data:" +
134          JSON.stringify(data));
135          commoneventmanager.subscribe(subscriber, subscriberCallback);
136          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0010 subscriber finish");
137        } catch (err) {
138          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
139        }
140
141        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
142          code: 10
143        }
144        let t = setTimeout(async () => {
145          clearTimeout(t);
146          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
147        }, 500)
148      }).catch((err: BusinessError) => {
149        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
150      })
151    });
152
153    /*
154    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0020
155    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0020
156    * @tc.desc    Function test
157    * @tc.size    MediumTest
158    * @tc.type    Function
159    * @tc.level   Level2
160    */
161    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0020', 0, async (done: Function) => {
162
163      let unSubscriberCallback = (err: BusinessError) => {
164        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 unSubscriberCallback start");
165        if (err) {
166          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 unSubscriberCallback failed:" +
167          JSON.stringify(err));
168        } else {
169          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 unSubscriberCallback finish");
170        }
171      }
172
173      let subscriberCallback = (err: BusinessError, data: ESObject) => {
174        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 subscriberCallback data:"
175          + JSON.stringify(data));
176        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
177        let t = setTimeout(() => {
178          try {
179            expect(data.data).assertEqual("SUCCESS");
180            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 end");
181            clearTimeout(t);
182            done();
183          } catch (err) {
184            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 err:" + JSON.stringify(err));
185            clearTimeout(t);
186            done();
187          }
188        }, 1000);
189      }
190
191      let publishCallback = async (err: BusinessError) => {
192        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 publishCallback start");
193        if (err) {
194          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 publishCallback failed:" +
195          JSON.stringify(err));
196        } else {
197          let t = setTimeout(async () => {
198            await driver.triggerKey(2017)
199            clearTimeout(t);
200          }, 200)
201        }
202      }
203
204      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
205        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0020"]
206      }
207      let subscriber: ESObject;
208      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
209        try {
210          subscriber = data;
211          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 subscriber data:" +
212          JSON.stringify(data));
213          commoneventmanager.subscribe(subscriber, subscriberCallback);
214          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0020 subscriber finish");
215        } catch (err) {
216          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
217        }
218
219        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
220          code: 20
221        }
222        let t = setTimeout(async () => {
223          clearTimeout(t);
224          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
225        }, 500)
226      }).catch((err: BusinessError) => {
227        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
228      })
229    });
230
231    /*
232    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0030
233    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0030
234    * @tc.desc    Function test
235    * @tc.size    MediumTest
236    * @tc.type    Function
237    * @tc.level   Level2
238    */
239    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0030', 0, async (done: Function) => {
240
241      let unSubscriberCallback = (err: BusinessError) => {
242        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 unSubscriberCallback start");
243        if (err) {
244          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 unSubscriberCallback failed:" +
245          JSON.stringify(err));
246        } else {
247          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 unSubscriberCallback finish");
248        }
249      }
250
251      let subscriberCallback = (err: BusinessError, data: ESObject) => {
252        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 subscriberCallback data:"
253          + JSON.stringify(data));
254        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
255        let t = setTimeout(() => {
256          try {
257            expect(data.data).assertEqual("SUCCESS");
258            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 end");
259            clearTimeout(t);
260            done();
261          } catch (err) {
262            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 err:" + JSON.stringify(err));
263            clearTimeout(t);
264            done();
265          }
266        }, 1000);
267      }
268
269      let publishCallback = async (err: BusinessError) => {
270        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 publishCallback start");
271        if (err) {
272          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 publishCallback failed:" +
273          JSON.stringify(err));
274        } else {
275          let t = setTimeout(async () => {
276            let result = await delegator.executeShellCommand(`uinput -K -d 2072 -d 2017 -u 2017 -u 2072`);
277            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 executeShellCommand success: " + JSON.stringify(result));
278            clearTimeout(t);
279          }, 200)
280        }
281      }
282
283      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
284        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0030"]
285      }
286      let subscriber: ESObject;
287      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
288        try {
289          subscriber = data;
290          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 subscriber data:" +
291          JSON.stringify(data));
292          commoneventmanager.subscribe(subscriber, subscriberCallback);
293          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0030 subscriber finish");
294        } catch (err) {
295          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
296        }
297
298        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
299          code: 30
300        }
301        let t = setTimeout(async () => {
302          clearTimeout(t);
303          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
304        }, 500)
305      }).catch((err: BusinessError) => {
306        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
307      })
308    });
309
310    /*
311    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0040
312    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0040
313    * @tc.desc    Function test
314    * @tc.size    MediumTest
315    * @tc.type    Function
316    * @tc.level   Level2
317    */
318    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0040', 0, async (done: Function) => {
319
320      let unSubscriberCallback = (err: BusinessError) => {
321        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 unSubscriberCallback start");
322        if (err) {
323          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 unSubscriberCallback failed:" +
324          JSON.stringify(err));
325        } else {
326          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 unSubscriberCallback finish");
327        }
328      }
329
330      let subscriberCallback = (err: BusinessError, data: ESObject) => {
331        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 subscriberCallback data:"
332          + JSON.stringify(data));
333        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
334        let t = setTimeout(() => {
335          try {
336            expect(data.data).assertEqual("SUCCESS");
337            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 end");
338            clearTimeout(t);
339            done();
340          } catch (err) {
341            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 err:" + JSON.stringify(err));
342            clearTimeout(t);
343            done();
344          }
345        }, 1000)
346      }
347
348      let publishCallback = async (err: BusinessError) => {
349        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 publishCallback start");
350        if (err) {
351          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 publishCallback failed:" +
352          JSON.stringify(err));
353        } else {
354          let t = setTimeout(async () => {
355            let result = await delegator.executeShellCommand(`uinput -K -d 2017 -d 2047 -u 2047 -u 2017`);
356            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 executeShellCommand success: " + JSON.stringify(result));
357            clearTimeout(t);
358          }, 200)
359        }
360      }
361
362      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
363        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0040"]
364      }
365      let subscriber: ESObject;
366      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
367        try {
368          subscriber = data;
369          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 subscriber data:" +
370          JSON.stringify(data));
371          commoneventmanager.subscribe(subscriber, subscriberCallback);
372          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0040 subscriber finish");
373        } catch (err) {
374          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
375        }
376
377        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
378          code: 40
379        }
380        let t = setTimeout(async () => {
381          clearTimeout(t);
382          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
383        }, 500)
384      }).catch((err: BusinessError) => {
385        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
386      })
387    });
388
389    /*
390    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0050
391    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0050
392    * @tc.desc    Function test
393    * @tc.size    MediumTest
394    * @tc.type    Function
395    * @tc.level   Level2
396    */
397    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0050', 0, async (done: Function) => {
398
399      let unSubscriberCallback = (err: BusinessError) => {
400        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 unSubscriberCallback start");
401        if (err) {
402          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 unSubscriberCallback failed:" +
403          JSON.stringify(err));
404        } else {
405          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 unSubscriberCallback finish");
406        }
407      }
408
409      let subscriberCallback = (err: BusinessError, data: ESObject) => {
410        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 subscriberCallback data:"
411          + JSON.stringify(data));
412        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
413        let t = setTimeout(() => {
414          try {
415            expect(data.data).assertEqual("SUCCESS");
416            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 end");
417            clearTimeout(t);
418            done();
419          } catch (err) {
420            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 err:" + JSON.stringify(err));
421            clearTimeout(t);
422            done();
423          }
424        }, 1000)
425      }
426
427      let publishCallback = async (err: BusinessError) => {
428        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 publishCallback start");
429        if (err) {
430          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 publishCallback failed:" +
431          JSON.stringify(err));
432        } else {
433          let t = setTimeout(async () => {
434            let result = await delegator.executeShellCommand(`uinput -K -d 2047 -d 2017 -u 2017 -u 2047`);
435            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 executeShellCommand success: " + JSON.stringify(result));
436            clearTimeout(t);
437          }, 200)
438
439        }
440      }
441
442      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
443        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0050"]
444      }
445      let subscriber: ESObject;
446      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
447        try {
448          subscriber = data;
449          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 subscriber data:" +
450          JSON.stringify(data));
451          commoneventmanager.subscribe(subscriber, subscriberCallback);
452          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0050 subscriber finish");
453        } catch (err) {
454          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
455        }
456
457        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
458          code: 50
459        }
460        let t = setTimeout(async () => {
461          clearTimeout(t);
462          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
463        }, 500)
464      }).catch((err: BusinessError) => {
465        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
466      })
467    });
468
469    /*
470    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0060
471    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0060
472    * @tc.desc    Function test
473    * @tc.size    MediumTest
474    * @tc.type    Function
475    * @tc.level   Level2
476    */
477    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0060', 0, async (done: Function) => {
478
479      let unSubscriberCallback = (err: BusinessError) => {
480        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 unSubscriberCallback start");
481        if (err) {
482          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 unSubscriberCallback failed:" +
483          JSON.stringify(err));
484        } else {
485          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 unSubscriberCallback finish");
486        }
487      }
488
489      let subscriberCallback = (err: BusinessError, data: ESObject) => {
490        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 subscriberCallback data:"
491          + JSON.stringify(data));
492        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
493        let t = setTimeout(() => {
494          try {
495            expect(data.data).assertEqual("SUCCESS");
496            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 end");
497            clearTimeout(t);
498            done();
499          } catch (err) {
500            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 err:" + JSON.stringify(err));
501            clearTimeout(t);
502            done();
503          }
504        }, 1000)
505      }
506
507      let publishCallback = async (err: BusinessError) => {
508        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 publishCallback start");
509        if (err) {
510          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 publishCallback failed:" +
511          JSON.stringify(err));
512        } else {
513          let t = setTimeout(async () => {
514            let result = await delegator.executeShellCommand(`uinput -K -d 2047 -d 2001 -u 2001 -u 2047`);
515            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 executeShellCommand success: " + JSON.stringify(result));
516            clearTimeout(t);
517          }, 200)
518        }
519      }
520
521      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
522        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0060"]
523      }
524      let subscriber: ESObject;
525      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
526        try {
527          subscriber = data;
528          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 subscriber data:" +
529          JSON.stringify(data));
530          commoneventmanager.subscribe(subscriber, subscriberCallback);
531          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0060 subscriber finish");
532        } catch (err) {
533          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
534        }
535
536        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
537          code: 60
538        }
539        let t = setTimeout(async () => {
540          clearTimeout(t);
541          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
542        }, 500)
543      }).catch((err: BusinessError) => {
544        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
545      })
546    });
547
548    /*
549    * @tc.number  SUB_Misc_InputMethod_Manage_Physical_Buttons_0070
550    * @tc.name   SUB_Misc_InputMethod_Manage_Physical_Buttons_0070
551    * @tc.desc    Function test
552    * @tc.size    MediumTest
553    * @tc.type    Function
554    * @tc.level   Level2
555    */
556    it('SUB_Misc_InputMethod_Manage_Physical_Buttons_0070', 0, async (done: Function) => {
557
558      let unSubscriberCallback = (err: BusinessError) => {
559        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 unSubscriberCallback start");
560        if (err) {
561          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 unSubscriberCallback failed:" +
562          JSON.stringify(err));
563        } else {
564          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 unSubscriberCallback finish");
565        }
566      }
567
568      let subscriberCallback = (err: BusinessError, data: ESObject) => {
569        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 subscriberCallback data:"
570          + JSON.stringify(data));
571        commoneventmanager.unsubscribe(subscriber, unSubscriberCallback);
572        let t = setTimeout(() => {
573          try {
574            expect(data.data).assertEqual("SUCCESS");
575            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 end");
576            clearTimeout(t);
577            done();
578          } catch (err) {
579            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 err:" + JSON.stringify(err));
580            clearTimeout(t);
581            done();
582          }
583        }, 1000)
584      }
585
586      let publishCallback = async (err: BusinessError) => {
587        console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 publishCallback start");
588        if (err) {
589          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 publishCallback failed:" +
590          JSON.stringify(err));
591        } else {
592          let t = setTimeout(async () => {
593            let result = await delegator.executeShellCommand(`uinput -K -d 2047 -d 2062 -u 2062 -u 2047`);
594            console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 executeShellCommand success: " + JSON.stringify(result));
595            clearTimeout(t)
596          }, 200)
597        }
598      }
599
600      let commonEventSubscribeInfo: commoneventmanager.CommonEventSubscribeInfo = {
601        events: ["SUB_Misc_InputMethod_Manage_Physical_Buttons_0070"]
602      }
603      let subscriber: ESObject;
604      commoneventmanager.createSubscriber(commonEventSubscribeInfo).then((data) => {
605        try {
606          subscriber = data;
607          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 subscriber data:" +
608          JSON.stringify(data));
609          commoneventmanager.subscribe(subscriber, subscriberCallback);
610          console.info("====>SUB_Misc_InputMethod_Manage_Physical_Buttons_0070 subscriber finish");
611        } catch (err) {
612          console.info(`====>Subscribe failed, code:${err.code}, message is ${err.message}`)
613        }
614
615        let commonEventPublishData: commoneventmanager.CommonEventPublishData = {
616          code: 70
617        }
618        let t = setTimeout(async () => {
619          clearTimeout(t);
620          commoneventmanager.publish('inputMethodEngineKeyTest', commonEventPublishData, publishCallback);
621        }, 500)
622      }).catch((err: BusinessError) => {
623        console.info(`====>createSubscriber failed, code:${err.code}, message is ${err.message}`)
624      })
625    });
626
627  })
628}