目录

autohotkey-热键只对特定程序生效,并设置不同等级的搜索功能

autohotkey — 热键只对特定程序生效,并设置不同等级的搜索功能

autohotkey — 热键只对特定程序生效,并设置不同等级的搜索功能

基本环境

  • autohotkey
  • 编辑器, 非必须,打算长用ahk的可以考虑.

为什么要做这个事情.

这个没什么好说的,为了让同个快捷键在不同程序中存在相似但不完全相同的功能.例如ctrl+f 搜索这个键 在平时调用的是全局的搜索软件,在 pycharm 里面则是普通的搜索功能.

个人认为的快捷键设计原则:

  1. 键少功能多. 少量的人机接口方式,实现更多的功能.

  2. 连击最多2次单击,且由双手食指触发. 因为食指灵敏, 且我们习惯了鼠标的双击动作.

  3. 如果为双键结合,那么修饰键最好按整体功能进行分离,例如 shift 用来修饰编辑文本的. alt用来处理窗口操作的.

  4. 尽可能保留已经习惯的触发键,例如s为保存,f为查找. c为复制

  5. 不同软件的同概念性的快捷键应该保持一致. 例如 ctrl f 为一般的搜索功能,那么可以把百度激活搜索框的快捷键设置为ctrl f. 这样就不需要每次都用鼠标去单击搜索框,也不需要安装vim等插件. 因为是搜索引擎.没有必要保留原本的ctrl+F的功能.

  6. 可将同概念性的功能按软件的先后层次进行顺序切换,例如,在百度里面, 如果没有在输入框中,则按一次ctrl+f先激活输入框,再按一次搜索打开的标签或者直接跳转到系统的全局搜索 ,例如everything这类工具,再按一次则切换回浏览器的输入框,完全没有必要设置那么多个快捷键。

  7. 设计的时候先考虑新添加的功能是否与旧功能具有概念相似性。切记一上来就是一个新的快捷键。这是很多人一开始常犯的毛病。

    举个具体的例子,在pycharm中,单独使用了一个ctrl +d 作为重复一行或者选中内容的快捷键. 其实完全没必要这么做. 只要在原始的复制ctrl+c加一个是否选取内容的判断就可以,当没有选择内容的时候,默认就是重复复制一行. 在选中多行,或者一行中局部内容的时候,直接重复填充反而会很乱. 还要额外去记一个快捷键.

代码

level = 0 ;搜索水平等级
Hotkey, IfWinActive, ahk_class SunAwtFrame ; 这边是指定在pycharm软件里面使用,那么在全局的+f并不会影响到这边,
Hotkey,+f,findsomething ; 设置热键,和标签,ahk的标签你可以理解为就是一段代码的代号,他和函数不一样,是没有返回的,就是方便指代一个代码段
findsomething: ;标签,搜索的具体代码功能
{
if level = 0 ;在pycharm 中,按第一次是ide中的搜索,再按一次是全局搜索,这时候就会跳出ide环境了.
{
    ;除了大容量的文本发送,建议一律使用sendinput, 
    ;他比send的发送速度快得多,不容易被其他的热键中间插一脚
    ;比如方向控制中,连续向上5次,用send能明显看到光标的移动,但是用sendinput就是飞跃的感觉
    SendInput,^f  
    level = 1
    SetTimer,iniState,1000,On ;设置一个定时器,1000 ms 后 运行 iniState部分的代码,定时器状态为开
}
else if level = 1
{
    SendInput,+!^0  ; 调用全局搜索软件listary
    level = 0 
}
return
}
iniState:
;控制在pycharm 搜索打开1秒后 自动回到初始状态,就是1秒之后,再次搜索还是在pycharm里面,这样就不影响pycharm的使用体验
SetTimer,iniState,Off ;关闭定时器
level = 0  ; 回到最低的搜索水平
return
  • 效果

    https://i-blog.csdnimg.cn/blog_migrate/d2b6dd9385fa82e5c64b143fdbc8c34d.gif

获得窗口属性

  1. 这个很简单,右键正在运行的脚本,电极window spy

https://i-blog.csdnimg.cn/blog_migrate/2fbce4032a11e2b64785b8ddb1f519a5.png 2. 就会弹出一个窗口.

https://i-blog.csdnimg.cn/blog_migrate/0d32c0a4249b996d86e1615e502fa16e.png

  1. 把鼠标放在哪个程序上,这边就会显示该程序的信息.
  • 在我推荐的那个ide中也有类似的功能,有一个增强模式,可以获得更精细的窗口信息

https://i-blog.csdnimg.cn/blog_migrate/1c0d3713d35bbe80eadbed71ec6f5420.png

指定多个应用

这个还没有试出来,按理说不复杂才对. 之后再添加进来.