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 介绍相关推荐

  1. 原创-linux测试篇- linux如何使用dd命令对 硬盘 U盘进行测试读写速度(详细讲解图表)

    最近在开发对linux测试的一个系统项目,研究了不少 我主要负责软件部分,其余他们负责网页部分,还有数据库部分 体会:测试其实很锻炼人的,一般让你熟悉了解了几十种命令,在此期间,也确实学习了很多,了解 ...

  2. Linux测试lacp,linux – 链路聚合(LACP / 802.3ad)最大吞吐量

    我在 Linux下看到一些关于绑定接口的令人困惑的行为,我想把这种情况抛到那里,希望有人可以为我清理它. 我有两台服务器:服务器1(S1)有4x 1Gbit以太网连接;服务器2(S2)具有2x 1Gb ...

  3. stress内存在linux测试结果,Linux压力测试软件Stress安装及使用指南

    一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 二.安装 将stress的安装包上传并解压到linux服务器的 ...

  4. linux测试语句,Linux 条件测试语句

    Linux的控制语句需要用到各种条件,而条件又分为不同的类型. 测试表达式: (1)整数测试 A -gt B:大于 A -ge B:大于等于 A -eq B:等于 A -le  B:小于等于 A -n ...

  5. linux测试x11,Linux GUI自动化测试工具x11 GUITest in Linux x86

    Linux GUI自动化测试工具x11 GUITest:QT GUI自动化测试工具x11 GUITest. 一.X11GUITest安装 在linux下安装perl X11::GUITest的操作步骤 ...

  6. 【安全牛学习笔记】Kali Linux***测试介绍

    Kali Linux***测试介绍  安全问题的根源 优点:分工明确,工作效率高. 缺点:从业人员对系统没有整体的认识,对安全认识较为片面. 最大威胁是人,人都会犯错,安全问题不能100%绝对根除. ...

  7. Linux网络常用工具分类介绍

    Linux网络命令较多,单纯的介绍网络命令的用法也没什么意思.本文将常见的网络命令进行分类,并做出思维导图,对每个分类的命令选择性的介绍其作用.常见选项和用法举例.BTW,不建议记住所有命令,了解一下 ...

  8. 【测试工具】在linux测试环境访问禅道数据库

    上一篇文章我们介绍了如何在linux测试环境安装bug管理工具禅道,现在我们来介绍一下如何访问禅道的数据库,访问数据库有什么用呢?首先,我们可以更改我们安装后的管理系统的名称(改为自己公司名称),此外 ...

  9. 【测试工具】在linux测试环境安装bug管理工具禅道

    在我们测试中,为了方便管理测试流程,提交测试发现的bug,我们需要使用到bug管理工具.有些大公司可能会自己开发一些bug管理工具,但是我们也会用一些开源的bug管理工具,比如Bugzilla,Red ...

最新文章

  1. android+studio+选择+苹方字体,启动欢迎页面时,Android Studio设置全屏Activity
  2. Java线程:线程的同步-同步方法
  3. 【渝粤教育】广东开放大学 劳动人事争议处理法 形成性考核 (51)
  4. 别乱用了,这才是 SpringBoot 停机的正确方式!!!
  5. [SQL SERVER] 优化SQL Server 2000的设置
  6. QT4.7.3在dm6446平台上的移植[转]--make[1]: *** [assistant_cs.qm] Error 2
  7. Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
  8. sublime text常用快捷键整理
  9. python 检查域名是否可以访问_糖尿病人是否都要做喝糖水的检查?结果可以说明胰岛功能水平吗?...
  10. show,hide与fadeIn、fadeOu的区别
  11. win7 64的系统安装。net4.0总是提示安装未成功
  12. python---日志模块log.py
  13. linux怎么实时查看目录下是否有文件生成
  14. android逆向学习路线(适合新手)
  15. 使用mimikatz抓取windows管理员密码
  16. python中re.group()简介
  17. 【微信小程序】-授权获取微信绑定手机号两种方案
  18. 紫书 UVa437巴比伦塔
  19. dfuse SQE 结构化查询引擎发布:颠覆 Web 3.0 开发
  20. DNW使用和常见问题

热门文章

  1. 学python开发必须要会wsgi么_python Web开发你要理解的WSGI uwsgi详解
  2. 袁亚湘院士谈如何做好研究生:要逼着自己去想问题,最大的浪费是聪明人不思考...
  3. 7年工作经验,面试官竟然让我写算法题?
  4. 最早单机的计算机操作系统,川农《计算机操作系统(本科)》19年12月在线作业【满分答案】...
  5. (pytorch-深度学习系列)pytorch构造深度学习模型-学习笔记
  6. OpenCV-Python bindings是如何生成的(2)
  7. 判断子字符串是否出现在主字符串内
  8. txt记录位置 c++,python显示位置
  9. ros(2) 发布者publisher的编程实现
  10. tensorflow2.0学习(一)