Java 實現系統全域性快捷鍵繫結
希望實現一個功能,當檢測到使用者按下某個快捷鍵的時候響應做一些操作,希望能繫結系統全域性快捷鍵,隨時隨地響應快捷鍵;
找到了2個實現方案:
- 通過
jkeymaster
:
先maven匯入:
<!-- https://mvnrepository.com/artifact/com.github.tulskiy/jkeymaster -->
<dependency>
<groupId>com.github.tulskiy</groupId>
<artifactId>jkeymaster</artifactId>
<version>1.3</version>
</dependency>
demo如下:
// 用swing的queue
Provider provider = Provider.getCurrentProvider(true);
// 繫結快捷鍵
provider.register(KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
x-> System.out.println(x));
這裡就是繫結了快捷鍵cmd+D,每次按下快捷鍵都會列印出來按鍵資訊;
這裡有個坑,在mac下如果要繫結command相關的快捷鍵,要用Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()
方法,KeyEvent裡沒有直接能用的command,如果是windows可以直接在KeyEvent裡面找要繫結的按鍵,比如ctrl,alt這些都有;
- 通過
jnativehook
:
先maven匯入:
<!-- https://mvnrepository.com/artifact/com.1stleg/jnativehook -->
<dependency>
<groupId>com.1stleg</groupId>
<artifactId>jnativehook</artifactId>
<version>2.1.0</version>
</dependency>
這個jnativehook
的原理不是去系統全域性註冊快捷鍵,而是監聽系統的所有滑鼠,鍵盤,滾輪行為,當你監聽到有自己希望觸發的場景時,可以再做對應的操作;
相關文章
- 設定全域性快捷鍵 (轉)
- NetCore實現全域性模型繫結異常資訊統一處理NetCore模型
- 鴻蒙系統(HarmonyOS)全域性彈窗實現鴻蒙
- idea全域性搜尋的快捷鍵 idea搜尋內容快捷鍵Idea
- 當idea配置eclipse快捷鍵時,設定全域性替換的快捷鍵IdeaEclipse
- java全域性滑鼠鍵盤監聽Java
- polipo/privoxy 實現 Linux 系統全域性/自動代理Linux
- js 實現快捷鍵JS
- Mac系統重置快捷鍵Mac
- java快捷鍵Java
- JS給全域性繫結事件以及給除某個元素外的其他元素繫結事件JS事件
- SGA系統全域性區記憶體結構瞭解記憶體
- 【Linux系統快捷鍵最全合集】Linux
- 分散式系統全域性唯一Id(SnowFlake)雪花演算法實現分散式演算法
- 如何在cluster的J2EE系統中實現全域性Singleton
- 實現方法 C# button快捷鍵C#
- 單元測試內實現屬性自動繫結
- 手把手教你實現Java監聽器全域性監控Java
- 註冊無需視窗全域性常用熱鍵快捷鍵 2024年8月11日
- Windows 快捷鍵總結Windows
- sublime快捷鍵總結
- oracle架構之系統全域性區Oracle架構
- 設定系統全域性區SGA命令
- shell全域性(系統)環境變數變數
- w10系統qq怎麼截圖快捷鍵 win10系統qq如何截圖快捷鍵Win10
- win10系統怎麼設定全域性代理_win10系統如何設定全域性代理Win10
- React - Context API 維護全域性狀態,實現全域性元件通訊ReactContextAPI元件
- Java使用雪花演算法實現生成全域性唯一idJava演算法
- Vue雙向繫結實現Vue
- win7中實用性非常強的快捷鍵Win7
- 探索React原始碼的全域性模組系統React原始碼
- iOS系統右滑返回全域性控制方案iOS
- Java實現資料結構之線性結構Java資料結構
- IDLE中用Ctrl + L快捷鍵實現清屏
- javascript實現資料的雙向繫結(手動繫結)JavaScript
- 模型關聯中繫結屬性到父模型怎麼實現模型
- 簡單實現[BCB5]:鍵盤全域性鉤子[Hook],監視多程式鍵盤操作。 (轉)Hook
- Laravel 多鍵路由繫結Laravel路由