AutoHotInterception——把你的笔记本键盘/闲置键盘/单手键盘…用起来~

软件名称

AutoHotInterception

应用平台

  • Windows

推荐类型

【用户投递】

一句简介

增强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代码,其实发挥想象力,这个玩意还能干不少事呢——比如我正在测试把一个不用的单手键盘的所有键映射成翻页键,然后扔到脚底下用来脚踩翻页,哈哈哈。。。

官方网站 && 应用商店地址

4 Likes

前排提示一下这个方案需要安装额外的驱动,不过要区分不同设备的输入确实是驱动级才能做到的事情。上次我看到实现类似效果的方法是用一个外接的可编程键盘,把按键映射到F13~F24之类的普通键盘没有的键,然后再用ahk捕获按键做进一步处理,相较而言,这个纯软件的方案就显得更加经济。不过我暂时没有使用场景,安装驱动也有一定的风险,所以还没实际试过,有需求的可以试一下。

这个功能终于有了!!

我有一个需求是在笔记本键盘上交换caps和ctrl,但是在外接键盘上保持不变
现在应该可以实现了

87键盘插个外接数字键盘岂不是很好玩,又不占地方又能充当快捷键。

楼主的方案解决了已有旧设备的闲置问题,你的方案是……让我们买两个符合你想法的设备?

楼主都把副手键盘扔到脚底下去了,哪里占地方啊

这个想法很有意思欸,笔记本外接键盘确实是很常见的场景,感觉很实用

没有需求,创造需求,你问这啥,消费主义。

是我理解错误了,自觉认错,感谢楼下指正,原始内容依旧放在下面,作为自勉,

@baowenbei 真诚向您道歉,望能谅解


我哪里提消费了?不管帽子合不合适,就往我头上戴?

每个人都可能有把旧键盘什么的(并不限制具体型号),题主想办法把它们利用起来,这不是挺好的吗?

你举出两个许多人不一定有的设备(87键键盘、外接数字键盘),想表达什么?

这三个字表达的意思应该是比楼主的方法更高明吧,就算你的方法更好用,其他人想用,还要买自己不具备的设备。这种方案和本就是尝试利用再旧设备的方案放在一起,有可比性?

然后居然我成了消费主义???

看不懂你的思路,但是大受震撼。

1 Like

呃,人家是在自嘲消费主意吧。。。[尴尬]

2 Likes

我刚扔了一个分离式键盘没几天

请问cm1.IsActive这个判断是否支持和WinActive判断一块使用,比如我只想在某个程序在前台的时候,才对指定设备进行改键。

肯定可以。
有个简单的办法,写两个ahk。
第一个ahk检测到特定窗口时候打开ahk2,进行改键
检测到窗口关闭,关掉ahk2

哦哦 那就好。
检测的话会有检测周期,其实持续运行在热键脚本里倒也没什么影响。

区分不同设备的输入不需要驱动,用 Raw Input 就可以实现,需要驱动的部分是拦截和伪装特定设备的输入。不过实际上,完全可以用 Raw Input 识别输入,用键盘钩子拦截输入,再用 SendInput 伪装输入,尽管实现起来没有驱动优雅,但对于大多数人也足够了。