首页 > 其他分享 >安卓蓝牙遥控器添加

安卓蓝牙遥控器添加

时间:2024-12-10 14:27:57浏览次数:6  
标签:xml 文件 安卓 蓝牙 kl 遥控器 按键 input

蓝牙遥控器添加

1.前期准备工作:

拿到一个蓝牙遥控器时,键值和对应码值都是未知的,我们需要连接蓝牙遥控器,在串口输入getevent,再按下任意按键:

我们可以看到上图中我们获取到的信息:
1.设备连接到event7

  1. 遥控器名为"Bluetooth remote Keypad"
  2. “0004”为按下遥控器时的值,这个值为16进制,后续我们需要在.kl和.xml中将其转换成十进制

在拿到遥控器信息时,Ctrl+c退出getevent,在串口输入dumpsys input,会打印出来之前配置的信息,然后搜索"Bluetooth remote Keypad"

我们需要关注框起来的几点:
1.Vendor = 0x0525 product=0x0001

2.调用了Generic.kl  Generic.kcm

kl文件也就是keylayout文件,它的作用是将Linux ScanCode转换为Android keycode。ScanCode就是硬件直接扫描到的数字,而这些数字会通过这个kl文件对应到字符串,也就是keycode。

Generic.kl是系统提供的一个特殊的内置常规按键布局文件,当找不到专属的kl或者专属kl报错的时候就会用Generic.kl。

我们拿到Vendor和Product就可以先配置该蓝牙遥控器的专属kl,格式一般是

Vendor_0x0525_Product_0001.kl

  1. 映射.kl文件和.xml文件

.kl和.kcm文件路径:kernel\android\R\device\realtek\common\keylayout

.xml路径:kernel\android\R\device\realtek\common\keylayout\extension

注意:这是2885N的路径,其他Code的路径可以通过dumpsys input查看

其他家不一定需要配置xml文件,2885N 需要

如果之前有人添加过的话可以先拿一份之前的.kl和.kcm文件重命名再添加对应的键值,如果没有的话可以拿同家原厂的其他方案(譬如说9269拿M家方案的kl映射)

.kcm文件多半不需要更改,重命名即可,我们重点更改.kl和.xml文件

编译烧录进去,连接蓝牙遥控器,先输入dumpsys input看看遥控器是否有映射到Vendor_0x0525_Product_0001.kl,如果像下图那样,仍然拿到Generic.kl的话,可能是里面的键值有误,我们通过在线修改,注释掉一些键值排查

如果成功关联到Vendor_0x0525_Product_0001.kl,即可进行下一步

3.获取键值和码值

在完成上述步骤后,我们可能会遇到几种情况:

1.按下一个键,但是功能是另一个按键

2.按下一个键,没有任何响应

其实都是因为没有这个按键或者没有匹配对应的值

我们用两个案例来解决上述两种问题

现象1:

BT_Smart_RC001这个遥控器,按下Back 建,Home键不起作用。

先使用 getevent 按下Back健,拿到event 的值

这种通用的按键,在KeyEvent 是有的,我们要做的,就是修改 kl 的值即可。

使用 dumpsys input 拿到 kl 的位置:

可以看到 kl 在 Android 系统映射的位置,修改里面的值,0x9e 转成十进制为 158,同理拿到HOME的值,修改如下

修改后重启就发现已经起作用了。

现象2:

BT_Smart_RC001 有个按键0x59,我们想把它定义为新的健,所以需要走一遍按键添加流程;

查看Linux映射表hid-input.c

位置在linux/linux-5.4/drivers/hid/hid-input.c ,去到 HID_UP_CONSUMER 这个方法,把0x59 添加进去,并新增 KEY_SOURCE 这个字符串,后续给Android使用的

查看input-event-codes.h,添加刚才的KEY_SOURCE,注意不要重复即可

在 KeyCodes.h 增加刚才的SOURCE,注意不要重复即可

然后再去到 frameworks/native/include/input,修改 InputEventLabels.h,定义刚才的source

最后,再去到修改给Android 上层使用的 KeyEvent.java 即可:

我们的按键值,就从 linux 传到 KeyEvent.java 了。

4.在配置时出现过的其他问题:

问题1:AD键之前有过BUG,导致原来的ui不可用了,调用了新的ui,所以需要在上层RtkKeyInterceptService.java做一下判断,调用新ui

问题2:如果在kl加不进去,可以在

kernel/android/R/device/realtek/common/keylayout/extension/

下添加到对应遥控器的.xml文件

中间的label是在input-event-codes.h拿的,后面的keycode是rtkkeyintercept,我们需要修改对应遥控器的scancode即可

标签:xml,文件,安卓,蓝牙,kl,遥控器,按键,input
From: https://blog.csdn.net/m0_64680064/article/details/144338833

相关文章

  • uni-app使用自定义启动页,安卓端会适配手机底部透明菜单而闪动
    在manifest.json->app-plus->distribute->splashscreen添加"androidTranslucent":true,//注意源码视图中有两块splashscreen不要加错地方了"splashscreen":{"alwaysShowBeforeRender":false,"......
  • 安卓调试 .so 断到 JNI_OnLoad 或者 .init段
    一、设置全局调试状态sugetpropro.debuggable//查看是否开起了全局调试sumagiskresetpropro.debuggable1//设置全局调试状态(临时设置)stop;start  当然,如果app本身有debeggable属性的话,可以不用设置 二、启动se......
  • 无人设备遥控器接收机的作用
    一、接收指令   无人机遥控器通过无线电波发送控制指令,这些指令包含了操作者希望无人机执行的各种动作,如上升、下降、左转、右转、前进、后退等。接收机负责接收这些来自遥控器的无线电信号。二、解码指令   接收机内部有相应的解码电路,能够将接收到的无线电信号......
  • 头戴式蓝牙耳机哪个牌子好学生、头戴式耳机推荐学生党
    在寻找适合学生的头戴式蓝牙耳机时,面对琳琅满目的品牌和型号,选择无疑成为了一项挑战。学生们不仅追求音质的清晰与舒适,还看重性价比与实用性。那么,头戴式蓝牙耳机哪个牌子好学生?本文将为你详细解析市场上的热门品牌,,帮助你找到最适合自己的那一款。无论是学习时的专注聆听,还是休......
  • mitmproxy向安卓手机添加系统证书
    当第一次运行mitmproxy后,会在~/.mitmproxy/mitmproxy-ca-cert.pem生成证书文件。在证书文件目录运行命令opensslx509-informPEM-subject_hash_old-inmitmproxy-ca-cert.pem-noout,一般输出为:c8750f0d运行命令cpmitmproxy-ca-cert.pemc8750f0d.0,重命名然后将证书传入......
  • 最新龙大广告掘金合集助手,支持蓝牙模式防封防检测
    脚本支持:无障碍模式,代理模式,蓝牙模式蓝牙板支持龙大,rain,蜂群蓝牙,附带烧录教程多功能自带养鸡功能,稳定长期更新设备需求:安卓10以上机型,建议用8+内存的机器跑......
  • 【触想智能】工业安卓一体机日常维护注意事项以及其应用领域分析
    工业安卓一体机是一种集成了安卓操作系统的工业控制设备。它广泛应用于各种工业场景,为生产和管理提供了便利。为了保证工业安卓一体机的正常运行和延长其寿命,日常维护工作是十分重要的。下面是一些工业安卓一体机日常维护的注意事项,以及其应用领域的简要介绍。一、......
  • 平价蓝牙耳机哪个牌子好?百元性价比最高的蓝牙耳机推荐
    平价蓝牙耳机哪个牌子好?在寻找一款性价比高的平价蓝牙耳机时,消费者往往会陷入选择的困境,市面上品牌众多,功能各异,如何在有限的预算内找到最适合自己的那一款,确实需要一番考量,今天,我就来探讨一下百元性价比最高的蓝牙耳机推荐,帮助大家在琳琅满目的产品中,找到那个既能满足日常需求......
  • 蓝牙设备驱动开发
    文章目录一、蓝牙协议架构二、蓝牙协议的HCI传输层三、编程框架一、蓝牙协议架构蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。它的传输距离为10cm~10m,如果增加功率或是加上......
  • 安卓投屏控制软件探索--手机投电脑
    前言手里只有一台轻薄本,于是拿手机打游戏,搓玻璃又很难受,于是连上了手柄。连上手柄后感觉屏幕实在是小了,于是想要投屏。事实上我只需要投屏。然而市面上基本上都是调用scrspy的开源工具,投屏和控制都是提供的。测试设备一加Ace3V,Android14,出厂原系统。软件选择QtScrspyhtt......