2011-06-16 37 views
1

您可能已經閱讀我的earlier question關於在Java中低級別重新映射我的鍵盤,我確實找到了一個解決方案 - 主要是。如何重新映射Java Swing中的NumLock鍵?

說實話,我簡化了我試圖解決的問題。我不僅想要將NumericKeypad 1-3與7-9匹配,反之亦然,我想重新映射整個數字小鍵盤。特別是,我需要重新映射作爲該鍵盤一部分的NumLock鍵。這似乎是在系統級別截獲的,我不能將它映射爲發出一些字符。

我想要的是,在運行我的應用程序時,NumLock鍵不會切換系統NumLock設置,而是會發出一些其他鍵。

我是否超越了Java中可能存在的領域?或者有什麼方法可以挖掘到這個低級別並完成這一點。

+1

你絕對超越了Java中實用*領域。在Java中,通過JNA或JNI,許多事情都是可能的,但它並不是真的Java在做這項工作,它只是調用本地的,特定於操作系統的代碼。 – 2011-06-16 01:10:01

+0

如果需要,我願意深入到JNA或JNI的層面。我擁有對環境的控制權,不必擔心可移植到其他操作系統。這隻需要在Windows上運行。但我從來沒有這樣做過。我知道C相當好。我會去哪裏瞭解更多關於這樣做的事情? – 2011-06-16 01:14:32

+0

@Steve:有了JNA,您可以執行幾乎任何Windows系統調用(假設是Windows或* nix系統調用)。不幸的是,我不太瞭解Windows系統API。我的Google技能與您的技能一樣有用。從Swing的角度來看,我沒有任何建議。 – 2011-06-16 01:19:50

回答

1

我想出了不適合每一個人的解決方案,但它在我們的用例實際上是最理想的:

使用Windows註冊表做的鍵盤重新映射。

它是永久性的,不需要JNI或設備驅動程序編寫,在我們的情況下,我們不擔心爲其他應用程序搞亂鍵盤。很簡單。

如果你需要這樣做,並可以擺脫這種黑客攻擊,這是成本效益的解決方案。

1

我不確定這是你想要的,但你可以看看這個game's按鍵事件編輯器,在screenshot圖片中,並在org.gcs.robot.RCKeys執行。

+0

不要與Swing [Key Bindings](http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)混淆。 – trashgod 2011-06-16 02:19:22