autohotkey—指定具体网页的快捷键

基本环境

  • autohotkey

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

  • autohotkey基础教程系列(一) ———— 怎么学,哪里学,有哪些现成的demo

  • 这边的浏览器是edge 其他的浏览器我没有试过,但是应该没有问题.网页部分的代码是别人写的.

为什么要做这个事情:
因为我平时会使用多个在线文档,例如在csdn里面使用markdown书写编程记录,在石墨文档里面写个人笔记. 但是这两个网站的编辑器都不是很好用. 特别的是,两边都快捷键并不统一,比如石墨文档的标题用的是shit+ctrl+t 而在csdn里面则是shit+ctrl+h. 而我在word里面的操作习惯也与这两个地方不同,这就导致了,我不得不接受这些没必要的脑力输出.
另外,由于长期使用pycharm,里面的很多编辑习惯很有用,也希望能够在其他的编辑器里面使用.
例如 下一行 我使用的是shift +space, 这个是不受光标位置限制的.也就是无论在一行文字中的哪个位置,他都会自动跳到下面并另起一行.
比如,我的复制是 shift+c,他可以在没有选中内容的时候帮我自动复制当前一行.
再如,我的剪切是, shift+x,没有选中内容的时候,可以自动帮我剪切一行.
之所以弃用ctrl,是因为本来这个键就不是一个舒服的区域,国外人不怎么用,也设置得比较小.
所以为了统一不同编辑中我的编辑习惯.需要用到这边的代码.

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

  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加一个是否选取内容的判断就可以,当没有选择内容的时候,默认就是重复复制一行. 在选中多行,或者一行中局部内容的时候,直接重复填充反而会很乱. 还要额外去记一个快捷键.

代码

注意: 代码中的中文变量你们自己的编辑器可能不支持.

如何获得当前网页标签的地址名用的是这边大佬的代码

Menu, Tray, Icon, % A_WinDir "\system32\netshell.dll", 86 ; Shows a world icon in the system tray
ModernBrowsers := "ApplicationFrameWindow,Chrome_WidgetWin_0,Chrome_WidgetWin_1,Maxthon3Cls_MainFrm,MozillaWindowClass,Slimjet_WidgetWin_1"
LegacyBrowsers := "IEFrame,OperaWindowClass"Add_石墨文档地址 := "shimo" ;这边我没有采用严格的判断格式,只是判断地址中有没有shimo这个字符串而已;任务框
+r::has := is_是否在指定的页面中(Add_石墨文档地址)if has = 1sendinput,+^YReturn
; 标题设置
+t::has := is_是否在指定的页面中(Add_石墨文档地址)if has = 1sendinput,+^k
Return
;无序列表
+y::has := is_是否在指定的页面中(Add_石墨文档地址)if has = 1sendinput,+^i
Return
;有序列表
+u::has := is_是否在指定的页面中(Add_石墨文档地址)if has = 1sendinput,+^u
Returnis_是否在指定的页面中(url = "")
{index := 0 sURL := GetActiveBrowserURL()If (sURL != ""){index := InStr(sURL ,url)if index != 0index := 1}return index
};——————————————————————————————————————————————————————————————————————————————————————————-
;                               以下是获得网页地址的方法                                   |
;——————————————————————————————————————————————————————————————————————————————————————————-GetActiveBrowserURL() {global ModernBrowsers, LegacyBrowsersWinGetClass, sClass, AIf sClass In % ModernBrowsersReturn GetBrowserURL_ACC(sClass)Else If sClass In % LegacyBrowsersReturn GetBrowserURL_DDE(sClass) ; empty string if DDE not supported (or not a browser)ElseReturn ""
}; "GetBrowserURL_DDE" adapted from DDE code by Sean, (AHK_L version by maraskan_user)
; Found at http://autohotkey.com/board/topic/17633-/?p=434518GetBrowserURL_DDE(sClass) {WinGet, sServer, ProcessName, % "ahk_class " sClassStringTrimRight, sServer, sServer, 4iCodePage := A_IsUnicode ? 0x04B0 : 0x03EC ; 0x04B0 = CP_WINUNICODE, 0x03EC = CP_WINANSIDllCall("DdeInitialize", "UPtrP", idInst, "Uint", 0, "Uint", 0, "Uint", 0)hServer := DllCall("DdeCreateStringHandle", "UPtr", idInst, "Str", sServer, "int", iCodePage)hTopic := DllCall("DdeCreateStringHandle", "UPtr", idInst, "Str", "WWW_GetWindowInfo", "int", iCodePage)hItem := DllCall("DdeCreateStringHandle", "UPtr", idInst, "Str", "0xFFFFFFFF", "int", iCodePage)hConv := DllCall("DdeConnect", "UPtr", idInst, "UPtr", hServer, "UPtr", hTopic, "Uint", 0)hData := DllCall("DdeClientTransaction", "Uint", 0, "Uint", 0, "UPtr", hConv, "UPtr", hItem, "UInt", 1, "Uint", 0x20B0, "Uint", 10000, "UPtrP", nResult) ; 0x20B0 = XTYP_REQUEST, 10000 = 10s timeoutsData := DllCall("DdeAccessData", "Uint", hData, "Uint", 0, "Str")DllCall("DdeFreeStringHandle", "UPtr", idInst, "UPtr", hServer)DllCall("DdeFreeStringHandle", "UPtr", idInst, "UPtr", hTopic)DllCall("DdeFreeStringHandle", "UPtr", idInst, "UPtr", hItem)DllCall("DdeUnaccessData", "UPtr", hData)DllCall("DdeFreeDataHandle", "UPtr", hData)DllCall("DdeDisconnect", "UPtr", hConv)DllCall("DdeUninitialize", "UPtr", idInst)csvWindowInfo := StrGet(&sData, "CP0")StringSplit, sWindowInfo, csvWindowInfo, `" ;"; comment to avoid a syntax highlighting issue in autohotkey.com/boardsReturn sWindowInfo2
}GetBrowserURL_ACC(sClass) {global nWindow, accAddressBarIf (nWindow != WinExist("ahk_class " sClass)) ; reuses accAddressBar if it's the same window{nWindow := WinExist("ahk_class " sClass)accAddressBar := GetAddressBar(Acc_ObjectFromWindow(nWindow))}Try sURL := accAddressBar.accValue(0)If (sURL == "") {WinGet, nWindows, List, % "ahk_class " sClass ; In case of a nested browser window as in the old CoolNovo (TO DO: check if still needed)If (nWindows > 1) {accAddressBar := GetAddressBar(Acc_ObjectFromWindow(nWindows2))Try sURL := accAddressBar.accValue(0)}}If ((sURL != "") and (SubStr(sURL, 1, 4) != "http")) ; Modern browsers omit "http://"sURL := "http://" sURLIf (sURL == "")nWindow := -1 ; Don't remember the window if there is no URLReturn sURL
}; "GetAddressBar" based in code by uname
; Found at http://autohotkey.com/board/topic/103178-/?p=637687GetAddressBar(accObj) {Try If ((accObj.accRole(0) == 42) and IsURL(accObj.accValue(0)))Return accObjTry If ((accObj.accRole(0) == 42) and IsURL("http://" accObj.accValue(0))) ; Modern browsers omit "http://"Return accObjFor nChild, accChild in Acc_Children(accObj)If IsObject(accAddressBar := GetAddressBar(accChild))Return accAddressBar
}IsURL(sURL) {Return RegExMatch(sURL, "^(?<Protocol>https?|ftp)://(?<Domain>(?:[\w-]+\.)+\w\w+)(?::(?<Port>\d+))?/?(?<Path>(?:[^:/?# ]*/?)+)(?:\?(?<Query>[^#]+)?)?(?:\#(?<Hash>.+)?)?$")
}; The code below is part of the Acc.ahk Standard Library by Sean (updated by jethrow)
; Found at http://autohotkey.com/board/topic/77303-/?p=491516Acc_Init()
{static hIf Not hh:=DllCall("LoadLibrary","Str","oleacc","Ptr")
}
Acc_ObjectFromWindow(hWnd, idObject = 0)
{Acc_Init()If DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject&=0xFFFFFFFF, "Ptr", -VarSetCapacity(IID,16)+NumPut(idObject==0xFFFFFFF0?0x46000000000000C0:0x719B3800AA000C81,NumPut(idObject==0xFFFFFFF0?0x0000000000020400:0x11CF3C3D618736E0,IID,"Int64"),"Int64"), "Ptr*", pacc)=0Return ComObjEnwrap(9,pacc,1)
}
Acc_Query(Acc) {Try Return ComObj(9, ComObjQuery(Acc,"{618736e0-3c3d-11cf-810c-00aa00389b71}"), 1)
}
Acc_Children(Acc) {If ComObjType(Acc,"Name") != "IAccessible"ErrorLevel := "Invalid IAccessible Object"Else {Acc_Init(), cChildren:=Acc.accChildCount, Children:=[]If DllCall("oleacc\AccessibleChildren", "Ptr",ComObjValue(Acc), "Int",0, "Int",cChildren, "Ptr",VarSetCapacity(varChildren,cChildren*(8+2*A_PtrSize),0)*0+&varChildren, "Int*",cChildren)=0 {Loop %cChildren%i:=(A_Index-1)*(A_PtrSize*2+8)+8, child:=NumGet(varChildren,i), Children.Insert(NumGet(varChildren,i-8)=9?Acc_Query(child):child), NumGet(varChildren,i-8)=9?ObjRelease(child):Return Children.MaxIndex()?Children:} ElseErrorLevel := "AccessibleChildren DllCall Failed"}
}

autohotkey---指定具体网页的快捷键相关推荐

  1. AutoHotKey进阶 --- 单击网页中的按钮(Acc库)

    文章目录 AutoHotKey进阶 --- 单击网页窗口中按钮(Acc库) 引言 演示demo 代码实现 基本环境 代码 AutoHotKey进阶 - 单击网页窗口中按钮(Acc库) 引言 适合人群 ...

  2. 快捷键:浏览器关闭网页的快捷键,切换网页的快捷键,打开网页的快捷键

    一.关闭网页的快捷键 当我们打开好多个网页,想要关闭时,需要一个一个点x,很麻烦 快捷键有---ctrl + w 这样就可以不需要整个关闭浏览器,而是一个一个的关闭网页,速度很快 也分不同的浏览器的设 ...

  3. 播放器可以完成:开机自动打开指定网页,自动运行浏览器打开指定的网页。

    播放器可以完成:开机自动打开指定网页,自动运行浏览器打开指定的网页. 设计要求: 1.通电自动开机,无需操作自动运行浏览器 2.自动打开指定的网站(网页). 3.客户可以远程修改网页,达到所有的电视机 ...

  4. 设置支付后跳转到一个指定的网页,自动成交出售虚拟产品

    我们讲了,通过八图片平台,可以生成一个带有二维码的图片链接,扫码支付后就会跳转到一个指定的网页.有人可能会问,这个支付后跳转网页的功能有什么用呢?用处可大了,比如,我可以在网页上放置软件,视频,或者一 ...

  5. avascript怎么获取指定url网页中的内容

    目录 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? 二.用php获取 三.jquery中ajax获取 四.通过node.js获取 回到顶部 >  一.总结 ...

  6. sublime修改默认浏览器及使用不同浏览器打开网页的快捷键设置

    第一步:安装SideBarEnhancements插件 1.在Sublime Text按下ctrl+shift+P打开命令面板,输入pcip,点击第一个,安装控制包.如图: 第二步:配置默认浏览器和打 ...

  7. AutoHotKey (AHK) 按键表+自定义快捷键简化操作的教程

    自定义快捷键简化操作的教程 ① 下载安装AutoHotKey,并用记事本新建一个MyHotKey.ahk文件,录入如②中信息 ② 下图可以实现,按F6即可触发"Ctrl+C"的复制 ...

  8. 前端iframe 能指定本地网页吗_微前端的技术拆分方式

    路由分发式 通过HTTP服务器的反向代理功能,将请求路由到对应的应用上 特点 采用的最多.最容易的"微前端"方案 并非一个整体,每当用户从A应用转换到B应用的时候,往往需要刷新一下 ...

  9. 谷歌浏览器自带网页截图快捷键

    在截图页面按下快捷键"fn + F12",弹出开发者的窗口. 在该页面中按快捷键"Ctrl+Shift+P",开发者工具的窗口处会弹出一个输入框和下拉菜单. 在 ...

最新文章

  1. html 打印时隐藏,html 打印相关操作与实现详解
  2. Python 抖音用户粉丝(公开)--分析与实现
  3. android表情输入键盘,GitHub - UKfire/Emotion: 帮你的Android应用快速集成表情键盘
  4. 联发科mtk手机处理器怎么样_5G手机价格将再探新低!联发科天玑700芯片发布:入门级5G处理器...
  5. 如何理解Eating这个词?云原生与微服务专场介绍
  6. php.ini – 配置文件详解
  7. mqtt客户端工具_如何在 Rust 中使用 MQTT
  8. LINQ的数据库查询应用(zhuan)
  9. 第22节 软件工程知识
  10. 初识内存控制器和SDRAM【一文了解】
  11. 传奇脚本称号(封号)设置的详解
  12. TIMER:肿瘤浸润免疫细胞分析的综合网站
  13. 安卓连接mysql数据库_Android客户端怎么与服务器数据库连接?
  14. Spire.Office for Java 7.10.FIX[7.9.9]-全新版
  15. 【杀毒】-记一次挖矿病毒sysdrr杀毒
  16. markdown生成chm电子书或在线文档
  17. 解决破解版matlab2018a打开示例或者帮助需要登录账号或者需要输入激活码问题
  18. 小程序商城制作一个需要多少钱?
  19. 手机怎么做个人简历?多行业简历模板自由选择
  20. lambda表达式的分析及使用

热门文章

  1. Swin transformer 简单理解
  2. python怎么删除文件夹?
  3. Learn3:Canvas Apps 的控件
  4. c# 多线程多文件批量下载
  5. 零基础如何学习云原生?
  6. mysql 反斜杠 转义_MySQL中执行sql语句反斜杠需要进行转义
  7. springboot 自定义切面类
  8. PAT乙级 1019 数字黑洞 (20 分)
  9. Glide4 加载失败时显示默认图片
  10. 华为设备QinQ配置命令