2012-09-23 71 views
1

是否可以確定是否有數字鍵盤連接到系統?桌面鍵盤通常具有數字鍵盤,而筆記本電腦通常不具備鍵盤功能(儘管它們將數字鍵放在普通鍵盤上,並使用數字鎖定來激活)。操作系統是否知道數字鍵盤鍵是否在物理上是分開的?如果是這樣,這些信息是否會以某種方式暴露給程序?檢測數字鍵盤的存在/不存在?

知道這個以確定適當的默認鍵綁定將是有用的。如果它不可用,那麼我將不得不選擇一個保守的默認值(不使用數字鍵盤),這意味着一個稍微令人惱火的額外配置步驟,爲具有單獨的數字鍵盤的人士獲得更好的行爲,或者我必須選擇一個非常規的保守的默認和刺激的人沒有numpads ...

回答

1

我不相信你可以查詢鍵盤功能,但IIRC有一個「數字鍵盤」鍵。 ;)

您應該能夠查詢是否打開或關閉Num,但關閉不會是一種知道沒有數字小鍵盤的簡單方法。

你可能會做的是檢測鍵在數字鍵盤上被按下,潛意識欺騙用戶這樣做,這將識別所述特性。

+0

實際上,你可以設定NumLock鍵的狀態(見這裏的第三個答案:http://stackoverflow.com/a/938455/159145)。我認爲(儘管未經測試),您可以嘗試將Numlock設置爲「開啓」,然後檢測是否仍然開啓 - 當然,如果鍵盤缺少數字鎖定鍵,然後檢查它是否會顯示狀態爲關閉狀態? – Dai

+0

不確定是否必須有一個密鑰甚至是一個數字鍵盤才能通過通用api啓用密鑰? –

+0

是的,我可能是錯的,因爲遠程桌面使用numlock鍵搞笑,讓我覺得這不起作用。 – Dai

1

安裝這些軟件包

sudo apt-get install -y numlockx xdotool x11-utils 

然後用這樣的腳本

#!/bin/bash 
cd 
numlockx off & 
rm -f s1.sh s2.sh out 
echo -e "#\041/bin/bash 
sleep 2 
xdotool key KP_5 | xev > out 
exit 0" >> s1.sh 
chmod +x s1.sh 
echo -e "#\041/bin/bash 
sleep 9 
killall -9 xev 
sleep 5 
xdotool key BackSpace 
exit 0" >> s2.sh 
chmod +x s2.sh 


bash s1.sh & 
bash s2.sh 

rm -f s1.sh s2.sh 
if [[ "$(cat out | grep "keycode 84" | grep "KP_Begin")" != "" ]]; then 
    echo "Separated Numpad Detected!" 
fi 
rm out 
exit 0 

因爲KP_Begin是數字鍵盤鍵的鍵代碼KP_5時NumLock鍵不活躍,在一個真正的鍵盤採用了真正的鍵盤。 在3臺PC上測試,其中一臺帶有單獨的鍵盤e 2,沒有它。

+0

請問downvoter請給個理由嗎? –