- 浏览: 30884 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
JavaJ2me:
请问还知道别的方法,开启移动网络吗??
Android APN设置 -
Ancool:
pdf没研究,有空我看看,代码肯定是需要自己写的,除非别人已经 ...
Android打开文件 -
Ancool:
littlenewus 写道帅哥 如果打开一个html或者p ...
Android打开文件 -
littlenewus:
帅哥 如果打开一个html或者pdf type应该写什么?
Android打开文件
在做SDL至Android的移植时,键盘事件是能正常捕获到,看了SLD的源码,发现用的device是 /dev/tty0,但是鼠标叫是不能成功捕获,总是得到 0,运行命令查看devices时,显示如下:
# cat /proc/bus/input/devices
cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="qwerty"
P: Phys=
S: Sysfs=/class/input/input0
U: Uniq=
H: Handlers=kbd mouse0 event0
B: EV=2f
B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff f
fffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
B: REL=3
B: ABS=7
B: SW=1
进入 /dev/input 目录,发现在3个device文件:mice,mouse0,event0,分别 cat这3个文件,发现只有 event0 有反应,如下图:
而且不管是点击鼠标还是按键,都有反应,但显示的是一堆乱码,而且点击鼠标出来的东西要多一点,难道这就是传说是的 touchscreen ?!
为了分析 event0 的返回值,写了一段代码 testmice.c,如下:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <linux/input.h>
static int event0_fd = -1;
struct input_event ev0[64];
//for handling event0, mouse/key/ts
static int handle_event0() {
int button = 0, realx = 0, realy = 0, i, rd;
rd = read(event0_fd, ev0, sizeof(struct input_event) * 64);
if ( rd < sizeof(struct input_event) ) return 0;
for (i = 0; i < rd / sizeof(struct input_event); i++) {
printf("", ev0[i].type, ev0[i].code, ev0[i].value);
if (ev0[i].type == 3 && ev0[i].code == 0)
realx = ev0[i].value;
else if (ev0[i].type == 3 && ev0[i].code == 1)
realy = ev0[i].value;
else if (ev0[i].type == 1) {
if (ev0[i].code == 158) {
//if key esc then exit
return 0;
}
} else if (ev0[i].type == 0 && ev0[i].code == 0 && ev0[i].value == 0) {
realx = 0, realy = 0;
}
printf("event(%d): type: %d; code: %3d; value: %3d; realx: %3d; realy: %3d\n", i,
ev0[i].type, ev0[i].code, ev0[i].value, realx, realy);
}
return 1;
}
int main(void) {
int done = 1;
printf("sizeof(struct input_event) = %d\n", sizeof(struct input_event));
event0_fd = open("/dev/input/event0", O_RDWR);
if ( event0_fd < 0 )
return -1;
while ( done ) {
printf("begin handel_event0...\n");
done = handle_event0();
printf("end handel_event0...\n");
}
if ( event0_fd > 0 ) {
close(event0_fd);
event0_fd = -1;
}
return 0;
}
用交叉编译器编译好后,push至 emulator后执行后,切换到android 模拟器,在模拟器上点几下mouse,程序就会打出你点击的信息,效果如下,果然能正确得到点击的 mouse pos,如下图:
分析上面的返回值,发现当按下 mouse left button 时,会得到4个事件,2个 type = 3 的事件返回了 pos x, pos y 的值,即mouse click pos, 另外1个 type = 1 的事件是按键事件(keydown),value就是按下的键的key,为0的应该就是 key的release事件,当松开 mouse时,也会得到两个 type = 1, 0 的事件,没有仔细去看它们的返回值,反正已经正确得到了 mosue的事件,下一步就是改SDL的事件驱动源码了...
发表评论
-
Android 中 Proguard 和 JNI 的相关问题
2012-03-27 12:26 915在Android项目中用到JNI,当用了proguard后,发 ... -
Android中隐藏标题栏和状态栏
2011-03-21 14:57 1418一、隐藏标题栏 //隐藏标题栏 this.re ... -
Android APN设置
2011-01-23 21:41 1460由于Android对于APN的网络API没有公开,不过我们可以 ... -
Android原生(Native)C开发之五:zlib移植笔记
2011-01-23 20:53 1048zlib(http://www.zlib.net/)是一 ... -
Android原生(Native)C开发之四:SDL移植笔记
2011-01-23 20:48 1694SDL(Simple DirectMedia Layer ... -
Android原生(Native)C开发之二:framebuffer篇
2011-01-23 20:16 990虽然现在能通过交叉环境编译程序,并push到Android ... -
Android原生(Native)C开发之一:环境搭建篇
2011-01-23 20:12 1073Android是基于Linux的操作系统,处理器是ARM的,所 ... -
Android隐藏程序及调用
2011-01-23 14:52 1402新建一个activity,编辑AndroidMani ... -
Ubuntu下使用Android ADB
2011-01-23 14:37 1589android本身就有linux下的SDK包。 所以就方 ... -
Android各种调用
2011-01-23 13:33 8931,web 浏览器 Jav ... -
Android Intent and Intent-filter SDK file
2011-01-23 13:03 1270Android Intent and Intent-filte ... -
使用Android系统隐藏api读取*.apk程序安装包信息
2011-01-23 11:42 1139前提:我们需要得到 Android 系统源码编 ... -
Android获取手机型号和系统版本号
2011-01-18 17:19 1244手机型号和版本号获取方法: public void onC ... -
Android打开文件
2011-01-14 13:26 2688/* 在手机上打开文件的method */ p ... -
Android数据存储之二SharedPreferences
2011-01-14 11:19 915在此之前的学习内容是数据存储之一文件存储 ... -
Android数据存储之三SQLite嵌入式数据库(2)
2011-01-14 10:53 11445. 编写测试类 ... -
Android数据存储之三SQLite嵌入式数据库(1)
2011-01-14 10:51 905一、 SQLite 简介 ... -
Android小东东收集
2011-01-14 10:06 957//设置ListView中item第一个的上面和下面两条分隔线 ...
相关推荐
捕鼠记-2页.pdf
MouseTrap permits people with movements impairments to access the computer. It uses image processing to translate the user's head movements into mouse events (movements, clicks) which allow users to ...
物联网项目“智能鼠标陷阱” 昂首阔步的文档: :
捕鼠器::路轨 是一个JavaScript库,用于处理由编写的Web应用程序中的键盘快捷键。 mousetrap-rails gem将Mousetrap javascript库与Rails资产管道集成在一起。安装将捕鼠器宝石添加到应用程序将此行添加到您的应用...
一款触屏小游戏,非常好玩,用老鼠夹围住老鼠吧!
捕鼠器 使用 WDF 框架构建的 Windows 内核模式类筛选器驱动程序 (KMDF)。 为每个鼠标反转滚轮 随附驱动程序安装程序应用程序 MouseTrapInstaller.exe 必须与打包文件在同一路径 以管理员身份安装...
行业分类-电子-关于变电站捕鼠装置的说明分析.rar
捕鼠器
捕鼠易案例分析.docx
键盘快捷键 兼容性 Ember.js v2.18或更高版本 Ember CLI v2.13或更高版本 安装 在您的ember-cli项目中: ember install ember-keyboard-shortcuts 用法 我们提供了两个用于设置和删除键盘快捷键的功能。...
是一个图形用户界面,用于显示Excel电子表格中列出的鼠标菌落数据。 它被设计用于最多可容纳100-200只动物的小型小鼠群落; 对于较大的菌落,显示和速度都不能令人满意。 特征: 读取Excel文件的可选工作表 每只动物...
高效殴打捕鼠的电路图
行业分类-电子-一种电控捕鼠器
行业分类-电子-一种电击捕鼠器
一种新型简易捕鼠器.doc
捕鼠器暂停 捕鼠器插件可暂停和取消暂停所有或特定组合 安装 npm install mousetrap-pause --save 用法 使用browserify将捕鼠器与暂停功能配合使用: var mousetrap = require ( 'mousetrap-pause' ) ( require ...
这是整理发布的一款自动捕鼠器制作法,自动捕鼠器制作法能给你需要了解的知识与资料,欢迎大家...该文档为自动捕鼠器制作法,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
react-hotkeys React组件可侦听keydown和keyup键盘事件,定义和调度键盘快捷键。 使用hotkeys.js的fork进行特殊字符的keydown检测。 您为它提供了shortcu react-hotkeys React组件的键盘映射,以侦听keydown和keyup...
把捕鼠笼卖到全国去.pdf
捕鼠器 捕鼠器是一个用于处理Java键盘快捷键的简单库。 它根据Apache 2.0许可获得许可。 压缩后约2kb ,压缩后约4.5kb ,没有外部依赖性,并且已经在以下浏览器中进行了测试: Internet Explorer 6+ 苹果浏览器...