常用adb shell命令:getevent和sendevent

adb-getevent使用 getevent使用 阅读详情
AI摘要

本文详细介绍了getevent和sendevent命令的使用方法,包括输出设备事件信息、发送事件模拟操作等核心内容。通过具体实例展示了如何在不同场景下运用这些命令,特别关注了事件信息的16进制与10进制转换,以及事件处理的流程。文章旨在帮助开发者更好地理解和掌握事件处理技术,提高设备驱动和用户界面交互的开发效率。

1.getevent
输出所有event设备的基本信息
这里写图片描述

输出格式:
设备名: 事件type 事件code 事件value
这里写图片描述
注意:这里的数字都是16进制。

getevent -c 10 //输出10条信息后退出
getevent -l  //将type、code、value以对应的常量名称显示

使用 getevent -l 命令后输出结果格式为:
这里写图片描述
对应的数字代码转换为容易理解的字符串了,这些常量定义都在input.h文件中。

2.sendevent
发送事件命令,模拟事件操作。
该命令格式如下:
这里写图片描述

注意:和getevent命令输出的结果不一样,这里的type,code,value都是10进制的。

看这张图
这里写图片描述
这是在联想A390t上点击音量减按键的时候,getevent的输出。很容易理解,分为四步:按下音量减->发送同步报告->抬起音量减->发送同步报告。只有发送了同步报告以后事件才能生效。
转化成16进制输出:
这里写图片描述

将其中的16进制数转化成10进制数(0x72->114),使用sendevent命令模拟按下音量减键的效果试试。
依次输入如下命令:

sendevent /dev/input/event0 0001 0114 00000001
sendevent /dev/input/event0 0000 0000 00000000
sendevent /dev/input/event0 0001 0114 00000000
sendevent /dev/input/event0 0000 0000 00000000

可以发现,在输入了前两天命令之后出现了音量调节窗口,如果不输入后两条命令,音量调节窗口是不会消失的。

最后强调一下:
(1)getevent输出的是16进制,sendevent使用的是10进制,注意转换。
(2)getevent命令的输出结果因设备不同而不同,但都是相似的。

易语言 adb shell getevent 和 sendevent 详细讲解使用实现点击效果 简介: 1、这里是通过雷电模拟器获得点击动作。 2、如果是真机获取点击 获多一些参数比如说触屏力度 按下和弹起也会多一些参数 3、/dev/input/event3 这个是事件路径。调试发现真机和模拟器事件路径不一样。所以你们在调试看看自己电脑是什么路径 4、通过getEvent()事件 点击雷电模拟器后输出查看 5、这个sendevent 事件还可以实现滑动、和多指触屏如果有这样需求在研究。 6、sendevent 相对 input tap 响应的速度要快一些。 立即下载

相关推荐

Android getevent用法实例详解

主要介绍了Android getevent用法实例详解的相关资料,需要的朋友可以参考下

adb shell getevent/sendevent

getevent/sendevent

深度安全实验室 2851

scGPT实战指南:如何用生成式AI加速你的单细胞多组学研究?

本文提供了scGPT在单细胞多组学研究中的实战指南。详细介绍了从环境部署、数据预处理到细胞类型注释与扰动预测等核心任务的操作流程。通过利用生成式AI和Transformer基础模型,scGPT能够显著加速分析,并提升细胞注释的准确性及基因调控网络推断的深度,为研究人员提供了强大的AI分析引擎。

weixin_29215815的博客 402

adb shell getevent/sendevent获取设备事件

获取设备的事件信息,如按键、触摸屏位置等查看可选参数显示各类事件的驱动设备。

WEB___的博客 2290

积木报表导出数据量太大报错

‌性能问题‌:‌当数据量非常大时,‌积木报表在导出过程中可能会遇到性能瓶颈,‌导致导出过程缓慢甚至失败。‌解决这一问题的方法包括优化SQL查询、‌调整分页大小、‌使用更适合处理大量数据的库(‌如阿里巴巴的EasyExcel)‌进行导出,‌或者采用异步处理的方式来避免接口超时1。‌内存溢出‌:‌如果报表工具或其依赖的库不支持流式(‌分批)‌导出,‌大量数据的处理可能会导致内存溢出。‌数据处理方式‌:‌如果待导出的数据包含特殊字符,‌如英文双引号或等号,‌这可能导致JSON反序列化报错。

Activiti工作流 1906

DeepSeek 框架和技术栈分析

DeepSeek 诞生于对更高效、更强大的深度学习计算和模型训练的追求。随着深度学习模型的规模不断增大,如大型语言模型(LLMs)和复杂的视觉模型,传统的框架在处理这些大规模模型时面临着性能瓶颈和资源利用效率低下的问题。DeepSeek 旨在解决这些问题,通过优化框架设计和采用先进的技术栈,实现更高效的模型训练和推理,同时降低计算成本。

yournameplease的专栏 1511

常用adb shell命令:getevent和sendeven

1.getevent 输出所有event设备的基本信息 输出格式: 设备名: 事件type 事件code 事件value 注意:这里的数字都是16进制。 使用 getevent -l 命令后输出结果格式为: getevent -c 10 //输出10条信息后退出 getevent -l //将type、code、value以对应的常量名称显示 对应的数字代码转换为容易理...

liangtianmeng的专栏 3046

DAP-Link DIY复刻指南

DAP-Link是ARM开源的一个项目,主要用于代码下载以及调试,支持SWD和JTAG调试接口,对于开发嵌入式的同学相信都或多或少有所耳闻。除了DAP-Link之外还有很多同类型的调试器,如ST-LinkJ-Link,但是这些都是不开源的,无法复刻或进行二次开发。但DAP-Link不同,完全开源,不用担心侵权问题,且随着开源社区大家的共同努力,DAP-Link经过了不断的迭代,先如今已取代ARM之前推出的CMSIS-DAP开源项目。

爱出名的狗腿子 1万+

Shell之getevent/sendevent的用法(通过shell来做屏幕解锁)

getevent/sendevent源码 这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.c

nihaozzq的专栏 4343

可控异常的契约化设计:在 ABAP 中用 CX_STATIC_CHECK 把可预期错误变成接口的一部分

文章摘要: 本文探讨了ABAP系统中异常处理的工程化设计原则,强调将可预期的业务异常作为接口契约的一部分。核心观点是:对于调用方能够合理处理的错误情况,应使用继承自CX_STATIC_CHECK的受检异常,通过方法签名强制调用方处理或显式转发。文章对比了ABAP三大异常根类的适用场景,提出"三问法"判断异常是否适合受检处理,并给出了包含上下文信息的异常类实现示例。通过Fiori文件上传案例,展示了如何在分层架构中合理传递和转换异常,最终在OData服务层将业务异常映射为标准错误响应。这种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3063

《QT+PCL》点云配准进阶——GROR配准

GROR点云配准

阁楼 1318

Android 下收发input事件的工具 getevent 和 sendevent

Android 自带了 getevent 和 sendevent,分别用于获取设备报送的事件和模拟产生事件,前者用于辅助设备驱动的验证,后者用于模拟事件进行上层应用的验证。 关于event设备的获取,在 /proc/bus/input/devices 下面: $ adb shell cat /proc/bus/input/devices getevent和sendevent用法:

android 分析 2万+

PLC凸轮开关指令编程应用——控制算法

凸轮开关指令的作用是在PLC程序中根据凸轮开关(Cam Switch)的状态执行不同的操作。凸轮开关通常是机械式的开关装置,它的位置会随着机械运动的变化而改变。凸轮开关的状态可以用来检测机器的位置、角度或其他相关信息,从而触发相应的控制动作。总结起来,凸轮开关指令是PLC编程中常用的一种控制算法,通过检测凸轮开关的状态来触发相应的操作。本文将介绍凸轮开关指令的应用和相应的控制算法,并提供相关的源代码示例。在这个示例中,凸轮开关状态的值代表不同的位置,根据凸轮开关状态的不同,执行相应的动作。

LiJavascript的博客 1034

python笔记-sendevent/getevent 用法

getevent&sendevent 是android系统下的一个工具,可以 模拟 多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的gesture事件。 关于event设备的获取,在 /proc/bus/input/devices 下面: $ adb shell cat /proc/bus/input/devices =========...

qq_19294307的博客 3781

基于OpenClaw的自动化文件管理与文档分类系统设计与实现

本文介绍了一种基于OpenClaw的自动化文件管理与文档分类系统。系统采用三层架构设计,包含数据层、逻辑层和应用层,核心组件涵盖文件扫描、处理、分类、移动等功能。技术选型上使用Python/FastAPI作为后端,结合PostgreSQL/Elasticsearch/MinIO存储方案,并整合scikit-learn/PyTorch等AI技术实现智能分类。系统实现了文件递归扫描、增量扫描、元数据提取等功能,通过文件哈希和修改时间检测变化。该方案能有效提升文件管理效率,实现文档的自动化分类与智能管理。

一键难忘的博客 753

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android getevent参数,android getevent、sendevent、input keyevent 使用说明

设备节点:dev 字符设备节点:shell@android:/dev/input$ llcrw-rw---- root input 13, 64 2013-11-28 17:23 event0crw-rw---- root input 13, 65 2013-11-28 17:23 event1crw-rw---- root input 13, 66 2013-11-28 17:23 event...

weixin_39717704的博客 547

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android中getevent和sendevent的应用

进入shell,以触摸屏为例,执行getevent -p /dev/input/event0,输出如下: add device 1: /dev/input/event0 name: "MSG21XX Touchscreen" events: KEY (0001): 008b 009e 00ac 00d9 ABS (0003): 002f : va

涛声依旧的专栏 2468

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

getevent/sendevent 使用说明

这两天准备写一下input子系统的分析,过程中发现了两个好工具,呵呵,就是本文介绍的主角:getevent用于获取当前系统input设备的一些参数和实时事件的数据;sendevent用于发送input事件,这样在调试的时候遇到有的样机按键坏了或者触摸屏坏了就方便了,工具的源码位于Android SDK的system/core/toolbox下面。 一、getevent 首先看一下命令的

AHC的专栏 1743

Android底层输入事件调试:getevent与sendevent实战指南

在Android系统开发与调试中,理解Linux输入子系统的事件模型是深入解决交互问题的关键。该系统将触摸屏、物理按键等硬件抽象为/dev/input/eventX设备文件,通过type、code、value三元组上报原始事件流。掌握这一原理,使开发者能够穿透应用层框架,直接与内核交互,对于精准诊断触摸失灵、按键异常等复杂问题具有极高的技术价值。在自动化测试、驱动调试等应用场景中,通过ADB工具链中的getevent监听和sendevent注入,可以实现对设备输入行为的深度洞察与精确操控。本文聚焦于这两个核

weixin_34015336的博客 866

安卓getevent和sendevent的使用

安卓内部提供了监测和输入事件的函数,通过adb shell进入安卓手机后,输入上诉两个命令可以进行相应的操作。 1.getevent 在平板上的实际操作结果如下: 图1 可以看到在/dev/input/节点下有5个event设备,所有的外部产生的输入事件都会根据事先的联接将input_event发送到各自的event中,用户空间通过epoll机制监测各个event设备文件的改动情况来读

ganggege嵌入式学习 1337

android getevent、sendevent、input keyevent 使用说明

设备节点: dev 字符设备节点: shell@android:/dev/input$ ll crw-rw---- root input 13, 64 2013-11-28 17:23 event0 crw-rw---- root input 13, 65 2013-11-28 17:23 event1 crw-rw---- root input 13, 66 2013-11-28 17:2...

Fybon的专栏 4509

android测试之getevent/sendevent

http://source.android.com/devices/tech/input/index.html 关于在android平台上捕获事件的资料互联网上已经铺天盖地,但个人觉得可用性都不太大,大部仅  针对特定设备,而对于其他设备引导性不强,故整理处本文,望对初学者有个有力的帮助:  getevent 旨在获取android设备的事件信息,具体参考详细用法(本

qitehuanjue的专栏 503

linux /dev/input/event 与 getEvent

最近在研究key事件从底层到上层的流程.发现新添加Key时候引起了一下bug.在此记录一下. 1.熟悉adb shell getevent 命令 HP-ProBook-640-G2:~/local$ adb shell getevent -p add device 1: /dev/input/event2 name: "mtk-kpd" events: KEY (000...

一只攻城的柿子 3538

android模拟sendevent,Android模拟点击,getevent,sendevent重现

转自http://www.softteco.com/blog/android-low-level-shell-click-on-screen/Guys, nowdays, approach in this article is really senseless.Use: input tap x y(also input text, swipe, keyevent are available)adb...

weixin_28914101的博客 981
上一篇: 如何防止android程序被kill掉
下一篇: Region和Rect的一点比较
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值