2011-10-29 76 views
3

我希望這個問題還沒有被問到,但我正在尋找解決方案,我沒有找到對我有用的東西。獲取鍵盤上的鍵位置

我正在寫一個Java應用程序,用戶可以通過他的鍵盤來控制應用程序。問題是,我需要許多不同的輸入鍵。所以我也必須使用特殊的char鍵。但我的問題是,我無法再爲每個鍵盤編寫整個代碼。

所以我的問題是,有沒有辦法確定鍵盤上給定鍵的位置。如果有人知道如何做到這一點,那將是非常好的。

由於提前, 利奧

+0

你不能真正知道鑰匙在哪裏「物理」定位。鍵盤只發送鍵碼(正如G_H指出的那樣),而且某些鍵盤有物理開關,可以改變物理鍵發送的鍵碼(例如,在某些鍵盤上,您可以設置'caps-lock'來發送'左鍵ctrl' **直接從鍵盤內部**:你根本無法以編程方式檢測到這一點)。更何況一些鍵盤控制器甚至比這更可編程。 – TacticalCoder

回答

2

一種鍵盤只發送到下層堆棧鍵代碼。由操作系統和軟件決定如何使用它。現在可能硬件確實有一個簡單的代碼,它依賴於位置,並且有一些翻譯將它轉化爲應用程序的可用密鑰代碼。我認爲這一定是這種情況,因爲可以從操作系統中選擇佈局。但是,這看起來並不像您在Java中可以訪問的那種低級別的東西,而是使用JNI。您可以捕獲KeyEvents。我建議你看一下這個類的文檔,字段和方法,也許可以製作一個小型測試應用程序來捕獲這些事件並打印各種方法的結果。也許你可以找到一些共同點。

如果沒有直接的方法來做到這一點,也許最好是有一些轉換表格方案,用於標準化最常見佈局的輸入,比如Qwerty和Azerty。這對大多數用戶來說應該是這樣,因爲你希望依靠絕對定位,要求少量佈局中的一種看起來不可接受。用戶可以更改操作系統中的佈局。

如果您碰巧正在製作遊戲,可能會創建some huge control deck that people will be forced to buy to get the best experience。多餘的錢! :d

+0

謝謝。我想,我會在第一次提示應用程序打開一個窗口,在窗口中用戶必須鍵入所有鍵,然後才能存儲這些數據。 – evotopid

1

你可以完全由用戶定義的

可以使用戶可以修改鍵映射到操作的一些設置的設置,有標準設定爲AZERTY和QWERTY作爲默認