




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)下鼠標(biāo)操作原理 軟件組整理 目 錄 1、鼠標(biāo)的類型及與主板的連接關(guān)系 2、鼠標(biāo)工作原理 3、鼠標(biāo)硬件原理圖 4、HID協(xié)議與操作系統(tǒng)HID驅(qū)動簡介 5、操作系統(tǒng)HID接口 6、圖形顯示基本原理與操作系統(tǒng)焦點(diǎn)模型 7、應(yīng)用程序鼠標(biāo)捕獲與程序處理 鼠標(biāo)的類型 按照與電腦的連接方式來分的話有串口鼠標(biāo)、 PS/2鼠標(biāo)和USB鼠標(biāo)。如下圖所示: 鼠標(biāo)與主板的連接關(guān)系 鼠標(biāo)分別連接到主板的串口、PS2、USB口。 串口 PS2口 USB口 鼠標(biāo)工作原理 光電鼠標(biāo)工作原理示意圖,激光鼠標(biāo)原理與之類 似。 鼠標(biāo)光學(xué)跟蹤引擎部分橫截面示 意圖 光學(xué)鼠標(biāo)主要由四部分的核心組件構(gòu)成,分 別是發(fā)光二極管、透鏡
2、組件、光學(xué)引擎(Optical Engine)以及控制芯片組成。 光學(xué)鼠標(biāo)通過底部的LED燈,燈光以30度角 射向桌面,照射出粗糙的表面所產(chǎn)生的陰影,然 后再通過平面的折射透過另外一塊透鏡反饋到傳 感器上。 當(dāng)鼠標(biāo)移動的時候,成像傳感器錄得連續(xù)的圖案 ,然后通過“數(shù)字信號處理器”(DSP)對每張圖 片的前后對比分析處理,以判斷鼠標(biāo)移動的方向 以及位移,從而得出鼠標(biāo)x, y方向的移動數(shù)值。 再通過SPI傳給鼠標(biāo)的微型控制單元(Micro Controller Unit)。鼠標(biāo)的處理器對這些數(shù)值處 理之后,傳給電腦主機(jī)。傳統(tǒng)的光電鼠標(biāo)采樣頻 率約為3000 Frames/sec(幀/秒),也就是說
3、 它在一秒鐘內(nèi)只能采集和處理3000張圖像。 鼠標(biāo)硬件原理圖1 鼠標(biāo)硬件原理圖2 HID協(xié)議簡介 一、應(yīng)用場合 USB HID類是比較大的一個類,HID類設(shè)備屬于 人機(jī)交互操作的設(shè)備。用于控制計算機(jī)操作的一 些方面,如USB鼠標(biāo),USB鍵盤,USB游戲操縱桿 ,USB觸摸板,USB軌跡球、電話撥號設(shè)備、 VCR遙控等等設(shè)備。另外,使用HID設(shè)備的一個 好處就是,操作系統(tǒng)自帶了HID類的驅(qū)動程序, 而用戶無需去開發(fā)很麻煩的驅(qū)動程序,只要直接 使用API調(diào)用即可完成通信。所以很多簡單的USB 設(shè)備,喜歡枚舉成HID設(shè)備,這樣就可以不用安 裝驅(qū)動而直接使用。 HID協(xié)議簡介 二、USB HID類可采
4、用的通信管道 所有的HID設(shè)備通過USB的控制管道(默認(rèn)管道 ,即端點(diǎn)0)和中斷管道與主機(jī)通信。 USB HID規(guī)范定義的HID設(shè)備可用端點(diǎn)包含三種 管道: 1、控制(端點(diǎn)0)( 必選) 傳輸U(kuò)SB描述符、類請求 代碼以及供查詢的消息數(shù)據(jù)等 2、中斷輸入 (必選) 傳輸從設(shè)備到主機(jī)的輸入數(shù) 據(jù) 3、中斷輸出 (可選 )傳輸從主機(jī)到設(shè)備的輸出數(shù) 據(jù) HID協(xié)議簡介 控制管道主要用于以下3個方面: 1、接收/響應(yīng)USB主機(jī)的控制請示及相關(guān)的類數(shù)據(jù) 。 2、在USB主機(jī)查詢時傳輸數(shù)據(jù)(如響應(yīng)Get_Report 請求等)。 3、接收USB主機(jī)的數(shù)據(jù)。 中斷管道主要用于以下兩個方面: 1、USB主機(jī)接
5、收USB設(shè)備的異步傳輸數(shù)據(jù)。 2、USB主機(jī)發(fā)送有實(shí)時性要求的數(shù)據(jù)給USB設(shè)備; 從USB主機(jī)到USB設(shè)備的中斷輸出數(shù)據(jù)傳輸是可選的 ,當(dāng)不支持中斷輸出數(shù)據(jù)傳輸時,USB主機(jī)通過控制 管道將數(shù)據(jù)傳輸給USB設(shè)備。 HID協(xié)議簡介 三、USB HID設(shè)備的描述符 HID設(shè)備的描述符除了5個USB的標(biāo)準(zhǔn)描述符(設(shè) 備描述符、配置描述符、接口描述符、端點(diǎn)描述 符、字符串描述符,還包括3個HID設(shè)備類特定 描述符:HID描述符、報告描述符、實(shí)體描述符 。 HID協(xié)議簡介 除了HID的三個特定描述符組成對HID設(shè)備的解釋外,5個標(biāo)準(zhǔn)描述符 中與HID設(shè)備有關(guān)的部分有: 設(shè)備描述符中bDeviceClas
6、s、bDeviceSubClass和 bDeviceProtocol三個字段的值必須為零。 接口描述符中bInterfaceClass的值必須為0 x03, bInterfaceSubClass的值為0或1,為1表示HID設(shè)備符是一個啟動設(shè) 備(Boot Device,一般對PC機(jī)而言才有意義,意思是BIOS啟動時能 識別并使用您的HID設(shè)備,且只有標(biāo)準(zhǔn)鼠標(biāo)或鍵盤類設(shè)備才能成為 Boot Device。如果為0則只有在操作系統(tǒng)啟動后才能識別并使用您 的HID設(shè)備),bInterfaceProtocol的取值含義如下表所示: 表2、HID接口描述符中bInterfaceProtocol的含義 b
7、InterfaceProtocol的取值(十進(jìn)制) 含義 0 NONE 1 鍵盤 2 鼠標(biāo) 3255 保留 HID協(xié)議簡介 下面僅對這3個HID設(shè)備類特定描述符中的HID描 述符進(jìn)行說明。 HID描述符關(guān)聯(lián)于接口描述符,因而如果一個設(shè) 備只有一個接口描述符,則無論它有幾個端點(diǎn)描 述符,HID設(shè)備只有一個HID描述符。HID設(shè)備描 述符主要描述HID規(guī)范的版本號、HID通信所使 用的額外描述符、報表描述符的長度等。 其他信息請自行百度。 操作系統(tǒng)HID驅(qū)動簡介 HID 設(shè)備驅(qū)動簡介 為簡化USB設(shè)備的開發(fā)過程,USB提出了設(shè)備類 的概念。HID設(shè)備類,即人機(jī)接口設(shè)備。典型的 HID設(shè)備如鍵盤、鼠
8、標(biāo)。 所有設(shè)備類都必須支持標(biāo)準(zhǔn)USB描述符和標(biāo)準(zhǔn) USB設(shè)備請求。如果有必要,設(shè)備類還可以自行 定義其專用的描述符和設(shè) 備請求,這分別被稱為 設(shè)備類定義描述符和設(shè)備類定義請求。另外,一 個完整的設(shè)備類還將指明其接口和端點(diǎn)的使用方 法,如如接口所包含端點(diǎn)的個數(shù)、端點(diǎn)的最大 數(shù) 據(jù)包長度等。 操作系統(tǒng)HID驅(qū)動簡介 HID設(shè)備既可以是低速設(shè)備也可以是全速設(shè)備,其典 型的數(shù)據(jù)傳輸類型為中斷IN傳輸,即它適用于主機(jī)接 收USB設(shè)備 發(fā)來的小量到中等量的數(shù)據(jù)。HID具有以 下的功能特點(diǎn):1)適用于傳輸少量或中量的數(shù)據(jù);2) 傳輸?shù)臄?shù)據(jù)具有突發(fā)性;3)傳輸?shù)淖畲笏俾视邢拗?4) 無固 定的傳輸率。 HID
9、設(shè)備類除支持標(biāo)準(zhǔn)USB描述符外(設(shè)備描述符、 配置描述符、接口描述符、端點(diǎn)描述符和字符串描述 符),還自行 定義了3種類描述符,分別為HID描述 符(主要用于識別HID設(shè)備所包含的其他類描述符) 、報告描述符(提供HID設(shè)備和主機(jī)間交換數(shù)據(jù)的格 式)和物理描 述符。一個HID設(shè)備只能支持一個HID 描述符;可以支持一個或多個報告描述符;物理描述 符是可選的,大多數(shù)HID設(shè)備不需要使用它。 操作系統(tǒng)HID驅(qū)動簡介 USB HID設(shè)備驅(qū)動原理 設(shè)備的USB 人機(jī)交互設(shè)備必須遵循以下的 USB開始程序,如右圖所示: 1) 插入設(shè)備 USB設(shè)備第一次連接到總線時,雖然接上 了電源,但是總線仍然沒有任何
10、功能,一定 要到重置總線為止才可以開始運(yùn)作。注意, 一旦USB在D端使用了 1.5k的提升電阻, 就會立即通知總線的集線器,有一個低速設(shè) 備(1.5Mb/s)剛被連接上。而程序以設(shè)備 地址0開始運(yùn)行。 設(shè)備插上時,電源打開重置的過程: 重置 執(zhí)行初始設(shè)置并出發(fā)總線重置中斷-位 于中止模式下知道總線被重置為止等待 設(shè)備列舉執(zhí)行程序循環(huán) 操作系統(tǒng)HID驅(qū)動簡介 2) 總線重置 接著主機(jī)將會辨認(rèn)新的USB設(shè)備并重置它。在總 線重置過程中,除了設(shè)定堆棧指針外,也出發(fā)所有被 使用到的中斷。(總線重置的中斷服務(wù)程序ISR功能 ) 3) 設(shè)備列舉。 主機(jī)會負(fù)責(zé)檢測與設(shè)定所有連接至根集線器的設(shè)備 ,辨別與設(shè)定
11、一個USB設(shè)備的程序,稱為設(shè)備列舉。 主機(jī)首先會送出SETUP封包以讀取默認(rèn)地址0的設(shè)備 描 述符。當(dāng)收到描述符后,主機(jī)將會指定新的USB地 址給設(shè)備。從設(shè)備所返回的信息中,主機(jī)就會知道設(shè) 備所支持的數(shù)據(jù)端點(diǎn)的數(shù)量。完成設(shè)備列舉。 操作系統(tǒng)HID驅(qū)動簡介 4) 數(shù)據(jù)捕捉與轉(zhuǎn)換 這里以鍵盤為例,在固件中將以周期性的方式,把 掃描的形式寫入到掃描矩陣的列I/O端口傷(接口2 ),并且在行I/O接口傷讀取結(jié)果值以決定哪個鍵被 按下 了。通過鍵盤掃描后所得到的數(shù)據(jù)碼,可以使 用中斷傳輸以端點(diǎn)1來傳送給主機(jī)。設(shè)備就將鍵盤的 8B數(shù)據(jù)放置在IN令牌包隨后跟隨的資料封包的數(shù)據(jù) 域位內(nèi),再 返回給主機(jī)。 當(dāng)含
12、有LED的按鍵(如NumLock ,Caps lock 與 Scroll lock)被按下或放開時,主機(jī)就會送出含有設(shè) 定報告(Set_Report)要求的SETUP封包,通過控制傳 輸傳至設(shè)備的端口0上。 操作系統(tǒng)HID驅(qū)動簡介 USB HID設(shè)備驅(qū)動程序設(shè)計的流程說明 USB總線與設(shè)備間的交互都是通過USBD即USB總線驅(qū)動程序完成。 USBD起著中間橋梁作用,解釋USB設(shè)備類驅(qū)動程序發(fā)來的命令并將 其劃分為一系列的USB事務(wù),然后發(fā)送給USB主控制器驅(qū)動程序。 具體流程是插入一個USB設(shè)備后,主機(jī)檢測到有設(shè)備接入,USBD就 從鏈表中查找匹配HID設(shè)備類。為每一個接入的 HID設(shè)備驅(qū)動建
13、立一 個對應(yīng)的USB_HID_SIO_CHAN結(jié)構(gòu)來對該HID設(shè)備驅(qū)動進(jìn)行管理。 這里的USB_HID_SIO_CHAN結(jié)構(gòu)是 USBD為每一個HID設(shè)備所分配 的一個關(guān)鍵的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。此后由USB主控制器驅(qū)動程序來負(fù)責(zé)硬 件底層的驅(qū)動。 而HID設(shè)備移除時,會調(diào)用函數(shù)usbHIDDeviceAttachCallback() ,這時先判斷是否有與該HID設(shè)備綁定的結(jié)構(gòu),有則清除該結(jié)構(gòu)。 而HID設(shè)備移除時,會調(diào)用函數(shù)usbHIDDeviceAttachCallback( ) ,這時先判斷是否有與該HID設(shè)備綁定的結(jié)構(gòu),有則清除該結(jié)構(gòu) 。 操作系統(tǒng)HID驅(qū)動簡介 從框圖中,可以看出除了USB標(biāo)
14、準(zhǔn)定義的一些描述符 外,HID設(shè)備還必須定義HID描述符。另外設(shè)備和主 機(jī)的通信是通過報告的形式來實(shí)現(xiàn)的,所以還必須定 義報告描述符;而物理描述符不是必需的。還有就是 HID描述符是關(guān)聯(lián)于接口(而不是端點(diǎn))的,所以設(shè) 備不需要為每個端點(diǎn)都提供一個HID描述符。 接口描述符中bInterfaceClass的值必須為0 x03, bInterfaceSubClass的值為0或1,為1表示HID設(shè)備 符是一個啟動設(shè)備(Boot Device,一般對PC機(jī)而言 才有意義,意思是BIOS啟動時能識別并使用您的HID 設(shè)備,且只有標(biāo)準(zhǔn)鼠標(biāo)或鍵盤類設(shè)備才能成為Boot Device。如果為0則只有在操作系統(tǒng)
15、啟動后才能識別 并使用您的HID設(shè)備)。 操作系統(tǒng)HID驅(qū)動簡介 成功注冊一個沒有被初 始化的HID設(shè)備的程序 流程如右圖所示。 USB HID設(shè)備驅(qū)動程序 的簡單介紹見下頁。 操作系統(tǒng)HID接口 設(shè)備文件一般注冊為“/dev/input/mouse0”,對應(yīng) 的驅(qū)動程序及接口如下: /輸入子系統(tǒng)層的操作-drivers/input/input.c open /dev/input/mouse0 mousedev_open() /drivers/input/mousedev.c /*打開鼠標(biāo)類輸入 設(shè)備*/ input_open_device() input_handle-dev-open /驅(qū)
16、動層物理設(shè)備的操作- drivers/usb/input/usbmouse.c usb_mouse_open() 注冊Input Handler 驅(qū)動層只是把輸入設(shè)備注冊到輸入子系統(tǒng)中, 在驅(qū)動層的代碼中本身并不創(chuàng)建設(shè)備結(jié)點(diǎn)。 應(yīng)用程序用來與設(shè)備打交道的設(shè)備結(jié)點(diǎn)的創(chuàng)建由 Event Handler層調(diào)用Input core中的函數(shù)來實(shí)現(xiàn)。 操作系統(tǒng)HID接口 而在創(chuàng)建具體的設(shè)備節(jié)點(diǎn)之前,Event Handler層需要先注冊一類設(shè)備的輸入事件處理函數(shù)及相關(guān) 接口 static int _init mousedev_init(void) /注冊輸入事件處理、連接、斷開、設(shè)備(文件)操作函數(shù) in
17、put_register_handler( /創(chuàng)建輸入設(shè)備節(jié)點(diǎn) devfs_mk_cdev(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX), S_IFCHR|S_IRUGO|S_IWUSR, input/mice); static struct input_handler mousedev_handler = .event = mousedev_event,/REL(相對坐標(biāo))、按鍵、ABS(絕對坐標(biāo))、SYNC等事件 處理 .connect = mousedev_connect, .disconnect = mousedev_di
18、sconnect, .fops = 操作系統(tǒng)HID接口 下面集中分析mousedev_event事件處理: 分析數(shù)據(jù)事件結(jié)構(gòu)體 linux/input.h中有定義,這個文件還定義了標(biāo)準(zhǔn)按鍵的編碼等 struct input_event struct timeval time; /按鍵時間 _u16 type; /類型,在下面有定義 _u16 code; /要模擬成什么按鍵 _s32 value;/是按下還是釋放 ; code: 事件的代碼.如果事件的類型代碼是EV_KEY,該代碼code為設(shè)備鍵盤代碼.代碼植0127為鍵盤上 的按鍵代碼,0 x1100 x116 為鼠標(biāo)上按鍵代碼,其中0 x1
19、10(BTN_ LEFT)為鼠標(biāo)左鍵 ,0 x111(BTN_RIGHT)為鼠標(biāo)右鍵,0 x112(BTN_ MIDDLE)為鼠標(biāo)中鍵.其它代碼含義請參看 include/linux/input.h文件. 如果事件的類型代碼是EV_REL,code值表示軌跡的類型.如指示鼠標(biāo) 的X軸方向REL_X(代碼為0 x00),指示鼠標(biāo)的Y軸方向REL_Y(代碼為0 x01),指示鼠標(biāo)中輪子方向 REL_WHEEL(代碼為0 x08). 操作系統(tǒng)HID接口 對HID接口的測試結(jié)果如右圖所 示。 圖形顯示基本原理 隨著計算機(jī)科學(xué)技術(shù)的迅猛發(fā)展,借助于 計算機(jī)的圖形顯示技術(shù)、圖像處理技術(shù)和模式識 別技術(shù)均取
20、得了重大進(jìn)展。僅在電視節(jié)目制作系 統(tǒng)中,就有電視字幕機(jī)、三維動畫工作站和非線 性編輯系統(tǒng)等幾大應(yīng)用領(lǐng)域。而在這幾大應(yīng)用領(lǐng) 域中,都離不開計算機(jī)圖形顯示技術(shù)。 圖形顯示基本原理 談到計算機(jī)圖形顯示技術(shù),可分為硬件和軟件兩 大部分,且這兩大部分密切相關(guān)。就廣義的圖形 來說,可以分為由計算機(jī)生成的字幕與圖形、由 掃描儀輸入的圖 形、由圖像卡輸入的活動圖像及 由該卡捕捉到的單幀圖像(可以用某一規(guī)定的圖 形格式來存儲)等。當(dāng)這些圖形圖像以文件形式 存儲下來時,可以有靜態(tài)或動態(tài)、低 分辨率或高 分辨率等數(shù)十種格式。 圖形顯示基本原理 1圖形適配器及其顯示模式 從1981年問世的ibmpc機(jī)到當(dāng)今的第4代
21、Core系列微機(jī),其圖形顯示方式都是通過圖形適 配器送到光柵掃描幀緩沖式顯示器進(jìn)行顯示的, 而圖形適配器則是一塊插在計算機(jī)主板上總線擴(kuò) 充槽內(nèi)的插卡,它溝通了主機(jī)與顯示器的聯(lián)系, 一般簡稱作顯示卡。 圖形顯示基本原理 2光柵圖形顯示器的工作原理 在圖形顯示卡上都有一個由視頻存儲器vram組 成的顯示緩沖區(qū),它接受并暫存計算機(jī)送來的圖形圖 像數(shù)字信息,經(jīng)da轉(zhuǎn)換為模擬信號后,再送到顯 示器 去顯示。早期的mda卡上僅有4kb容量的顯示 緩沖存儲器,到標(biāo)準(zhǔn)vga卡時容量增至512kb。增強(qiáng) vga卡一般為1mb容量,而目前擴(kuò)展功能的顯示卡 上,顯示緩沖區(qū)(顯存)的容量已達(dá)到2Gb甚至更大。 顯示緩
22、沖區(qū)可以看成是一個與屏幕上像素分布一 一對應(yīng)的二維矩陣,其中的每一個存儲單元對應(yīng)著屏 幕上的一個像素,其位置可以由二維坐標(biāo)(x,y) 來表示。顯示緩沖區(qū)的存儲單元與顯示器屏幕坐標(biāo)的 對應(yīng)關(guān)系可以由下頁圖片所示。 圖形顯示基本原理 圖形顯示基本原理 3圖形顯示過程 圖形的顯示過程應(yīng)該從硬件和軟件兩個方面 來說。就硬件方面來說,當(dāng)電子束掃描到屏幕上 某一像素的位置(坐標(biāo))時,顯示器中的顯示處 理器 dpu(display processing unit)會同時 從對應(yīng)的顯示緩沖單元中取出像素值,并以此查 找彩色表的地址,從該地址處得到該像素的紅、 綠、藍(lán)三基色分量,經(jīng)da轉(zhuǎn)換后分別控制三基 色電子
23、槍或LCD顯示電路,使屏幕上該像素顯示 出三基色的混合色。在圖2示例中,彩色表的紅 、綠分量分別為15,而藍(lán)分量為0,因此,屏幕 上該像素的顏色會是黃色。 圖形顯示基本原理 就軟件方面來說,要完成圖形顯示的初始化及圖形 的加工。這里,初始化的意思是要將計算機(jī)的顯示方 式設(shè)置為顯示器所能夠顯示的某一種模式,并將所有 的顯示緩沖單元清零,另外,對彩色表的每一個單元 要分別填上預(yù)定的顏色值,使彩色索引與具體的顏色 聯(lián)系起來。 圖形加工則是圖形軟件的主要任務(wù),其主要內(nèi)容 是:根據(jù)需要顯示的圖形內(nèi)容,隨時改寫顯示緩沖單 元的內(nèi)容。這是因?yàn)槠聊簧巷@示的圖形是由顯示卡上 顯示緩沖區(qū)中的內(nèi)容唯一決定的。一旦在
24、顯示緩沖單 元中寫入要求的彩色索引值,圖形就自然在屏幕上顯 示出來了。 操作系統(tǒng)焦點(diǎn)模型 無論是 Windows 應(yīng)用程序還是 Linux 應(yīng)用程序 的開發(fā)人員,焦點(diǎn)( focus )都是一個非常常見 的一個概念。那么焦點(diǎn)究竟是什么呢?簡單的說 ,焦點(diǎn)決定了由哪個窗口或者控件接收鍵盤或鼠 標(biāo)輸入信息,因此,它又被稱作輸入焦點(diǎn)。對于 用戶來說,最直觀的感覺是,有光標(biāo)閃動的窗口 或者被高亮的控件就有焦點(diǎn)。 操作系統(tǒng)焦點(diǎn)模型 很多初級應(yīng)用程序員或者 Windows 用戶有這樣 一個誤解,認(rèn)為凡是鼠標(biāo)點(diǎn)擊的窗口就是焦點(diǎn)窗 口。當(dāng)出現(xiàn)有的窗口或者控件點(diǎn)擊后沒有反應(yīng)的 現(xiàn)象時,就認(rèn)為是焦點(diǎn)出現(xiàn)了問題。事實(shí)
25、上,焦 點(diǎn)僅僅控制著鍵盤的輸入,而鼠標(biāo)輸入與焦點(diǎn)沒 有直接關(guān)系。用戶之所以有這樣的誤解是由于另 一個概念,系統(tǒng)的焦點(diǎn)模式(focus mode )。 焦點(diǎn)模式?jīng)Q定了鼠標(biāo)如何使一個窗口獲得焦點(diǎn)。 操作系統(tǒng)焦點(diǎn)模型 一般來說,焦點(diǎn)模式被分為三種: click-to focus :這種模式就是指鼠標(biāo)點(diǎn)擊的窗口就可獲得焦點(diǎn)。這是 Windows用戶最常見的一種模式。鼠標(biāo)點(diǎn)擊的窗口會被激活,被置于所有 窗口的最前面,并接收鍵盤輸入。 focus-follow-mouse :有的地方也稱這種模式為 pointer focus 。它 是指鼠標(biāo)下的窗口可以獲取焦點(diǎn)。當(dāng)鼠標(biāo)移到一個可以獲得焦點(diǎn)的窗口的范 圍內(nèi),
26、用戶不需要點(diǎn)擊窗口的某個地方就可以激活這個窗口,接收鍵盤輸入 。但是,這個窗口不一定會被置于所有窗口的最前面。當(dāng)鼠標(biāo)移出這個窗口 的范圍時,這個窗口也會隨之失去焦點(diǎn)。 sloppy focus :這種模式與 focus-follow-mouse 一樣,當(dāng)鼠標(biāo)移至 某窗口的范圍內(nèi)的時候,該窗口會獲得焦點(diǎn)。與 focus-follow-mouse 不 同的是,當(dāng)鼠標(biāo)移出這個窗口范圍時,焦點(diǎn)也不會隨之改變。只有當(dāng)鼠標(biāo)移 動到別的可以接收焦點(diǎn)的窗口時,系統(tǒng)焦點(diǎn)才改變。 不同的系統(tǒng)對焦點(diǎn)模式的支持不同,所使用的焦點(diǎn)模型也有很大的區(qū)別。 操作系統(tǒng)焦點(diǎn)模型 Linux X 系統(tǒng)中的焦點(diǎn)系統(tǒng) Linux 上的
27、界面系統(tǒng)使用的是 X 窗口系統(tǒng)。X 是 一個面向網(wǎng)絡(luò)的窗口系統(tǒng),它采用了 Client- Server 的模型。Client 可以看做是X系統(tǒng)下運(yùn)行 的應(yīng)用程序。X Server 為各個 Client 提供了界 面方面的服務(wù)。Client 和 Server 可以不在同一 臺機(jī)器上運(yùn)行,它們通過網(wǎng)絡(luò)發(fā)送請求和消息。 操作系統(tǒng)焦點(diǎn)模型 Windows 上的焦點(diǎn)是一個局部的概念,每個線程都擁有 自己的焦點(diǎn)窗口。但是在 X 系統(tǒng)中,焦點(diǎn)是一個全局的 概念。整個系統(tǒng)中只有一個 X 窗口擁有 X 焦點(diǎn)。應(yīng)用程 序可以通過 XSetInputFocus 來設(shè)置焦點(diǎn)窗口。與 Windows 不同的是,在 Li
28、nux 上不可見的窗口是不能被 設(shè)置為焦點(diǎn)窗口的。 在 X 系統(tǒng)中, X Server 會在窗口獲得或者失去焦點(diǎn)時發(fā) 送 FocusIn 和 FocusOut 事件通知Client。但是和 Windows 不同的是,并不是所有窗口都能在焦點(diǎn)切換時 收到通知,只有創(chuàng)建時選擇了 FocusChangeMask 的窗 口才能接收到焦點(diǎn)變化事件。 操作系統(tǒng)焦點(diǎn)模型 Linux上鼠標(biāo)與鍵盤輸入模型 操作系統(tǒng)焦點(diǎn)模型 X 系統(tǒng)有著非常特殊的鍵盤輸入模型。在一般情 況下(沒有應(yīng)用調(diào)用了 XGrabKey 或者 XGrabKeyboard 的情況下),X 系統(tǒng)下鍵盤輸 入不僅與焦點(diǎn)有關(guān),還與鼠標(biāo)位置相關(guān)。如果
29、當(dāng) 前鼠標(biāo)位于焦點(diǎn)窗口之外,那么,和 Windows 一樣,X Server 會將鍵盤或鼠標(biāo)事件發(fā)送給焦點(diǎn) 窗口。但是,如果鼠標(biāo)位于焦點(diǎn)窗口的子窗口上 ,那么,鍵盤事件會直接發(fā)送給這個子窗口。 應(yīng)用程序鼠標(biāo)捕獲與程序處理 前面我們已經(jīng)講過鍵盤與鼠標(biāo)事件的處理,這次 聊聊鼠標(biāo)事件處理。我們從隊列里獲取到事件以 后,可以檢測事件的類型,鼠標(biāo)事件有兩個:鼠 標(biāo)鍵(按下、松開)和鼠標(biāo)移動。一般的檢測代碼 如下: 應(yīng)用程序鼠標(biāo)捕獲與程序處理 SDL_Event myEvent;/事件 int quit=0; while (!quit) while (SDL_PollEvent( break; case SDL_MOUSEBUTTONDOWN:/鼠標(biāo)按下 break; case SDL_MOUSEBUTTONUP:/鼠標(biāo)鍵松開 break; case SDL_MOUSEMOTION:/鼠標(biāo)移動 break; 應(yīng)用程序鼠標(biāo)捕獲與程序處理 在SDL_MOUSEBUTTONDOWN、SDL_MOUSEBUTTONUP事件中,我們 可以檢測鼠標(biāo)按鍵信息,然后加以處理。鼠標(biāo)按鍵事件的結(jié)構(gòu): 復(fù)制代碼 typedef struc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨界融合教育領(lǐng)域營銷團(tuán)隊的創(chuàng)新教育模式
- 餐飲行業(yè)中的品牌建設(shè)與市場推廣策略研究
- 購物中心的特色定位與市場細(xì)分策略
- 高端商業(yè)空間茶館墻面的裝飾風(fēng)格趨勢
- 河南2025年01月河南省新鄉(xiāng)市市直機(jī)關(guān)(單位)2025年度公開遴選12名公務(wù)員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 河南2025年01月河南省林州市部分市直單位2025年公開選調(diào)10名工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 跨學(xué)科合作下的超聲科醫(yī)學(xué)教育新模式
- 財報背后的故事解讀企業(yè)運(yùn)營密碼
- 進(jìn)貨返利合同范本
- 運(yùn)動鍛煉在預(yù)防血液病中的作用
- 部編版八年級物理(上冊)期末試卷(帶答案)
- 《衡水內(nèi)畫》課程標(biāo)準(zhǔn)
- DB32T 4400-2022《飲用水次氯酸鈉消毒技術(shù)規(guī)程》
- 化學(xué)品(氬氣+二氧化碳混合氣)安全技術(shù)使用說明書
- 煤層氣開發(fā)-第2章-煤層氣地質(zhì)
- 美羅華(利妥昔單抗)課件
- 稅務(wù)簡易注銷課件
- 人教版五年級數(shù)學(xué)下冊第六單元分層作業(yè)設(shè)計
- 肺葉切除術(shù)和全肺切除術(shù)的麻醉課件
- 智能制造在食品加工業(yè)的應(yīng)用
- BI軟件工程師個人年終工作總結(jié)
評論
0/150
提交評論