欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現全局監(jiān)聽鍵盤詳解

 更新時間:2024年01月03日 08:32:17   作者:赤旗  
這篇文章主要為大家詳細介紹了java實現全局監(jiān)聽鍵盤的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下

前言

在github上看一些開源的項目時,常常有一些英文單詞和句子需要翻譯,當前的翻譯軟件以及劃詞插件,多少都有一些弊端。比如翻譯軟件過于臃腫,劃詞插件只能在瀏覽器中使用,且不需要使用翻譯功能時也會出現。

deepl有一個ctrl+c+c自動懸浮翻譯的功能,比較能滿足我的需求,但很多時候因為deepl的懸浮翻譯框都是在旋轉的狀態(tài),網絡上檢索時,說是因為服務器問題。好吧。

于是想自己寫一個小工具,實現deepl ctrl+c+c翻譯的功能。

java中的監(jiān)聽鍵盤的api,必須先創(chuàng)建一個窗口,且鼠標聚焦在該窗口中才能使用,無法實現我全局監(jiān)聽鍵盤的需求,于是在一番檢索之后,找到了以下兩個開源項目。

比較后,我選擇了jnativehook,因為這個項目維護的較好,同時還有全局鼠標,全局鼠標滾輪等功能。

ctrl+c+c翻譯實現見這篇筆記:自制Java工具實現翻譯鼠標選中文本,本文只介紹全局監(jiān)聽鍵盤實現方法

使用方法

在maven中添加地址:

<dependency>
  <groupId>com.github.kwhat</groupId>
  <artifactId>jnativehook</artifactId>
  <version>2.2.2</version>
</dependency>

在項目主頁找到demo代碼:

import com.github.kwhat.jnativehook.GlobalScreen;
import com.github.kwhat.jnativehook.NativeHookException;
import com.github.kwhat.jnativehook.keyboard.NativeKeyEvent;
import com.github.kwhat.jnativehook.keyboard.NativeKeyListener;

public class GlobalKeyListenerExample implements NativeKeyListener {
	public void nativeKeyPressed(NativeKeyEvent e) {
		System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));

		if (e.getKeyCode() == NativeKeyEvent.VC_ESCAPE) {
            		try {
                		GlobalScreen.unregisterNativeHook();
            		} catch (NativeHookException nativeHookException) {
                		nativeHookException.printStackTrace();
            		}
        	}
	}

	public void nativeKeyReleased(NativeKeyEvent e) {
		System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
	}

	public void nativeKeyTyped(NativeKeyEvent e) {
		System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
	}

	public static void main(String[] args) {
		try {
			GlobalScreen.registerNativeHook();
		}
		catch (NativeHookException ex) {
			System.err.println("There was a problem registering the native hook.");
			System.err.println(ex.getMessage());

			System.exit(1);
		}

		GlobalScreen.addNativeKeyListener(new GlobalKeyListenerExample());
	}
}

運行后按鍵:

方法解析

  • nativeKeyPressed:當鍵盤上的某個鍵被按下時,這個函數會被調用。它首先打印出被按下的鍵的文本信息,然后檢查是否是"Escape"鍵(即VC_ESCAPE常量的值),如果是,就嘗試注銷全局鍵盤鉤子。如果在注銷過程中發(fā)生異常,就會捕獲并打印這個異常。
  • nativeKeyReleased:當鍵盤上的某個鍵被釋放時,這個函數會被調用。它打印出被釋放的鍵的文本信息。
  • nativeKeyTyped:當鍵盤上的某個鍵被輸入時,這個函數會被調用。它打印出被輸入的鍵的文本信息。

總結

當可以監(jiān)聽到鍵盤按鍵后,就可以實現一些對應的功能,比如開頭說的**ctrl+c+c **翻譯鼠標選中內容,或者按鍵模擬樂器等。

到此這篇關于java實現全局監(jiān)聽鍵盤詳解的文章就介紹到這了,更多相關java全局監(jiān)聽鍵盤內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring運行時手動注入bean的方法實例

    Spring運行時手動注入bean的方法實例

    spring給我們提供了IOC服務,讓我們可以用注解的方式,方便的使用bean的相互引用,下面這篇文章主要給大家介紹了關于Spring運行時手動注入bean的相關資料,需要的朋友可以參考下
    2022-05-05
  • Java如何解決發(fā)送Post請求報Stream?closed問題

    Java如何解決發(fā)送Post請求報Stream?closed問題

    這篇文章主要介紹了Java如何解決發(fā)送Post請求報Stream?closed問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Spring AOP 攔截器的基本實現

    詳解Spring AOP 攔截器的基本實現

    本篇文章主要介紹了詳解Spring AOP 攔截器的基本實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 基于Java編寫一個數據庫比較工具類

    基于Java編寫一個數據庫比較工具類

    這篇文章主要為大家詳細介紹了如何基于Java編寫一個數據庫比較工具類,其中比較結果會以現數據庫的視角說明,感興趣的小伙伴可以了解一下
    2023-07-07
  • 使用mybatis進行數據插入時返回自增id的方法及注意點

    使用mybatis進行數據插入時返回自增id的方法及注意點

    這篇文章主要給大家介紹了關于使用mybatis進行數據插入時返回自增id的方法及注意點,在插入一條數據之后需要返回它的自增主鍵id,因為插入的實體類數據id為空,后面的邏輯還需要這個id,需要的朋友可以參考下
    2023-09-09
  • java9遷移注意問題總結

    java9遷移注意問題總結

    本篇文章給大家詳細整理了java9遷移注意的問題,希望我們整理的內容能夠幫助到大家。
    2018-02-02
  • Spring boot使用logback實現日志管理過程詳解

    Spring boot使用logback實現日志管理過程詳解

    這篇文章主要介紹了Spring boot使用logback實現日志管理過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 談談Spring 注入properties文件總結

    談談Spring 注入properties文件總結

    本篇談談Spring 注入properties文件總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • java編程實現兩個大數相加代碼示例

    java編程實現兩個大數相加代碼示例

    這篇文章主要介紹了java編程實現兩個大數相加代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • 利用spring-data-redis實現incr自增的操作

    利用spring-data-redis實現incr自增的操作

    這篇文章主要介紹了利用spring-data-redis實現incr自增的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論