DebugEN
科技森
专注于Java开发~每天都会更新文章~
  1. 首页
  2. Java
  3. 正文

【原创】记录一次失败的折腾——使用jkeymaster实现的按键监听

2022年03月21日 294点热度 0人点赞 0条评论 作者: kejisen

背景

最近在京东购入了一个不到两千元的4K显示器,放在公司用于写代码,和我现在笔记本一起组成了双屏。以前我都是用笔记本触摸板来控制光标的,现在变为双屏开始使用独立的键盘和鼠标,这就导致我在两个屏幕之间切换的时候双手需要脱离键盘使用鼠标将其移动到另一个屏幕上。

“能用键盘做到的,坚决不使用鼠标”——鲁迅。

方案

我第一时间想到的就是使用我最擅长的语言——Java来编写一个监听快捷键并移动光标的功能。还在上大学的时候我有收藏一些java的按键监听框架,我在github上找到了我八年前还在上学时写的一个远古项目:https://github.com/chocotan/java-sc。

这个项目有依赖于一个跨平台的按键监听库jkeymaster,就决定用它了。

编码

编码思路很简单:

  1. 监听按键
  2. 模拟鼠标移动

Java自身有提供鼠标移动相关的API——Robot类,由于我最近正在学习kotlin,所以就用kotlin来试着写一下,最终的代码如下:

代码很好懂,监听了ctrl+j/k,监听到按键事件后,将鼠标移动到每个屏幕的中央。大功告成!

后续

使用了一天之后,我忽然想起来,我使用的是awesome wm这个平铺式窗口管理器,它应该是有提供切换屏幕的快捷键的,于是我谷歌了一下,果不其然,它的快捷键是 ctrl+super+j/k。由于是窗口管理器原生的功能,按键响应也比我使用java/kt编写的程序快很多。

感想

在我写上面提到的八年前的项目的时候,我还在上大学,那时候有折腾过使用java实现一些偏底层又或是java开发不会涉及到的功能,比如绑定系统热键,获取某个应用的屏幕截图、模拟按键这类的“旁门左道”。我特别喜欢折腾这类的功能,但是这些东西都不会在工作中用到,大因为Java或者说JVM系的语言,本身就不适合做这些东西吧。

标签: 暂无
最后更新:2022年03月25日

kejisen

保持饥渴的专注,追求最佳的品质

点赞
< 上一篇

文章评论

取消回复
最新 热点 随机
最新 热点 随机
【原创】记录一次失败的折腾——使用jkeymaster实现的按键监听 【原创】这些年我用过的IDEA插件 【原创】在windows上使用VNC远程连接linux桌面 我在RxJava使用线程池时遇到的问题 [原创文章] Swagger生成pdf格式的接口文档 [个人翻译]Java HTTP工具类的客户端证书认证 [原创] 如何从 Git 的提交历史记录中删除大文件 [翻译] 创建一个只读的Repository接口(Spring Data) [翻译] 反射的用法——用Java调用私有方法 Java 虚拟机最多可以支持多少个线程? 排查Hibernate的慢查询日志–这是查找慢查询的最简单方法 [翻译] 使用apache poi在excel文件中插入一行数据 [翻译] 在Spring 中@EntityScan与@ComponentScan注解有什么区别 [原创] 从QQ音乐网页版扒歌词的补充说明 [原创] 介绍java maven项目的多种打包方式 原创——在Java中生成随机数 将G1垃圾回收的内存使用量减少20%(翻译) [原创] java8 lambda表达式的toMap造成的空指针异常 [原创] 在Spring Boot中使用CommandLineRunner来在启动时执行代码 [转载] Kafka 节点重启失败导致数据丢失的分析排查与解决之道
Linux截图软件推荐-flameshot 我在RxJava使用线程池时遇到的问题 [翻译] 创建一个只读的Repository接口(Spring Data) [原创]javaslang(vavr.io)中Try的使用 [原创] 在Spring Boot中使用CommandLineRunner来在启动时执行代码 [翻译] 在Spring 中@EntityScan与@ComponentScan注解有什么区别 中通Elasticsearch集群运维实践 [个人翻译]Java HTTP工具类的客户端证书认证 [原创] java8 lambda表达式的toMap造成的空指针异常 Spring Boot项目修改Tomcat端口号 从QQ音乐获取并解析音乐的歌词 [翻译] 反射的用法——用Java调用私有方法 在Java中生成随机的日期 如何设置Servlet的session超时时间 java maven项目的几种打包方式 原创——在Java中生成随机数 [原创] 在spring-boot中使用querydsl [原创] 介绍java maven项目的多种打包方式 [转载] Kafka 节点重启失败导致数据丢失的分析排查与解决之道 [原创] 如何从 Git 的提交历史记录中删除大文件
标签聚合
qq音乐 linux springboot json base64 spring maven 歌词 elasticsearch java

COPYRIGHT © 2020 Kejisen. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS