日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
使用Linux模擬USB鼠標(biāo)(linuxu鼠標(biāo)模擬)

隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)科技的不斷發(fā)展,Linux作為一種類Unix操作系統(tǒng),在服務(wù)器方面、嵌入式設(shè)備方面和桌面環(huán)境方面都有著廣泛的應(yīng)用。在使用Linux操作系統(tǒng)時(shí),我們往往需要操作鼠標(biāo),但是有時(shí)候我們可能需要模擬鼠標(biāo)操作,這時(shí)候我們可以。

一、USB鼠標(biāo)簡(jiǎn)介

先來介紹一下USB鼠標(biāo)。USB鼠標(biāo)是目前常用的一種外接鼠標(biāo),使用USB接口連接電腦,相較于傳統(tǒng)的串口鼠標(biāo)和PS/2接口的鼠標(biāo),其特點(diǎn)是數(shù)據(jù)傳輸快,傳輸?shù)臄?shù)據(jù)實(shí)時(shí)性好,操作速度快,目前主流的操作系統(tǒng)都能支持USB鼠標(biāo)。

二、Linux模擬USB鼠標(biāo)的方法

在Linux環(huán)境中,我們可以通過模擬USB鼠標(biāo)的方法來實(shí)現(xiàn)類似于鼠標(biāo)的操作。其中,主要有兩種實(shí)現(xiàn)方式:一種是使用內(nèi)核模塊uhid(User-space Human Interface Device),另外一種是使用X11協(xié)議擴(kuò)展XTEST。

1. 使用內(nèi)核模塊uhid實(shí)現(xiàn)USB鼠標(biāo)

uhid是一個(gè)Linux內(nèi)核提供的一種驅(qū)動(dòng)機(jī)制,通過它我們可以在用戶空間中創(chuàng)建一個(gè)虛擬的輸入設(shè)備,而這個(gè)虛擬的輸入設(shè)備可以在程序中控制的方式下,模擬USB鼠標(biāo)的操作。

具體來說,實(shí)現(xiàn)方法如下:

(1)安裝uhid模塊

在Linux環(huán)境中,uhid模塊默認(rèn)是不加載,因此我們需要手動(dòng)安裝它。安裝方法如下:

sudo modprobe uhid

如果uhid模塊安裝成功,那么我們可以使用以下命令查看是否安裝成功:

lod | grep uhid

(2)創(chuàng)建一個(gè)虛擬設(shè)備

在Linux下,我們可以使用/dev/input/eventX文件來表示輸入設(shè)備。在這個(gè)文件上進(jìn)行讀寫操作,就可以模擬鼠標(biāo)、鍵盤等操作。我們可以使用以下命令來創(chuàng)建一個(gè)虛擬設(shè)備:

sudo su

echo 1 > /sys/module/uhid/parameters/uhid_max_hidraw

mknod /dev/uhid c 10 $(grep uhid /proc/devices | awk ‘{print $1}’)

chmod 666 /dev/uhid

如果您想要修改設(shè)備的屬性,可以使用以下命令:

echo “NAME =\”test\”” > /etc/udev/rules.d/90-test.rules

echo “MODE =\”0666\”” >> /etc/udev/rules.d/90-test.rules

echo “ACTION =\”add\”” >> /etc/udev/rules.d/90-test.rules

echo “SYMLINK =\”uhiddev\”” >> /etc/udev/rules.d/90-test.rules

(3)使用虛擬設(shè)備模擬USB鼠標(biāo)操作

使用虛擬設(shè)備模擬USB鼠標(biāo)操作的程序可以使用C語言編寫,其核心代碼如下:

int fd = open(DEV_NAME, O_RDWR);

if(fd

perror(“Unable to open device”);

return 1;

}

struct uhid_event ev;

memset(&ev, 0, sizeof(struct uhid_event));

ev.type = UHID_INPUT_REPORT;

ev.size = 3;

ev.u.input.usage_page = 0x01;

ev.u.input.usage = 0x02;

ev.u.input.raw[0] = 0x01; // buttons: left

ev.u.input.raw[1] = dx; // dx

ev.u.input.raw[2] = dy; // dy

write(fd, &ev, sizeof(struct uhid_event));

close(fd);

注意,這里的DEV_NAME為您創(chuàng)建的虛擬設(shè)備的設(shè)備節(jié)點(diǎn)名稱。

2. 使用X11協(xié)議擴(kuò)展XTEST實(shí)現(xiàn)USB鼠標(biāo)

XTEST是X11協(xié)議提供的一種擴(kuò)展,可以在Linux系統(tǒng)下模擬鍵盤和鼠標(biāo)等多種操作。其中,XTEST的核心代碼如下:

Display *display = XOpenDisplay(NULL);

XTestFakeMotionEvent(display, -1, x, y, 0);

XTestFakeButtonEvent(display, Button1, True, 0);

XTestFakeButtonEvent(display, Button1, False, 0);

XFlush(display);

XCloseDisplay(display);

注意,其中的x和y表示鼠標(biāo)坐標(biāo)。

三、

通過上述介紹,我們可以發(fā)現(xiàn),操作并不是一件很難的事情。我們可以通過使用內(nèi)核模塊uhid或者X11協(xié)議擴(kuò)展XTEST來實(shí)現(xiàn)。盡管這些方案在使用上可能略有不同,但其核心思路都是類似的,即在用戶空間中模擬USB鼠標(biāo)的操作。當(dāng)我們需要實(shí)現(xiàn)類似于鼠標(biāo)的功能時(shí),可以根據(jù)實(shí)際需要,找到一種適合自己的方式來實(shí)現(xiàn)。

相關(guān)問題拓展閱讀:

  • 寫個(gè)u鼠標(biāo)或鍵盤驅(qū)動(dòng)需要哪些知識(shí),linux為平臺(tái)

寫個(gè)u鼠標(biāo)或鍵盤驅(qū)動(dòng)需要哪些知識(shí),linux為平臺(tái)

首先需要了解Linux輸入子系統(tǒng),因?yàn)槭髽?biāo)是輸入設(shè)備,一種input_device。然后需伏高要了解USB設(shè)備驅(qū)動(dòng)。使用了USB接橡段口,urb來獲得鼠標(biāo)的數(shù)據(jù),然后把數(shù)據(jù)往上層應(yīng)用提交。可以參看內(nèi)核已經(jīng)有的USB鼠標(biāo)驅(qū)動(dòng),位置是\linux-3.0.86\drivers\hid\uhid\umouse.c。linux-3.0.86是Linux內(nèi)核的根目錄。并不難。至于哪些書,可以看‘Linux設(shè)備驅(qū)動(dòng)程序’這缺如尺本書,里頭主要知識(shí)都有講到。

需要多種框架相結(jié)合:字符設(shè)備驅(qū)動(dòng)框架 + 鼠標(biāo)驅(qū)動(dòng)框架

關(guān)于linux u 鼠標(biāo) 模擬的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)頁標(biāo)題:使用Linux模擬USB鼠標(biāo)(linuxu鼠標(biāo)模擬)
文章來源:http://www.5511xx.com/article/cddeodj.html