[英]how to control Linux mouse cursor movement in C
我正在嘗試通過Android應用程序為linux服務器上的鼠標遠程控制創建一個應用程序。 作為一個初學者,我有很多probs ..在用C編寫linux服務器之前,我試着檢查一下我是否可以根據代碼在Linux上控制和移動鼠標:
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <linux/input.h>
int main(){
struct input_event event, event_end;
int i=0;
int fd = -1;
fd = open("/dev/input/event4", O_RDWR | O_NONBLOCK);
if(fd<0){
perror("error");
}
memset(&event, 0, sizeof(event));
memset(&event, 0, sizeof(event_end));
gettimeofday(&event.time, NULL);
event.type = EV_REL;
event.code = REL_X;
event.value = 100;
gettimeofday(&event_end.time, NULL);
event_end.type = EV_SYN;
event_end.code = SYN_REPORT;
event_end.value = 0;
for( i=0; i<5; i++){
write(fd, &event, sizeof(event));// Move the mouse
write(fd, &event_end, sizeof(event_end));// Show move
sleep(1);
}
close(fd);
return 0;
}
在構建編譯后執行..光標永遠不會發生任何變化..是否會出現VirtualBox設置問題?
當我物理移動鼠標時,sudo cat / dev / input / event4顯示奇怪的符號串。 這意味着能夠通過event4得到鼠標光標移動的控制器不是嗎? 我想知道為什么光標不會移動......任何人都可以幫忙嗎?
而且,如果有人建議使用庫和函數來控制鼠標,我會很高興
多謝
您不能只寫入設備文件並期望驅動程序的行為就像實際硬件發送這些事件一樣。 事情比這復雜得多。
如果你只關心X Windows環境,那么你很幸運。 您可以使用此功能將事件發送到窗口:
http://tronche.com/gui/x/xlib/event-handling/XSendEvent.html
如果您不知道哪個窗口應該接收您的事件,只需將它們發送到根窗口,它們將被適當地路由。
還有一個圖書館。
http://www.x.org/releases/X11R7.6/doc/libXtst/recordlib.html
請記住,在X窗口中,事件有一個標志,指示事件是來自實際硬件還是由上述方法之一合成。 在大多數情況下,程序只是忽略此標志並且無論如何都表現相同。 但有時你會有奇怪的驚喜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.