linux测试手柄,Linux Joystick 介绍
Linux手柄使用
Linux手柄驱动, 一般为joydev, 可使用modprobe -a joydev加载驱动模块。
手柄连接后的原始设备文件为/dev/hidraw*, 这个和具体手柄厂商的驱动相关。需要针对特定手柄进行操作优化可能需要使用这个设备。
通常情况下joydev手柄驱动提供一个通用的手柄接口供使用。joydev驱动创建的设备文件一般为/dev/input/js*。joydev驱动提供两种不同操作: 摇杆axes和按键button。
一般使用joydev提供的通用驱动。使用joydev一些手柄会将十字方向键当作摇杆类型,而不是button类型,比如我的手柄北通蝙蝠D2(BTP-BD2F),因此在一些游戏模拟器软件中不能识别十字按键。
实用工具
在Linux中提供几个实用工具:
jscal: 按键校准和按键重映射工具
jscal-restore
jscal-store
jstest: 读取按键状态,测试按键是否正确
jscal 按键映射示例:
An example output of -q looks like this ./jscal -q /dev/input/js0:
-u
n_of_buttons,btnmap1,btnmap2,
...> --set-mappings Sets axis and button mappings to the
specified valuesjscal -u
10,0,1,2,5,6,16,17,40,41,42,13,288,289,290,291,292,293,294,295,296,297,298,299,300
/dev/input/js0
The joystick has 10 axes and 13 buttons. If now one is to switch axes 2jscal -u
10,0,1,5,2,6,16,17,40,41,42,13,288,289,290,291,292,293,294,295,296,297,298,299,300
/dev/input/js0
changing 2,5 to 5,2 on the line.
Remapping buttons is done the same way.
jstest示例:
jstest /dev/input/js0
手柄编程#include
#include
#include
typedef unsigned int __u32;
typedef short __s16;
typedef unsigned char __u8;
struct js_event {
__u32 time; /* event timestamp in milliseconds */
__s16 value; /* value */
__u8 type; /* event type */
__u8 number; /* axis/button number */
};
#define JS_EVENT_BUTTON 0x01 /* button pressed/released */
#define JS_EVENT_AXIS 0x02 /* joystick moved */
#define JS_EVENT_INIT 0x80 /* initial state of device */
int main() {
int fd = open("/dev/input/js0", O_RDONLY);
struct js_event e;
while(1) {
read(fd, &e, sizeof(e));
int type = JS_EVENT_BUTTON | JS_EVENT_INIT;
switch(e.type) {
case JS_EVENT_AXIS:
printf("axis number: %d, value: %d, time: %d\n", e.number, e.value, e.time);
break;
case JS_EVENT_BUTTON:
printf("btn: number: %d, value: %d, time: %d\n", e.number, e.value, e.time);
break;
}
}
close(fd);
return 0;
}
参考:
linux测试手柄,Linux Joystick 介绍相关推荐
- 原创-linux测试篇- linux如何使用dd命令对 硬盘 U盘进行测试读写速度(详细讲解图表)
最近在开发对linux测试的一个系统项目,研究了不少 我主要负责软件部分,其余他们负责网页部分,还有数据库部分 体会:测试其实很锻炼人的,一般让你熟悉了解了几十种命令,在此期间,也确实学习了很多,了解 ...
- Linux测试lacp,linux – 链路聚合(LACP / 802.3ad)最大吞吐量
我在 Linux下看到一些关于绑定接口的令人困惑的行为,我想把这种情况抛到那里,希望有人可以为我清理它. 我有两台服务器:服务器1(S1)有4x 1Gbit以太网连接;服务器2(S2)具有2x 1Gb ...
- stress内存在linux测试结果,Linux压力测试软件Stress安装及使用指南
一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 二.安装 将stress的安装包上传并解压到linux服务器的 ...
- linux测试语句,Linux 条件测试语句
Linux的控制语句需要用到各种条件,而条件又分为不同的类型. 测试表达式: (1)整数测试 A -gt B:大于 A -ge B:大于等于 A -eq B:等于 A -le B:小于等于 A -n ...
- linux测试x11,Linux GUI自动化测试工具x11 GUITest in Linux x86
Linux GUI自动化测试工具x11 GUITest:QT GUI自动化测试工具x11 GUITest. 一.X11GUITest安装 在linux下安装perl X11::GUITest的操作步骤 ...
- 【安全牛学习笔记】Kali Linux***测试介绍
Kali Linux***测试介绍 安全问题的根源 优点:分工明确,工作效率高. 缺点:从业人员对系统没有整体的认识,对安全认识较为片面. 最大威胁是人,人都会犯错,安全问题不能100%绝对根除. ...
- Linux网络常用工具分类介绍
Linux网络命令较多,单纯的介绍网络命令的用法也没什么意思.本文将常见的网络命令进行分类,并做出思维导图,对每个分类的命令选择性的介绍其作用.常见选项和用法举例.BTW,不建议记住所有命令,了解一下 ...
- 【测试工具】在linux测试环境访问禅道数据库
上一篇文章我们介绍了如何在linux测试环境安装bug管理工具禅道,现在我们来介绍一下如何访问禅道的数据库,访问数据库有什么用呢?首先,我们可以更改我们安装后的管理系统的名称(改为自己公司名称),此外 ...
- 【测试工具】在linux测试环境安装bug管理工具禅道
在我们测试中,为了方便管理测试流程,提交测试发现的bug,我们需要使用到bug管理工具.有些大公司可能会自己开发一些bug管理工具,但是我们也会用一些开源的bug管理工具,比如Bugzilla,Red ...
最新文章
- android+studio+选择+苹方字体,启动欢迎页面时,Android Studio设置全屏Activity
- Java线程:线程的同步-同步方法
- 【渝粤教育】广东开放大学 劳动人事争议处理法 形成性考核 (51)
- 别乱用了,这才是 SpringBoot 停机的正确方式!!!
- [SQL SERVER] 优化SQL Server 2000的设置
- QT4.7.3在dm6446平台上的移植[转]--make[1]: *** [assistant_cs.qm] Error 2
- Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
- sublime text常用快捷键整理
- python 检查域名是否可以访问_糖尿病人是否都要做喝糖水的检查?结果可以说明胰岛功能水平吗?...
- show,hide与fadeIn、fadeOu的区别
- win7 64的系统安装。net4.0总是提示安装未成功
- python---日志模块log.py
- linux怎么实时查看目录下是否有文件生成
- android逆向学习路线(适合新手)
- 使用mimikatz抓取windows管理员密码
- python中re.group()简介
- 【微信小程序】-授权获取微信绑定手机号两种方案
- 紫书 UVa437巴比伦塔
- dfuse SQE 结构化查询引擎发布:颠覆 Web 3.0 开发
- DNW使用和常见问题
热门文章
- 学python开发必须要会wsgi么_python Web开发你要理解的WSGI uwsgi详解
- 袁亚湘院士谈如何做好研究生:要逼着自己去想问题,最大的浪费是聪明人不思考...
- 7年工作经验,面试官竟然让我写算法题?
- 最早单机的计算机操作系统,川农《计算机操作系统(本科)》19年12月在线作业【满分答案】...
- (pytorch-深度学习系列)pytorch构造深度学习模型-学习笔记
- OpenCV-Python bindings是如何生成的(2)
- 判断子字符串是否出现在主字符串内
- txt记录位置 c++,python显示位置
- ros(2) 发布者publisher的编程实现
- tensorflow2.0学习(一)