📄 ps2_test.c
字号:
#include <stdio.h>
#include <stdlib.h>
/*open()*/
#include <sys/types.h> /*提供pid_t,内核用dev_t类型(<linux/types.h>)来保存设备编号,
dev_t是一个32位的数,12位表示主设备号,20为表示次设备号*/
#include <sys/stat.h>
#include <fcntl.h>
/******/
/*close()*/
#include <unistd.h>
#include <sys/poll.h>
#include <linux/input.h>
#include <fcntl.h>
#include <linux/input.h>
#define PS2_MOUSE "/dev/mice"
int main(int argc, char *argv[])
{
int mouseFd,write_byte;
char cmd_buf[]={0xf4};
unsigned char data[4] ={0};
if ((mouseFd = open(PS2_MOUSE, O_RDWR)) < 0) {
printf("Faile t to open %s\n",PS2_MOUSE);
return -1;
}
printf("%s fd = %d\n",PS2_MOUSE,mouseFd);
if ((write_byte=write(mouseFd,cmd_buf,1))<0)
{printf("Faile t to write %s\n",PS2_MOUSE);}
printf("write %2c to %s sucess\n",cmd_buf[],PS2_MOUSE);
read(mouseFd, data, 4);
printf("Then the mouse return %2x %2x %2x %2x \n",data[0],\
data[1], data[2],data[3]);
if ((write_byte=write(mouseFd,cmd_buf,1))<0)
{printf("Faile t to write %s\n",PS2_MOUSE);}
printf("write %2c to %s sucess\n",cmd_buf[],PS2_MOUSE);
read(mouseFd, data, 4);
printf("Then the mouse return %2x %2x %2x %2x \n",data[0],\
data[1], data[2],data[3]);
while(1)
{
// if(poll( &mypoll, 10, 0) > 0)
// printf("mypoll is ok!\n");
// {
/*
data的数据格式:
data0:00xx 1xxx
----低三位是按键值---左中右分别为01 02 04, 第4/5位分别代表x、y移动方向,右上方x/y>0,左下方xy<0
data1:取值范围-127~127,代表x轴移动偏移量
data2:取值范围-127~127,代表y轴移动偏移量
data3:xxxx XXXX 取值范围-15~15,代表z轴移动偏移量
*/
usleep(5000);
read(mouseFd, data, 4);
/* //MOUSEDEV_EMUL_PS2方式每次采样数据为3个字节,多读不会出错,只返回成功读取的数据数
*/
printf("mouse: Byte =%02x %02x %02x %02x\n",data[0],data[1],data[2],data[3]);
// }
}
close(mouseFd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -