1.控制讀寫(xiě)、輸入的字符設(shè)備存儲(chǔ)在系統(tǒng)的哪里?
2.如何在系統(tǒng)文件中篩選存儲(chǔ)設(shè)備?請(qǐng)寫(xiě)出具體步驟。
先切換至系統(tǒng)目錄下
遍歷系統(tǒng)目錄下的所有目錄
找到設(shè)備信息相關(guān)的文件
判斷是否為鍵盤(pán)鍵盤(pán)設(shè)備(文件是否存在&是否可以讀取文件)
? 若是:將文件路徑加入列表
若不是:返回-1
3.監(jiān)控鍵盤(pán)設(shè)備是指什么?具體如何實(shí)現(xiàn)?
監(jiān)控設(shè)備即對(duì)設(shè)備添加文件描述符,監(jiān)控設(shè)備處于各種狀態(tài)。
將設(shè)備映射到某對(duì)象中
建立字典,為設(shè)備添加文件描述符
4.在監(jiān)控鍵盤(pán)輸入的過(guò)程中,用什么庫(kù)來(lái)獲取原始數(shù)據(jù)?用什么庫(kù)來(lái)監(jiān)聽(tīng)設(shè)備狀態(tài)?處理原始數(shù)據(jù)的庫(kù)是如何處理原始數(shù)據(jù)的?
獲取原始數(shù)據(jù):evdev
監(jiān)聽(tīng)設(shè)備狀態(tài):select庫(kù)
endev庫(kù)將設(shè)備輸入轉(zhuǎn)化成多個(gè)event對(duì)象,故在函數(shù)中需要對(duì)其解析
5.對(duì)于鍵盤(pán)設(shè)備來(lái)說(shuō),shift、caps狀態(tài)是各種狀態(tài)?
6.利用python實(shí)現(xiàn)鍵盤(pán)輸入監(jiān)控的總體設(shè)計(jì)。
找到所有的鍵盤(pán)設(shè)備
獲取鍵盤(pán)輸入的數(shù)據(jù)
解析從鍵盤(pán)端獲取的輸入數(shù)據(jù)
在字符緩沖區(qū)處理特殊按鍵
將獲取到的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸至服務(wù)器端
7.獲取鍵盤(pán)數(shù)據(jù)過(guò)程中要實(shí)現(xiàn)哪些功能?實(shí)現(xiàn)的步驟又是什么?通過(guò)那些工具實(shí)現(xiàn)?
1st:要獲得需要的鍵盤(pán)設(shè)備
產(chǎn)生本地的服務(wù)器
關(guān)聯(lián)鍵盤(pán)和本地服務(wù)器(設(shè)定文本傳輸任務(wù))
生成緩沖區(qū)
通過(guò)select庫(kù)監(jiān)聽(tīng)鍵盤(pán)設(shè)備
讀取鍵盤(pán)的輸入
2st:先尋找指定鍵盤(pán)
在本地創(chuàng)建服務(wù)器
連鍵盤(pán)和服務(wù)器用文本傳輸相關(guān)聯(lián)
將文被傳輸后教程緩沖池
用select庫(kù)監(jiān)聽(tīng)鍵盤(pán)設(shè)備,并將鍵盤(pán)操作存儲(chǔ)在數(shù)組中;
解析鍵盤(pán)操作,生成字符,并將字符存儲(chǔ)在緩沖區(qū)中。
3st:監(jiān)聽(tīng)鍵盤(pán)設(shè)備使用select庫(kù)
使用evdev庫(kù)解析鍵盤(pán)設(shè)備的輸入,并將每一個(gè)輸入轉(zhuǎn)化為event對(duì)象
篩選類(lèi)型為EV_key類(lèi)型的鍵盤(pán)輸入
8.解析獲取的原始數(shù)據(jù)和之前的數(shù)據(jù)有何不同?需要實(shí)現(xiàn)哪些功能?
有些按鍵屬于組合鍵,不能使用傳統(tǒng)的方式獲取信息,如:shift、caps(本功能可以理解為狀態(tài)管理的函數(shù))
需要實(shí)現(xiàn)的功能:
通過(guò)參數(shù)傳遞獲取shift、caps的初始狀態(tài)
通過(guò)方法轉(zhuǎn)化其狀態(tài)
通過(guò)方法對(duì)轉(zhuǎn)化特定的shift、caps的狀態(tài)
9.描述linux下與設(shè)備驅(qū)動(dòng)相關(guān)的文件是如何存儲(chǔ)的?