dog
(荒废千年)
1
软件名称
AutoHotInterception
应用平台
推荐类型
【用户投递】
一句简介
增强autohotkey功能, 使ahk能够识别来自不同键盘的按键,进而可以将闲置键盘特化成专门的快捷键键盘。
应用简介
- 很多人使用的电脑主要是笔记本,但是因为笔记本键盘手感不好,都会外接一个键盘去用。这个软件最简单的应用就是,把闲置的笔记本键盘用起来,这样就会有数十个单键快捷键了。例如:
#SingleInstance force
#Persistent
#include Lib\AutoHotInterception.ahk
AHI := new AutoHotInterception()
id1 := AHI.GetKeyboardId(0x1A2C, 0x2D43, 1)
;这一参数是键鼠设备的特征号,需要手动通过项目中Monitor.ahk获取逐一测试哪个是,这里使id1等于我的笔记本键盘
cm1 := AHI.CreateContextManager(id1)
return
#if cm1.IsActive
a::
run www.appinn.com
return
;按下笔记本键盘的a键,就会打开小众软件的网页了,但是外接键盘的a键正常使用
#if
^Esc::
ExitApp
- 更多使用方法参见GitHub下载ahk代码,其实发挥想象力,这个玩意还能干不少事呢——比如我正在测试把一个不用的单手键盘的所有键映射成翻页键,然后扔到脚底下用来脚踩翻页,哈哈哈。。。
官方网站 && 应用商店地址
6 个赞
xml123
(xml123)
2
前排提示一下这个方案需要安装额外的驱动,不过要区分不同设备的输入确实是驱动级才能做到的事情。上次我看到实现类似效果的方法是用一个外接的可编程键盘,把按键映射到F13~F24之类的普通键盘没有的键,然后再用ahk捕获按键做进一步处理,相较而言,这个纯软件的方案就显得更加经济。不过我暂时没有使用场景,安装驱动也有一定的风险,所以还没实际试过,有需求的可以试一下。
yuuka
(Yuuka)
3
这个功能终于有了!!
我有一个需求是在笔记本键盘上交换caps和ctrl,但是在外接键盘上保持不变
现在应该可以实现了
87键盘插个外接数字键盘岂不是很好玩,又不占地方又能充当快捷键。
Huhu
5
楼主的方案解决了已有旧设备的闲置问题,你的方案是……让我们买两个符合你想法的设备?
楼主都把副手键盘扔到脚底下去了,哪里占地方啊
Betty
(羚羊挂角)
6
这个想法很有意思欸,笔记本外接键盘确实是很常见的场景,感觉很实用
Huhu
8
是我理解错误了,自觉认错,感谢楼下指正,原始内容依旧放在下面,作为自勉,
@baowenbei 真诚向您道歉,望能谅解
我哪里提消费了?不管帽子合不合适,就往我头上戴?
每个人都可能有把旧键盘什么的(并不限制具体型号),题主想办法把它们利用起来,这不是挺好的吗?
你举出两个许多人不一定有的设备(87键键盘、外接数字键盘),想表达什么?
这三个字表达的意思应该是比楼主的方法更高明吧,就算你的方法更好用,其他人想用,还要买自己不具备的设备。这种方案和本就是尝试利用再旧设备的方案放在一起,有可比性?
然后居然我成了消费主义???
看不懂你的思路,但是大受震撼。
1 个赞
请问cm1.IsActive这个判断是否支持和WinActive判断一块使用,比如我只想在某个程序在前台的时候,才对指定设备进行改键。
dog
(荒废千年)
12
肯定可以。
有个简单的办法,写两个ahk。
第一个ahk检测到特定窗口时候打开ahk2,进行改键
检测到窗口关闭,关掉ahk2
哦哦 那就好。
检测的话会有检测周期,其实持续运行在热键脚本里倒也没什么影响。
区分不同设备的输入不需要驱动,用 Raw Input 就可以实现,需要驱动的部分是拦截和伪装特定设备的输入。不过实际上,完全可以用 Raw Input 识别输入,用键盘钩子拦截输入,再用 SendInput 伪装输入,尽管实现起来没有驱动优雅,但对于大多数人也足够了。
1 个赞