我的autohotkey设置

作者: lyallchan | 来源:发表于2016-03-31 10:13 被阅读1818次

toc: true
title: 我的autohotkey设置
date: 2016-02-06 13:21:04
tags: [autohotkey]


[TOC]
我的autohotkey启动文件,包含了日常使用的快捷键,拿出来分享

Capslock的处理

实现单独按下Capslock为esc,Capslock加上任意键实现CTRL键功能,Capslock+hjkl,Capslock+a,Capslock+e实现编辑状态下的光标键移动,Capslock+q实现alt-F4功能

原先Capslock转为shift+Capslock

$+Capslock::
    SetCapsLockState % getkeystate("Capslock", "t") ? "off" : "on"
    return
$Capslock::
    Gui, 93:+Owner ; prevent display of taskbar button
    Gui, 93:Show, y-99999 NA, capslock-hole
    Send {LCtrl Down}
    KeyWait, Capslock ; wait until the Capslock button is released
    Gui, 93:Cancel
    Send, {LCtrl Up}
    ifinstring, A_PriorKey, Capslock
        Send, {ESC}
Return
#If WinExist("capslock-hole")
;; Capslock-2 : mintty
;; Capslock-1 : TC/Start/Min/Active
    *1::
        Send {LCtrl Up}
        ActiveTC()
        Send {LCtrl Down}
        return
    *2::
        Send {LCtrl Up}
        ActiveMintty()
        Send {LCtrl Down}
        return
#If
#If WinExist("capslock-hole") and Not WinActive("ahk_class mintty")
    *h::Send {Blind}{LCtrl Up}{Left}{LCtrl Down}
    *j::Send {Blind}{LCtrl Up}{Down}{LCtrl Down}
    *k::Send {Blind}{LCtrl Up}{Up}{LCtrl Down}
    *l::Send {Blind}{LCtrl Up}{Right}{LCtrl Down}
    *g::Send {Blind}{LCtrl Up}{Home}{LCtrl Down}
    *a::Send {Blind}{LCtrl Up}{Home}{LCtrl Down}
    *e::Send {Blind}{LCtrl Up}{End}{LCtrl Down}
    *q::Send {Blind}{LCtrl Up}{LAlt Down}{F4}{LAlt Up}{LCtrl Down}
#If ; end context-sensitive block

其中的关键是Capslock+hljkae的处理,使用了一个隐藏窗口,Capslock按下时,隐藏窗口生效,在隐藏窗口生效的情况下,定义hljkae,相当于产生了一个Capslock的漏洞,这个漏洞中可以自定义个别按键

窗口的处理

实现任意窗口置顶、透明化、最大化、最小化、虚拟桌面切换

置顶 透明化增加 透明化减少 最大化 最小化 虚拟桌面切换
alt-0 alt-= alt-- alt-enter alt-m 双击Fn
win-0 win-= win-- win-enter win-m F11
alt-鼠标右键 标题栏-鼠标up 标题栏-鼠标down 任务栏-鼠标滚动
双击shift

窗口置顶

!Rbutton::
    MouseGetPos, ox, oy, ow, oc
    WinTopToggle(ow)
    return
<Shift::
    if (A_PriorHotKey = "<Shift" AND A_TimeSincePriorHotKey < 500)
    {
        WinGet ow, id, A
        WinTopToggle(ow)
    }
    return
#0::
!0::
    WinGet ow, id, A
    WinTopToggle(ow)
    return
WinTopToggle(w) {
 
    WinGetTitle, oTitle, ahk_id %w%
    Winset, AlwaysOnTop, Toggle, ahk_id %w%
    WinGet, ExStyle, ExStyle, ahk_id %w%
    if (ExStyle & 0x8)  ; 0x8 为 WS_EX_TOPMOST.在WinGet的帮助中
        oTop = 置顶
    else
        oTop = 取消置顶
    tooltip %oTitle% %oTop%
    SetTimer, RemoveToolTip, 5000
    return
 
    RemoveToolTip:
    SetTimer, RemoveToolTip, Off
    ToolTip
    return
}
 

win+鼠标右键 : 光标所在窗口置顶
双击shift : 最上面的窗口置顶
win+0 : 当前窗口置顶
shift+alt+0 : 当前窗口置顶
置顶时,有tooltip显示窗口名称以及状态,5s后消失

窗口透明化

WheelUp::
    MouseGetPos,ox,oy,ow,oc
    WinGetClass, owc, ahk_id %ow%
    Ifinstring, owc, Shell_TrayWnd
        VDSwitch(1)
    else
    {
        If (oy>7) and (oy<30)
            WinTransplus(ow)
        else
            send, {WheelUp}
        sleep 30
    }
    return
#=::
!=:: ;; alt-=
    WinGet, ow, id, A
    WinTransplus(ow)
    return
WheelDown::
    MouseGetPos, ox, oy, ow, oc
    WinGetClass, owc, ahk_id %ow%
    Ifinstring, owc, Shell_TrayWnd
        VDSwitch(0)
    else
    {
        If (oy>7) and (oy<30)
            WinTransMinus(ow)
        else
            send, {WheelDown}
        sleep 30
    }
    return
#-::
!-:: ;; alt--
    WinGet, ow, id, A
    WinTransMinus(ow)
    return
;; WinTransplus WinTransMinus 对ahk_id为w的窗口
;; 进行透明度增减,每次幅度为10
WinTransplus(w){
 
    WinGet, transparent, Transparent, ahk_id %w%
    if transparent < 255
        transparent := transparent+10
    else
        transparent =
    if transparent
        WinSet, Transparent, %transparent%, ahk_id %w%
    else
        WinSet, Transparent, off, ahk_id %w%
    return
}
WinTransMinus(w){
 
    WinGet, transparent, Transparent, ahk_id %w%
    if transparent
        transparent := transparent-10
    else
        transparent := 240
    WinSet, Transparent, %transparent%, ahk_id %w%
    return
}

鼠标在窗口标题栏滚动 : 窗口透明化增加或者减弱
win+-\win+= : 当前窗口透明化增加或者减弱
alt+-\alt+= : 当前窗口透明化增加或者减弱

如何判断鼠标在标题栏:取得鼠标位置ox,oy,如果oy在7和30之间,判断为标题栏。autohotkey默认的鼠标位置坐标为当前窗口坐标
当窗口透明化大于255(不透明)时,取消窗口透明设置。将窗口透明参数设为255和取消透明设置有一点不同,取消透明设置可以提高窗口性能

窗口最大化最小化

!enter:: ;; alt-enter
#enter::
    WinGet,S,MinMax,A
    if S=0
        WinMaximize,A
    else if S=1
        WinRestore,A
    else if S=-1
        WinRestore,A
    return
!m::
#m:: WinMinimize, A

alt-enter : 最大化/恢复
win-enter : 最大化/恢复
alt+m : 最小化
win+m : 最小化

虚拟桌面切换

WheelUp::
    MouseGetPos,ox,oy,ow,oc
    WinGetClass, owc, ahk_id %ow%
    Ifinstring, owc, Shell_TrayWnd
        VDSwitch(1)
    else
    {
        If (oy>7) and (oy<30)
            WinTransplus(ow)
        else
            send, {WheelUp}
        sleep 30
    }
    return
WheelDown::
    MouseGetPos, ox, oy, ow, oc
    WinGetClass, owc, ahk_id %ow%
    Ifinstring, owc, Shell_TrayWnd
        VDSwitch(0)
    else
    {
        If (oy>7) and (oy<30)
            WinTransMinus(ow)
        else
            send, {WheelDown}
        sleep 30
    }
    return
F11::
    VDSwitch(0)
    return
sc163:: ;; Fn 切换虚拟桌面
    if (A_PriorHotKey="sc163" and A_TimeSincePriorHotkey<250)
        VDSwitch(0)
    return
VDSwitch(c){
    ;; 切换虚拟桌面
 
    cVD := DllCall("VirtualDesktopAccessor\GetCurrentDesktopNumber")
    VDs := DllCall("VirtualDesktopAccessor\GetDesktopCount")
 
    if c=0
        DllCall("VirtualDesktopAccessor\GoToDesktopNumber",int, mod(cVD+1,VDs))
    else
        DllCall("VirtualDesktopAccessor\GoToDesktopNumber",int, mod(VDs-cVD-1,VDs))
}

任务栏鼠标向上滚动 : 逆序切换桌面
任务栏鼠标向下滚动 : 顺序切换桌面
F11 : 顺序切换桌面
双击Fn : 顺序切换桌面
VDSwitch : 实现切换桌面的函数

  • win10只提供了向前切换(shift+win+右箭头)和向后切换桌面(shift+win+左箭头)的快捷键,切换到第一个或者最后一个桌面后,不会循环切换。
  • github上有一个开源的dll,提供了操纵虚拟桌面的函数,ahk可以用DLLCall调用
  • VDSwitch用了其中两个功能:获取虚拟桌面数量以及goto到第几个虚拟桌面,实现顺序和逆序切换虚拟桌面

关闭窗口的快捷键

;; ctrl win alt - q : alt-F4
;; ctrl win alt - w : ctrl-w
!q::send !{F4}
#q::send !{F4}
^q::send !{F4}
!w::send ^w
#w::send ^w

ctrl+w win+w alt+w : ctrl+w
ctrl+q win+q alt+q : alt+F4

左手的三个功能键

  • w关闭窗口
  • q关闭应用程序

相关文章

  • 我的autohotkey设置

    toc: truetitle: 我的autohotkey设置date: 2016-02-06 13:21:04ta...

  • 使用autohotkey修改方向键、回车和启动程序

    autohotkey官网 autohotkey官方文档 官方文档中文版 具体步骤 下载并安装autohotkey。...

  • AutoHotKey 设置qq聊天清屏

    每次聊天时喜欢使用右键清屏,使用脚本来简化这一流程 来源:http://ahk8.com/thread-6059....

  • 我的AutoHotKey

    在日常的工作中有很多东西其实是在重复性操作。懒人就想出了许多懒办法来提高效率。除了学习自己编程之外,其他有些东西还...

  • AutoHotKey阴阳师刷玉魂脚本

    安装AutoHotKey,下载地址:https://www.autohotkey.com/download/ 新建...

  • win10 ctrl+空格切换输入法.md

    去 http://www.autohotkey.com/ 下载 AutoHotkey 最新版并安装。 新建文本文件...

  • window 下的一些辅助开发工具

    一、AutoHotKey 脚本 很方便自定义一些快捷键 https://www.autohotkey.com/ 二...

  • AutoHotKey变量的使用

    >* AutoHotkey没有显示地定义一些变量类型,所有的变量都是字符串类型。 * AutoHotkey里面的所...

  • AutoHotkey

    对于不懂代码的朋友们,也想弄个什么软件编编程序,满足自己的小小的好奇心,能在工作上帮上忙最好了,那么AutoHot...

  • Autohotkey

    之前在可乐鸡翅中提到了Autohotkey这个小(gong)玩(neng)意(qiang)儿(da)。回头想想竟然...

网友评论

    本文标题:我的autohotkey设置

    本文链接:https://www.haomeiwen.com/subject/vgyelttx.html