新四季網

一種嵌入式linux設備的按鍵控制方法及裝置與流程

2023-05-11 04:52:47 1


本發明涉及嵌入式linux設備技術領域,尤其涉及一種嵌入式linux設備的按鍵控制方法及裝置。



背景技術:

linux內核有完善的input框架,可以基於usb-hid和adc採樣實現按鍵功能,pc用的usb鍵盤一般是採用usb-hid實現,智能硬體上的按鍵一般採用adc實現。

linux內核會為用戶空間提供按鍵事件的讀取接口,對用戶空間來說就是系統調用,應用程式通過系統調用可以獲取到按鍵的鍵碼和鍵值。

現有的一種技術就是通過系統調用獲取到鍵碼和鍵值後直接對按鍵進行解析然後做按鍵的響應動作。

但現有的這種技術存在很多缺點:首先,很難適應多按鍵,每個按鍵都有可能有多種響應動作的情況,對於很多智能硬體設備來說,交互簡單易用是設計考量的重要因素。按鍵過多會增加使用的複雜性,按鍵過少很難把功能覆蓋全,因此,按鍵的短按按下,短按鬆開,長按,長按鬆開都會被利用於響應按鍵交互的動作,現有的這種技術並不能解決很好的解決複雜的按鍵交互情況,而且代碼的可讀性差,按鍵擴展性差,需要增加、減少按鍵或者按鍵功能調整時需要花費很多時間,可維護性差;其次,不能很好地和linux線程配合起來使用,這樣,當有些按鍵響應比較費時,就將會影響到下一個按鍵的及時響應。

如何針對嵌入式linux設備多按鍵和多種響應情況的問題,提供一套簡單易用,代碼可讀性好,並且基於此方法實現的按鍵功能可使得用戶有更好的體驗是目前亟待解決的技術問題。



技術實現要素:

本發明的目的在於克服上述現有技術的不足,提供一種嵌入式linux設備的按鍵控制方法及裝置,旨在解決現有技術針對嵌入式linux設備多按鍵和多種響應情況的問題,無法提供一套簡單易用,代碼可讀性好,並且無法實現按鍵功能可使得用戶有更好體驗的技術問題。

本發明是這樣實現的,一種嵌入式linux設備的按鍵控制方法,包括以下步驟:

判斷是否有按鍵事件發生;

若有,則根據所述按鍵事件調用所述按鍵事件的鍵碼和鍵值;

根據所述按鍵事件的鍵碼和鍵值標記所述按鍵事件的行為選項;

根據所述按鍵事件的行為選項創建和啟動按鍵線程;

將所述按鍵事件的行為選項傳入所述按鍵線程內;

在所述按鍵線程內處理所述按鍵事件的行為。

進一步地,所述判斷是否有按鍵事件發生的步驟之前還包括:

預先定義嵌入式linux設備的鍵碼、鍵值及按鍵事件觸發的行為選項;其中,所述鍵碼包括收藏鍵、語音鍵、英語鍵、下一曲鍵、上一曲鍵、暫停播放鍵、微信鍵、童言童語鍵、故事鍵、兒歌鍵及國學鍵;所述鍵值包括短按按下、長按及鬆開;所述行為選項為所述鍵碼和所述鍵值組合後的結果。

進一步地,所述短按按下用於停止上一個按鍵響應的動作,所述長按用於觸發人機互動動作,所述鬆開用於響應當前按鍵的事件。

進一步地,所述根據所述按鍵事件的鍵碼和鍵值標記所述按鍵事件的行為選項的步驟包括:

根據所述按鍵事件的鍵碼和鍵值標記所述按鍵短按按下的行為選項;

或者,根據所述按鍵事件的鍵碼和鍵值標記所述按鍵長按的行為選項;

或者,根據所述按鍵事件的鍵碼和鍵值標記所述按鍵鬆開的行為選項。

進一步地,所述根據所述按鍵事件的行為選項創建和啟動按鍵線程的步驟包括:

根據所述按鍵短按按下的行為選項創建和啟動按鍵短按按下線程;

或者,根據所述按鍵長按的行為選項建和啟動按鍵長按線程;

或者,根據所述鬆開的行為選項建和啟動按鍵鬆開線程。

進一步地,所述將所述按鍵事件的行為選項傳入所述按鍵線程內的步驟包括:

將所述按鍵短按按下的行為選項傳入所述按鍵短按按下線程內;

或者,將所述按鍵長按的行為選項傳入所述按鍵長按線程內;

或者,將所述按鍵鬆開的行為選項傳入所述按鍵鬆開線程內。

進一步地,所述在所述按鍵線程內處理所述按鍵事件的行為的步驟包括:

在所述按鍵短按按下線程內處理所述按鍵短按按下的行為;

或者,在所述按鍵長按線程內處理所述按鍵長按的行為;

或者,在所述按鍵鬆開線程內處理所述按鍵鬆開的行為。

進一步地,所述判斷是否有按鍵事件發生的步驟還包括:

若判斷未有按鍵事件發生,則繼續判斷是否有按鍵事件發生的步驟。

相應地,本發明還提供了一種嵌入式linux設備的按鍵控制裝置,包括:

預先定義模塊,用於預先定義嵌入式linux設備的鍵碼、鍵值及按鍵事件觸發的行為選項;其中,所述鍵碼包括收藏鍵、語音鍵、英語鍵、下一曲鍵、上一曲鍵、暫停播放鍵、微信鍵、童言童語鍵、故事鍵、兒歌鍵及國學鍵;所述鍵值包括短按按下、長按及鬆開;所述行為選項為所述鍵碼和所述鍵值組合後的結果;

判斷模塊,用於判斷是否有按鍵事件發生;

調用模塊,用於在所述判斷模塊判斷有按鍵事件發生時,則根據所述按鍵事件調用所述按鍵事件的鍵碼和鍵值;

標記模塊,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵事件的行為選項;

創建和啟動模塊,用於根據所述按鍵事件的行為選項創建和啟動按鍵線程;

傳入模塊,用於將所述按鍵事件的行為選項傳入所述按鍵線程內;

處理模塊,用於在所述按鍵線程內處理所述按鍵事件的行為。

進一步地,所述標記模塊包括:

第一標記單元,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵短按按下的行為選項;

第二標記單元,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵長按的行為選項;

第三標記單元,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵鬆開的行為選項;

所述創建和啟動模塊包括:

第一創建和啟動單元,用於根據所述按鍵短按按下的行為選項創建和啟動按鍵短按按下線程;

第二創建和啟動單元,用於根據所述按鍵長按的行為選項建和啟動按鍵長按線程;

第三創建和啟動單元,用於根據所述鬆開的行為選項建和啟動按鍵鬆開線程;

所述傳入模塊包括:

第一傳入單元,用於將所述按鍵短按按下的行為選項傳入所述按鍵短按按下線程內;

第二傳入單元,用於將所述按鍵長按的行為選項傳入所述按鍵長按線程內;

第三傳入單元,用於將所述按鍵鬆開的行為選項傳入所述按鍵鬆開線程內;

所述處理模塊包括:

第一處理單元,用於在所述按鍵短按按下線程內處理所述按鍵短按按下的行為;

第二處理單元,用於在所述按鍵長按線程內處理所述按鍵長按的行為;

第三處理單元,用於在所述按鍵鬆開線程內處理所述按鍵鬆開的行為。

本發明的有益效果:本發明提供的嵌入式linux設備的按鍵控制方法,當判斷有按鍵事件發生時,則根據按鍵事件調用按鍵事件的鍵碼和鍵值;根據按鍵事件的鍵碼和鍵值標記按鍵事件的行為選項;根據按鍵事件的行為選項創建和啟動按鍵線程;將按鍵事件的行為選項傳入按鍵線程內;在按鍵線程內處理按鍵事件的行為。本發明針對嵌入式linux設備多按鍵和多種響應情況的問題,提供了一套簡單易用,代碼可讀性好,並且基於此方法實現的按鍵功能可使得用戶有更好的體驗,從而使得本發明具有以下優點:

第一,通過本發明實現的按鍵功能,代碼可讀性好,利於擴展和維護;

第二,通過本發明可以很好的處理多個按鍵和多種觸發類型的按鍵互動設計,給產品帶來更簡潔的體驗;

第三,短按按下用於停止上一個按鍵響應的動作,鬆開時響應當前按鍵的事件,長按時觸發一些人機互動動作。通過這種方式可以提高按鍵的響應效率;

第四,行為選項標記和線程結合起來可以很好的解決快速多次按鍵時按鍵如何響應的問題。

附圖說明

圖1是本發明第一實施例提供的嵌入式linux設備的按鍵控制方法的流程示意圖。

圖2是本發明第二實施例提供的嵌入式linux設備的按鍵控制裝置的結構示意圖。

圖3是圖2提供的嵌入式linux設備的按鍵控制裝置其標記模塊的結構示意圖。

圖4是圖2提供的嵌入式linux設備的按鍵控制裝置其創建和啟動模塊的結構示意圖。

圖5是圖2提供的嵌入式linux設備的按鍵控制裝置其傳入模塊的結構示意圖。

圖6是圖2提供的嵌入式linux設備的按鍵控制裝置其處理模塊的結構示意圖。

具體實施方式

為了使本發明所解決的技術問題、技術方案及有益效果更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。

請參閱圖1,圖1是本發明第一實施例提供的嵌入式linux設備的按鍵控制方法的流程示意圖。如圖1所示,該嵌入式linux設備的按鍵控制方法可以包括以下步驟。

s100、判斷是否有按鍵事件發生;

作為一種可選的實施方式,所述判斷是否有按鍵事件發生的步驟之前還包括:

預先定義嵌入式linux設備的鍵碼、鍵值及按鍵事件觸發的行為選項;其中,所述鍵碼包括收藏鍵、語音鍵、英語鍵、下一曲鍵、上一曲鍵、暫停播放鍵、微信鍵、童言童語鍵、故事鍵、兒歌鍵及國學鍵;所述鍵值包括短按按下、長按及鬆開;所述行為選項為所述鍵碼和所述鍵值組合後的結果。

需要說明的是,本發明實施例中,所述短按按下用於停止上一個按鍵響應的動作,所述長按用於觸發人機互動動作,所述鬆開用於響應當前按鍵的事件,例如,長按觸發語音交互開始,鬆開時語音交互結束。

需要說明的是,本發明實施例中,由於所述行為選項為所述鍵碼和所述鍵值組合後的結果,這樣,所述行為選項的個數為所述鍵碼的個數和所述鍵值個數的乘積,例如,所述鍵碼包括收藏鍵、語音鍵、英語鍵、下一曲鍵、上一曲鍵、暫停播放鍵、微信鍵、童言童語鍵、故事鍵、兒歌鍵及國學鍵共11個,所述鍵值包括短按按下、長按及鬆開共3,則所述行為選項的個數為33個。

需要說明的是,本發明實施例中是通過宏變量定義鍵碼的,具體如下:

#definekey_love60

#definekey_voice63

#definekey_english103

#definekey_next114

#definekey_prev115

#definekey_playpause102

#definekey_wechat62

#definekey_guychat61

#definekey_story28

#definekey_song59

#definekey_sinology129

作為一種可選的實施方式,所述判斷是否有按鍵事件發生的步驟還包括:

若判斷未有按鍵事件發生,則繼續判斷是否有按鍵事件發生的步驟。

s101、若有,則根據所述按鍵事件調用所述按鍵事件的鍵碼和鍵值;

s102、根據所述按鍵事件的鍵碼和鍵值標記所述按鍵事件的行為選項;

作為一種可選的實施方式,所述根據所述按鍵事件的鍵碼和鍵值標記所述按鍵事件的行為選項的步驟包括:

根據所述按鍵事件的鍵碼和鍵值標記所述按鍵短按按下的行為選項;

或者,根據所述按鍵事件的鍵碼和鍵值標記所述按鍵長按的行為選項;

或者,根據所述按鍵事件的鍵碼和鍵值標記所述按鍵鬆開的行為選項。

s103、根據所述按鍵事件的行為選項創建和啟動按鍵線程;

需要說明的是,本發明實施例中,通過linux的線程函數pthread_create(pthread_create是類unix作業系統(unix、linux、macosx等)的創建線程的函數,創建由按鍵輪詢掃描線程去創建,創建的同時啟動線程。

作為一種可選的實施方式,所述根據所述按鍵事件的行為選項創建和啟動按鍵線程的步驟包括:

根據所述按鍵短按按下的行為選項創建和啟動按鍵短按按下線程;

或者,根據所述按鍵長按的行為選項建和啟動按鍵長按線程;

或者,根據所述鬆開的行為選項建和啟動按鍵鬆開線程。

s104、將所述按鍵事件的行為選項傳入所述按鍵線程內;

需要說明的是,本發明實施例中,pthread_create創建線程的時候,把行為選項,鍵碼和鍵值打包成結構體參數,傳給pthread_create函數。主要目的是在線程裡對這些行為選項進行解析,因為一個線程裡面不能直接獲得其他線程的局部變量,需通過傳遞線程參數的形式。通過線程來處理這些行為選項可以提高按鍵響應速度和連續多次按鍵時按鍵如何過濾和響應的問題。

作為一種可選的實施方式,所述將所述按鍵事件的行為選項傳入所述按鍵線程內的步驟包括:

將所述按鍵短按按下的行為選項傳入所述按鍵短按按下線程內;

或者,將所述按鍵長按的行為選項傳入所述按鍵長按線程內;

或者,將所述按鍵鬆開的行為選項傳入所述按鍵鬆開線程內。

s105、在所述按鍵線程內處理所述按鍵事件的行為。

需要說明的是,本發明實施例中,先通過文件鎖(文件鎖是一種文件讀寫機制,在任何特定的時間只允許一個進程訪問一個文件。通過這種鎖來保證同一時刻只能有一個按鍵在響應)判斷此按鍵是否還在響應(可能存在之前按下過還沒響應完,如果非常快連續按下的話),如果是則放棄本次響應,如果不是則通過枚舉的方式,逐個判斷是哪個行為選項,對不同的行為選項進行做不同的函數調用。

作為一種可選的實施方式,所述在所述按鍵線程內處理所述按鍵事件的行為的步驟包括:

在所述按鍵短按按下線程內處理所述按鍵短按按下的行為;

或者,在所述按鍵長按線程內處理所述按鍵長按的行為;

或者,在所述按鍵鬆開線程內處理所述按鍵鬆開的行為。

本發明提供的嵌入式linux設備的按鍵控制方法,當判斷有按鍵事件發生時,則根據按鍵事件調用按鍵事件的鍵碼和鍵值;根據按鍵事件的鍵碼和鍵值標記按鍵事件的行為選項;根據按鍵事件的行為選項創建和啟動按鍵線程;將按鍵事件的行為選項傳入按鍵線程內;在按鍵線程內處理按鍵事件的行為。本發明針對嵌入式linux設備多按鍵和多種響應情況的問題,提供了一套簡單易用,代碼可讀性好,並且基於此方法實現的按鍵功能可使得用戶有更好的體驗,從而使得本發明具有以下優點:

第一,通過本發明實現的按鍵功能,代碼可讀性好,利於擴展和維護;

第二,通過本發明可以很好的處理多個按鍵和多種觸發類型的按鍵互動設計,給產品帶來更簡潔的體驗;

第三,短按按下用於停止上一個按鍵響應的動作,鬆開時響應當前按鍵的事件,長按時觸發一些人機互動動作。通過這種方式可以提高按鍵的響應效率;

第四,行為選項標記和線程結合起來可以很好的解決快速多次按鍵時按鍵如何響應的問題。

請參閱圖2,圖2是本發明第二實施例提供的嵌入式linux設備的按鍵控制裝置的結構示意圖。如圖2所示,該嵌入式linux設備的按鍵控制裝置包括:

預先定義模塊1,用於預先定義嵌入式linux設備的鍵碼、鍵值及按鍵事件觸發的行為選項;其中,所述鍵碼包括收藏鍵、語音鍵、英語鍵、下一曲鍵、上一曲鍵、暫停播放鍵、微信鍵、童言童語鍵、故事鍵、兒歌鍵及國學鍵;所述鍵值包括短按按下、長按及鬆開;所述行為選項為所述鍵碼和所述鍵值組合後的結果;

判斷模塊2,用於判斷是否有按鍵事件發生;

調用模塊3,用於在所述判斷模塊2判斷有按鍵事件發生時,則根據所述按鍵事件調用所述按鍵事件的鍵碼和鍵值;

標記模塊4,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵事件的行為選項;

創建和啟動模塊5,用於根據所述按鍵事件的行為選項創建和啟動按鍵線程;

傳入模塊6,用於將所述按鍵事件的行為選項傳入所述按鍵線程內;

處理模塊7,用於在所述按鍵線程內處理所述按鍵事件的行為。

進一步地,如圖3所示,所述標記模塊4包括:

第一標記單元41,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵短按按下的行為選項;

第二標記單元42,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵長按的行為選項;

第三標記單元43,用於根據所述按鍵事件的鍵碼和鍵值標記所述按鍵鬆開的行為選項;

進一步地,如圖4所示,所述創建和啟動模塊5包括:

第一創建和啟動單元51,用於根據所述按鍵短按按下的行為選項創建和啟動按鍵短按按下線程;

第二創建和啟動單元52,用於根據所述按鍵長按的行為選項建和啟動按鍵長按線程;

第三創建和啟動單元53,用於根據所述鬆開的行為選項建和啟動按鍵鬆開線程;

進一步地,如圖5所示,所述傳入模塊6包括:

第一傳入單元61,用於將所述按鍵短按按下的行為選項傳入所述按鍵短按按下線程內;

第二傳入單元62,用於將所述按鍵長按的行為選項傳入所述按鍵長按線程內;

第三傳入單元63,用於將所述按鍵鬆開的行為選項傳入所述按鍵鬆開線程內;

進一步地,如圖6所示,所述處理模塊7包括:

第一處理單元71,用於在所述按鍵短按按下線程內處理所述按鍵短按按下的行為;

第二處理單元72,用於在所述按鍵長按線程內處理所述按鍵長按的行為;

第三處理單元73,用於在所述按鍵鬆開線程內處理所述按鍵鬆開的行為。

本發明提供的嵌入式linux設備的按鍵控制裝置,當判斷模塊2判斷有按鍵事件發生時,則調用模塊3根據按鍵事件調用按鍵事件的鍵碼和鍵值;標記模塊4根據按鍵事件的鍵碼和鍵值標記按鍵事件的行為選項;創建和啟動模塊5根據按鍵事件的行為選項創建和啟動按鍵線程;傳入模塊6將按鍵事件的行為選項傳入按鍵線程內;處理模塊7在按鍵線程內處理按鍵事件的行為。本發明針對嵌入式linux設備多按鍵和多種響應情況的問題,提供了一套簡單易用,代碼可讀性好,並且基於此方法實現的按鍵功能可使得用戶有更好的體驗,從而使得本發明具有以下優點:

第一,通過本發明實現的按鍵功能,代碼可讀性好,利於擴展和維護;

第二,通過本發明可以很好的處理多個按鍵和多種觸發類型的按鍵互動設計,給產品帶來更簡潔的體驗;

第三,短按按下用於停止上一個按鍵響應的動作,鬆開時響應當前按鍵的事件,長按時觸發一些人機互動動作。通過這種方式可以提高按鍵的響應效率;

第四,行為選項標記和線程結合起來可以很好的解決快速多次按鍵時按鍵如何響應的問題。

以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀