android键盘映射之三

QtScrcpy原神键盘映射脚本 阅读详情
在系统启动后,android 会通过

    static const char *device_path = "/dev/input";

    bool EventHub::penPlatformInput(void)

    res = scan_dir(device_path);

通过下面的函数打开设备。
int EventHub::pen_device(const char *deviceName)
{
     ...
     fd = open(deviceName, O_RDWR);
     ...  
     mFDs[mFDCount].fd = fd;
     mFDs[mFDCount].events = POLLIN;
     ...
     ioctl(mFDs[mFDCount].fd, EVIOCGNAME(sizeof(devname)-1), devname);
     ...
    const char* root = getenv("ANDROID_ROOT");
     snprintf(keylayoutFilename, sizeof(keylayoutFilename),
                 "%s/usr/keylayout/%s.kl", root, tmpfn);
     ...
     device->layoutMap->load(keylayoutFilename);
     ...
}

打开设备的时候,如果 device->classes&CLASS_KEYBOARD 不等于 0 表明是键盘。

常用输入设备的定义有:

enum {
         CLASS_KEYBOARD    = 0x00000001, //键盘

         CLASS_ALPHAKEY    = 0x00000002, //

         CLASS_TOUCHSCREEN = 0x00000004, //触摸屏

         CLASS_TRACKBALL     = 0x00000008 //轨迹球
};

打开键盘设备的时候通过上面的 ioctl 获得设备名称,命令字 EVIOCGNAME 的定义在文件:

kernel/include/linux/input.h 中。

#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */

在内核键盘驱动文件 drivers/input/keyboard/pxa27x_keypad.c 中定义了设备名称:pxa27x-keypad

static struct platform_driver pxa27x_keypad_driver = {

.probe        = pxa27x_keypad_probe,

.remove        = __devexit_p(pxa27x_keypad_remove),

.suspend = pxa27x_keypad_suspend,

.resume        = pxa27x_keypad_resume,

.driver        = {

       .name = "pxa27x-keypad",

       .owner = THIS_MODULE,

},

};

ANDROID_ROOT 为环境变量,在android的命令模式下通过 printenv 可以知道它为: system

所以 keylayoutFilename 为:/system/usr/keylayout/pxa27x-keypad.kl

pxa27x-keypad.kl 定义了按键映射,具体内容如下:

# NUMERIC KEYS 3x4
key 2   1
key 3   2
key 4   3
key 5   4
key 6   5
key 7   6
key 8   7
key 9   8
key 10 9
key 11 0
key 83 POUND
key 55 STAR

# FUNCTIONAL KEYS
key 231 MENU         WAKE_DROPPED
key 192 BACK            WAKE_DROPPED
key 193 HOME        WAKE
key 107 DEL         WAKE
key 102 CALL         WAKE_DROPPED
key 158 ENDCALL      WAKE_DROPPED
key 28    DPAD_CENTER      WAKE
key 115 VOLUME_UP
key 114 VOLUME_DOWN

如果没有定义键盘映射文件,那么默认使用系统的 /system/usr/keylayout/qwerty.kl 可以修改 /system/usr/keylayout/qwerty.kl 文件改变Android公司的按键映射。

device->layoutMap->load(keylayoutFilename) 调用的是文件 KeyLayoutMap.cpp (frameworks\base\libs\ui)中的函数:

    status_t KeyLayoutMap::load(const char* filename)通过解析 pxa27x-keypad.kl
把按键的映射关系保存在 :KeyedVector<int32_t,Key> m_keys; 中。

当获得按键事件以后调用:
status_t KeyLayoutMap::map(int32_t scancode, int32_t *keycode, uint32_t *flags)

由映射关系 KeyedVector<int32_t,Key> m_keys 把扫描码转换成andorid上层可以识别的按键。


Android Studio与IntelliJ IDEA的高效键盘映射指南 本文还有配套的精品资源,点击获取 简介:在Android Studio中优化键盘映射可以大幅提升开发效率,减少对鼠标的依赖。本文详细指导如何自定义键盘映射,并介绍了适用于其他基于IntelliJ IDEA的开发环境的设置方法。自定义快捷键,如代码补全、格式化代码、搜索文本、跳转到定义等常用功能,以及如何通过安装插件进一步增强IDE功能。 1. Android St... 阅读详情

相关推荐

Arduino DHT11 ESP8266 在OneNet云平台上读取 温湿度

#include "ESP8266.h" #include "dht11.h" #include "SoftwareSerial.h" #define SSID "540ND" #define PASSWORD "" #define HOST_NAME "api.heclouds.com" #define DEVICE_ID "" #define HOST_PORT (80) String APIKey = " "; #define INTER

weixin_45852947的博客 2430

QtScrcpy自定义按键映射功能深入解析

QtScrcpy自定义按键映射功能深入解析 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: h...

gitblog_01427的博客 1988

Clarity 3D Layout

Clarity 3D Layout Clarity 3D layout是3D 全波电磁场模型提取工具,它可以导入已经设计好的PCB文件也可以直接在Clarity 3D layout创建版图进行3D 全波电磁场模型提取。

m0_53280471的博客 5481

qtscrcpy自定义按键_按键映射说明.md

# 自定义按键映射说明按键映射文件为json格式,新增自己的按键映射文件需要放在keymap目录中才可以被QtScrcpy识别。按键映射文件的具体编写格式下面会介绍,也可以参考自带的按键映射文件。## 按键映射脚本格式说明### 通用说明- 按键映射中的坐标位置都是用相对位置表示的,屏幕的宽高都用1表示,例如屏幕的像素为1920x1080,那么坐标(0.5,0.5)则表示的是以屏幕左上角为原点,像...

weixin_39743511的博客 2821

Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】

特别鸣谢:@szFoxtech 同学热心提供了通过键盘操作平移和缩放K线图的代码!!在我的另一篇文章《七行代码利用tushare和mplfinance生成K线图》中,我介绍了两个非常好用的python库,结合起来可以非常方便容易地生成股票的K线图,对于使用python进行量化投资研究的朋友可谓是必备良方。如下图所示,仅仅几行代码,就能生成下面这张K线图:不过,仅仅使用七行代码生成的K线图,虽然看上去也像那么回事了,但是对于真正需要使用K线图作为研究工具或者可视化工具的朋友们来说,是远远不够的。在我看来,至少

m0_67390379的博客 9833

如何使用Dify 搭建一个用自然语言查询数据库的 Agent?

这样就会发布完毕。

AI Agent 首席体验官 1698

QtScrcpy按键映射:从触屏到键盘的操控革命

你是否曾想过在电脑上流畅操控手机游戏,却受限于触屏操作的笨拙体验?QtScrcpy的按键映射功能正是为解决这一痛点而生,它将手机触屏操作无缝转换为键盘鼠标的精准控制,为移动游戏带来了PC级别的操作体验。让我们一同探索这项技术如何重塑你的游戏操控方式。 ## 理解映射背后的设计哲学 QtScrcpy按键映射的核心在于将二维屏幕坐标与键盘按键建立精确对应关系。与简单的屏幕录制不同,QtScrcpy

gitblog_00878的博客 332

基于分位数回归的静态CoVaR计算 案例与代码

原文链接:https://bbs.pinggu.org/thread-7925441-1-1.html 一、静态CoVaR模型介绍 二、资料简介 实现对相关期刊论文进行论文重现,解决实证分析中的技术操作问题。里面包含了每一步详细的步骤,可以方便的利用这个手册解决大部分利用分位数回归计算静态CoVaR的论文的模型实现问题。即从数据下载到模型实现一整条操作步骤。 关键词:【分位数回归】【Co...

ChenQihome9的博客 7504

QtScrcpy的按键映射与游戏控制

QtScrcpy的按键映射与游戏控制 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: http...

gitblog_00104的博客 1809

从开发到生产:Power APP 的应用和编程实践

一旦您在开发环境中完成了应用程序的开发、调试和测试,就可以将其部署到生产环境中供用户使用。在 Power APP Studio 中,您可以选择将应用程序发布到 Power APP 网关或将其嵌入到其他应用程序中。使用 Power APP Studio 内置的调试工具,您可以逐步执行应用程序并查看变量的值,以确保逻辑的正确性。在上述代码中,我们通过将两个文本输入框(TextInput1 和 TextInput2)中的文本转换为数字,并将它们相加,将结果存储在 Result 变量中。

2301_79326510的博客 1504

SAP Gateway Foundation OData V4 服务管理深度解析,从 Service Repository 到 Service Group 的完整运行逻辑

本文解析了SAP S/4HANA中OData V4 API的技术架构,重点阐述Service Repository、Service与Service Group的三层管理体系。以SalesOrder和PurchaseOrder API为例,说明不同服务可能属于特定repository(如srvd_a2x)而非默认DEFAULT库。Service Group作为业务模型组合单元,支持跨服务引用和统一配置,其发布状态直接影响服务可用性。文中对比了后台管理事务/IWBEP/V4_ADMIN与网关端/IWFND/V4

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

安卓蓝牙键盘按键映射_android键盘映射

'6' 0x00A5 '6' 'F'G 'g' 'G' '-' '_' '-' 'G'H 'h' 'H' '[' '{' '[' 'H'I 'i' 'I' '$' 0x0302 '$' 'I'J ...

weixin_39747296的博客 1750

PyTorch 最新安装教程(2021-07-27)

PyTorch 最新安装教程(2021-07-27)前言1. 安装 Anaconda2. 检查显卡,更新驱动3. 创建PyTorch环境4. 配置清华TUNA镜像源5. 安装 PyTorch6. 测试 前言 万事开头难! 这句话又一次被我验证。 记得前不久刚陷入Tensorflow2.0的安装困境,这一次又被PyTorch 搞哭辽。 孩子太难了o(╥﹏╥)o,不过还好最终成功安装,感谢全网资源,感谢大佬们的博客!被我一次一次试了出来。 1. 安装 Anaconda Anaconda 是一个用于科学计算的 P

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 23万+

android 鼠标映射 专业版,安卓otg鼠标映射软件 安卓otg键盘映射

有没有什么软件可以映射鼠标键盘的.用OTG手机打开蓝牙,搜索目标,连接Bluetooth Keyoad,手机会出现配对信心。直接在键盘上输入4位数字,并回车就可以连接上。通过小米手机遥控电脑的鼠标、键盘。让您的小米变成无线鼠标、无线键盘以及无线重力感应手柄!模拟触控鼠标、键盘、重力感应手柄、多媒体遥控器、PPT遥控。还可以控制电脑锁屏、关机等操作。躺床上看电影时,不用离开温暖的被窝。体验无线重力感...

weixin_39696665的博客 7664

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android键盘映射

转:http://blog.chinaunix.net/u3/90973/showart_2207472.htmlAndroid底层和中间层共同学习系列之android键盘映射 介绍 功能键布局映射        键映射的选择        文件格式        键布局映射文件示例键字符映射        键字符映射的选择        文件格式 

eustoma的专栏 1922

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

更改Android 默认键盘映射值

更改Android InputManagerService默认键盘映射值 在通常情况下我们使用android手机或者平板连接外接键盘,默认的外接键盘映射值都是美式键盘,或者说是标准键盘,然而全世界并非只是用这一种键盘,在意大利,日本等国还拥有自己独特的键盘,因此就需要设置他们自己的键盘映射值 frameworks/base/packages/InputDevices/res/raw/keyboa...

Easyhood的博客 2222

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Qt键盘-Android键盘映射

Qt键盘-Android键盘映射

m0_60259116的博客 1024

android 键盘映射、定义

键布局映射文件通常放在/system/usr/keylayout和/data/usr/keylayout

jimbo的专栏 2586

安卓蓝牙键盘按键映射_安卓手游键盘映射工具(凤凰系统键盘映射) v2.0 最新版...

安卓手游键盘映射工具(凤凰系统键盘映射)凤凰os 键盘映射是凤凰系统为安卓平台手游提供的一款键盘映射功能,新版更新了不少的使用操作,优化了游戏带操作体验,让你把安卓手游玩出电脑版的感觉。凤凰os 键盘映射介绍凤凰系统自升级至v2.0版本之后备受用户好评,其中键盘映射v1.5在游戏操作体验上的优化为整个系统增色不少。日前,键盘映射再次迎来升级,最新的v2.0版本更是打造了史上最强安卓FPS游戏操作体...

weixin_39705931的博客 5443

Android键盘映射之三

在系统启动后,android 会通过      static const char *device_path = "/dev/input";     bool EventHub::penPlatformInput(void)     res = scan_dir(device_path);  通过下面的函数打开设备。  int EventHub::pen_device(c

zxy12175968的专栏 665

Android 键盘映射

如何选择一个键布局映射文件键布局映射文件通常放在/system/usr/keylayout和/data/usr/keylayout 对于每一个键盘设备xxx,设置系统属性android.keylayout.xxx,如果没有为自己的硬件设备创建一个特定的设备,Android将去读/system/usr/keylayout/qwerty.kl这个配置文件。 文件格式:键映射文件通常以UTF8...

weixin_30485379的博客 131

Android底层和中间层共同学习系列之android键盘映射

                                                                                          Android底层和中间层共同学习系列之android键盘映射                            (转载请说明来自国内最大Android社区androidin底层驱动论坛分支,国内最大li

4434

告别虚拟键盘烦恼:Docker-Android物理键盘完美映射指南

你还在为Android模拟器虚拟键盘打字效率低下而困扰吗?开发测试时频繁切换窗口输入验证码、填写表单的操作是否让你抓狂?本文将带你通过Docker-Android的键盘映射功能,将物理键盘变成模拟器的"输入利器",实现如同操作实体手机般的流畅体验。 读完本文你将掌握: - 物理键盘与模拟器按键的精准映射配置 - 三星Galaxy系列设备的键盘布局自定义方法 - 横竖屏切换时的键盘适配技巧 - 通...

gitblog_00867的博客 546
上一篇: 浅谈linux内核中的idr机制
下一篇: android键盘映射之二
batoom
博客等级 码龄20年 32粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值