📄 fft9200_5.18.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "common.h"
#ifdef _FFT9200_IAL
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/poll.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/kd.h>
#define TS_DEVICE "/dev/kb9200"
#include "ial.h"
#include "fft9200.h"
/* for data reading from /dev/ts */
typedef struct {
short b;
short x;
short y;
short pad;
} POS;
static int ts = -1;
static int mousex = 0;
static int mousey = 0;
static POS pos;
#undef _DEBUG
/************************ Low Level Input Operations **********************/
/*
* Mouse operations -- Event
*/
static int mouse_update(void)
{
return 1;
}
static void mouse_getxy(int *x, int* y)
{
#ifdef _DEBUG
printf ("mousex = %d, mousey = %d\n", mousex, mousey);
#endif
*x = mousex;
*y = mousey;
}
static int mouse_getbutton(void)
{
return pos.b;
}
#ifdef _LITE_VERSION
static int wait_event (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except,
struct timeval *timeout)
#else
static int wait_event (int which, fd_set *in, fd_set *out, fd_set *except,
struct timeval *timeout)
#endif
{
fd_set rfds;
int retvalue = 0;
int e;
if (!in) {
in = &rfds;
FD_ZERO (in);
}
if ((which & IAL_MOUSEEVENT) && ts >= 0) {
FD_SET (ts, in);
#ifdef _LITE_VERSION
if (ts > maxfd) maxfd = ts;
#endif
}
#ifdef _LITE_VERSION
e = select (maxfd + 1, in, out, except, timeout) ;
#else
e = select (FD_SETSIZE, in, out, except, timeout) ;
#endif
if (e > 0) {
if (ts >= 0 && FD_ISSET (ts, in)) {
short data [4];
FD_CLR (ts, in);
read (ts, data, sizeof (data));
if (data[0]) {
pos.x = data[1];
pos.y = data[2];
}
if (data[0]) {
printf ("mouse down: pos.x = %d, pos.y = %d\n", pos.x, pos.y);
}
pos.b = (data[0] ? 4 : 0);
retvalue |= IAL_MOUSEEVENT;
}
} else if (e < 0) {
return -1;
}
return retvalue;
}
BOOL InitFFT9200Input (INPUT* input, const char* mdev, const char* mtype)
{
ts = open (TS_DEVICE, O_RDONLY);
if (ts < 0) {
fprintf (stderr, "IPAQ: Can not open touch screen!\n");
return FALSE;
}
input->update_mouse = mouse_update;
input->get_mouse_xy = mouse_getxy;
input->set_mouse_xy = NULL;
input->get_mouse_button = mouse_getbutton;
input->set_mouse_range = NULL;
input->wait_event = wait_event;
mousex = 0;
mousey = 0;
pos.x = pos.y = pos.b = 0;
return TRUE;
}
void TermFFT9200Input (void)
{
if (ts >= 0)
close(ts);
}
#endif /* _FFT7202_IAL */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -