# ADBKeyBoard **Repository Path**: Dillon82/ADBKeyBoard ## Basic Information - **Project Name**: ADBKeyBoard - **Description**: github官方地址:https://github.com/senzhk/ADBKeyBoard 国内快速访问。 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-25 - **Last Updated**: 2022-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ADBKeyBoard =========== # 介绍 通过adb访问Android虚拟键盘,ADBKeyBoard是一个虚拟键盘,从系统广播中接收命令,用来输入汉字 # 背景 adb shell input语法:
usage: input [text|keyevent] input text**但是因为它的设计原因。上述命令不能输入汉字。** 可以参考StackOverflow上的问题 : http://stackoverflow.com/questions/14224549/adb-shell-input-unicode-characterinput keyevent
例如: //不会生效 adb shell input text '你好嗎'ADBKeyboard可以用在输入汉字的场景下,用在自动化场景或者自动测试场景下。 # 打包 * 下载代码:https://gitee.com/Dillon82/ADBKeyBoard.git * 进入目录: `cd ADBKeyBoard` * 设置Android SDK 目录: `export ANDROID_HOME=$HOME/Android/Sdk` 或者 编辑 `local.properties` * 执行命令 :`./gradlew installDebug` # 安装 1. 拖入模拟器安装 2. 下载到手机上手动安装 3. adb方式安装:`adb install ADBKeyboard.apk` 使用 ========== 首先配置:设置 'ADBKeyBoard' 为默认的输入法 - 通过发送广播输入内容: `adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好嗎? Hello?'` > 如果不生效的话,需要通过base64的方式输入: > > * Mac|Linux环境下,发送base64编码过后的中文内容 > adb shell am broadcast -a ADB_INPUT_B64 --es msg `echo -n '你好嗎? Hello?' | base64` > * Windows环境试试以下解决方案: > https://gist.github.com/ssddi456/889d5e8a2571a33e8fcd0ff6f1288291 > - 通过adb shell配置ADBKeyBoard可用:
adb shell ime enable com.android.adbkeyboard/.AdbIME- 切换ADBKeyBoard为默认输入法 :
adb shell ime set com.android.adbkeyboard/.AdbIME- 切换回原来的输入法: (我的设备...)
adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME- 检查设备上可用的输入法:
adb shell ime list -a- 重置手机上默认的:
adb shell ime reset- 使用python发送命令base64内容 `import os` `import base64` `chars = '的广告'` `charsb64 = str(base64.b64encode(chars.encode('utf-8')))[1:]` `os.system("adb shell am broadcast -a ADB_INPUT_B64 --es msg %s" %charsb64)` - 发送删除一个字符的广播(67 = KEYCODE_DEL) adb shell am broadcast -a ADB_INPUT_CODE --ei code 67 - 发送一个Enter事件的广播(2 = IME_ACTION_GO) adb shell am broadcast -a ADB_EDITOR_CODE --ei code 2 - 发送广播输入emoji,To send 😸 Cat adb shell am broadcast -a ADB_INPUT_CHARS --eia chars '128568,32,67,97,116 - 清空当前输入框的内容 (从 v2.0版本开始) adb shell am broadcast -a ADB_CLEAR_TEXT # 问题&参考 You can try the apk with my debug build: https://github.com/senzhk/ADBKeyBoard/raw/master/ADBKeyboard.apk KeyEvent Code Ref: http://developer.android.com/reference/android/view/KeyEvent.html Editor Action Code Ref: http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html