1. 程式人生 > >linux應用層獲取滑鼠座標

linux應用層獲取滑鼠座標

補充:在這個函式中要開啟一個滑鼠裝置,但是在嵌入式的檔案系統中沒有這個裝置節點,
滑鼠裝置的主裝置號和次裝置號有是如何確定的呢?
在  linux 系統中,滑鼠和鍵盤的裝置號都是固定的,可以在 PC 上檢視,再在嵌入式的檔案系統中自己建立。

[email protected]:/tmp$ ls -l /dev/input/
total 0
drwxr-xr-x 2 root root     120 2008-11-06 08:49 by-path
crw-rw---- 1 root root 13,  64 2008-11-06 08:49 event0
crw-rw---- 1 root root 13,  65 2008-11-06 08:49 event1
crw-rw---- 1 root root 13,  66 2008-11-06 08:49 event2
crw-rw---- 1 root root 13,  67 2008-11-06 08:49 event3
crw-rw---- 1 root root 13,  68 2008-11-06 08:48 event4
crw-rw---- 1 root root 13,  69 2008-11-06 08:48 event5
crw-rw---- 1 root root 13,  70 2008-11-06 08:48 event6
crw-rw---- 1 root root 13,  63 2008-11-06 16:48 mice
crw-rw---- 1 root root 13,  32 2008-11-06 16:48 mouse0
crw-rw---- 1 root root 13,  33 2008-11-06 08:49 mouse1
crw-rw---- 1 root root 13, 128 2008-11-06 08:49 ts0
crw-rw---- 1 root root 13, 129 2008-11-06 08:49 ts1

滑鼠裝置一般為  mice  裝置,主裝置號為  13, 次裝置號為  63。
鍵盤裝置一般為  event 裝置,主裝置號為 13, 次裝置號為 64 ~ 70。

#include <stdio.h>
#include <linux/input.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>



int main(int argc,char **argv)
{
    int fd, retval;
    char buf[6];
    fd_set readfds;
    struct timeval tv;

    //fd = open("/dev/input/mice", O_RDONLY);
    if(( fd = open("/dev/input/mice", O_RDONLY))<0)
    {
        printf("Failed to open /"/dev/input/mice/"./n");
        exit(1);
    }
    else
    {
        printf("open /"/dev/input/mice/" successfuly./n");
    }

    while(1)
    {
        tv.tv_sec = 5;
        tv.tv_usec = 0;

        FD_ZERO(&readfds);
        FD_SET(fd, &readfds);

        retval = select(fd+1, &readfds, NULL, NULL, &tv);
        if(retval==0)
            printf("Time out!/n");
        if(FD_ISSET(fd,&readfds))
        {
            if(read(fd, buf, 6) <= 0)//終端裝置,一次只能讀取一行
            {
                continue;
            }
            printf("Button type = %d, X = %d, Y = %d, Z = %d/n", (buf[0] & 0x07), buf[1], buf[2],   buf[3]);
        }
    }
    close(fd);
    return 0;
}

相關推薦

linux應用獲取滑鼠座標

補充:在這個函式中要開啟一個滑鼠裝置,但是在嵌入式的檔案系統中沒有這個裝置節點,滑鼠裝置的主裝置號和次裝置號有是如何確定的呢?在  linux 系統中,滑鼠和鍵盤的裝置號都是固定的,可以在 PC 上檢視,再在嵌入式的檔案系統中自己建立。[email protected]:/tmp$ ls -l /

荔枝派 V3S Linux 應用 IIC 使用OLED

ddr 開始 出現 驅動程序 line 但是 IE HR 手冊 1.開始   我想在荔枝派上驅動oled屏,但是在內核中寫驅動對我來說肯定是非常麻煩的,所以我退而求其次,想在應用層中操作通用i2c接口來實現oled的驅動程序。 我買的OLED是中景園經典款,四針IIC接口o

Linux應用直接操作GPIO

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

獲取滑鼠座標的的方法(相容性)

在一些DOM操作中我們經常會跟元素的位置打交道,滑鼠互動式一個經常用到的方面,令人失望的是不同的瀏覽器下會有不同的結果甚至是有的瀏覽器下沒結果,這篇文章就上滑鼠點選位置座標獲取做一些簡單的總結,沒特殊宣告程式碼在IE8,FireFox,Chrome下進行測試相容 滑

linux應用下用C呼叫音訊驅動

static void audio_pause(void) {     int err;     if (alsa_can_pause) {         if ((err = snd_pcm_pause(alsa_handler, 1)) < 0)        

js獲取滑鼠座標

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

Linux應用讀寫i2c從裝置(eeprom)

/***************************************************************************** i2c讀函式,引數1:從裝置地址,引數2:暫存器地址,引數3:讀取資料緩衝區,引數4:讀取資料大小

點選事件獲取滑鼠座標位置(x,y)值

$(document).click( function(event){ event = event || window.event;

[轉]淺析 Linux 中的時間程式設計和實現原理,第 1 部分: Linux 應用的時間程式設計

引子 我們都生活在時間中,但卻無法去思考它。什麼是時間呢?似乎這是一個永遠也不能被回答的問題。然而作為一個程式設計師,在工作中,總有那麼幾次我必須思考什麼是時間。比如,需要知道一段程式碼運行了多久;要在 log 檔案中記錄事件發生時的時間戳;再比如需要一個定時器以便能夠定期做某些計算機操作。我發現,在計算機

嵌入式linux的開發流程以及linux應用內容

嵌入式linux開發流程:1.搭建前期的開發環境,例如搭建linux主機環境,交叉編譯器的安裝,還有一些常用的開發輔助軟體如source insight等等。2.學習對硬體的直接操作,這裡和微控制器操作類似,我們需要檢視原理圖還有資料手冊對相應的暫存器進行操作,實現功能。這裡

js event物件獲取滑鼠座標

 <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function cnvs_getCoordinates(e) { x=e.clientX

javascript獲取滑鼠座標pageX和clientX的區別

這兩種獲取滑鼠座標的方法,區別在於基於的物件不同: pageX和pageY獲取的是滑鼠指標距離文件(HTML)的左上角距離,不會隨著滾動條滾動而改變; clientX和clientY獲取的是滑鼠指標距離可視視窗(不包括上面的位址列和滑動條)的距離,會隨著滾動條滾動而改變;

jquery獲取元素座標獲取滑鼠座標

獲取頁面某一元素的絕對X,Y座標,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 獲取相對(父元素)位置: var X = $('#Div

Linux應用】防火牆iptables命令

iptables四個表作用圖: iptables的四個表: raw表有2個鏈:prerouting、output mangle表有5個鏈:prerouting、postrouting、input、output、forward nat表有3個鏈:p

usb滑鼠驅動註解及獲取滑鼠座標

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h

淺析 Linux 中的時間程式設計和實現原理一—— Linux 應用的時間程式設計

簡介: 本文試圖完整地描述 Linux 系統中 C 語言程式設計中的時間問題。主要內容包括應用程式中的時間程式設計方法;時鐘硬體簡介;Glibc 時間函式的實現以及 Linux 核心對時間的支援和實現原理。這是第 1 部分,探討應用開發中的時間程式設計問題。 引子 我們都

使用Java程式碼在應用獲取Android系統屬性

之前使用Native程式碼的property_get()/property_set()來獲取Android系統屬性,現在需要改寫到Java上面,但是System.getProperty() / System.setProperty()所操作的屬性與上面的是不同的東西,而在an

Linux應用的定時器Timer

       通過第一個引數which來指定要使用哪一種Timer(ITIMER_REAL、ITIMER_VIRTUAL、ITIMER_PROF)。settimer函式是用來設定對應的Timer的觸發時間是多少,而gettimer函式是用來獲取上一次Timer設定的時間。設定的時間是一個結構體struct

Linux 網卡驅動學習(六)(應用、tcp 、ip 、設備和驅動作用解析)

local acc 每次 letter auto sizeof style article inode 本文將介紹網絡連接建立的過程、收發包流程,以及當中應用層、tcp層、ip層、設備層和驅動層各層發揮的作用。 1、應用層 對於使用socket進行網絡連接的serv

linux 高性能讀書筆記之應用協議HTTP相關小知識

原理 連接 設置代理 客戶 代理服務 lin 不同 火墻 筆記 ####HTTP連襟:傳輸層協議默認使用TCP小知識:1.正向服務器要求客戶端自己設置代理服務器的地址。客戶端每次的請求都將直接發送到該代理服務器,並且由代理服務器來請求目標資源(常用於防火墻內的局域網機器要訪