專利名稱:基于Linux系統(tǒng)的輸入事件處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,特別涉及一種基于Linux系統(tǒng)的輸入事件處理方法和系統(tǒng)。
背景技術(shù):
作為一個(gè)開放源代碼并且免費(fèi)的操作系統(tǒng),Linux系統(tǒng)已經(jīng)廣泛應(yīng)用在服務(wù)器、嵌入式等領(lǐng)域。Linux系統(tǒng)執(zhí)行程序時(shí)可以分作兩個(gè)部分,一個(gè)為核心區(qū)間(Kernel Space),也可稱為內(nèi)核、核心層或者Kernel等;另一個(gè)為使用者區(qū)間(User Space),也可稱為用戶區(qū)間或者用戶層等。與硬件相關(guān)的存取控制都是在內(nèi)核中執(zhí)行,而一般使用者寫的程序都是在用戶層執(zhí)行。用戶層和內(nèi)核是兩個(gè)不同的區(qū)域,各區(qū)域無法直接使用對方的資源,需要通過一些系統(tǒng)調(diào)用才能進(jìn)行。系統(tǒng)調(diào)用會對調(diào)用者的權(quán)限和操作做檢查,以保護(hù)內(nèi)核程序的運(yùn)行,所述內(nèi)核程序的運(yùn)行也可以稱為內(nèi)核線程的執(zhí)行。例如,當(dāng)要存取硬件時(shí),會通過系統(tǒng)調(diào)用(System Call)的方式從用戶層跳到內(nèi)核去執(zhí)行,如通過驅(qū)動(Drivers)存取硬件信息?,F(xiàn)有技術(shù)中,在Linux系統(tǒng)下,對于輸入事件的處理方法通常包括兩次派發(fā)的過程。具體的,請參考圖1,其為現(xiàn)有的基于Linux系統(tǒng)的輸入事件處理方法的流程示意圖。如圖1所示,所述處理方法包括:步驟SlO:獲取基本輸入事件,具體的,打開Linux輸入設(shè)備的設(shè)備文件,讀取輸入設(shè)備的事件,完成這一讀取操作后,進(jìn)行下一步操作;步驟Sll:將所述基本輸入事件轉(zhuǎn)換成圖形庫消息,具體的,在用戶層進(jìn)程中,將從設(shè)備文件讀取來的基本輸入事件轉(zhuǎn)換成圖形庫消息,而完成這一處理操作后,又將結(jié)果派發(fā)至相應(yīng)的目標(biāo)進(jìn)程以進(jìn)行下一步操作;步驟S12:響應(yīng)所述圖形庫消息,具體的,在用戶層的目標(biāo)進(jìn)程中,根據(jù)派發(fā)來的圖形庫消息,做出響應(yīng),例如,表現(xiàn)為顯示屏上某個(gè)窗口的打開或者關(guān)閉等。如上所述,在現(xiàn)有技術(shù)中,需要進(jìn)行兩次派發(fā)過程,從而需要相對較大的系統(tǒng)開銷及運(yùn)行時(shí)間。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于Linux系統(tǒng)的輸入事件處理方法和系統(tǒng),以解決現(xiàn)有技術(shù)中對輸入事件的處理需要進(jìn)行兩次派發(fā)過程,從而需要相對較大的系統(tǒng)開銷及運(yùn)行時(shí)間的問題。為解決上述技術(shù)問題,本發(fā)明提供一種基于Linux系統(tǒng)的輸入事件處理方法,包括:步驟1:獲取基本輸入事件;步驟2:將所述基本輸入事件轉(zhuǎn)換成圖形庫消息;步驟3:響應(yīng)所述圖形庫消息;
其中,所述步驟2與步驟I于同一進(jìn)程進(jìn)行,或者所述步驟2與步驟3于同一進(jìn)程進(jìn)行??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理方法中,在內(nèi)核線程中進(jìn)行步驟I及步驟2,在目標(biāo)進(jìn)程中進(jìn)行步驟3??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理方法中,在內(nèi)核線程中進(jìn)行步驟1,在目標(biāo)進(jìn)行中進(jìn)行步驟2及步驟3。可選的,在所述的基于Linux系統(tǒng)的輸入事件處理方法中,所述基本輸入事件為直接來自輸入設(shè)備的操作事件。可選的,在所述的基于Linux系統(tǒng)的輸入事件處理方法中,所述輸入設(shè)備包括鼠標(biāo)、鍵盤、觸摸屏中的一種或多種。可選的,在所述的基于Linux系統(tǒng)的輸入事件處理方法中,每個(gè)輸入設(shè)備具有一個(gè)與之對應(yīng)的事件處理器,用以向目標(biāo)進(jìn)程派發(fā)消息。可選的,在所述的基于Linux系統(tǒng)的輸入事件處理方法中,所述圖形庫消息包括得到焦點(diǎn)、失去焦點(diǎn)、鍵盤按鍵按下、鍵盤按鍵抬起、鼠標(biāo)按鍵按下、鼠標(biāo)按鍵抬起中的一種或多種。本發(fā)明還提供一種基于Linux系統(tǒng)的輸入事件處理系統(tǒng),包括:讀取模塊,用以獲取基本輸入事件;處理模塊,用以將所述基本輸入事件轉(zhuǎn)換成圖形庫消息;響應(yīng)模塊,用以響應(yīng)所述圖形庫消息;其中,所述處理模塊與讀取模塊于同一進(jìn)程中工作,或者所述處理模塊與響應(yīng)模塊于同一進(jìn)程中工作??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)中,所述讀取模塊與處理模塊于內(nèi)核線程中工作,所述響應(yīng)模塊于目標(biāo)進(jìn)程中工作??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)中,所述讀取模塊于內(nèi)核線程中工作,所述處理模塊與響應(yīng)模塊于目標(biāo)進(jìn)程中工作??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)中,所述基本輸入事件為直接來自輸入設(shè)備的操作事件??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)中,所述輸入設(shè)備包括鼠標(biāo)、鍵盤、觸摸屏中的一種或多種??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)中,每個(gè)輸入設(shè)備具有一個(gè)與之對應(yīng)的事件處理器,用以向目標(biāo)進(jìn)程派發(fā)消息??蛇x的,在所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)中,所述圖形庫消息包括得到焦點(diǎn)、失去焦點(diǎn)、鍵盤按鍵按下、鍵盤按鍵抬起、鼠標(biāo)按鍵按下、鼠標(biāo)按鍵抬起中的一種或多種。在本發(fā)明提供的基于Linux系統(tǒng)的輸入事件處理方法及系統(tǒng)中,通過將基本輸入事件轉(zhuǎn)換成圖形庫消息與獲取基本輸入事件于同一進(jìn)程進(jìn)行,或者將基本輸入事件轉(zhuǎn)換成圖形庫消息與響應(yīng)所述圖形庫消息于同一進(jìn)程進(jìn)行,使得對輸入事件的處理只需要進(jìn)行一次派發(fā)過程,從而降低了系統(tǒng)開銷及運(yùn)行時(shí)間。
圖1是現(xiàn)有的基于Linux系統(tǒng)的輸入事件處理方法的流程示意圖;圖2是本發(fā)明實(shí)施例一的基于Linux系統(tǒng)的輸入事件處理方法的流程示意圖;圖3是本發(fā)明實(shí)施例一的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)的模塊示意圖;圖4是本發(fā)明實(shí)施例一的獲取基本輸入事件的模塊示意圖;圖5是本發(fā)明實(shí)施例二的基于Linux系統(tǒng)的輸入事件處理方法的流程示意圖;圖6是本發(fā)明實(shí)施例二的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)的模塊示意圖。
具體實(shí)施例方式以下結(jié)合附圖和具體實(shí)施例對本發(fā)明提供的基于Linux系統(tǒng)的輸入事件處理方法及系統(tǒng)作進(jìn)一步詳細(xì)說明。根據(jù)下面說明和權(quán)利要求書,本發(fā)明的優(yōu)點(diǎn)和特征將更清楚。實(shí)施例一在本實(shí)施例中,提供一種基于Linux系統(tǒng)的輸入事件處理方法。請參考圖2,其為本發(fā)明實(shí)施例一的基于Linux系統(tǒng)的輸入事件處理方法的流程示意圖。如圖2所示,所述處理方法包括: 步驟S20:獲取基本輸入事件;步驟S21:將所述基本輸入事件轉(zhuǎn)換成圖形庫消息;步驟S22:響應(yīng)所述圖形庫消息;其中,所述步驟S21與步驟S20于同一內(nèi)核進(jìn)程進(jìn)行。在本實(shí)施例中,相應(yīng)的,還提供一種基于Linux系統(tǒng)的輸入事件處理系統(tǒng)。請參考圖3,其為本發(fā)明實(shí)施例一的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)的模塊示意圖。如圖3所示,所述處理系統(tǒng)包括:讀取模塊30,用以獲取基本輸入事件;處理模塊31,用以將所述基本輸入事件轉(zhuǎn)換成圖形庫消息;響應(yīng)模塊32,用以響應(yīng)所述圖形庫消息;其中,所述處理模塊31與讀取模塊30于同一內(nèi)核進(jìn)程中工作。由此,通過該處理方法或者處理系統(tǒng)只需在將基本輸入事件轉(zhuǎn)換成圖形庫消息之后,進(jìn)行一次派發(fā),將圖形庫消息派發(fā)至相應(yīng)進(jìn)程即可,從而降低了系統(tǒng)開銷及運(yùn)行時(shí)間。具體的,通過讀取模塊30獲取直接來自輸入設(shè)備的操作事件,所述輸入設(shè)備例如包括:鼠標(biāo)、鍵盤、觸摸屏、寫字板等,所述操作事件即為對各類輸入設(shè)備的操作,例如,移動、單擊、雙擊鼠標(biāo),敲打鍵盤,點(diǎn)擊觸摸屏等。在本實(shí)施例中,獲取基本輸入事件是在內(nèi)核線程中進(jìn)行。請參考圖4,其為本發(fā)明實(shí)施例一的獲取基本輸入事件的模塊示意圖。在本實(shí)施例中,僅示意性的示出了兩個(gè)輸入設(shè)備41,在本發(fā)明的其他實(shí)施例中,可包括多個(gè)輸入設(shè)備,例如:包括三個(gè)輸入設(shè)備,均為鼠標(biāo);或者包括三個(gè)輸入設(shè)備,分別為:鼠標(biāo)、鍵盤及觸摸屏。在此,每個(gè)輸入設(shè)備41均有一個(gè)與之對應(yīng)的事件處理器(HandlerS)44。當(dāng)對一個(gè)輸入設(shè)備41進(jìn)行操作(例如:移動鼠標(biāo)),從外部看產(chǎn)生操作事件,而從Linux系統(tǒng)內(nèi)部看產(chǎn)生一基本輸入事件時(shí),通過驅(qū)動42將基本輸入事件傳送至核心層(Input Core) 43,接著,與被操作的輸入設(shè)備41對應(yīng)的事件處理器(Handlers) 44從核心層43中截取該基本輸入事件,由此,便完成了獲取基本輸入事件的操作。接著,同樣在該內(nèi)核線程中,處理模塊31將所述基本輸入事件轉(zhuǎn)換成圖形庫消息。更具體的,可通過⑶I (Graphical User Interface)系統(tǒng)完成將基本輸入事件轉(zhuǎn)換成圖形庫消息的操作。所述圖形庫消息包括:得到焦點(diǎn)、失去焦點(diǎn)、鍵盤按鍵按下、鍵盤按鍵抬起、鼠標(biāo)按鍵按下、鼠標(biāo)按鍵抬、鼠標(biāo)滾動等Linux系統(tǒng)內(nèi)部消息,通過將基本輸入事件轉(zhuǎn)換成圖形庫消息可便于后續(xù)Linux系統(tǒng)對外部操作的響應(yīng)。由于,獲取基本輸入事件及將所述基本輸入事件轉(zhuǎn)換成圖形庫消息,該兩步操作均是在內(nèi)核線程中進(jìn)行,因此,無需派發(fā)步驟。而當(dāng)內(nèi)核線程完成了對輸入事件轉(zhuǎn)換成圖形庫消息的操作之后,需要一派發(fā)步驟,即將圖形庫消息派發(fā)至相應(yīng)的目標(biāo)進(jìn)程??紤]到目標(biāo)進(jìn)程可能處于非激活狀態(tài)或者忙碌狀態(tài),進(jìn)一步的,所述內(nèi)核線程可先緩存該圖形庫消息,及至目標(biāo)進(jìn)程空閑并處于激活狀態(tài)時(shí),將該圖形庫消息發(fā)送至目標(biāo)進(jìn)程。而這些獲取、處理及派發(fā)的操作均可通過與每個(gè)輸入設(shè)備對應(yīng)的事件處理器(Handlers)予以完成。最后,目標(biāo)進(jìn)程根據(jù)派發(fā)來的圖形庫消息,做出響應(yīng)。具體的,例如,表現(xiàn)為顯示屏上某個(gè)窗口的打開或者關(guān)閉等。實(shí)施例二請參考圖5及圖6,其中,圖5為本發(fā)明實(shí)施例二的基于Linux系統(tǒng)的輸入事件處理方法的流程示意圖;圖6為本發(fā)明實(shí)施例二的基于Linux系統(tǒng)的輸入事件處理系統(tǒng)的模塊不意圖。本實(shí)施例與實(shí)施例一的差別在于,所述步驟S51與步驟S52于同一進(jìn)程進(jìn)行,在此為目標(biāo)進(jìn)程,而步驟S50于另一進(jìn)程進(jìn)行,在此為內(nèi)核線程;同樣的,所述處理模塊61與響應(yīng)模塊62于同一進(jìn)程中工作,在此為目標(biāo)進(jìn)程,而讀取模塊60于另一進(jìn)程中工作,在此為內(nèi)核線程。易知的,由此,被派發(fā)的消息將為基本輸入事件。其他處理可相應(yīng)參考實(shí)施例一,本發(fā)明對此不再贅述。上述描述僅是對本發(fā)明較佳實(shí)施例的描述,并非對本發(fā)明范圍的任何限定,本發(fā)明領(lǐng)域的普通技術(shù)人員根據(jù)上述揭示內(nèi)容做的任何變更、修飾,均屬于權(quán)利要求書的保護(hù)范圍。
權(quán)利要求
1.一種基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,包括: 步驟1:獲取基本輸入事件; 步驟2:將所述基本輸入事件轉(zhuǎn)換成圖形庫消息; 步驟3:響應(yīng)所述圖形庫消息; 其中,所述步驟2與步驟I于同一進(jìn)程進(jìn)行,或者所述步驟2與步驟3于同一進(jìn)程進(jìn)行。
2.如權(quán)利要求1所述的基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,在內(nèi)核線程中進(jìn)行步驟I及步驟2,在目標(biāo)進(jìn)程中進(jìn)行步驟3。
3.如權(quán)利要求1所述的基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,在內(nèi)核線程中進(jìn)行步驟1,在目標(biāo)進(jìn)行中進(jìn)行步驟2及步驟3。
4.如權(quán)利要求1至3中的任一項(xiàng)所述的基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,所述基本輸入事件為直接來自輸入設(shè)備的操作事件。
5.如權(quán)利要求4所述的基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,所述輸入設(shè)備包括鼠標(biāo)、鍵盤、觸摸屏中的一種或多種。
6.如權(quán)利要求5所述的基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,每個(gè)輸入設(shè)備具有一個(gè)與之對應(yīng)的事件處理器,用以向目標(biāo)進(jìn)程派發(fā)消息。
7.如權(quán)利要求1至3中的任一項(xiàng)所述的基于Linux系統(tǒng)的輸入事件處理方法,其特征在于,所述圖形庫消息包括得到焦點(diǎn)、失去焦點(diǎn)、鍵盤按鍵按下、鍵盤按鍵抬起、鼠標(biāo)按鍵按下、鼠標(biāo)按鍵抬起中的一種或多種。
8.一種基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,包括: 讀取模塊,用以獲取基本輸入事件; 處理模塊,用以將所述基本輸入事件轉(zhuǎn)換成圖形庫消息; 響應(yīng)模塊,用以響應(yīng)所述圖形庫消息; 其中,所述處理模塊與讀取模塊于同一進(jìn)程中工作,或者所述處理模塊與響應(yīng)模塊于同一進(jìn)程中工作。
9.如權(quán)利要求8所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,所述讀取模塊與處理模塊于內(nèi)核線程中工作,所述響應(yīng)模塊于目標(biāo)進(jìn)程中工作。
10.如權(quán)利要求8所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,所述讀取模塊于內(nèi)核線程中工作,所述處理模塊與響應(yīng)模塊于目標(biāo)進(jìn)程中工作。
11.如權(quán)利要求8至10中的任一項(xiàng)所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,所述基本輸入事件為直接來自輸入設(shè)備的操作事件。
12.如權(quán)利要求11所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,所述輸入設(shè)備包括鼠標(biāo)、鍵盤、觸摸屏中的一種或多種。
13.如權(quán)利要求12所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,每個(gè)輸入設(shè)備具有一個(gè)與之對應(yīng)的事件處理器,用以向目標(biāo)進(jìn)程派發(fā)消息。
14.如權(quán)利要求8至10中的任一項(xiàng)所述的基于Linux系統(tǒng)的輸入事件處理系統(tǒng),其特征在于,所述圖形庫消息包括得到焦點(diǎn)、失去焦點(diǎn)、鍵盤按鍵按下、鍵盤按鍵抬起、鼠標(biāo)按鍵按下、鼠標(biāo)按鍵抬起中的一種或多種。
全文摘要
本發(fā)明提供了一種基于Linux系統(tǒng)的輸入事件處理方法和系統(tǒng),其中,所述方法包括步驟1獲取基本輸入事件;步驟2將所述基本輸入事件轉(zhuǎn)換成圖形庫消息;步驟3響應(yīng)所述圖形庫消息;其中,所述步驟2與步驟1于同一進(jìn)程進(jìn)行,或者所述步驟2與步驟3于同一進(jìn)程進(jìn)行。通過將基本輸入事件轉(zhuǎn)換成圖形庫消息與獲取基本輸入事件于同一進(jìn)程進(jìn)行,或者將基本輸入事件轉(zhuǎn)換成圖形庫消息與響應(yīng)所述圖形庫消息于同一進(jìn)程進(jìn)行,使得對輸入事件的處理只需要進(jìn)行一次派發(fā)過程,從而降低了系統(tǒng)開銷及運(yùn)行時(shí)間。
文檔編號G06F9/46GK103164265SQ20111042619
公開日2013年6月19日 申請日期2011年12月16日 優(yōu)先權(quán)日2011年12月16日
發(fā)明者梁金祥 申請人:盛樂信息技術(shù)(上海)有限公司