ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android .kl文件改写和新建

2021-06-03 18:31:09  阅读:276  来源: 互联网

标签:flat getevent BUTTON kl 改写 key android axis


方法:

1.改写kl文件,可以在源码改写,可以把手机的kl文件直接改写(root后)

2.适配一个新的手柄kl  我们需要知道vendor号和product号。然后放在sdk编译,或者直接放手机。

下面,自己需要知道哪个步骤自行阅读。

1.android sdk

目录:q4/q4rq/frameworks/base/data/keyboards/

ex: Vendor_045e_Product_02dd.kl

Vendor_045e :表示生产商代号是045e (XBox One)

Product_02dd :表示产品型号

可以通过getevent得到Vendor和Product,后面会讲。

进入文件

# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#
# XBox One Controller - Model 1697 - USB
#

# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html

key 304   BUTTON_A
key 305   BUTTON_B
key 307   BUTTON_X
key 308   BUTTON_Y

key 310   BUTTON_L1
key 311   BUTTON_R1

# Triggers.
axis 0x02 LTRIGGER
axis 0x05 RTRIGGER

# Left and right stick.
# The reported value for flat is 128 out of a range from -32767 to 32768, which is absurd.
# This confuses applications that rely on the flat value because the joystick actually
# settles in a flat range of +/- 4096 or so.
axis 0x00 X flat 4096
axis 0x01 Y flat 4096
axis 0x03 Z flat 4096
axis 0x04 RZ flat 4096

key 317   BUTTON_THUMBL
key 318   BUTTON_THUMBR

# Hat.
axis 0x10 HAT_X
axis 0x11 HAT_Y


# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
# Two overlapping rectangles
key 314   BUTTON_SELECT
# Hamburger - 3 parallel lines
key 315   BUTTON_START

# Xbox key
key 316   BUTTON_MODE

按键配置:

key 304   BUTTON_A 

key :指按键事件

304 :为getevent得到的10进制的值 后面会讲解怎么得到

BUTTON_A :对应手柄的A键

 

摇杆(or模拟量)配置:

axis 0x00 X         ps:flat 4096 设置平均值,可以不要

axis :模拟量事件

0x00 :getevent得到的16进制的值 后面会讲解怎么得到

X :对应手柄左摇杆的X轴

 

2.通过getevent知道vid,pid和事件值

adb shell 进入终端

2.1 得知vendor和product

先用getevent得到这个手柄是属于哪个事件的

动一下摇杆或按键

得知event为7

然后用 getevent -i 查看vendor和product

找到event7,下面就是vendor id,和product id了。

因此,我们就可以新建一个没有的kl适配自己的手柄的文件。 Vendor_xxxx_Product_xxxx.kl

2.2 查看按键值

还是用getevent  然后动一下自己需要值对应的手柄按键或摇杆

按键:

我们按下A键并抬起  (A只是个例子)

按一下会有四个信息,前两个对应着按下,后两个对应抬起

0001指按键  0131 为我们的按键值 00000001为按下

第三行有个 00000000 指抬起

摇杆:

摇动x轴

默认的,有0000为x轴 当然,看自己出现的值,不一定

 

摇动y轴:

默认的,有0001为y轴 当然,看自己出现的值,不一定

ps:如驱动不正常,那就没法得到了。

 

3.配置.kl

现在我们得知 A键为131,x轴为0000,y轴为0001

记住这些值都是16进制的

于是,我们写:

key 305 BUTTON_A
axis 0x00 X
axis 0x01 Y

305是由131(16进制)转成10进制

下面 0x00是16进制格式照填。

 

4.安卓机直接推送

adb进入终端

路径:/system/usr/keylayout/

当然,我们会发现和源码里文件是一样的,其实就是复制了过来而已。

当我们新建的kl文件或者改写的kl文件,我们可以直接放进安卓的这个路径,再重启就会生效了。

如果有权限问题就使用命令:

1.adb root

2.adb remount

当然,能不能root看你手机了。

ps:可以用adb推进去,或者android studio

 

当然,手柄也有灯这个可以配置的选项:

led 0x00 CONTROLLER_1 原理是一样的

 

最后,希望可以帮到大家,如果有用的就收藏一下,白嫖的就点个赞。

标签:flat,getevent,BUTTON,kl,改写,key,android,axis
来源: https://blog.csdn.net/weixin_41508767/article/details/117526507

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有