android 获取硬件输入

来源:互联网 发布:网络舆论害人的例子 编辑:程序博客网 时间:2024/06/05 16:14

是上一篇文章中遇到的问题。背景是这样的:

0,我想输入中文
1,我把中文放到粘贴板了
2,我想输出ctrl+v 粘贴缓存的中文

在第二步的时候一直走不通,明明virtualbox是可以的。

问题分两步,

A,如果是android7(API24) 可以这样做:

参考KeyEvent

adb shell input keyevent KEYCODE_PASTE

B,如果是android6及以下,则需要组合键。

可以在键盘上实操一下,获得当前执行的按键码:

adb shell getevent

以virtualbox 为例,ctrl+v 的输出是:

add device 6: /dev/input/event5  name:     "AT Translated Set 2 keyboard"/dev/input/event5: 0004 0004 0000001d/dev/input/event5: 0001 001d 00000001/dev/input/event5: 0000 0000 00000000/dev/input/event5: 0004 0004 0000002f/dev/input/event5: 0001 002f 00000001/dev/input/event5: 0000 0000 00000000/dev/input/event5: 0004 0004 0000002f/dev/input/event5: 0001 002f 00000000/dev/input/event5: 0000 0000 00000000/dev/input/event5: 0004 0004 0000001d/dev/input/event5: 0001 001d 00000000/dev/input/event5: 0000 0000 00000000

所以,可以这样子输入回去

root@x86_64:/ # sendevent /dev/input/event5 4 4 29 &&> sendevent /dev/input/event5 1 29 1 &&> sendevent /dev/input/event5 0 0 0 &&> sendevent /dev/input/event5 4 4 47 && > sendevent /dev/input/event5 1 47 1 &&> sendevent /dev/input/event5 0 0 0 &&> sendevent /dev/input/event5 4 4 47 &&> sendevent /dev/input/event5 1 47 0 &&> sendevent /dev/input/event5 0 0 0 &&> sendevent /dev/input/event5 4 4 29 &&> sendevent /dev/input/event5 1 29 0 &&> sendevent /dev/input/event5 0 0 0

这个时候,在virtualbox上的虚拟机里,就看到粘贴上去的文字了。

ok,到了物理机上,怎么办呢

root@x86_64:/ # geteventadd device 1: /dev/input/event17  name:     "HID 04f3:0103"add device 2: /dev/input/event16  name:     "HID 04f3:0103"add device 3: /dev/input/event3  name:     "PixArt USB Optical Mouse"could not get driver version for /dev/input/mouse0, Not a typewriteradd device 4: /dev/input/event15  name:     "Android Power Button"could not get driver version for /dev/input/mice, Not a typewriteradd device 5: /dev/input/event1  name:     "Power Button"add device 6: /dev/input/event0  name:     "Sleep Button"add device 7: /dev/input/event2  name:     "Power Button"add device 8: /dev/input/event14  name:     "PC Speaker"add device 9: /dev/input/event13  name:     "HDA Intel PCH HDMI/DP,pcm=8"add device 10: /dev/input/event12  name:     "HDA Intel PCH HDMI/DP,pcm=7"add device 11: /dev/input/event11  name:     "HDA Intel PCH HDMI/DP,pcm=3"add device 12: /dev/input/event10  name:     "HDA Intel PCH Front Headphone"add device 13: /dev/input/event9  name:     "HDA Intel PCH Line Out"add device 14: /dev/input/event8  name:     "HDA Intel PCH Line"add device 15: /dev/input/event7  name:     "HDA Intel PCH Rear Mic"add device 16: /dev/input/event6  name:     "HDA Intel PCH Front Mic"add device 17: /dev/input/event5  name:     "Video Bus"add device 18: /dev/input/event4  name:     "Eee PC WMI hotkeys"

(注:这个需要权限,普通应用拿的时候提示是permission denied)

所以问题是:device是可拆卸的,所以sendevent写死设备号,以后会莫名其妙的跪的。

最近还是修改了输入法,用输入法支持粘贴。


发现还是很有意思的,设备的硬件输入都是在像getevent输出的那样,输出一个个指令。

那么如果应用有权限,可以读到这些指令,就可以清晰的获得用户(人)对手机的操作。
在某些时候,还可以复现这些操作,让系统响应复现的操作。

开个脑洞:手机root之后,装了某些恶意软件,输入密码的时候,恶意软件就可以读到密码的位置。(“安全键盘”之类的只是某种自wei而已)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宽带连接被删了 怎么办 手机被偷了qq怎么办 手机丢了微信怎么办啊 手机店把手机修坏了怎么办 在手机店买到山寨机手机怎么办 有人在qq群上骂我怎么办 qq群一直有人骚扰怎么办 苹果手机QQ图标不在桌面上怎么办 苹果手机长按不能删除怎么办 qq发的图片过期怎么办 九黎八卦在仓库怎么办 飞猪f2领了万豪银卡没住怎么办 机械键盘摁键冲突怎么办 玩游戏键盘没反应怎么办 玩枪战游戏头晕恶心怎么办 手机看视频不能横屏怎么办 苹果手机安全码忘记了怎么办 信用卡安全码忘记了怎么办 联想电脑管家阻止我安装软件怎么办 word恢复后打开乱码怎么办 苹果手机局域网也登陆不了怎么办 剑三账号冻结7天怎么办 荒野行动无缘无故被限制时间怎么办 电脑打游戏闪屏怎么办 微信下载出现数据包出错怎么办 安卓平板闪退怎么办 剑侠世界2出了1怎么办 苹果手机有木马病毒删除不了怎么办 苹果手机病毒了怎么办【解决方法】 苹果手机点击病毒链接怎么办 苹果手机有病毒啦怎么办 苹果7p反复重启怎么办 苹果手机屏幕触屏不灵怎么办 苹果手机屏翘起来了怎么办 苹果x手机触屏失灵怎么办 苹果7手机变成黑白屏怎么办 苹果手机屏不动了怎么办 苹果6老是卡屏怎么办 苹果x卡屏死机怎么办 苹果6死机卡屏怎么办 苹果手机主屏死机怎么办