[Java][详解]使用jintellitype实现键盘全局监听
【下载jintellitype】
首先要下载jintellitype-1.3.9,这里提供下载地址
【jintellitype-百度网盘下载】
链接: https://pan.baidu.com/s/1x10DFQq1P8rmW-wFbYXRcQ
提取码: 1mak
(才202KB相信你们不会抱怨百度网速慢吧…)
下完后解压,得到以下文件-
(这么多东西才3个有用…)
【一】导入jintellitype包下的dll文件
1.打开Eclipse,在项目的src目录下右键点击“New”-“Package”创建包“com.melloware.jintellitype”
2.然后创建一个包,包名为:com.melloware.jintellitype
3.完成后点“Finish”,然后把jintellitype-1.3.9文件夹内的“JIntellitype.dll”和“JIntellitype64.dll”拖拽到Eclipse的com.melloware.jintellitype包下。
变成这样:
这个不用管,直接点OK
然后变成这样:
【二】导入jintellitype-1.3.9.jar外部包
1.首先在项目上右键弹出菜单,点击“Build Path”-“Add External Archives…”
2.然后弹出了一个文件选择的对话框,选择“jintellitype-1.3.9”目录下的“jintellitype-1.3.9.jar”外部包,然后点“打开(O)”
打开后,Eclipse下就多了一个“Referenced Libraries”目录,如图所示-
【三】导入外部包后,就可以开始写代码了。
1.首先要导入来自jintellitype的包。
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;
2.定义热键标识,用于在设置多个热键时,在事件处理中区分用户按下的热键*
public static final int MINIMIZE_KEY_MARK = 1;//设置最小化的热键标识
public static final int EXIT_KEY_MARK = 0;//设置关闭的热键标识
(当然这一步可以省略,因为这只是为了区分热键的作用)
3.注册热键
第一个参数表示该热键的标识,第二个参数表示组合键,如果没有则为0,第三个参数为定义的主要热键
JIntellitype.getInstance().registerHotKey(FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S');
JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK, JIntellitype.MOD_ALT, (int)'Q');
例:
JIntellitype.getInstance().registerHotKey(1, 0, (int)'S');//给变量名为1的值设置热键为S,其中没有组合键。
JIntellitype.getInstance().registerHotKey(0, JIntellitype.MOD_ALT, (int)'Q');//给变量名为0的值设置热键为Q,组合键为Alt,即Alt+Q
必须把char类型转换成int类型,单字母转换成int类型还简单,直接强制转换就行了,如:
char i ='Q';
System.out.println("字母键 "+i+" 的int值为:"+(int)i);
char one ='1';
System.out.println("数字键 "+one+" 的int值为:"+(int)one);
//键盘键 Q 的int值为:81
//数字键 1 的int值为:49
但是像“F1”、“Ctrl”键这些数值就必须要单独记了:
F1 = 112;
F2 = 113;
F3 = 114;
F4 = 115;
F5 = 116;
F6 = 117;
F7 = 118;
F8 = 119;
F9 = 120;
F10 = 121;
F11 = 122;
F12 = 123;
ESC = 27;
TAB = 9;
CAPSLOCK = 20;
SHIFT = 16;
CTRL = 17;
START_LEFT = 91;
START_RIGHT = 92;
CONTEXT_MENU = 93;
ALT = 18;
SPACE = 32;
CARRIAGE_RETURN = 13;
LINE_FEED = 10;
BACK_SLASH = 220;
BACK_SPACE = 8;
INSERT = 45;
DEL = 46;
HOME = 36;
END = 35;
PAGE_UP = 33;
PAGE_DOWN = 34;
PRINT_SCREEN = 44;
SCR_LK = 145;
PAUSE = 19;
LEFT_ARROW_KEY = 37;
UP_ARROW_KEY = 38;
RIGHT_ARROW_KEY = 39;
DOWN_ARROW_KEY = 40;
4.添加热键监听
使用方法:
JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {public void onHotKey(int markCode) {switch (markCode) { case <标识符或数字>: //输入动作break; case <标识符或数字>: //输入动作break;............} }});
例:
JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {public void onHotKey(int markCode) {switch (markCode) { case MINIMIZE_KEY_MARK://给标识符为最小化的热键设置监听setVisible(false);System.out.println("最小化");break; case EXIT_KEY_MARK://给标识符为关闭的热键设置监听System.out.println("退出");System.exit(0);break; } }});
5.删除热键
删除热键只需要一行代码就可以了。
使用方法:
JIntellitype.getInstance().unregisterHotKey(<标识符或数字>);//用于移除热键注册的方法
例:删除变量为1的热键
JIntellitype.getInstance().unregisterHotKey(1);//用于移除热键注册的方法,把变量名为1的变量删除。
4.示例程序
下面的连点器源代码使用了jintellitype实现键盘全局监听,热键为按下R键开始连点;按下T键停止连点。
【源代码-百度网盘下载】
链接: https://pan.baidu.com/s/1uouDAkHRj2rWE978kLfiVA
提取码: 781s
package StartMain;import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;//第一步:导入jintellitype包
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;
/*** @Title 使用jintellitype实现键盘全局监听的实例程序:连点器* @author YuXiang187*/
public class Start extends JFrame{int LeftRight = 0;public Start () {setTitle("连点器");setVisible(true);setLocationRelativeTo(null); //设置窗体居中setSize(180,80);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();JTextField text = new JTextField("连点还没开始,按下R键开始");JButton start = new JButton("开始连点");JButton stop = new JButton("停止连点");JButton delete = new JButton("删除热键");text.setEditable(false);stop.setEnabled(false);start.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {text.setText("连点开始,按下T键结束");start.setEnabled(false);stop.setEnabled(true);LeftRight = 1;}});stop.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {text.setText("连点已停止,按下R键重新开始");start.setEnabled(true);stop.setEnabled(false);LeftRight = 0;}});c.add(text,BorderLayout.NORTH);c.add(start,BorderLayout.WEST);c.add(stop,BorderLayout.EAST);c.validate();//第二步:注册热键//JIntellitype.getInstance().registerHotKey(FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S');//第一个参数表示该热键的标识,第二个参数表示组合键,如果没有则为0,第三个参数为定义的主要热键JIntellitype.getInstance().registerHotKey(0, 0, (int)'R');//给变量名为0的值设置热键为R,其中没有组合键。JIntellitype.getInstance().registerHotKey(1, 0, (int)'T');//给变量名为1的值设置热键为T,其中没有组合键。//第三步:添加热键监听JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {public void onHotKey(int markCode) {switch (markCode) { case 0://给标识符为0的热键设置监听text.setText("连点开始,按下T键结束");//开始连点start.setEnabled(false);stop.setEnabled(true);LeftRight = 1;break; case 1://给标识符为1的热键设置监听text.setText("连点已停止,按下R键重新开始");//停止连点start.setEnabled(true);stop.setEnabled(false);LeftRight = 0;break; } }});delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//第四步:删除热键//JIntellitype.getInstance().unregisterHotKey(<标识符或数字>);//用于移除热键注册的方法JIntellitype.getInstance().unregisterHotKey(1);//用于移除热键注册的方法,把变量名为1的变量删除。JIntellitype.getInstance().unregisterHotKey(0);//用于移除热键注册的方法,把变量名为0的变量删除。delete.setEnabled(false);}});Robot robot = null;try {robot = new Robot();} catch (AWTException e) {text.setText("连点器出现错误,运行失败");e.printStackTrace();}while (true) {if (LeftRight == 1) {robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);// 按下左键robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK);// 释放左键}}}public static void main(String[] args) {new Start();}
}
别抱怨界面不好看,能用就行 : D
[Java][详解]使用jintellitype实现键盘全局监听相关推荐
- WebView使用详解之WebChromeClient的常用事件监听
一.WebChromeClient 1.概述 (1). 与WebViewClient的区别 很多同学一看到这里有Chrome,立马就会想到google 的Chrome浏览器:这里并不是指Chrome浏 ...
- html鼠标滚轮监听,jQuery - 鼠标滚轮插件jquery.mousewheel.js详解(上下、左右滚动监听)...
1,插件介绍 jquery.mousewheel.js是一个用于添加跨浏览器的鼠标滚轮支持的 jQuery插件. 2,使用说明 (1)使用该插件,只需将 mousewheel事件绑定到一个元素上即可. ...
- python gil 解除_详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
先看一道GIL面试题: 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因. GIL:又叫全局解 ...
- Java中使用JNA实现全局监听Linux键盘事件
title: Java中使用JNA实现全局监听Linux键盘事件 date: 2019-05-03 19:08:00 Java中使用JNA实现全局监听Linux键盘事件 用JNA实现的键盘监听,在Wi ...
- Java中使用JNA实现全局监听Windows键盘事件
title: Java中使用JNA实现全局监听Windows键盘事件 date: 2019-05-02 21:55:00 Java中使用JNA实现全局监听Windows键盘事件 前言: 一直打算做一个 ...
- java8编程开发入门 李兴华_李兴华系列--JAVA详解视频(jdk1.8)及项目实战教程
李兴华系列--JAVA详解视频教程(jdk1.8)有源码+文档01_<Oracle从入门到精通> 02_<Java8编程入门> 03_<Java8面向对象编程> 0 ...
- Java详解剑指offer面试题50--第一个只出现一次的字符
Java详解剑指offer面试题50–第一个只出现一次的字符 找出字符串中找出第一个只出现一次的字符,比如输入"abacceff",则输出'b' 要想知道某个字符是不是只出现了一次 ...
- Java Swing 键盘事件监听
Java Swing 键盘事件监听 开发工具与关键技术:java. elipse2019.jdk1.8 作者:Amewin 撰写时间:2019年9月16日 键盘事件的事件源一般丐组件相关,当一个组件处 ...
- C#全局监听Windows键盘事件
本方法只涉及到如何应用现有工具类实现监听,其具体的原理主要涉及到调用Windows底层API:定义一个钩子钩住键盘事件,在这里不讲具体原理. 1.工具类代码 引用 using System; usin ...
最新文章
- C 的大致运行原理。
- 为什么不建议使用 Java 自带的序列化?
- linux根文件系统配置,嵌入式Linux的Cramfs根文件系统配置的解决方案
- python计算运动会某个参赛选手的得分。数据保存在文件中_Python基础教程之第二章---变量和字符串(1) 搬运...
- 一、在vue项目中使用mock.js(详解)
- 判断整除(信息学奥赛一本通-T1195)
- datalist 的用法。也是增删改查,但是比较智能。用数据绑定的方式,可以有不同的显示方法,下面是对一个表的增删改查的参考代码...
- [转载] python接口测试:封装get和post请求+重新封装requests类
- c语言单片机循环程序,单片机c语言教程:C51循环语句
- Centos系统新建文本文档.txt
- C语言-快速排序算法-原理-详解(完整代码)
- 纽约州立大学环境与林业学院计算机科学专业,2020年纽约州立大学环境科学与林业科学学院专业设置...
- 那些有趣的网站系列(十二)
- 在VirtualBox上安装deepin
- ZN-61A网络型PLC可编程控制器实训装置
- Ubuntu16.04 安装 CUDA、CUDNN、OpenCV 并用 Anaconda 配置 Tensorflow 和 Caffe 详细过程(此种方案不好,好的方案是另一篇,基于pyhton2的)
- [回忆]2007年的GDNT研发广东北电辞职信.
- 算法之地推算法(逆推法)
- 17篇点云处理综述-点云语义分割、点云物体检测、自动驾驶中的点云处理……
- javascript超空间(removeChild和innerHTML区别)
热门文章
- 微信开发者平台切换企微账号与企业微信小程序模式
- 最喜欢的一款星光和光晕ps笔刷
- Linux Command—— Wildcard
- 【FPGA入门教程】(七)FSM(Finite State Machine,有限状态机)设计
- 【技法操作】UI界面设计,用PS绘制闹钟页面教程
- linux wifi 8192移植 及部分wifi工具的使用
- openfoam学习心得——openfoam编程进阶
- ERROR: Unable to access 'C:\Users\鏉庨摥\.emulator_console_auth_token': emulator consol...解决方法
- 安卓软件开发需要学什么软件?Android开发最佳实践手册全网独一份,面试必问
- 常见的USB VID