【原创】记录一次失败的折腾——使用jkeymaster实现的按键监听
背景
最近在京东购入了一个不到两千元的4K显示器,放在公司用于写代码,和我现在笔记本一起组成了双屏。以前我都是用笔记本触摸板来控制光标的,现在变为双屏开始使用独立的键盘和鼠标,这就导致我在两个屏幕之间切换的时候双手需要脱离键盘使用鼠标将其移动到另一个屏幕上。
“能用键盘做到的,坚决不使用鼠标”——鲁迅。
方案
我第一时间想到的就是使用我最擅长的语言——Java来编写一个监听快捷键并移动光标的功能。还在上大学的时候我有收藏一些java的按键监听框架,我在github上找到了我八年前还在上学时写的一个远古项目:https://github.com/chocotan/java-sc。
这个项目有依赖于一个跨平台的按键监听库jkeymaster,就决定用它了。
编码
编码思路很简单:
- 监听按键
- 模拟鼠标移动
Java自身有提供鼠标移动相关的API——Robot类,由于我最近正在学习kotlin,所以就用kotlin来试着写一下,最终的代码如下:
代码很好懂,监听了ctrl+j/k,监听到按键事件后,将鼠标移动到每个屏幕的中央。大功告成!
后续
使用了一天之后,我忽然想起来,我使用的是awesome wm这个平铺式窗口管理器,它应该是有提供切换屏幕的快捷键的,于是我谷歌了一下,果不其然,它的快捷键是 ctrl+super+j/k。由于是窗口管理器原生的功能,按键响应也比我使用java/kt编写的程序快很多。
感想
在我写上面提到的八年前的项目的时候,我还在上大学,那时候有折腾过使用java实现一些偏底层又或是java开发不会涉及到的功能,比如绑定系统热键,获取某个应用的屏幕截图、模拟按键这类的“旁门左道”。我特别喜欢折腾这类的功能,但是这些东西都不会在工作中用到,大因为Java或者说JVM系的语言,本身就不适合做这些东西吧。
共有 0 条评论