新聞中心
一、引言

鼠標(biāo)是計(jì)算機(jī)中最重要的輸入設(shè)備之一。為了控制和利用鼠標(biāo)這一輸入設(shè)備,Linux系統(tǒng)提供了一系列函數(shù),通過調(diào)用這些函數(shù)可以獲取鼠標(biāo)的位置等信息。本文將介紹在Linux系統(tǒng)下獲取鼠標(biāo)位置的函數(shù),并對其進(jìn)行詳細(xì)的說明。
二、函數(shù)組成
在Linux系統(tǒng)下,獲取鼠標(biāo)位置的函數(shù)主要由以下三個部分組成:
1. 設(shè)備驅(qū)動程序
Linux系統(tǒng)的鼠標(biāo)設(shè)備驅(qū)動程序位于/sys/class/input/input0/device目錄下。驅(qū)動程序主要負(fù)責(zé)對鼠標(biāo)進(jìn)行讀寫操作,獲取鼠標(biāo)的狀態(tài)、位置等信息。
2. 軟件接口
Linux系統(tǒng)提供了一系列軟件接口,開發(fā)人員可以通過這些接口來訪問鼠標(biāo)設(shè)備驅(qū)動程序,從而獲取鼠標(biāo)的位置等信息。
3. 應(yīng)用程序
開發(fā)人員可以使用C、C++等編程語言,通過調(diào)用Linux系統(tǒng)提供的鼠標(biāo)位置獲取函數(shù)來編寫應(yīng)用程序。
接下來將分別介紹這三個部分的詳細(xì)信息。
三、設(shè)備驅(qū)動程序
在Linux系統(tǒng)中,鼠標(biāo)設(shè)備驅(qū)動程序的主要作用是讀寫鼠標(biāo)數(shù)據(jù),其中讀取鼠標(biāo)位置信息的函數(shù)是input_report_abs()。它的定義如下:
void input_report_abs(struct input_dev *dev, unsigned int code, int value);
該函數(shù)有三個參數(shù):
①struct input_dev *dev:鼠標(biāo)設(shè)備對象指針。
②unsigned int code:指定要讀取的鼠標(biāo)位置的代碼。
③int value:指定讀取到的鼠標(biāo)位置的值。
其中,code參數(shù)的取值可以參照Linux系統(tǒng)提供的鼠標(biāo)事件代碼,例如:
#define ABS_X 0 /* code for axis X */
#define ABS_Y 1 /* code for axis Y */
#define ABS_Z 2 /* code for axis Z */
#define ABS_RX 3 /* code for axis Relative X */
#define ABS_RY 4 /* code for axis Relative Y */
#define ABS_RZ 5 /* code for axis Relative Z */
其中,ABS_X和ABS_Y分別表示鼠標(biāo)在X軸和Y軸的位置,ABS_Z和ABS_RZ分別表示鼠標(biāo)滾輪的位置,ABS_RX和ABS_RY分別表示鼠標(biāo)在X軸和Y軸上的相對位置。
四、軟件接口
在Linux系統(tǒng)下,軟件接口主要提供了一些函數(shù),可以讓開發(fā)人員通過應(yīng)用程序來獲取鼠標(biāo)的位置等信息。常見的函數(shù)有:
1. int open(const char *pathname, int flags):打開鼠標(biāo)設(shè)備。其中,參數(shù)pathname是鼠標(biāo)設(shè)備文件的路徑,flags參數(shù)用于設(shè)置文件打開模式。
2. int read(int fd, void *buf, size_t count):從鼠標(biāo)設(shè)備中讀取數(shù)據(jù)。其中,參數(shù)fd是鼠標(biāo)設(shè)備的文件描述符,buf參數(shù)是讀取數(shù)據(jù)的緩沖區(qū),count參數(shù)指定要讀取的字節(jié)數(shù)。
3. int ioctl(int fd, unsigned long request, void *argp):用于配置和控制鼠標(biāo)設(shè)備。其中,request參數(shù)指定要執(zhí)行的控制命令,argp參數(shù)指定和請求相關(guān)的參數(shù)。
4. int close(int fd):關(guān)閉鼠標(biāo)設(shè)備。
通過這些函數(shù)可獲得鼠標(biāo)設(shè)備的信息,不僅僅只是位置,還可以獲取鼠標(biāo)的按鍵,滑輪等信息。
五、應(yīng)用程序
開發(fā)人員可以使用C、C++等編程語言來編寫應(yīng)用程序,通過調(diào)用Linux系統(tǒng)提供的函數(shù)來獲取鼠標(biāo)的位置信息。
例如,下面是一個簡單的C++程序,用于獲取鼠標(biāo)的位置信息:
#include
#include
#include
#include
int mn(void)
{
int fd, rv;
struct input_event ev;
fd = open(“/dev/input/mouse0”, O_RDON);
while (1) {
rv = read(fd, &ev, sizeof(struct input_event));
if (rv
printf(“read() returned %d\n”, rv);
perror(“error reading”);
break;
}
if (ev.type == EV_REL && ev.code == REL_X)
printf(“Relative X: %d\n”, ev.value);
if (ev.type == EV_REL && ev.code == REL_Y)
printf(“Relative Y: %d\n”, ev.value);
if (ev.type == EV_ABS && ev.code == ABS_X)
printf(“Absolute X: %d\n”, ev.value);
if (ev.type == EV_ABS && ev.code == ABS_Y)
printf(“Absolute Y: %d\n”, ev.value);
}
close(fd);
return 0;
}
該程序會循環(huán)讀取鼠標(biāo)設(shè)備的信息,并對讀取的信息進(jìn)行解析和處理,如輸出到終端等。
六、
本文介紹了在Linux系統(tǒng)下獲取鼠標(biāo)位置的函數(shù),包括設(shè)備驅(qū)動程序、軟件接口和應(yīng)用程序三個部分。通過調(diào)用這些函數(shù),開發(fā)人員可以輕松地獲取鼠標(biāo)的位置等信息,實(shí)現(xiàn)各種應(yīng)用程序的功能。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
怎樣獲得當(dāng)前鼠標(biāo)所在位置的窗口句柄?
獲得當(dāng)前鼠標(biāo)所在位置的窗口句柄可以用以下代碼:
#include
int main()
{
while (1)
{
POINT pNow = {0,0};
if (GetCursorPos(&pNow)) // 獲取鼠標(biāo)當(dāng)前位置
{
HWND hwndPointNow = NULL;
hwndPointNow = WindowFromPoint(pNow); // 獲取鼠標(biāo)衡兄所在窗口的句柄
if (hwndPointNow)
{
//cout
char szWindowTitle;
::GetWindowTextA(hwndPointNow, szWindowTitle, sizeof(szWindowTitle)); // 獲取窗口標(biāo)題
cout
cout
}
else
cout
}
else
cout
Sleep(500);
}
return 0;
}
在Windows中,句柄是一個系統(tǒng)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的引用。例如當(dāng)你操作一個窗口,或說是一個Delphi窗體時,系統(tǒng)局御會給你一個該窗口的句柄,系統(tǒng)會通知你:你正在操作142號窗口,就此你的應(yīng)用程序就能要求系統(tǒng)對142號窗口進(jìn)行操作——移動窗口、改變窗口大小、把窗口最小化等等。
如何獲取鼠標(biāo)點(diǎn)擊的坐標(biāo)
cpoint
酣窢豐喝薟估奉臺斧郡pt;
::getcursorpos(&pt);
這樣就可以得到當(dāng)擾握前鼠標(biāo)的位置了緩指慶,(pt.x,pt.y)。
要獲得鼠標(biāo)點(diǎn)擊時的坐標(biāo)不用自己獲得逗譽(yù)的,mfc的消息映射函數(shù)的參數(shù)中有鼠標(biāo)位置的這個參數(shù)的。
關(guān)于linux 獲取鼠標(biāo)位置函數(shù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
網(wǎng)站名稱:Linux下獲取鼠標(biāo)位置的函數(shù)詳解(linux獲取鼠標(biāo)位置函數(shù))
文章分享:http://www.dlmjj.cn/article/dhcpheg.html


咨詢
建站咨詢
