diff --git a/CapsLockX.ahk b/CapsLockX.ahk index 8f6f6af..cce7f7c 100644 --- a/CapsLockX.ahk +++ b/CapsLockX.ahk @@ -21,40 +21,40 @@ SetWorkingDir, %A_ScriptDir% #Include %A_ScriptDir%/Core/CapsLockX-RunSilent.ahk -global CapsLockX_模块路径 := "./Modules" -; global CapsLockX_用户模块路径 := CapsLockX_配置目录 "/Modules" -global CapsLockX_核心路径 := "./Core" +global CLX_模块路径 := "./Modules" +; global CLX_用户模块路径 := CLX_ConfigDir "/Modules" +global CLX_核心路径 := "./Core" ; 版本 -global CapsLockX_Version -FileRead, CapsLockX_Version, ./Core/version.txt -CapsLockX_Version := CapsLockX_Version ? CapsLockX_Version : "未知版本" +global CLX_Version +FileRead, CLX_Version, ./Core/version.txt +CLX_Version := CLX_Version ? CLX_Version : "未知版本" -global CapsLockX_VersionName := "v" CapsLockX_Version +global CLX_VersionName := "v" CLX_Version ; 加载过程提示 global 显示加载提示 := 1 global loadingTips := "" ; 对 核心模块 进行 编码清洗 -清洗为_UTF8_WITH_BOM_型编码(CapsLockX_核心路径 "/CapsLockX-Config.ahk") -清洗为_UTF8_WITH_BOM_型编码(CapsLockX_核心路径 "/CapsLockX-Core.ahk") -清洗为_UTF8_WITH_BOM_型编码(CapsLockX_核心路径 "/CapsLockX-RunSilent.ahk") -清洗为_UTF8_WITH_BOM_型编码(CapsLockX_核心路径 "/CapsLockX-Update.ahk") +清洗为_UTF8_WITH_BOM_型编码(CLX_核心路径 "/CapsLockX-Config.ahk") +清洗为_UTF8_WITH_BOM_型编码(CLX_核心路径 "/CapsLockX-Core.ahk") +清洗为_UTF8_WITH_BOM_型编码(CLX_核心路径 "/CapsLockX-RunSilent.ahk") +清洗为_UTF8_WITH_BOM_型编码(CLX_核心路径 "/CapsLockX-Update.ahk") ; 复制用户模块 ; TODO FIX:如果CLX已经开了的话,这一步会触发重启,这可能会导致一些文件冲突的BUG…… -FileDelete, %CapsLockX_模块路径%/*.user.ahk -FileDelete, %CapsLockX_模块路径%/*.user.md -FileCopy %CapsLockX_配置目录%/*.user.ahk, %CapsLockX_模块路径%/, 1 -FileCopy %CapsLockX_配置目录%/*.user.md, %CapsLockX_模块路径%/, 1 +FileDelete, %CLX_模块路径%/*.user.ahk +FileDelete, %CLX_模块路径%/*.user.md +FileCopy %CLX_ConfigDir%/*.user.ahk, %CLX_模块路径%/, 1 +FileCopy %CLX_ConfigDir%/*.user.md, %CLX_模块路径%/, 1 ; 模块加载器路径 -global CapsLockX_ModulesRunner := CapsLockX_核心路径 "/CapsLockX-ModulesRunner.ahk" -global CapsLockX_ModulesFunctions := CapsLockX_核心路径 "/CapsLockX-ModulesFunctions.ahk" -; LoadModules(CapsLockX_ModulesRunner, CapsLockX_ModulesFunctions) +global CLX_ModulesRunner := CLX_核心路径 "/CapsLockX-ModulesRunner.ahk" +global CLX_ModulesFunctions := CLX_核心路径 "/CapsLockX-ModulesFunctions.ahk" +; LoadModules(CLX_ModulesRunner, CLX_ModulesFunctions) ; 判断安装方式 global NPM全局安装也 := InStr(A_ScriptFullPath, APPDATA) == 1 && InStr("node_modules", A_ScriptFullPath) -global GIT仓库安装也 := "true" == Trim(CapsLockX_RunSilent("cmd /c git rev-parse --is-inside-work-tree"), "`r`n`t` ") +global GIT仓库安装也 := "true" == Trim(CLX_RunSilent("cmd /c git rev-parse --is-inside-work-tree"), "`r`n`t` ") ; 模块帮助向README编译() @@ -120,7 +120,7 @@ Return global 显示加载提示 if(!显示加载提示) return if (clear || loadingTips == "") { - loadingTips := "CapsLockX " CapsLockX_Version "`n" + loadingTips := "CapsLockX " CLX_Version "`n" } loadingTips .= msg "`n" } @@ -132,7 +132,7 @@ Return FileEncoding UTF-8-Raw ; 列出模块文件 ModuleFiles := "" - loop, Files, %CapsLockX_模块路径%\*.ahk + loop, Files, %CLX_模块路径%\*.ahk { ; Do not Recurse into subfolders. 子文件夹由模块自己去include去加载 ModuleFiles .= A_LoopFileName "`n" @@ -159,22 +159,22 @@ Return 模块帮助内容 := "" 模块帮助文件 := "" if (!模块帮助内容) { - 模块帮助文件 := CapsLockX_模块路径 "/" 模块名称 ".md" + 模块帮助文件 := CLX_模块路径 "/" 模块名称 ".md" if (FileExist(模块帮助文件)) { FileRead, 模块帮助内容, %模块帮助文件% } } if (!模块帮助内容) { - 模块帮助文件 := CapsLockX_模块路径 "/" 模块文件名称 ".md" + 模块帮助文件 := CLX_模块路径 "/" 模块文件名称 ".md" if (FileExist(模块帮助文件)) { FileRead, 模块帮助内容, %模块帮助文件% } } ; 加载模块描述 - FileRead, 模块文件内容, % CapsLockX_模块路径 "/" 模块文件 + FileRead, 模块文件内容, % CLX_模块路径 "/" 模块文件 matchPos := RegExMatch(模块文件内容, "mi)^; 描述:(.*)", 模块描述) - T%模块名称%_Disabled := CapsLockX_Config("ModuleDisable", "T" 模块名称 "_Disabled", 0, "是否禁用模块:" 模块名称 (模块描述1 ? " - " 模块描述1 : "") ) + T%模块名称%_Disabled := CLX_Config("ModuleDisable", "T" 模块名称 "_Disabled", 0, "是否禁用模块:" 模块名称 (模块描述1 ? " - " 模块描述1 : "") ) if (模块帮助内容) { 模块帮助内容 := Trim(模块帮助内容, " `t`n") @@ -185,8 +185,8 @@ Return 模块帮助内容 := RegExReplace(模块帮助内容, "m)^#", "###") ; 替换资源链接的相对目录(图片gif等) - FileCopy, %CapsLockX_模块路径%\*.gif, .\docs\media\, 1 - FileCopy, %CapsLockX_模块路径%\*.png, .\docs\media\, 1 + FileCopy, %CLX_模块路径%\*.gif, .\docs\media\, 1 + FileCopy, %CLX_模块路径%\*.png, .\docs\media\, 1 模块帮助内容 := RegExReplace(模块帮助内容, "m)\[(.*)\]\(\s*?\.\/(.*?)\)", "[$1](./media/$2)") ; 没有标题的,给自动加标题 if (!RegExMatch(模块帮助内容, "^#")) { @@ -202,17 +202,17 @@ Return 加载提示追加("跳过模块:" i " " 模块名称) } else { ; 这里引入模块代码 - 清洗为_UTF8_WITH_BOM_型编码(CapsLockX_模块路径 "/" 模块文件) + 清洗为_UTF8_WITH_BOM_型编码(CLX_模块路径 "/" 模块文件) ; 导入模块 - 模块初始化代码 .= "GoSub CapsLockX_ModuleSetup_" i "`n" + 模块初始化代码 .= "GoSub CLX_ModuleSetup_" i "`n" 模块导入代码 .= "`n" "#If" "`n" "`n" - 模块导入代码 .= "CapsLockX_ModuleSetup_" i ":" "`n" + 模块导入代码 .= "CLX_ModuleSetup_" i ":" "`n" if (模块帮助内容 && 模块帮助文件) { - 模块导入代码 .= " " " " " " " " "CapsLockX_THIS_MODULE_HELP_FILE_PATH = " 模块帮助文件 "`n" + 模块导入代码 .= " " " " " " " " "CLX_THIS_MODULE_HELP_FILE_PATH = " 模块帮助文件 "`n" } else { - 模块导入代码 .= " " " " " " " " "CapsLockX_THIS_MODULE_HELP_FILE_PATH := """"" "`n" + 模块导入代码 .= " " " " " " " " "CLX_THIS_MODULE_HELP_FILE_PATH := """"" "`n" } - 模块导入代码 .= " " " " " " " " "#Include " CapsLockX_模块路径 "/" 模块文件 "`n" + 模块导入代码 .= " " " " " " " " "#Include " CLX_模块路径 "/" 模块文件 "`n" 模块导入代码 .= "Return" "`n" 加载提示追加("运行模块:" i " " 模块名称) } @@ -221,25 +221,25 @@ Return ; 拼接模块加载器代码 常量语句 .= "; 请勿直接编辑本文件,以下内容由核心加载器自动生成。雪星/(20210318)" "`n" - 常量语句 .= "global CapsLockX_模块路径 := " """" CapsLockX_模块路径 """" "`n" - 常量语句 .= "global CapsLockX_核心路径 := " """" CapsLockX_核心路径 """" "`n" - 常量语句 .= "global CapsLockX_Version := " """" CapsLockX_Version """" "`n" - 常量语句 .= "global CapsLockX_VersionName := " """" CapsLockX_VersionName """" "`n" + 常量语句 .= "global CLX_模块路径 := " """" CLX_模块路径 """" "`n" + 常量语句 .= "global CLX_核心路径 := " """" CLX_核心路径 """" "`n" + 常量语句 .= "global CLX_Version := " """" CLX_Version """" "`n" + 常量语句 .= "global CLX_VersionName := " """" CLX_VersionName """" "`n" 模块运行器 .= 常量语句 "`n" 模块初始化代码 模块加载器 .= "Return" "`n" 模块导入代码 FileEncoding UTF-8 - FileDelete %CapsLockX_ModulesRunner% - FileAppend %模块运行器%, %CapsLockX_ModulesRunner% - if (!FileExist(CapsLockX_ModulesRunner)) { + FileDelete %CLX_ModulesRunner% + FileAppend %模块运行器%, %CLX_ModulesRunner% + if (!FileExist(CLX_ModulesRunner)) { msg = msg .= "Unable to write ModulesRunner.ahk, if you are install with chocolatey, run me as admin at the first time please.`n" msg .= "注意:未能写入模块运行器,如果使用 chocolatey 首次安装后,请以管理员权限运行。" msgbox %msg% } - FileDelete %CapsLockX_ModulesFunctions% - FileAppend %模块加载器%, %CapsLockX_ModulesFunctions% + FileDelete %CLX_ModulesFunctions% + FileAppend %模块加载器%, %CLX_ModulesFunctions% 加载提示显示() 全部帮助 := Trim(全部帮助, " `t`n") @@ -260,8 +260,8 @@ Return Return targetREADME } CapsLockX启动(){ - CoreAHK := CapsLockX_核心路径 "\CapsLockX-Core.ahk" - UpdatorAHK := CapsLockX_核心路径 "\CapsLockX-Update.ahk" + CoreAHK := CLX_核心路径 "\CapsLockX-Core.ahk" + UpdatorAHK := CLX_核心路径 "\CapsLockX-Update.ahk" ; 为了避免运行时对更新模块的影响,先把 EXE 文件扔到 Temp 目录,然后再使用 Temp 里的 AHK 来运行本核心。 AHK_EXE_ROOT_PATH := "CapsLockX.exe" AHK_EXE_CORE_PATH := "./Core/CapsLockX.exe" @@ -278,7 +278,7 @@ CapsLockX启动(){ ; 运行核心 ; 启动 - global T_AskRunAsAdmin := CapsLockX_ConfigGet("Core", "T_AskRunAsAdmin", 0) + global T_AskRunAsAdmin := CLX_ConfigGet("Core", "T_AskRunAsAdmin", 0) adminCommand := RegExMatch(DllCall("GetCommandLine", "str"), "/admin") if (!A_IsAdmin && T_AskRunAsAdmin || adminCommand) { RunWait *RunAs %AHK_EXE_TEMP_PATH% %CoreAHK%, %A_ScriptDir% diff --git a/Core/CapsLockX-ModulesLoader.ahk b/Core/CapsLockX-ModulesLoader.ahk index e91c455..7c87092 100644 --- a/Core/CapsLockX-ModulesLoader.ahk +++ b/Core/CapsLockX-ModulesLoader.ahk @@ -2,224 +2,224 @@ #If -CapsLockX_ModuleSetup_1: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/@Help.md +CLX_ModuleSetup_1: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/@Help.md #Include ./Modules/@Help.ahk Return #If -CapsLockX_ModuleSetup_2: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_2: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-AcrobatEnhanced.ahk Return #If -CapsLockX_ModuleSetup_3: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/App-AnkiEnhanced.md +CLX_ModuleSetup_3: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/App-AnkiEnhanced.md #Include ./Modules/App-AnkiEnhanced.ahk Return #If -CapsLockX_ModuleSetup_4: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_4: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-BlenderEnhanced.ahk Return #If -CapsLockX_ModuleSetup_5: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_5: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-Figma.ahk Return #If -CapsLockX_ModuleSetup_6: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_6: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-LoopbackExemptionManager.ahk Return #If -CapsLockX_ModuleSetup_7: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_7: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-MobaXterm.ahk Return #If -CapsLockX_ModuleSetup_8: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/App-OneNote2019.md +CLX_ModuleSetup_8: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/App-OneNote2019.md #Include ./Modules/App-OneNote2019.ahk Return #If -CapsLockX_ModuleSetup_9: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_9: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-OneNoteMetro.ahk Return #If -CapsLockX_ModuleSetup_10: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_10: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/App-QQ-Desktop.ahk Return #If -CapsLockX_ModuleSetup_11: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_11: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-Cursor.ahk Return #If -CapsLockX_ModuleSetup_12: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-Edit.md +CLX_ModuleSetup_12: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-Edit.md #Include ./Modules/CLX-Edit.ahk Return #If -CapsLockX_ModuleSetup_13: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_13: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-Elevate.ahk Return #If -CapsLockX_ModuleSetup_14: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_14: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-EnterWithoutBreak.ahk Return #If -CapsLockX_ModuleSetup_15: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-JavaScriptEval.md +CLX_ModuleSetup_15: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-JavaScriptEval.md #Include ./Modules/CLX-JavaScriptEval.ahk Return #If -CapsLockX_ModuleSetup_16: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-LaptopKeyboardFix.md +CLX_ModuleSetup_16: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-LaptopKeyboardFix.md #Include ./Modules/CLX-LaptopKeyboardFix.ahk Return #If -CapsLockX_ModuleSetup_17: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-MediaKeys.md +CLX_ModuleSetup_17: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-MediaKeys.md #Include ./Modules/CLX-MediaKeys.ahk Return #If -CapsLockX_ModuleSetup_18: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-Mouse.md +CLX_ModuleSetup_18: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-Mouse.md #Include ./Modules/CLX-Mouse.ahk Return #If -CapsLockX_ModuleSetup_19: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_19: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-Pause.ahk Return #If -CapsLockX_ModuleSetup_20: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_20: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-Reload.ahk Return #If -CapsLockX_ModuleSetup_21: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_21: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-RunOnLogin.ahk Return #If -CapsLockX_ModuleSetup_22: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_22: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-Settings.ahk Return #If -CapsLockX_ModuleSetup_23: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_23: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-Userscripts.ahk Return #If -CapsLockX_ModuleSetup_24: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_24: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/CLX-VirtualDesktop.ahk Return #If -CapsLockX_ModuleSetup_25: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-WindowManager.md +CLX_ModuleSetup_25: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/CLX-WindowManager.md #Include ./Modules/CLX-WindowManager.ahk Return #If -CapsLockX_ModuleSetup_26: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_26: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/EmojiSearchByPreferLanguage.ahk Return #If -CapsLockX_ModuleSetup_27: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/QuickInput.md +CLX_ModuleSetup_27: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/QuickInput.md #Include ./Modules/QuickInput.ahk Return #If -CapsLockX_ModuleSetup_28: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_28: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/QuickTips.ahk Return #If -CapsLockX_ModuleSetup_29: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_29: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/SnoChordTyping.ahk Return #If -CapsLockX_ModuleSetup_30: - CapsLockX_THIS_MODULE_HELP_FILE_PATH := "" +CLX_ModuleSetup_30: + CLX_THIS_MODULE_HELP_FILE_PATH := "" #Include ./Modules/SNOCLICK.ahk Return #If -CapsLockX_ModuleSetup_31: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/TomatoLife.md +CLX_ModuleSetup_31: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/TomatoLife.md #Include ./Modules/TomatoLife.ahk Return #If -CapsLockX_ModuleSetup_32: - CapsLockX_THIS_MODULE_HELP_FILE_PATH = ./Modules/TurnOffScreenWhenLock.md +CLX_ModuleSetup_32: + CLX_THIS_MODULE_HELP_FILE_PATH = ./Modules/TurnOffScreenWhenLock.md #Include ./Modules/TurnOffScreenWhenLock.ahk Return diff --git a/Core/CapsLockX-QuickTips.ahk b/Core/CapsLockX-QuickTips.ahk index fbfd0ea..23ee01a 100644 --- a/Core/CapsLockX-QuickTips.ahk +++ b/Core/CapsLockX-QuickTips.ahk @@ -20,10 +20,10 @@ QuickTips(){ msg .= "| Shift + z | 下一个窗口激活 |`n" msg .= "| Ctrl + Alt + x | 杀死窗口并切到下一窗口 |`n" msg .= "| Shift + Ctrl + c | 自动堆叠窗口(包括最小化的窗口) |`n" - msg .= "| \ | CapsLockX_模块重载 |`n" - msg .= "| Shift + \ | CapsLockX_Reload |`n" - msg .= "| Shift + \ | CapsLockX_重新启动 |`n" - msg .= "| Shift + Ctrl + \ | CapsLockX_退出 |`n" + msg .= "| \ | CLX_模块重载 |`n" + msg .= "| Shift + \ | CLX_Reload |`n" + msg .= "| Shift + \ | CLX_重新启动 |`n" + msg .= "| Shift + Ctrl + \ | CLX_退出 |`n" msg .= "| m | 配置文件编辑 |`n" } } diff --git a/Core/CapsLockX-RunSilent.ahk b/Core/CapsLockX-RunSilent.ahk index c8aaa34..15dc637 100644 --- a/Core/CapsLockX-RunSilent.ahk +++ b/Core/CapsLockX-RunSilent.ahk @@ -57,6 +57,6 @@ StdoutToVar_CreateProcess(sCmd, sEncoding:="CP0", sDir:="", ByRef nExitCode:=0){ Return sOutput } -CapsLockX_RunSilent(command){ +CLX_RunSilent(command){ Return StdoutToVar_CreateProcess(command) } \ No newline at end of file diff --git a/Core/CapsLockX-Update.ahk b/Core/CapsLockX-Update.ahk index bbbb645..c9cc6bf 100644 --- a/Core/CapsLockX-Update.ahk +++ b/Core/CapsLockX-Update.ahk @@ -17,126 +17,126 @@ #Include *i ./CapsLockX-Config.ahk #Include *i ./CapsLockX-RunSilent.ahk -if(FileExist(CapsLockX_配置路径)) { +if(FileExist(CLX_ConfigPath)) { global T_CheckUpdate global T_DownloadUpdate ; 用ConfigGet防止触发自动重载 - T_CheckUpdate := CapsLockX_ConfigGet("Update", "T_CheckUpdate", 1) - T_DownloadUpdate := CapsLockX_ConfigGet("Update", "T_DownloadUpdate", 1) + T_CheckUpdate := CLX_ConfigGet("Update", "T_CheckUpdate", 1) + T_DownloadUpdate := CLX_ConfigGet("Update", "T_DownloadUpdate", 1) } -global CapsLockX_Update_Updated := 0x01 -global CapsLockX_Update_Fail := 0x02 -global CapsLockX_Update_AlreadyLatest := 0x04 -global CapsLockX_Update_NeedUpdate := 0x08 -global CapsLockX_Update_Stop := 0x10 +global CLX_Update_Updated := 0x01 +global CLX_Update_Fail := 0x02 +global CLX_Update_AlreadyLatest := 0x04 +global CLX_Update_NeedUpdate := 0x08 +global CLX_Update_Stop := 0x10 ; Sleep, 5000 if (T_CheckUpdate) - CapsLockX_更新() -; CapsLockX_更新记录("发现新版本!准备更新:" "`n仓库版本:" remote "`n我的版本:" local) + CLX_更新() +; CLX_更新记录("发现新版本!准备更新:" "`n仓库版本:" remote "`n我的版本:" local) ; TODO ; TrayTip, CapsLockX 更新模块, 更新完成 ; Sleep, 5000 return -CapsLockX_更新记录(msg){ +CLX_更新记录(msg){ ; TrayTip CapsLockX 更新, %msg% ; ToolTip, CapsLockX 更新:%msg% ; MsgBox, CapsLockX 更新:%msg% } -CapsLockX_更新提示(msg){ +CLX_更新提示(msg){ ; TrayTip CapsLockX 更新, %msg% ; ToolTip, CapsLockX 更新:%msg% MsgBox, CapsLockX 更新:%msg% } -CapsLockX_仓库版本号比对(remote, local){ +CLX_仓库版本号比对(remote, local){ ; from [(1) Simple version comparison - AutoHotkey Community](https://www.autohotkey.com/boards/viewtopic.php?f=6&t=5959) ver_local := StrSplit(local, ".") ver_other := StrSplit(remote, ".") for _ in dex, _num in ver_local { if ( (ver_other[_index]+0) > (_num+0) ) { - CapsLockX_更新记录("发现新版本!准备更新:" "`n仓库版本:" remote "`n我的版本:" local) + CLX_更新记录("发现新版本!准备更新:" "`n仓库版本:" remote "`n我的版本:" local) return 1 } else if ( (ver_other[_index]+0) < (_num+0) ) { - ; CapsLockX_更新记录("当前已经是最新版本" "`n仓库版本:" remote "`n我的版本:" local) + ; CLX_更新记录("当前已经是最新版本" "`n仓库版本:" remote "`n我的版本:" local) return -1 } - ; CapsLockX_更新记录("当前已经是最新版本" "`n仓库版本:" remote "`n我的版本:" local) + ; CLX_更新记录("当前已经是最新版本" "`n仓库版本:" remote "`n我的版本:" local) return 0 } } -CapsLockX_通过npm更新尝试(){ +CLX_通过npm更新尝试(){ EnvGet, APPDATA, APPDATA NPM全局安装也 := InStr(A_ScriptFullPath, APPDATA) == 1 && InStr("node_modules", A_ScriptFullPath) if(!NPM全局安装也) { - return CapsLockX_Update_Fail + return CLX_Update_Fail } - CapsLockX_更新记录("当前版本由 npm i -g 安装,正在尝试通过 npm update -g capslockx 更新") + CLX_更新记录("当前版本由 npm i -g 安装,正在尝试通过 npm update -g capslockx 更新") 更新成功 := 0 - || "SUCC" == CapsLockX_RunSilent("cmd /c cnpm update -g capslockx && echo SUCC || echo FAIL") - || "SUCC" == CapsLockX_RunSilent("cmd /c npm update -g capslockx && echo SUCC || echo FAIL") - return 更新成功 ? CapsLockX_Update_AlreadyLatest : CapsLockX_Update_Fail + || "SUCC" == CLX_RunSilent("cmd /c cnpm update -g capslockx && echo SUCC || echo FAIL") + || "SUCC" == CLX_RunSilent("cmd /c npm update -g capslockx && echo SUCC || echo FAIL") + return 更新成功 ? CLX_Update_AlreadyLatest : CLX_Update_Fail } -CapsLockX_通过gitpull更新(tryAgainFlag := 0){ - GIT仓库安装也 := "true" == Trim(CapsLockX_RunSilent("cmd /c git rev-parse --is-inside-work-tree"), "`r`n`t` ") +CLX_通过gitpull更新(tryAgainFlag := 0){ + GIT仓库安装也 := "true" == Trim(CLX_RunSilent("cmd /c git rev-parse --is-inside-work-tree"), "`r`n`t` ") if(!GIT仓库安装也) { - return CapsLockX_Update_Fail + return CLX_Update_Fail } - CapsLockX_更新记录("当前版本由 git clone 安装,正在尝试通过 git pull 更新" tryAgainFlag) - 命令返回 := CapsLockX_RunSilent("cmd /c git fetch && git pull") + CLX_更新记录("当前版本由 git clone 安装,正在尝试通过 git pull 更新" tryAgainFlag) + 命令返回 := CLX_RunSilent("cmd /c git fetch && git pull") if(Trim(命令返回, "`t`r`n ") == "Already up to date.") { - CapsLockX_更新记录("CapsLockX 已是最新") - return CapsLockX_Update_AlreadyLatest + CLX_更新记录("CapsLockX 已是最新") + return CLX_Update_AlreadyLatest } if(命令返回) { if(tryAgainFlag) { ; 通常是有错误发生。 - CapsLockX_更新记录("git pull 错误:" 命令返回) - Return CapsLockX_Update_Fail | CapsLockX_Update_Stop + CLX_更新记录("git pull 错误:" 命令返回) + Return CLX_Update_Fail | CLX_Update_Stop } else { - return CapsLockX_通过gitpull更新("tryAgainFlag") + return CLX_通过gitpull更新("tryAgainFlag") } } - return CapsLockX_Update_Fail | CapsLockX_Update_Stop + return CLX_Update_Fail | CLX_Update_Stop } -CapsLockX_通过发布包_更新(版本文件地址, 包网址){ - CapsLockX_更新记录("正在获取新版本号...地址:" 版本文件地址) +CLX_通过发布包_更新(版本文件地址, 包网址){ + CLX_更新记录("正在获取新版本号...地址:" 版本文件地址) UrlDownloadToFile, %版本文件地址%, Core/version-remote.txt FileRead, version, Core/version.txt FileRead, remoteVersion, Core/version-remote.txt if(!remoteVersion || !version) { - return CapsLockX_Update_Fail + return CLX_Update_Fail } - CapsLockX_更新记录("正在比对版本号...地址:" 版本文件地址) - ver_cmp := CapsLockX_仓库版本号比对(remoteVersion, version) + CLX_更新记录("正在比对版本号...地址:" 版本文件地址) + ver_cmp := CLX_仓库版本号比对(remoteVersion, version) if(ver_cmp<0) { - return CapsLockX_Update_Updated + return CLX_Update_Updated } ; if(ver_cmp==0) - ; return CapsLockX_Update_AlreadyLatest + ; return CLX_Update_AlreadyLatest if(!T_DownloadUpdate) { return } 包路径 := A_Temp "/CapsLockX-UpdatePackage" "/" remoteVersion ".zip" 解压目录 := A_Temp "/CapsLockX-UpdatePackage" "/CapsLockX-" remoteVersion 程序目录 := A_Temp "/CapsLockX-UpdatePackage" "/CapsLockX-" remoteVersion - return CapsLockX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录) + return CLX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录) } -CapsLockX_通过git仓库包_更新(版本文件地址, 归档文件前缀){ - CapsLockX_更新记录("正在获取新版本号...地址:" 版本文件地址) +CLX_通过git仓库包_更新(版本文件地址, 归档文件前缀){ + CLX_更新记录("正在获取新版本号...地址:" 版本文件地址) UrlDownloadToFile, %版本文件地址%, Core/version-remote.txt FileRead, version, Core/version.txt FileRead, remoteVersion, Core/version-remote.txt if(!remoteVersion || !version) { - return CapsLockX_Update_Fail + return CLX_Update_Fail } - CapsLockX_更新记录("正在比对版本号...地址:" 版本文件地址) - ver_cmp := CapsLockX_仓库版本号比对(remoteVersion, version) + CLX_更新记录("正在比对版本号...地址:" 版本文件地址) + ver_cmp := CLX_仓库版本号比对(remoteVersion, version) if(ver_cmp<0) { - return CapsLockX_Update_Updated + return CLX_Update_Updated } ; if(ver_cmp==0) - ; return CapsLockX_Update_AlreadyLatest + ; return CLX_Update_AlreadyLatest if(!T_DownloadUpdate) { return } @@ -144,111 +144,111 @@ CapsLockX_通过git仓库包_更新(版本文件地址, 归档文件前缀){ 包路径 := A_Temp "\CapsLockX-UpdateArchive" "/" remoteVersion ".zip" 解压目录 := A_Temp "\CapsLockX-UpdateArchive" "/" remoteVersion 程序目录 := A_Temp "\CapsLockX-UpdateArchive" "/" remoteVersion "/CapsLockX-" remoteVersion - return CapsLockX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录) + return CLX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录) } -CapsLockX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录){ +CLX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录){ FileCreateDir %解压目录% - CapsLockX_更新记录("正在下载新版本...地址:" 包网址) + CLX_更新记录("正在下载新版本...地址:" 包网址) UrlDownloadToFile %包网址%, %包路径% if(ErrorLevel) { - return CapsLockX_Update_Fail + return CLX_Update_Fail } - CapsLockX_更新记录("下载完成,正在解压...") + CLX_更新记录("下载完成,正在解压...") RunWait PowerShell.exe -Command Expand-Archive -LiteralPath '%包路径%' -DestinationPath '%解压目录%' -Force, , Hide if(ErrorLevel) { msgbox CapsLockX 更新解压错误 Run explorer /select`, %包路径% - return CapsLockX_Update_Fail | CapsLockX_Update_Stop + return CLX_Update_Fail | CLX_Update_Stop } ; 删除压缩包 FileDelete, %包路径% - + if(!FileExist(程序目录)) { - CapsLockX_更新记录("解压错误:未找到程序目录,将打开解压目录") + CLX_更新记录("解压错误:未找到程序目录,将打开解压目录") Run explorer %解压目录% - return CapsLockX_Update_Fail | CapsLockX_Update_Stop + return CLX_Update_Fail | CLX_Update_Stop } - CapsLockX_更新记录("解压完成...") - - CapsLockX_更新提示("解压完成,将打开新版本文件夹,请把它手动复制到当前软件目录。") + CLX_更新记录("解压完成...") + + CLX_更新提示("解压完成,将打开新版本文件夹,请把它手动复制到当前软件目录。") Run explorer /select`, %程序目录% Run explorer /select`, %A_ScriptDir% ; TODO REPLACE CURRENT FOLDER - Return CapsLockX_Update_Updated + Return CLX_Update_Updated } -CapsLockX_更新(){ - stopFlag := CapsLockX_Update_AlreadyLatest | CapsLockX_Update_Updated | CapsLockX_Update_Stop +CLX_更新(){ + stopFlag := CLX_Update_AlreadyLatest | CLX_Update_Updated | CLX_Update_Stop return false ; 依次尝试,直到更新成功或已是最新 - || stopFlag & CapsLockX_通过gitpull更新() - || stopFlag & CapsLockX_通过npm更新尝试() - || stopFlag & CapsLockX_通过jsdelivr发布包更新() - || stopFlag & CapsLockX_通过snomiao发布包更新() - || stopFlag & CapsLockX_通过github发布包更新() - || stopFlag & CapsLockX_通过github仓库包更新() - ; || stopFlag & CapsLockX_通过gitee仓库包更新() - ; || stopFlag & CapsLockX_通过gitlab仓库包更新() + || stopFlag & CLX_通过gitpull更新() + || stopFlag & CLX_通过npm更新尝试() + || stopFlag & CLX_通过jsdelivr发布包更新() + || stopFlag & CLX_通过snomiao发布包更新() + || stopFlag & CLX_通过github发布包更新() + || stopFlag & CLX_通过github仓库包更新() + ; || stopFlag & CLX_通过gitee仓库包更新() + ; || stopFlag & CLX_通过gitlab仓库包更新() } -CapsLockX_更新测试(){ +CLX_更新测试(){ msgbox 将 通过gitpull更新 - 通过gitpull更新结果 := CapsLockX_通过gitpull更新() + 通过gitpull更新结果 := CLX_通过gitpull更新() msgbox 通过gitpull更新结果 msgbox 将 通过npm更新 - 通过npm更新结果 := CapsLockX_通过npm更新尝试() + 通过npm更新结果 := CLX_通过npm更新尝试() msgbox 通过npm更新结果 msgbox 将 通过jsdelivr发布包更新 - 通过jsdelivr发布包更新结果 := CapsLockX_通过jsdelivr发布包更新() + 通过jsdelivr发布包更新结果 := CLX_通过jsdelivr发布包更新() msgbox 通过jsdelivr发布包更新结果 msgbox 将 通过snomiao发布包更新 - 通过snomiao发布包更新结果 := CapsLockX_通过snomiao发布包更新() + 通过snomiao发布包更新结果 := CLX_通过snomiao发布包更新() msgbox 通过snomiao发布包更新结果 msgbox 将 通过github发布包更新 - 通过github发布包更新结果 := CapsLockX_通过github发布包更新() + 通过github发布包更新结果 := CLX_通过github发布包更新() msgbox 通过github发布包更新结果 msgbox 将 通过github仓库包更新 - 通过github仓库包更新结果 := CapsLockX_通过github仓库包更新() + 通过github仓库包更新结果 := CLX_通过github仓库包更新() msgbox 通过github仓库包更新结果 ; msgbox 将 通过gitee仓库包更新 - ; ; 通过gitee仓库包更新结果 := CapsLockX_通过gitee仓库包更新() + ; ; 通过gitee仓库包更新结果 := CLX_通过gitee仓库包更新() ; msgbox 通过gitee仓库包更新结果 ; msgbox 将 通过gitlab仓库包更新 - ; ; 通过gitlab仓库包更新结果 := CapsLockX_通过gitlab仓库包更新() + ; ; 通过gitlab仓库包更新结果 := CLX_通过gitlab仓库包更新() ; msgbox 通过gitlab仓库包更新结果 } -CapsLockX_通过jsdelivr发布包更新(){ - CapsLockX_更新记录("正在通过jsdelivr发布包更新") +CLX_通过jsdelivr发布包更新(){ + CLX_更新记录("正在通过jsdelivr发布包更新") 版本文件地址:="https://cdn.jsdelivr.net/gh/snolab/CapsLockX@gh-pages/version.txt" 发布包文件地址:="https://cdn.jsdelivr.net/gh/snolab/CapsLockX@gh-pages/CapsLockX-latest.zip" - return CapsLockX_通过发布包_更新(版本文件地址, 发布包文件地址) + return CLX_通过发布包_更新(版本文件地址, 发布包文件地址) } -CapsLockX_通过snomiao发布包更新(){ - CapsLockX_更新记录("正在通过snomiao发布包更新") +CLX_通过snomiao发布包更新(){ + CLX_更新记录("正在通过snomiao发布包更新") 版本文件地址:="https://capslockx.snomiao.com/version.txt" 发布包文件地址:="https://capslockx.snomiao.com/CapsLockX-latest.zip" - return CapsLockX_通过发布包_更新(版本文件地址, 发布包文件地址) + return CLX_通过发布包_更新(版本文件地址, 发布包文件地址) } -CapsLockX_通过github发布包更新(){ - CapsLockX_更新记录("正在通过github发布包更新") +CLX_通过github发布包更新(){ + CLX_更新记录("正在通过github发布包更新") 版本文件地址:="https://github.com/snolab/CapsLockX/raw/gh-pages/version.txt" 发布包文件地址:="https://github.com/snolab/CapsLockX/raw/gh-pages/CapsLockX-latest.zip" - return CapsLockX_通过发布包_更新(版本文件地址, 发布包文件地址) + return CLX_通过发布包_更新(版本文件地址, 发布包文件地址) } -CapsLockX_通过github仓库包更新(){ - CapsLockX_更新记录("正在检查更新: github") +CLX_通过github仓库包更新(){ + CLX_更新记录("正在检查更新: github") 版本文件地址:="https://github.com/snomiao/CapsLockX/raw/master/Core/version.txt" 归档文件前缀:="https://github.com/snomiao/CapsLockX/archive" - return CapsLockX_通过git仓库包_更新(版本文件地址, 归档文件前缀) + return CLX_通过git仓库包_更新(版本文件地址, 归档文件前缀) } -; CapsLockX_通过gitee仓库包更新(){ -; CapsLockX_更新记录("正在检查更新: gitee") +; CLX_通过gitee仓库包更新(){ +; CLX_更新记录("正在检查更新: gitee") ; 版本文件地址:="https://gitee.com/snomiao/CapslockX/raw/master/Core/version.txt" ; 归档文件前缀:="https://gitee.com/snomiao/CapslockX/repository/archive" -; return CapsLockX_通过git仓库包_更新(版本文件地址, 归档文件前缀) +; return CLX_通过git仓库包_更新(版本文件地址, 归档文件前缀) ; } -; CapsLockX_通过gitlab仓库包更新(){ -; CapsLockX_更新记录("正在检查更新: gitlab") +; CLX_通过gitlab仓库包更新(){ +; CLX_更新记录("正在检查更新: gitlab") ; 版本文件地址:="https://gitlab.com/snomiao/CapsLockX/-/raw/master/Core/version.txt" ; 归档文件前缀:="https://gitlab.com/snomiao/CapsLockX/-/archive/master/CapsLockX-master.zip" -; return CapsLockX_通过git仓库包_更新(版本文件地址, 归档文件前缀) +; return CLX_通过git仓库包_更新(版本文件地址, 归档文件前缀) ; } diff --git a/Core/CapsLockX-i18n.ahk b/Core/CapsLockX-i18n.ahk index 29ff6f1..f2898ef 100644 --- a/Core/CapsLockX-i18n.ahk +++ b/Core/CapsLockX-i18n.ahk @@ -1,7 +1,105 @@ -global CapsLockX_lang := "en" +; - [Language Codes \| AutoHotkey v1]( https://www.autohotkey.com/docs/v1/misc/Languages.htm ) -; TODO: convert s -t(s){ - CapsLockX_Config("lang-en", s, s, ) - return s +global CLX_Lang := CLX_Config("Core", "Language", "auto", "语言切换") + +; Hans +LCID_7804 := "Chinese" ; zh +LCID_0004 := "Chinese (Simplified)" ; zh-Hans +LCID_0804 := "Chinese (Simplified, China)" ; zh-CN +LCID_1004 := "Chinese (Simplified, Singapore)" ; zh-SG +LCID_7C04 := "Chinese (Traditional)" ; zh-Hant +LCID_0C04 := "Chinese (Traditional, Hong Kong SAR)" ; zh-HK +LCID_1404 := "Chinese (Traditional, Macao SAR)" ; zh-MO +LCID_0404 := "Chinese (Traditional, Taiwan)" ; zh-TW +LCID_0011 := "Japanese" ; ja +LCID_0411 := "Japanese (Japan)" ; ja-JP + +; TODO: converts +t(s) +{ + global CLX_Lang + + key := s + defaultValue := s + explain := s + + ; for dev, autotranslate + ; run node "prompts/translate-en.md" + lang := "en" + if ( CLX_Lang == "auto" ) { + if (A_Language == "7804") { + lang := "zh" + } + if (A_Language == "0004") { + lang := "zh" + } + if (A_Language == "0804") { + lang := "zh" + } + if (A_Language == "1004") { + lang := "zh" + } + if (A_Language == "7C04") { + lang := "zh" + } + if (A_Language == "0C04") { + lang := "zh" + } + if (A_Language == "1404") { + lang := "zh" + } + if (A_Language == "0404") { + lang := "zh" + } + if (A_Language == "0011") { + lang := "ja" + } + if (A_Language == "0411") { + lang := "ja" + } + } + clx_i18n_TranslateByAsync(lang, key) + return CLX_ConfigGet("lang-" lang, key, key) +} +clx_i18n_TranslateByAsync(lang, key){ + translated := CLX_ConfigGet("lang-" lang, key, "") + if (translated) { + return + } + question := key . "`n`nTranslate to " . lang + + ; TrayTip, % "CapsLockX i18n [" . lang "]", % key "-->" lang, + + global brainstorm_origin + endpoint := brainstorm_origin "/ai/chat?ret=text" + xhr := ComObjCreate("Msxml2.XMLHTTP") + xhr.Open("POST", endpoint) + xhr.setRequestHeader("Authorization", "Bearer " . brainstormApiKey) + xhr.onreadystatechange := Func("brainstorm_translatePostResult").Bind(lang, key, xhr) + xhr.Send(question) +} +brainstorm_translatePostResult(lang, key, xhr){ + if (xhr.readyState != 4) + return + if (xhr.status != 200) { + if (xhr.status == 429) { + MsgBox, % xhr.responseText " Please wait a moment then try again." + } + MsgBox, % xhr.responseText " Unknown Error" + return + } + global transcript := xhr.responseText + if (!transcript) { + MsgBox, fail to ask ai + return + } + TrayTip, % "CapsLockX i18n [" . lang . "]", % key "=>" transcript, + + CLX_ConfigSet("lang-" lang, key, transcript) +} + +i18n_changeLanguage(lang := "auto") +{ + CLX_Lang := lang + CLX_ConfigSet("Core", "Language", lang) } \ No newline at end of file diff --git a/Core/CapslockX-Config.ahk b/Core/CapslockX-Config.ahk index 8d15ad5..a903970 100644 --- a/Core/CapslockX-Config.ahk +++ b/Core/CapslockX-Config.ahk @@ -1,57 +1,56 @@ ; 保存为 save with UTF8 with DOM ; 用户创建目录 -便携版配置目录 = ./User -用户目录配置目录 = %USERPROFILE%/.CapsLockX -APPDATA配置目录 = %APPDATA%/CapsLockX +ConfigDir_Portable := "./User" +ConfigDir_UserProfile := USERPROFILE . "/.CapsLockX" +ConfigDir_AppData := APPDATA . "/CapsLockX" ; 默认值 -启动配置目录 := APPDATA配置目录 +LaunchConfigDir := ConfigDir_AppData -if ( InStr(FileExist(APPDATA配置目录), "D")) { - 启动配置目录 := APPDATA配置目录 +if ( InStr(FileExist(ConfigDir_AppData), "D")) { + LaunchConfigDir := ConfigDir_AppData } -if ( InStr(FileExist(用户目录配置目录), "D")) { - 启动配置目录 := 用户目录配置目录 +if ( InStr(FileExist(ConfigDir_UserProfile), "D")) { + LaunchConfigDir := ConfigDir_UserProfile } -if ( InStr(FileExist(便携版配置目录), "D")) { - 启动配置目录 := 便携版配置目录 +if ( InStr(FileExist(ConfigDir_Portable), "D")) { + LaunchConfigDir := ConfigDir_Portable } -FileCreateDir %启动配置目录% +FileCreateDir %LaunchConfigDir% -global CapsLockX_配置目录 := 启动配置目录 -; msgbox %CapsLockX_配置目录% -global CapsLockX_配置路径 := CapsLockX_配置目录 "/CapsLockX-Config.ini" +global CLX_ConfigDir := LaunchConfigDir +global CLX_ConfigPath := CLX_ConfigDir . "\CapsLockX-Config.ini" ; 初始化配置 -if (!CapsLockX_配置路径) { +if (!CLX_ConfigPath) { Return } ; 配置文件编码清洗 -global CapsLockX_ConfigChangedTickCount -CapsLockX_ConfigChangedTickCount := A_TickCount +global CLX_ConfigChangedTickCount +CLX_ConfigChangedTickCount := A_TickCount ; msgbox 清洗为_UTF16_WITH_BOM_型编码1 -清洗为_UTF16_WITH_BOM_型编码(CapsLockX_配置路径) +清洗为_UTF16_WITH_BOM_型编码(CLX_ConfigPath) ; msgbox 清洗为_UTF16_WITH_BOM_型编码2 -CapsLockX_Config("_NOTICE_", "ENCODING_USING", "UTF16_LE", "") +CLX_Config("_NOTICE_", "ENCODING_USING", "UTF16_LE", "") ; 基本设定 ; [Core] -global T_XKeyAsSpace := CapsLockX_Config("Core", "T_XKeyAsSpace", 1, "使用 Space 作为引导键(默认启用,游戏玩家可在 .user.ignore.txt 里配置忽略游戏窗口)") -global T_XKeyAsCapsLock := CapsLockX_Config("Core", "T_XKeyAsCapsLock", 1, "使用 CapsLock 作为引导键(默认启用)") -global T_XKeyAsInsert := CapsLockX_Config("Core", "T_XKeyAsInsert", 0, "使用 Insert 作为引导键") -global T_XKeyAsScrollLock := CapsLockX_Config("Core", "T_XKeyAsScrollLock", 0, "使用 ScrollLock 作为引导键") -global T_XKeyAsRAlt := CapsLockX_Config("Core", "T_XKeyAsRAlt", 0, "使用 右 Alt 作为引导键") - -global T_UseScrollLockLight := CapsLockX_Config("Advanced", "T_UseScrollLockLight", 0, "进阶: 是否使用 ScrollLock 灯来显示 CapsLockX 状态(不建议)") -global T_UseCapsLockLight := CapsLockX_Config("Advanced", "T_UseCapsLockLight", 0, "进阶: 是否使用 CapsLockX 灯来显示 CapsLockX 状态(强烈不建议)") -global T_SwitchSound := CapsLockX_Config("Advanced", "T_SwitchSound", 0, "进阶: 是否开启CapsLockX模式切换声音提示(默认不开)") -global T_SwitchSoundOn := CapsLockX_Config("Advanced", "T_SwitchSoundOn", "./Data/NoteG.mp3", "CapsLockX 按下声音提示路径") -global T_SwitchSoundOff := CapsLockX_Config("Advanced", "T_SwitchSoundOff", "./Data/NoteC.mp3", "CapsLockX 弹起声音提示路径") +global T_XKeyAsSpace := CLX_Config("Core", "T_XKeyAsSpace", 1, ("使用 Space 作为引导键(默认启用,游戏玩家可在 .user.ignore.txt 里配置忽略游戏窗口)")) +global T_XKeyAsCapsLock := CLX_Config("Core", "T_XKeyAsCapsLock", 1, ("使用 CapsLock 作为引导键(默认启用)")) +global T_XKeyAsInsert := CLX_Config("Core", "T_XKeyAsInsert", 0, ("使用 Insert 作为引导键")) +global T_XKeyAsScrollLock := CLX_Config("Core", "T_XKeyAsScrollLock", 0, ("使用 ScrollLock 作为引导键")) +global T_XKeyAsRAlt := CLX_Config("Core", "T_XKeyAsRAlt", 0, ("使用 右 Alt 作为引导键")) + +global T_UseScrollLockLight := CLX_Config("Advanced", "T_UseScrollLockLight", 0, "进阶: 是否使用 ScrollLock 灯来显示 CapsLockX 状态(不建议)") +global T_UseCapsLockLight := CLX_Config("Advanced", "T_UseCapsLockLight", 0, "进阶: 是否使用 CapsLockX 灯来显示 CapsLockX 状态(强烈不建议)") +global T_SwitchSound := CLX_Config("Advanced", "T_SwitchSound", 0, "进阶: 是否开启CapsLockX模式切换声音提示(默认不开)") +global T_SwitchSoundOn := CLX_Config("Advanced", "T_SwitchSoundOn", "./Data/NoteG.mp3", "CapsLockX 按下声音提示路径") +global T_SwitchSoundOff := CLX_Config("Advanced", "T_SwitchSoundOff", "./Data/NoteC.mp3", "CapsLockX 弹起声音提示路径") ; 不同模式下的拖盘图标 -; global T_SwitchTrayIconDefault := CapsLockX_Config("Core", "T_SwitchTrayIconDefault", "./Data/XIconWhite.ico", "CapsLockX默认托盘显示图标,默认" "./Data/XIconWhite.ico") -global T_SwitchTrayIconOff := CapsLockX_Config("Advanced", "T_SwitchTrayIconOff", "./Data/XIconWhite.ico", "CapsLockX弹起托盘显示图标,默认为 " "./Data/XIconWhite.ico") -global T_SwitchTrayIconOn := CapsLockX_Config("Advanced", "T_SwitchTrayIconOn", "./Data/XIconBlue.ico", "CapsLockX按下托盘显示图标,默认为 " "./Data/XIconBlue.ico") +; global T_SwitchTrayIconDefault := CLX_Config("Core", "T_SwitchTrayIconDefault", "./Data/XIconWhite.ico", "CapsLockX默认托盘显示图标,默认" "./Data/XIconWhite.ico") +global T_SwitchTrayIconOff := CLX_Config("Advanced", "T_SwitchTrayIconOff", "./Data/XIconWhite.ico", "CapsLockX弹起托盘显示图标,默认为 " "./Data/XIconWhite.ico") +global T_SwitchTrayIconOn := CLX_Config("Advanced", "T_SwitchTrayIconOn", "./Data/XIconBlue.ico", "CapsLockX按下托盘显示图标,默认为 " "./Data/XIconBlue.ico") IniSave(content, path, field, varName, defaultValue := "") { @@ -62,46 +61,51 @@ IniSave(content, path, field, varName, defaultValue := "") IniWrite, %content%, %path%, %field%, %varName% return content } -CapsLockX_ConfigSet(field, varName, setValue, comment := "") + +CLX_ConfigSet(field, varName, setValue, comment := "") { - global CapsLockX_ConfigChangedTickCount - CapsLockX_ConfigChangedTickCount := A_TickCount + global CLX_ConfigChangedTickCount + CLX_ConfigChangedTickCount := A_TickCount content := setValue ConfigLock() ; 不对配置自动重新排序 if (comment) { - ; IniDelete, %CapsLockX_配置路径%, %field%, %varName%#注释 - ; IniWrite, %comment%, %CapsLockX_配置路径%, %field%, %varName%#注释 - IniSave( comment, CapsLockX_配置路径, field, varName . "#注释" ) + ; IniDelete, %CLX_ConfigPath%, %field%, %varName%#注释 + ; IniWrite, %comment%, %CLX_ConfigPath%, %field%, %varName%#注释 + IniSave( comment, CLX_ConfigPath, field, varName . "#注释" ) } - ; IniDelete, %CapsLockX_配置路径%, %field%, %varName% - ; IniWrite, %content%, %CapsLockX_配置路径%, %field%, %varName% - IniSave( content, CapsLockX_配置路径, field, varName) + ; IniDelete, %CLX_ConfigPath%, %field%, %varName% + ; IniWrite, %content%, %CLX_ConfigPath%, %field%, %varName% + IniSave( content, CLX_ConfigPath, field, varName) ConfigUnlock() return content } -CapsLockX_ConfigGet(field, varName, defaultValue) +CLX_ConfigGet(field, varName, defaultValue) { - global CapsLockX_ConfigChangedTickCount - CapsLockX_ConfigChangedTickCount := A_TickCount - IniRead, content, %CapsLockX_配置路径%, %field%, %varName%, %defaultValue% + global CLX_ConfigChangedTickCount + CLX_ConfigChangedTickCount := A_TickCount + + IniRead, content, %CLX_ConfigPath%, %field%, %varName%, %defaultValue% + if (content == "ERROR") { + return "" + } return content } -CapsLockX_Config(field, varName, defaultValue, comment := "") +CLX_Config(field, varName, defaultValue, comment := "") { - global CapsLockX_ConfigChangedTickCount - CapsLockX_ConfigChangedTickCount := A_TickCount - IniRead, content, %CapsLockX_配置路径%, %field%, %varName%, %defaultValue% - CapsLockX_ConfigSet(field, varName, content, comment) + global CLX_ConfigChangedTickCount + CLX_ConfigChangedTickCount := A_TickCount + IniRead, content, %CLX_ConfigPath%, %field%, %varName%, %defaultValue% + CLX_ConfigSet(field, varName, content, comment) ; 对配置自动重新排序 ; ConfigLock(field varName) ; if (comment) { - ; IniDelete, %CapsLockX_配置路径%, %field%, %varName%#注释 - ; IniWrite, %comment%, %CapsLockX_配置路径%, %field%, %varName%#注释 + ; IniDelete, %CLX_ConfigPath%, %field%, %varName%#注释 + ; IniWrite, %comment%, %CLX_ConfigPath%, %field%, %varName%#注释 ; } - ; IniDelete, %CapsLockX_配置路径%, %field%, %varName% - ; IniWrite, %content%, %CapsLockX_配置路径%, %field%, %varName% + ; IniDelete, %CLX_ConfigPath%, %field%, %varName% + ; IniWrite, %content%, %CLX_ConfigPath%, %field%, %varName% ; ConfigUnlock() return content } @@ -163,10 +167,10 @@ FileGetFormat(file) ConfigLock(名义:="") { k:= 0 - while (FileExist(CapsLockX_配置路径 ".lock")) { + while (FileExist(CLX_ConfigPath ".lock")) { k := k + 1 if ( k > 10 ) { - FileRead 上次名义, % CapsLockX_配置路径 ".lock" + FileRead 上次名义, % CLX_ConfigPath ".lock" ; MsgBox, 程序退出, %名义% 配置写入失败,配置文件被意外锁定,上次锁定名义为 %上次名义% ConfigUnlock() Reload @@ -175,14 +179,14 @@ ConfigLock(名义:="") } Sleep, 1000 } - CapsLockX_DontReload := 1 + CLX_DontReload := 1 - FileAppend %名义%, % CapsLockX_配置路径 ".lock" + FileAppend %名义%, % CLX_ConfigPath ".lock" return True } ConfigUnlock() { - FileDelete % CapsLockX_配置路径 ".lock" - CapsLockX_DontReload := 0 + FileDelete % CLX_ConfigPath ".lock" + CLX_DontReload := 0 return True } diff --git a/Core/CapslockX-Core.ahk b/Core/CapslockX-Core.ahk index 3a4c457..c2af973 100644 --- a/Core/CapslockX-Core.ahk +++ b/Core/CapslockX-Core.ahk @@ -33,13 +33,13 @@ SetTitleMatchMode RegEx global CapsLockX := 1 ; 模块运行标识符 global CapsLockXMode := 0 global ModuleState := 0 -global CapsLockX_FnActed := 0 +global CLX_FnActed := 0 global CM_NORMAL := 0 ; 普通模式(键盘的正常状态) global CM_FN := 1 ; 组合键 CapsLockX 模式(或称组合键模式 global CM_CapsLockX := 2 ; CapsLockX 模式,通过长按CLX键进入 ; global CM_FNX := 3 ; FnX 模式并不存在 global CapsLockPressTimestamp := 0 -global CapsLockX_上次触发键 := "" +global CLX_上次触发键 := "" ; value func CapsLockX() @@ -69,66 +69,66 @@ UpdateCapsLockXLight() global T_IgnoresByLines defaultIgnoreFilePath := "./Data/CapsLockX.defaults.ignore.txt" -userIgnoreFilePath := CapsLockX_配置目录 "/CapsLockX.user.ignore.txt" +userIgnoreFilePath := CLX_ConfigDir "/CapsLockX.user.ignore.txt" FileRead, T_IgnoresByLines, %userIgnoreFilePath% if (!T_IgnoresByLinesUser) { FileCopy, %defaultIgnoreFilePath%, %userIgnoreFilePath% FileRead, T_IgnoresByLines, %userIgnoreFilePath% } -global CapsLockX_Paused := 0 +global CLX_Paused := 0 -#if CapsLockX_Avaliable() +#if CLX_Avaliable() -#if CapsLockX_NotAvaliable() +#if CLX_NotAvaliable() #If -Hotkey, If, CapsLockX_Avaliable() +Hotkey, If, CLX_Avaliable() if(T_XKeyAsCapsLock) - Hotkey *CapsLock, CapsLockX_Dn + Hotkey *CapsLock, CLX_Dn if(T_XKeyAsSpace) - Hotkey *Space, CapsLockX_Dn + Hotkey *Space, CLX_Dn if(T_XKeyAsInsert) - Hotkey *Insert, CapsLockX_Dn + Hotkey *Insert, CLX_Dn if(T_XKeyAsScrollLock) - Hotkey *ScrollLock, CapsLockX_Dn + Hotkey *ScrollLock, CLX_Dn if(T_XKeyAsRAlt) - Hotkey *RAlt, CapsLockX_Dn + Hotkey *RAlt, CLX_Dn -Hotkey, If, CapsLockX_NotAvaliable() +Hotkey, If, CLX_NotAvaliable() if(T_XKeyAsCapsLock) - Hotkey CapsLock, CapsLockX_NotAvaliable + Hotkey CapsLock, CLX_NotAvaliable if(T_XKeyAsSpace) - Hotkey Space, CapsLockX_NotAvaliable + Hotkey Space, CLX_NotAvaliable if(T_XKeyAsInsert) - Hotkey Insert, CapsLockX_NotAvaliable + Hotkey Insert, CLX_NotAvaliable if(T_XKeyAsScrollLock) - Hotkey ScrollLock, CapsLockX_NotAvaliable + Hotkey ScrollLock, CLX_NotAvaliable if(T_XKeyAsRAlt) - Hotkey RAlt, CapsLockX_NotAvaliable + Hotkey RAlt, CLX_NotAvaliable Hotkey, If if(T_XKeyAsCapsLock) - Hotkey *CapsLock Up, CapsLockX_Up + Hotkey *CapsLock Up, CLX_Up if(T_XKeyAsSpace) - Hotkey *Space Up, CapsLockX_Up + Hotkey *Space Up, CLX_Up if(T_XKeyAsInsert) - Hotkey *Insert Up, CapsLockX_Up + Hotkey *Insert Up, CLX_Up if(T_XKeyAsScrollLock) - Hotkey *ScrollLock Up, CapsLockX_Up + Hotkey *ScrollLock Up, CLX_Up if(T_XKeyAsRAlt) - Hotkey *RAlt Up, CapsLockX_Up + Hotkey *RAlt Up, CLX_Up SetWorkingDir, %A_ScriptDir%\..\ #Include Core\CapsLockX-i18n.ahk ; todo: move this generated file into user folder #Include Core\CapsLockX-ModulesRunner.ahk -CapsLockX_Loaded() +CLX_Loaded() #Include Core\CapsLockX-ModulesFunctions.ahk SetWorkingDir, %A_ScriptDir%\..\ @@ -198,11 +198,11 @@ CapsLockXTurnOn() re := UpdateCapsLockXLight() Return re } -CapsLockX_NotAvaliable() +CLX_NotAvaliable() { - return !CapsLockX_Avaliable() + return !CLX_Avaliable() } -CapsLockX_Avaliable() +CLX_Avaliable() { return 1 flag_IgnoreWindow := 0 @@ -217,19 +217,19 @@ CapsLockX_Avaliable() } } } - return !CapsLockX_Paused + return !CLX_Paused } -CapsLockX_Loaded() +CLX_Loaded() { ; 使用退出键退出其它实例 SendInput ^!+\ - TrayTip CapsLockX %CapsLockX_VersionName%, 加载成功 - Menu, Tray, Tip, CapsLockX %CapsLockX_VersionName% + TrayTip CapsLockX %CLX_VersionName%, % t("加载成功") + Menu, Tray, Tip, CapsLockX %CLX_VersionName% } -CapsLockX_Reload() +CLX_Reload() { - ToolTip, CapsLockX 重载中 + ToolTip, % t("CapsLockX 重载中") static times := 0 times += 1 if (times == 1 && false) { @@ -246,23 +246,22 @@ CapsLockX_Reload() } } -CapsLockX_ModeExit() +CLX_ModeExit() { ; TrayTip CapsLockX, 退出CLX模式 ; ToolTip 退出CLX模式 ; SetTimer CLX_HideToolTips, -1000 CapsLockXMode &= ~CM_CapsLockX } -CapsLockX_ModeEnter() +CLX_ModeEnter() { ; ToolTip 进入CLX模式 ; SetTimer CLX_HideToolTips, -1000 CapsLockXMode |= CM_CapsLockX } -CapsLockX_Dn() +CLX_Dn() { - ; /* 组合键细节: 模式: @@ -278,7 +277,7 @@ CapsLockX_Dn() */ ; 按住其它键的时候 不触发 CapsLockX 避免影响打字 - CapsLockX_上次触发键 := 触发键 := RegExReplace(A_ThisHotkey, "[\$\*\!\^\+\#\s]") + CLX_上次触发键 := 触发键 := RegExReplace(A_ThisHotkey, "[\$\*\!\^\+\#\s]") 其它键按住 := 触发键 && 触发键 != A_PriorKey && GetKeyState(A_PriorKey, "P") WheelQ := InStr("WheelDown|WheelUp", A_PriorKey) SpaceQ := 触发键 == "Space" @@ -288,7 +287,7 @@ CapsLockX_Dn() CLX_AND_SPACE_Q := (A_PriorKey == "CapsLock" && 触发键 == "Space") || (触发键 == "CapsLock" && A_PriorKey == "Space" ) if (CLX_AND_SPACE_Q && A_TimeSincePriorHotkey < 250) { - ; CapsLockX_ModeEnter() + ; CLX_ModeEnter() CapsLockXMode |= CM_CapsLockX UpdateCapsLockXLight() KeyWait %触发键% @@ -298,7 +297,7 @@ CapsLockX_Dn() ; tooltip % ModifierQ "a" ModifierEnableQ "a" WheelQ "a" 其它键按住 BypassCapsLockX := !ModifierEnableQ && !WheelQ && 其它键按住 if (BypassCapsLockX) { - CapsLockX_上次触发键 := "" + CLX_上次触发键 := "" ; ToolTip, % first5char "_" 触发键 Send {Blind}{%触发键% Down} KeyWait %触发键% @@ -311,16 +310,16 @@ CapsLockX_Dn() } ; 进入 Fn 模式 ; if (CapsLockXMode & CM_CapsLockX) { - ; CapsLockX_ModeExit() + ; CLX_ModeExit() ; KeyWait, %waitKey% ; wait to prevent flashing the quit and enter message ; } - ; CapsLockX_ModeExit() + ; CLX_ModeExit() CapsLockXMode |= CM_FN CapsLockXMode &= ~CM_CapsLockX ; ToolTip clxmode - if (A_PriorKey == CapsLockX_上次触发键) { + if (A_PriorKey == CLX_上次触发键) { if (A_PriorKey == "Space") { ; 长按空格时保持原功能 ; TODO: read system repeat interval @@ -330,19 +329,19 @@ CapsLockX_Dn() } else { if ( A_TickCount - CapsLockPressTimestamp > 1000) { ; (20210817)长按(空格除外) - waitKey := CapsLockX_上次触发键 + waitKey := CLX_上次触发键 ; 取消长按CLX进入CLX锁定模式 - ; CapsLockX_ModeEnter() + ; CLX_ModeEnter() ; 尝试增加长按显示热键提示 - ; Func("CapsLockX_LongPressDown").Call() + ; Func("CLX_LongPressDown").Call() KeyWait, %waitKey% ; wait to prevent flashing the quit and enter message - ; Func("CapsLockX_LongPressUp").Call() + ; Func("CLX_LongPressUp").Call() } } } UpdateCapsLockXLight() } -CapsLockX_Up() +CLX_Up() { CapsLockPressTimestamp := 0 @@ -350,12 +349,12 @@ CapsLockX_Up() CapsLockXMode &= ~CM_FN ; CLX单击弹起时 - if (A_PriorKey == CapsLockX_上次触发键) { + if (A_PriorKey == CLX_上次触发键) { if (CapsLockXMode & CM_CapsLockX) { - ; CapsLockX_ModeExit() + ; CLX_ModeExit() } else { ; 单击 CapsLockX - if (CapsLockX_上次触发键 == "CapsLock") { + if (CLX_上次触发键 == "CapsLock") { ; 切换 CapsLock 状态(原功能) if (GetKeyState("CapsLock", "T")) { SetCapsLockState, Off @@ -364,14 +363,14 @@ CapsLockX_Up() } } ; 单击 空格键 - if (CapsLockX_上次触发键 == "Space") { + if (CLX_上次触发键 == "Space") { ; 原功能(按空格键) Send {Blind}{Space} } } } UpdateCapsLockXLight() - CapsLockX_上次触发键 := "" + CLX_上次触发键 := "" } RunAsSameUser(CMD, WorkingDir) { @@ -383,23 +382,23 @@ RunAsLimitiedUser(CMD, WorkingDir) ; ref: [Run as normal user (not as admin) when user is admin - Ask for Help - AutoHotkey Community]( https://autohotkey.com/board/topic/79136-run-as-normal-user-not-as-admin-when-user-is-admin/ ) ; ; TEST DEMO - ; schtasks /Create /tn CapsLockX_RunAsLimitedUser /sc ONCE /tr "cmd /k cd \"C:\\users\\snomi\\\" && notepad \".\\tmp.txt\"" /F /ST 00:00 - ; schtasks /Run /tn CapsLockX_RunAsLimitedUser - ; schtasks /Delete /tn CapsLockX_RunAsLimitedUser /F + ; schtasks /Create /tn CLX_RunAsLimitedUser /sc ONCE /tr "cmd /k cd \"C:\\users\\snomi\\\" && notepad \".\\tmp.txt\"" /F /ST 00:00 + ; schtasks /Run /tn CLX_RunAsLimitedUser + ; schtasks /Delete /tn CLX_RunAsLimitedUser /F ; ; Safe_WorkingDir := RegExReplace("C:\users\snomi\", "\\", "\\") ; Safe_CMD := RegExReplace(RegExReplace("notepad "".\temp.txt""", "\\", "\\"), "\""", "\""") Safe_WorkingDir := RegExReplace(WorkingDir, "\\", "\\") Safe_CMD := RegExReplace(RegExReplace(CMD, "\\", "\\"), "\""", "\""") - RunWait cmd /c schtasks /Create /tn CapsLockX_RunAsLimitedUser /F /sc ONCE /ST 00:00 /tr "cmd /c cd \"%Safe_WorkingDir% && %Safe_CMD%\", , Hide - RunWait cmd /c schtasks /Run /tn CapsLockX_RunAsLimitedUser, , Hide - RunWait cmd /c schtasks /Delete /tn CapsLockX_RunAsLimitedUser /F, , Hide + RunWait cmd /c schtasks /Create /tn CLX_RunAsLimitedUser /F /sc ONCE /ST 00:00 /tr "cmd /c cd \"%Safe_WorkingDir% && %Safe_CMD%\", , Hide + RunWait cmd /c schtasks /Run /tn CLX_RunAsLimitedUser, , Hide + RunWait cmd /c schtasks /Delete /tn CLX_RunAsLimitedUser /F, , Hide } ; 接下来是流程控制 #if -; CapsLockX 模式切换处理 -CapsLockX_NotAvaliable: +; CapsLockX Mode switching processing +CLX_NotAvaliable: TrayTip, CapsLockX, NotAvaliable Return diff --git a/Core/lang-en.ini b/Core/lang-en.ini new file mode 100644 index 0000000..f47000f --- /dev/null +++ b/Core/lang-en.ini @@ -0,0 +1,2 @@ +[lang-en] + diff --git a/Modules/@Help.ahk b/Modules/@Help.ahk index 4e628b0..177ae3a 100644 --- a/Modules/@Help.ahk +++ b/Modules/@Help.ahk @@ -30,13 +30,13 @@ if (!CapsLockX) { ; 需要注意模块按照文件名排序先后加载, ; 所以后一个模块可以读取前一个模块定义的变量(包括全局和本地的)(但通常不建议这么做)。 ; -global CapsLockX_HelpInfo := "" -CapsLockX_IssuesPage := "https://github.com/snolab/CapsLockX/issues" +global CLX_HelpInfo := "" +CLX_IssuesPage := "https://github.com/snolab/CapsLockX/issues" -; 注释:在这里,你可以使用 CapsLockX_AppendHelp 添加帮助信息 +; 注释:在这里,你可以使用 CLX_AppendHelp 添加帮助信息 ; 在 AHK 中,所有的函数都在编译时就定义好了,声明顺序是无所谓的。 -; CapsLockX_THIS_MODULE_HELP_FILE_PATH 在当前模块中的值为 "./Modules/00-Help.md" -CapsLockX_AppendHelp(CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +; CLX_THIS_MODULE_HELP_FILE_PATH 在当前模块中的值为 "./Modules/00-Help.md" +CLX_AppendHelp(CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) ; ; 初始化完成之后就可以返回了, 在这个 Return 之后,可以定义函数和热键 ; 注:CapsLockX 模块【必须】 Return,才能顺利地执行后面的模块。 @@ -45,7 +45,7 @@ Return ; = 函数声名和热键区 ===================================================== ; ; 定义函数,这里定义了 2 个用来操作帮助的函数。 -CapsLockX_LoadHelpFrom(file) +CLX_LoadHelpFrom(file) { FileEncoding UTF-8 FileRead, helpStr, %file% @@ -53,13 +53,13 @@ CapsLockX_LoadHelpFrom(file) helpStr := RegExReplace(helpStr, "m)\r?\n(\r?\n)+", "`n") return helpStr } -CapsLockX_AppendHelp(helpStr) +CLX_AppendHelp(helpStr) { if (helpStr) { - CapsLockX_HelpInfo .= helpStr "`n`n" + CLX_HelpInfo .= helpStr "`n`n" } } -CapsLockX_ShowHelp(helpStr, inGlobal := 0, waitKey := "/") +CLX_ShowHelp(helpStr, inGlobal := 0, waitKey := "/") { if (!inGlobal && !CapsLockXMode) { SendEvent, / @@ -70,7 +70,7 @@ CapsLockX_ShowHelp(helpStr, inGlobal := 0, waitKey := "/") Gui, Help:Add, Edit, ReadOnly, ==== CapsLockX Help ==== Gui, Help:Add, Edit, H768 ReadOnly, %helpStr% Gui, Help:Show, AutoSize Center - + KeyWait, %waitKey%, T60 ; wait for 60 seconds, then auto close ; Gui, Hide Gui, Help:Destroy @@ -81,18 +81,18 @@ CapsLockX_ShowHelp(helpStr, inGlobal := 0, waitKey := "/") ; ; 比如这一行,指的是当前在 CapsLockX 模式时,生效的热键 #if CapsLockXMode - + ; #if CapsLockXMode ; 显示使用方法,直接调用前面定义的函数 -; /:: CapsLockX_ShowHelp(CapsLockX_HelpInfo, 1) +; /:: CLX_ShowHelp(CLX_HelpInfo, 1) ; 你可以按住 CapsLockX 键观察托盘的 CapsLockX 图标,当它变蓝时,按下 Alt + / 就可以快速打开 CapsLockX 的首页 ; 也就是 CapsLockX + Alt + / !/:: Run https://capslockx.snomiao.com/ ; 同理,这个热键可以使用 CapsLockX + Shift + / 触发 -+/:: Run % CapsLockX_IssuesPage ++/:: Run % CLX_IssuesPage #if - + ; 在这里你也可以定义无需按下 CapsLockX 就能触发的热键 diff --git a/Modules/App-OneNote2019.ahk b/Modules/App-OneNote2019.ahk index 429d3df..1fc743c 100644 --- a/Modules/App-OneNote2019.ahk +++ b/Modules/App-OneNote2019.ahk @@ -269,7 +269,7 @@ OneNote2019创建链接窗口内(){ return WinActive("ahk_class NUIDialog ahk_exe ONENOTE.EXE") } -; /:: CapsLockX_ShowHelp OneNote2019创建链接窗口 +; /:: CLX_ShowHelp OneNote2019创建链接窗口 ; 复制链接笔记页面的搜索结果 !+s:: 笔记条目搜索结果复制整理向页面粘贴条数() diff --git a/Modules/App-XunFeiSwitching.ahk b/Modules/App-XunFeiSwitching.ahk index 7674b32..99203fe 100644 --- a/Modules/App-XunFeiSwitching.ahk +++ b/Modules/App-XunFeiSwitching.ahk @@ -7,8 +7,8 @@ ; 2021-04-15 更新 @telppa:[修改了一下语音识别模块的代码。・Issue #14・snolab/CapsLockX]( https://github.com/snolab/CapsLockX/issues/14 ) ; -global T_EnableXunFeiSwitching := CapsLockX_Config("App", "T_EnableXunFeiSwitching", 1, "使用 Win+H 快速启动讯飞语音悬浮窗(默认启用)") -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +global T_EnableXunFeiSwitching := CLX_Config("App", "T_EnableXunFeiSwitching", 1, "使用 Win+H 快速启动讯飞语音悬浮窗(默认启用)") +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) Return diff --git a/Modules/CLX-Brainstorm.ahk b/Modules/CLX-Brainstorm.ahk index 19c4775..f8bc615 100644 --- a/Modules/CLX-Brainstorm.ahk +++ b/Modules/CLX-Brainstorm.ahk @@ -1,8 +1,8 @@ #SingleInstance, Force global brainstorming := false -global brainstorm_origin := CapsLockX_Config("BrainStorm", "Website", "https://brainstorm.snomiao.com", "Brainstorm 官方網址") ; -global brainstormApiKey := CapsLockX_Config("BrainStorm", "Key", "FREE", "CLX BrainStorm 的功能激活碼,填FREE使用免費版本") ; +global brainstorm_origin := CLX_Config("BrainStorm", "Website", "https://brainstorm.snomiao.com", "Brainstorm 官方網址") ; +global brainstormApiKey := CLX_Config("BrainStorm", "Key", "FREE", "CLX BrainStorm 的功能激活碼,填FREE使用免費版本") ; return @@ -41,11 +41,12 @@ stop_brainstorm() } brainstorm_set_key() { - InputBox, key, 激活碼輸入, 訪問 %brainstorm_origin% 来取得激活碼,在此輸入,或者填 FREE 使用免費版 + msg := t("訪問官方網站来取得激活碼,在此輸入,或者填 FREE 使用免費版,網址如下:") + InputBox, key, % "激活碼輸入", % msg "`n" brainstorm_origin if (ErrorLevel == 1) { Return } - CapsLockX_ConfigSet("BrainStorm", "Key", key, "CLX BrainStorm 的功能激活碼") + CLX_ConfigSet("BrainStorm", "Key", key, "CLX BrainStorm 的功能激活碼") } brainstorm_copy() { @@ -62,10 +63,10 @@ brainstorm() content:=brainstorm_copy() prompt := "" - prompt .= "例1: trasnlate to english=`n" - prompt .= "例2: 解釈这句話:`n" - prompt .= "例3: 总结5点:`n" - prompt .= "--- 以下为提問内容 ---`n" . content + prompt .= t("例1: Translate to english:") . "`n" + prompt .= t("例2: 解釈这句話:") . "`n" + prompt .= t("例3: 总结5点:") . "`n" + prompt .= "--- " . t("以下为提問内容") . " ---`n" . content InputBox, cmd, 请輸入文本指令, %prompt%, , 500, 600 ; if escape if (ErrorLevel == 1) { @@ -74,23 +75,23 @@ brainstorm() msg := Trim(content . "`n`n" . cmd, OmitChars = " `t`n") global brainstorming := true - questionPost(msg) + brainstorm_questionPost(msg) } -questionPost(question) +brainstorm_questionPost(question) { global brainstorming if (!brainstorming) { return } global brainstorm_origin - endpoint := brainstorm_origin "/ai/chatgpt" + endpoint := brainstorm_origin "/ai/chat?ret=polling" xhr := ComObjCreate("Msxml2.XMLHTTP") xhr.Open("POST", endpoint) xhr.setRequestHeader("Authorization", "Bearer " . brainstormApiKey) - xhr.onreadystatechange := Func("questionPost_onReadyStateChange").Bind(xhr) + xhr.onreadystatechange := Func("BS_questionPost_onReadyStateChange").Bind(xhr) xhr.Send(question) } -questionPost_onReadyStateChange(xhr) +BS_questionPost_onReadyStateChange(xhr) { global brainstorming if (!brainstorming) @@ -105,6 +106,7 @@ questionPost_onReadyStateChange(xhr) if (xhr.status == 429) { MsgBox, % xhr.responseText " 请等待一段时间后再试" } + MsgBox, % xhr.responseText " Unknown Error" return } global questionId := xhr.responseText diff --git a/Modules/CLX-Edit.ahk b/Modules/CLX-Edit.ahk index 06be916..42f9045 100644 --- a/Modules/CLX-Edit.ahk +++ b/Modules/CLX-Edit.ahk @@ -17,11 +17,11 @@ if (!CapsLockX) { ExitApp } -global CapsLockX_HJKL_Scroll := CapsLockX_Config("TMouse", "CapsLockX_HJKL_Scroll", 0, "使用IJKL滚轮移动滚轮,比RF多一个横轴。") -global 编辑增强_SpeedRatioX := CapsLockX_Config("EditEnhance", "SpeedRatioX", 1, "光标加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") -global 编辑增强_SpeedRatioY := CapsLockX_Config("EditEnhance", "SpeedRatioY", 1, "光标加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") -global 编辑增强_PageSpeed := CapsLockX_Config("EditEnhance", "PageSpeed", 1, "翻页速率") -global 编辑增强_TabSpeed := CapsLockX_Config("EditEnhance", "TabSpeed", 1, "Tab速率") +global CLX_HJKL_Scroll := CLX_Config("TMouse", "CLX_HJKL_Scroll", 0, "使用IJKL滚轮移动滚轮,比RF多一个横轴。") +global 编辑增强_SpeedRatioX := CLX_Config("EditEnhance", "SpeedRatioX", 1, "光标加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") +global 编辑增强_SpeedRatioY := CLX_Config("EditEnhance", "SpeedRatioY", 1, "光标加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") +global 编辑增强_PageSpeed := CLX_Config("EditEnhance", "PageSpeed", 1, "翻页速率") +global 编辑增强_TabSpeed := CLX_Config("EditEnhance", "TabSpeed", 1, "Tab速率") global 方向键模拟 := new AccModel2D(Func("方向键模拟"), 0.1, 编辑增强_SpeedRatioX * 15, 编辑增强_SpeedRatioY * 15) global 翻页键模拟 := new AccModel2D(Func("翻页键模拟"), 0.1, 20 * 编辑增强_PageSpeed) global Tab键模拟 := new AccModel2D(Func("Tab键模拟"), 0.1, 15 * 编辑增强_TabSpeed) @@ -29,7 +29,7 @@ global Tab键模拟 := new AccModel2D(Func("Tab键模拟"), 0.1, 15 * 编辑增 翻页键模拟.最大速度 := 250 Tab键模拟.最大速度 := 250 -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) ; DisableLockWorkstation() Return @@ -236,7 +236,7 @@ Tab键模拟(dx, dy, 状态){ *p:: Tab键模拟.上按("p") *n:: Tab键模拟.下按("n") -#if CapsLockXMode && !CapsLockX_HJKL_Scroll +#if CapsLockXMode && !CLX_HJKL_Scroll *i:: 翻页键模拟.上按("i") *u:: 翻页键模拟.下按("u") diff --git a/Modules/CLX-Elevate.ahk b/Modules/CLX-Elevate.ahk index 2f67723..899ee1b 100644 --- a/Modules/CLX-Elevate.ahk +++ b/Modules/CLX-Elevate.ahk @@ -9,7 +9,7 @@ ; LICENCE: GNU GPLv3 ; ========== CapsLockX ========== -global T_AskRunAsAdmin := CapsLockX_Config("Core", "T_AskRunAsAdmin", 0, "请求管理员权限(权限受限时,权限受限,例如鼠标模拟等功能无法正常运行,默认请求提升权限,如果不需要管理权限下的功能,可以改为0)") +global T_AskRunAsAdmin := CLX_Config("Core", "T_AskRunAsAdmin", 0, "请求管理员权限(权限受限时,权限受限,例如鼠标模拟等功能无法正常运行,默认请求提升权限,如果不需要管理权限下的功能,可以改为0)") Func("AskRunAsAdminIfNeeded").Call() diff --git a/Modules/CLX-LaptopKeyboardFix.ahk b/Modules/CLX-LaptopKeyboardFix.ahk index 7d054d1..d185e22 100644 --- a/Modules/CLX-LaptopKeyboardFix.ahk +++ b/Modules/CLX-LaptopKeyboardFix.ahk @@ -10,9 +10,9 @@ if !CapsLockX ExitApp -global WinKeySimulate := CapsLockX_Config("LKF", "WinKeySimulate", 1, "右手 \][ 模拟Windows键和 Alt + Tab, 具体用法参见LaptopKeyboardFix 模块说明,默认启用") +global WinKeySimulate := CLX_Config("LKF", "WinKeySimulate", 1, "右手 \][ 模拟Windows键和 Alt + Tab, 具体用法参见LaptopKeyboardFix 模块说明,默认启用") global FLAG_SWAP_ESC_STROKE := false -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) Return ; 专治 Surface 的残破键盘,合并右Ctrl与Menu键! @@ -55,8 +55,8 @@ Return ; 对于没有Esc或没有 Stroke 键的键 #if CapsLockXMode & CM_FN -`:: FLAG_SWAP_ESC_STROKE := CapsLockX_ConfigSet("CLX_LKF", "FLAG_SWAP_ESC_STROKE", !FLAG_SWAP_ESC_STROKE, "交换ESC和~键,你可以按CLX+Esc来切换这个选项") -Esc:: FLAG_SWAP_ESC_STROKE := CapsLockX_ConfigSet("CLX_LKF", "FLAG_SWAP_ESC_STROKE", !FLAG_SWAP_ESC_STROKE, "交换ESC和~键,你可以按CLX+Esc来切换这个选项") +`:: FLAG_SWAP_ESC_STROKE := CLX_ConfigSet("CLX_LKF", "FLAG_SWAP_ESC_STROKE", !FLAG_SWAP_ESC_STROKE, "交换ESC和~键,你可以按CLX+Esc来切换这个选项") +Esc:: FLAG_SWAP_ESC_STROKE := CLX_ConfigSet("CLX_LKF", "FLAG_SWAP_ESC_STROKE", !FLAG_SWAP_ESC_STROKE, "交换ESC和~键,你可以按CLX+Esc来切换这个选项") #if (FLAG_SWAP_ESC_STROKE && !CapsLockXMode) || (!FLAG_SWAP_ESC_STROKE && CapsLockXMode) diff --git a/Modules/CLX-MediaKeys.ahk b/Modules/CLX-MediaKeys.ahk index a046317..7304af5 100644 --- a/Modules/CLX-MediaKeys.ahk +++ b/Modules/CLX-MediaKeys.ahk @@ -2,7 +2,7 @@ MsgBox, % "本模块只在 CapsLockX 下工作" ExitApp } -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) Return #if !!(CapsLockXMode & CM_FN) || !!(CapsLockXMode & CM_CapsLockX) diff --git a/Modules/CLX-Mouse.ahk b/Modules/CLX-Mouse.ahk index 6efd0a4..8afb6ad 100644 --- a/Modules/CLX-Mouse.ahk +++ b/Modules/CLX-Mouse.ahk @@ -17,22 +17,22 @@ if (!CapsLockX) { ExitApp } -global TMouse_Disabled := CapsLockX_Config("TMouse", "Disabled", 0, "禁用模拟鼠标模块") -global TMouse_SendInput := CapsLockX_Config("TMouse", "SendInput", 1, "使用 SendInput 方法提高模拟鼠标点击、移动性能") -global TMouse_SendInputAPI := CapsLockX_Config("TMouse", "SendInputAPI", 1, "使用 Windows API 强势提升模拟鼠标移动性能") -global TMouse_SendInputScroll := CapsLockX_Config("TMouse", "TMouse_SendInputScroll", 0, "使用 Windows API 强势提升模拟鼠标滚轮性能(目前有bug不建议启用)") +global TMouse_Disabled := CLX_Config("TMouse", "Disabled", 0, "禁用模拟鼠标模块") +global TMouse_SendInput := CLX_Config("TMouse", "SendInput", 1, "使用 SendInput 方法提高模拟鼠标点击、移动性能") +global TMouse_SendInputAPI := CLX_Config("TMouse", "SendInputAPI", 1, "使用 Windows API 强势提升模拟鼠标移动性能") +global TMouse_SendInputScroll := CLX_Config("TMouse", "TMouse_SendInputScroll", 0, "使用 Windows API 强势提升模拟鼠标滚轮性能(目前有bug不建议启用)") -global TMouse_StickyCursor := CapsLockX_Config("TMouse", "StickyCursor", 1, "启用自动粘附各种按钮,编辑框") -global TMouse_StopAtScreenEdge := CapsLockX_Config("TMouse", "StopAtScreenEdge", 1, "撞上屏幕边界后停止加速") +global TMouse_StickyCursor := CLX_Config("TMouse", "StickyCursor", 1, "启用自动粘附各种按钮,编辑框") +global TMouse_StopAtScreenEdge := CLX_Config("TMouse", "StopAtScreenEdge", 1, "撞上屏幕边界后停止加速") ; 根据屏幕 DPI 比率,自动计算,得出,如果数值不对,才需要纠正 -global TMouse_UseDPIRatio := CapsLockX_Config("TMouse", "UseDPIRatio", 1, "是否根据屏幕 DPI 比率缩放鼠标速度") -global TMouse_MouseSpeedRatio := CapsLockX_Config("TMouse", "MouseSpeedRatio", 1, "鼠标加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") -global TMouse_WheelSpeedRatio := CapsLockX_Config("TMouse", "WheelSpeedRatio", 1, "滚轮加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") +global TMouse_UseDPIRatio := CLX_Config("TMouse", "UseDPIRatio", 1, "是否根据屏幕 DPI 比率缩放鼠标速度") +global TMouse_MouseSpeedRatio := CLX_Config("TMouse", "MouseSpeedRatio", 1, "鼠标加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") +global TMouse_WheelSpeedRatio := CLX_Config("TMouse", "WheelSpeedRatio", 1, "滚轮加速度比率, 默认为 1, 你想慢点就改成 0.5 之类") global TMouse_DPIRatio := TMouse_UseDPIRatio ? A_ScreenDPI / 96 : 1 -global CapsLockX_HJKL_Scroll := CapsLockX_Config("TMouse", "CapsLockX_HJKL_Scroll", 0, "使用IJKL滚轮移动滚轮,比RF多一个横轴。") +global CLX_HJKL_Scroll := CLX_Config("TMouse", "CLX_HJKL_Scroll", 0, "使用IJKL滚轮移动滚轮,比RF多一个横轴。") -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom("Modules/01.1-插件-鼠标模拟.md" )) +CLX_AppendHelp( CLX_LoadHelpFrom("Modules/01.1-插件-鼠标模拟.md" )) ; global debug_fps := new FPS_Debugger() global 鼠标模拟 := new AccModel2D(Func("鼠标模拟"), 0.1, TMouse_DPIRatio * 120 * 2 * TMouse_MouseSpeedRatio) global ScrollSimulator := new AccModel2D(Func("ScrollSimulator"), 0.1, TMouse_DPIRatio * 120 * 4 * TMouse_WheelSpeedRatio) @@ -62,21 +62,21 @@ global GID_PRESSANDTAP:=7 Return -#if CapsLockXMode && !CapsLockX_MouseButtonSwitched +#if CapsLockXMode && !CLX_MouseButtonSwitched ; 鼠标按键处理 -*e:: CapsLockX_LMouseButtonDown("e") -*q:: CapsLockX_RMouseButtonDown("q") -*e Up::CapsLockX_LMouseButtonUp()k -*q Up:: CapsLockX_RMouseButtonUp() +*e:: CLX_LMouseButtonDown("e") +*q:: CLX_RMouseButtonDown("q") +*e Up::CLX_LMouseButtonUp()k +*q Up:: CLX_RMouseButtonUp() -#if CapsLockXMode && CapsLockX_MouseButtonSwitched +#if CapsLockXMode && CLX_MouseButtonSwitched ; 鼠标按键处理 -*e:: CapsLockX_RMouseButtonDown("e") -*q:: CapsLockX_LMouseButtonDown("q") -*e Up::CapsLockX_RMouseButtonUp() -*q Up:: CapsLockX_LMouseButtonUp() +*e:: CLX_RMouseButtonDown("e") +*q:: CLX_LMouseButtonDown("q") +*e Up::CLX_RMouseButtonUp() +*q Up:: CLX_LMouseButtonUp() #if CapsLockXMode @@ -366,36 +366,36 @@ PostMessageForScroll(msg, zDelta) ; tooltip % x " " y "`n" ControlClass1 "`n" ControlClass2 "`n" ControlClass3 "`n" wid } -CapsLockX_LMouseButtonDown(wait){ - global CapsLockX_鼠标左键等待 - if (CapsLockX_鼠标左键等待) { +CLX_LMouseButtonDown(wait){ + global CLX_鼠标左键等待 + if (CLX_鼠标左键等待) { return } - CapsLockX_鼠标左键等待 := wait + CLX_鼠标左键等待 := wait SendEvent {Blind}{LButton Down} KeyWait %wait% - ; Hotkey, %wait% Up, CapsLockX_LMouseButtonUp + ; Hotkey, %wait% Up, CLX_LMouseButtonUp } -CapsLockX_LMouseButtonUp(){ - global CapsLockX_鼠标左键等待 +CLX_LMouseButtonUp(){ + global CLX_鼠标左键等待 SendEvent {Blind}{LButton Up} - CapsLockX_鼠标左键等待 := "" + CLX_鼠标左键等待 := "" } -CapsLockX_RMouseButtonDown(wait){ - global CapsLockX_RMouseButtonWait - if (CapsLockX_RMouseButtonWait) { +CLX_RMouseButtonDown(wait){ + global CLX_RMouseButtonWait + if (CLX_RMouseButtonWait) { return } - CapsLockX_RMouseButtonWait := wait + CLX_RMouseButtonWait := wait SendEvent {Blind}{RButton Down} KeyWait %wait% - ; Hotkey, %wait% Up, CapsLockX_RMouseButtonUp + ; Hotkey, %wait% Up, CLX_RMouseButtonUp } -CapsLockX_RMouseButtonUp(){ - global CapsLockX_RMouseButtonWait +CLX_RMouseButtonUp(){ + global CLX_RMouseButtonWait SendEvent {Blind}{RButton Up} - CapsLockX_RMouseButtonWait := "" + CLX_RMouseButtonWait := "" } 鼠标模拟_ToolTip(tips){ ToolTip %tips% diff --git a/Modules/CLX-NodeEval.ahk b/Modules/CLX-NodeEval.ahk index d7b2cda..ab5a919 100644 --- a/Modules/CLX-NodeEval.ahk +++ b/Modules/CLX-NodeEval.ahk @@ -11,7 +11,7 @@ if (!CapsLockX){ ExitApp } -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) Return @@ -61,7 +61,7 @@ EvalJavaScriptByBrowser_TODO(code){ EvalJavaScriptByNodeServer(code){ static PassTutorial := "" if(!PassTutorial) - PassTutorial := CapsLockX_Config("EvalJS", "PassTutorial", 0, "忽略使用提示") + PassTutorial := CLX_Config("EvalJS", "PassTutorial", 0, "忽略使用提示") /* sno.md5("asdf")= */ @@ -73,11 +73,11 @@ EvalJavaScriptByNodeServer(code){ ; 让我们来试试输入: ; sno.md5("asdf") ; ) - ; CapsLockX_ConfigSet("EvalJS", "PassTutorial", 1) + ; CLX_ConfigSet("EvalJS", "PassTutorial", 1) ; } static port := "" if(!port) - port := CapsLockX_Config("EvalJS", "Port", 29503, "EvalJS 服务端口") + port := CLX_Config("EvalJS", "Port", 29503, "EvalJS 服务端口") static nodePID := 0 static EvalNodeJS_PIDFile := A_Temp "/EvalNodeJS.pid" ; pid 文件读取尝试 diff --git a/Modules/CLX-Pause.ahk b/Modules/CLX-Pause.ahk index b3041d2..13985fe 100644 --- a/Modules/CLX-Pause.ahk +++ b/Modules/CLX-Pause.ahk @@ -73,10 +73,10 @@ return ; MsgBox % stat ; } #if - + ^!Home:: - CapsLockX_Paused := 0 - if(CapsLockX_Paused) { + CLX_Paused := 0 + if(CLX_Paused) { TrayTip, 暂停, CapsLockX 已暂停 } else { TrayTip, 暂停, CapsLockX 已恢复 @@ -84,8 +84,8 @@ return Return ^!End:: - CapsLockX_Paused := 1 - if(CapsLockX_Paused) { + CLX_Paused := 1 + if(CLX_Paused) { TrayTip, 暂停, CapsLockX 已暂停 } else { TrayTip, 暂停, CapsLockX 已恢复 diff --git a/Modules/CLX-Reload.ahk b/Modules/CLX-Reload.ahk index ecbf922..65b0218 100644 --- a/Modules/CLX-Reload.ahk +++ b/Modules/CLX-Reload.ahk @@ -8,36 +8,36 @@ ; LICENCE: GNU GPLv3 ; ========== CapsLockX ========== ; tooltip loaded -; WatchFolder(A_WorkingDir "\User\", "CapsLockX_FolderModified", true, 0x08) -WatchFolder(A_WorkingDir "\Modules\", "CapsLockX_FolderModified", true, 0x08) ; chagned -WatchFolder(CapsLockX_配置目录, "CapsLockX_FolderChanged", true, 0x02 | 0x03 | 0x08) ; delete or add, iguess -; WatchFolder(A_WorkingDir "\Modules\", "CapsLockX_FolderChanged", true, 0x02 | 0x03) ; delete or add -TrayTip CapsLockX 载入成功 +; WatchFolder(A_WorkingDir "\User\", "CLX_FolderModified", true, 0x08) +WatchFolder(A_WorkingDir "\Modules\", "CLX_FolderModified", true, 0x08) ; chagned +WatchFolder(CLX_ConfigDir, "CLX_FolderChanged", true, 0x02 | 0x03 | 0x08) ; delete or add, iguess +; WatchFolder(A_WorkingDir "\Modules\", "CLX_FolderChanged", true, 0x02 | 0x03) ; delete or add +TrayTip % t("CapsLockX 载入成功") #include Modules/WatchFolder/WatchFolder.ahk global Reload_DeveloperAsYouInstallMeByGitClone := FileExist(A_WorkingDir "/.git") return -CapsLockX_JustConfigured() +CLX_JustConfigured() { ; 跳过 CapsLockX 自己改的配置,容差 2-5 秒 - global CapsLockX_ConfigChangedTickCount - return CapsLockX_ConfigChangedTickCount && A_TickCount - CapsLockX_ConfigChangedTickCount < 5000 + global CLX_ConfigChangedTickCount + return CLX_ConfigChangedTickCount && A_TickCount - CLX_ConfigChangedTickCount < 5000 } ; 只 reload 不重新编译模块 -CapsLockX_FolderModified(Folder, Changes) { - if ( CapsLockX_JustConfigured() ) { +CLX_FolderModified(Folder, Changes) { + if ( CLX_JustConfigured() ) { return } ; don reload - if (CapsLockX_DontReload) { + if (CLX_DontReload) { return } ; 只在 git clone 安装方式下询问配置重载 if (!Reload_DeveloperAsYouInstallMeByGitClone) { return } - MsgBox, 4, CapsLockX 重载模块, 检测到配置更改,是否软重载? + MsgBox, 4, % t("CapsLockX 重载模块"), 检测到配置更改,是否软重载? IfMsgBox Yes ; MsgBox, 4, CapsLockX 重载模块, 检测到配置更改,是否软重载? ; IfMsgBox Yes @@ -45,22 +45,22 @@ CapsLockX_FolderModified(Folder, Changes) { sleep 200 reload } -CapsLockX_FolderChanged(Folder, Changes) +CLX_FolderChanged(Folder, Changes) { - if ( CapsLockX_JustConfigured() ) { + if ( CLX_JustConfigured() ) { return } ; don reload - if (CapsLockX_DontReload) { + if (CLX_DontReload) { return } - global T_AutoReloadOnConfigsChange := CapsLockX_Config("Advanced", "T_AutoReloadOnConfigsChange", 0, "用户配置修改保存时自动重载") + global T_AutoReloadOnConfigsChange := CLX_Config("Advanced", "T_AutoReloadOnConfigsChange", 0, "用户配置修改保存时自动重载") if (T_AutoReloadOnConfigsChange) { TrayTip, CapsLockX 重载模块, 检测到配置更改,正在自动重载。 sleep 200 - ; CapsLockX_Reload() + ; CLX_Reload() reload } else { ; 只在 git clone 安装方式下询问重载 @@ -70,12 +70,12 @@ CapsLockX_FolderChanged(Folder, Changes) MsgBox, 4, CapsLockX 重载模块, 检测到配置更改,是否重载? IfMsgBox Yes Reload - ; CapsLockX_Reload() + ; CLX_Reload() } } #if CapsLockXMode -.:: Reload ; CapsLockX_模块重载 -+.:: CapsLockX_Reload() ; CapsLockX_重新启动 -^+.:: ExitApp ; CapsLockX_退出 +.:: Reload ; CLX_模块重载 ++.:: CLX_Reload() ; CLX_重新启动 +^+.:: ExitApp ; CLX_退出 diff --git a/Modules/CLX-RunOnLogin.ahk b/Modules/CLX-RunOnLogin.ahk index b1fa08e..6b3d8de 100644 --- a/Modules/CLX-RunOnLogin.ahk +++ b/Modules/CLX-RunOnLogin.ahk @@ -9,7 +9,7 @@ return -CapsLockX_MakeStartup() +CLX_MakeStartup() { content = cd "%A_WorkingDir%" && start "" CapsLockX.exe startCMDPath := APPDATA "\Microsoft\Windows\Start Menu\Programs\Startup\capslockx-startup.cmd" diff --git a/Modules/CLX-Settings.ahk b/Modules/CLX-Settings.ahk index 31306b5..0516b23 100644 --- a/Modules/CLX-Settings.ahk +++ b/Modules/CLX-Settings.ahk @@ -7,21 +7,21 @@ ; 版本:v0.0.1 ; ========== CapsLockX ========== -global CapsLockX_FIRST_LAUNCH := CapsLockX_Config("_NOTICE_", "FIRST_LAUNCH", 1, t("首次启动?若想重新进入首次使用教学,请改为 1 并保存,然后使用 Ctrl+Alt+\ 重载 CapsLockX。")) -global CLX_CONFIG_ONSTARTUP := CapsLockX_Config("Core", "CLX_CONFIG_ONSTARTUP", 1, t("启动时显示配置窗口")) - +global CLX_FIRST_LAUNCH := CLX_Config("_NOTICE_", "FIRST_LAUNCH", 1, t("首次启动?若想重新进入首次使用教学,请改为 1 并保存,然后使用 Ctrl+Alt+\ 重载 CapsLockX。")) +global CLX_CONFIG_ONSTARTUP := CLX_Config("Core", "CLX_CONFIG_ONSTARTUP", 1, t("启动时显示配置窗口")) +global CLX_Lang Menu, Tray, Add ; Creates a separator line. -Menu, Tray, Add, % t("Edit config.ini"), 配置文件编辑 -Menu, Tray, Add, % t("Reload CapsLockX"), CapsLockX_Reload -Menu, Tray, Add, % t("Exit CapsLockX"), ExitCapsLockX +Menu, Tray, Add, % t("Edit config.ini"), CLX_ConfigureEdit +Menu, Tray, Add, % t("Reload CapsLockX"), CLX_Reload +Menu, Tray, Add, % t("Exit CapsLockX"), CLX_Exit if (CLX_CONFIG_ONSTARTUP) { - SetTimer CapsLockX_ConfigWindow, -1 + SetTimer CLX_ConfigWindow, -1 } return -ExitCapsLockX() +CLX_Exit() { ExitApp } @@ -29,62 +29,64 @@ ExitCapsLockX() #if CapsLockXMode ;, :: 配置文件编辑() -, :: CapsLockX_ConfigWindow() +,:: CLX_ConfigWindow() -CapsLockX_ConfigWindow() +CLX_ConfigWindow() { Gui, Destroy ; TODO update this to web view - Gui, Add, Text, , % t("你可以按 'CapsLockX +, ' 打开此窗口") - Gui, Add, Text, , % t("当前 CapsLockX_配置目录:%CapsLockX_配置目录%") - Gui, Add, Text, , % t("CLX脚本交流群: QQ群 100949388, https://t.me/capslockx") - Gui, Add, Text, , % t("版本: CapsLockX %CapsLockX_VersionName%") + Gui, Add, Text, , % t("你可以按 'CapsLockX +, ' (CLX+逗号) 打开此窗口") + Gui, Add, Text, , % t("当前 CLX_ConfigDir:") . CLX_ConfigDir + Gui, Add, Text, , % t("CLX脚本交流群: QQ群 100949388 、 Telegram 群 https://t.me/capslockx 、微信群: 添加 @snomiao 拉你") + Gui, Add, Text, , % t("CapsLockX 版本: ") . CLX_VersionName + Gui, Add, Text, , % t("Current Language") . ": " . CLX_Lang Gui, Add, Text, , % t("作者: 雪星 ( Snowstar Miao )") - Gui, Add, Button, Default w80 gButton确认, 确认 - Gui, Add, Button, w80 gButton打开BUG反馈与建议页面, % "打开BUG反馈与建议页面" ; warn : hard to translate as its variable name - Gui, Add, Button, w80 gButton打开官方文档, % "打开官方文档" - Gui, Add, Button, w80 gButton添加开机自动启动, % "添加开机自动启动" - Gui, Add, Button, w80 gButton配置文件编辑, % "配置文件编辑" - Gui, Add, Button, w80 gButton重新載入, % "重新載入" + Gui, Add, Button, Default w120 gButton确认, % t("确定") + Gui, Add, Button, w120 gButtonLanguageSwitch, % t("切换語言") + Gui, Add, Button, w120 gButton打开BUG反馈与建议页面, % t("打开BUG反馈与建议页面") + Gui, Add, Button, w120 gButton打开官方文档, % t("打开官方文档") + Gui, Add, Button, w120 gButton添加开机自动启动, % t("添加开机自动启动") + Gui, Add, Button, w120 gButton配置文件编辑, % t("配置文件编辑") + Gui, Add, Button, w120 gButton重新載入, % t("重新載入") - global T_TomatoLife - if (T_TomatoLife) { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_TomatoLife Checked, 启用番茄时钟,每25分钟休息5分钟·。 + global T_TomatoLife ; + if (T_TomatoLife) { + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_TomatoLife Checked, % t("启用番茄时钟,每25分钟休息5分钟·。") } else { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_TomatoLife, 启用番茄时钟,每25分钟休息5分钟·。 + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_TomatoLife, % t("启用番茄时钟,每25分钟休息5分钟·。") } global T_XKeyAsCapsLock if (T_XKeyAsCapsLock) { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_XKeyAsCapsLock Checked, 使用 CapsLock 作为引导键(默认启用) + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_XKeyAsCapsLock Checked, % t("使用 CapsLock 作为引导键(默认启用)") } else { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_XKeyAsCapsLock, 使用 CapsLock 作为引导键(默认启用) + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_XKeyAsCapsLock, % t("使用 CapsLock 作为引导键(默认启用)") } global T_XKeyAsSpace if (T_XKeyAsSpace) { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_XKeyAsSpace Checked, 使用 Space 作为引导键(默认启用) + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_XKeyAsSpace Checked, % t("使用 Space 作为引导键(默认启用)") } else { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_XKeyAsSpace, 使用 Space 作为引导键(默认启用) + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_XKeyAsSpace, % t("使用 Space 作为引导键(默认启用)") } global T_AskRunAsAdmin if (T_AskRunAsAdmin) { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_AskRunAsAdmin Checked, % t("请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)") + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_AskRunAsAdmin Checked, % t("请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)") } else { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vT_AskRunAsAdmin, % t("请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)") + Gui, Add, CheckBox, gCLX_ConfigureUpdate vT_AskRunAsAdmin, % t("请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)") } global vCLX_CONFIG_ONSTARTUP if (vCLX_CONFIG_ONSTARTUP) { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vCLX_CONFIG_ONSTARTUP Checked, 启动时显示配置窗口 + Gui, Add, CheckBox, gCLX_ConfigureUpdate vCLX_CONFIG_ONSTARTUP Checked, % t("启动时显示配置窗口") } else { - Gui, Add, CheckBox, gCapsLockX_ConfigureUpdate vCLX_CONFIG_ONSTARTUP, 启动时显示配置窗口 + Gui, Add, CheckBox, gCLX_ConfigureUpdate vCLX_CONFIG_ONSTARTUP, % t("启动时显示配置窗口") } Gui, Show } Button添加开机自动启动: - Func("CapsLockX_MakeStartup").Call() + Func("CLX_MakeStartup").Call() return Button打开BUG反馈与建议页面: Run https://github.com/snolab/CapsLockX/issues @@ -93,10 +95,10 @@ Button打开官方文档: Run https://capslockx.snomiao.com/ return Button重新載入: - Func("CapsLockX_Reload").Call() + Func("CLX_Reload").Call() Reload return -CapsLockX_ConfigureUpdate: +CLX_ConfigureUpdate: global T_TomatoLife global T_XKeyAsCapsLock global T_XKeyAsSpace @@ -104,15 +106,15 @@ CapsLockX_ConfigureUpdate: global CLX_CONFIG_ONSTARTUP Gui, Submit, NoHide reloadFlag := 0 - reloadFlag := reloadFlag || ( CapsLockX_ConfigGet("Core", "T_XKeyAsCapsLock", T_XKeyAsCapsLock) != T_XKeyAsCapsLock ) - reloadFlag := reloadFlag || ( CapsLockX_ConfigGet("Core", "T_XKeyAsSpace", T_XKeyAsSpace) != T_XKeyAsSpace ) + reloadFlag := reloadFlag || ( CLX_ConfigGet("Core", "T_XKeyAsCapsLock", T_XKeyAsCapsLock) != T_XKeyAsCapsLock ) + reloadFlag := reloadFlag || ( CLX_ConfigGet("Core", "T_XKeyAsSpace", T_XKeyAsSpace) != T_XKeyAsSpace ) reloadFlagAdmin := 0 - reloadFlagAdmin := reloadFlagAdmin || ( CapsLockX_ConfigGet("Core", "T_AskRunAsAdmin", T_AskRunAsAdmin) != T_AskRunAsAdmin ) - CapsLockX_ConfigSet("TomatoLife", "Enable", T_TomatoLife, "使用番茄时钟(默认禁用,改为 1 开启)") - CapsLockX_ConfigSet("Core", "T_XKeyAsCapsLock", T_XKeyAsCapsLock, "使用 Space 作为引导键(默认启用,用户启用)") - CapsLockX_ConfigSet("Core", "T_XKeyAsSpace", T_XKeyAsSpace, "使用 CapsLock 作为引导键(默认启用,用户启用)") - CapsLockX_ConfigSet("Core", "T_AskRunAsAdmin", T_AskRunAsAdmin, "请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)") - CapsLockX_ConfigSet("Core", "CLX_CONFIG_ONSTARTUP", CLX_CONFIG_ONSTARTUP, "启动时显示配置窗口") + reloadFlagAdmin := reloadFlagAdmin || ( CLX_ConfigGet("Core", "T_AskRunAsAdmin", T_AskRunAsAdmin) != T_AskRunAsAdmin ) + CLX_ConfigSet("TomatoLife", "Enable", T_TomatoLife, "使用番茄时钟(默认禁用,改为 1 开启)") + CLX_ConfigSet("Core", "T_XKeyAsCapsLock", T_XKeyAsCapsLock, "使用 Space 作为引导键(默认启用,用户启用)") + CLX_ConfigSet("Core", "T_XKeyAsSpace", T_XKeyAsSpace, "使用 CapsLock 作为引导键(默认启用,用户启用)") + CLX_ConfigSet("Core", "T_AskRunAsAdmin", T_AskRunAsAdmin, "请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)") + CLX_ConfigSet("Core", "CLX_CONFIG_ONSTARTUP", CLX_CONFIG_ONSTARTUP, "启动时显示配置窗口") if (reloadFlag) { reload } @@ -121,20 +123,27 @@ CapsLockX_ConfigureUpdate: } return Button确认: - Gosub, CapsLockX_ConfigureUpdate + Gosub, CLX_ConfigureUpdate ; TrayTip conf, %T_XKeyAsCapsLock% %T_XKeyAsSpace% %T_AskRunAsAdmin% %CLX_CONFIG_ONSTARTUP% gui, destroy return +ButtonLanguageSwitch: + InputBox, targetLang, % t("Change Language of CapsLockX"), % t("Please input target Language: "),,,,,,,,% CLX_Lang + ; InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Locale, Timeout, Default + ; targetLang + i18n_changeLanguage(targetLang) + Reload +return Button配置文件编辑: - 配置文件编辑() + CLX_ConfigureEdit() Return -CapsLockX_首次使用教学(){ +CLX_首次使用教学(){ ; TODO } -配置文件编辑(){ - Run notepad %CapsLockX_配置路径% +CLX_ConfigureEdit(){ + Run notepad %CLX_ConfigPath% ; TrayTip, 配置文件关, 自动重载 - ; CapsLockX_Reload() + ; CLX_Reload() } diff --git a/Modules/CLX-Userscripts.ahk b/Modules/CLX-Userscripts.ahk index f3f1b1e..ea9307b 100644 --- a/Modules/CLX-Userscripts.ahk +++ b/Modules/CLX-Userscripts.ahk @@ -12,9 +12,9 @@ if (!CapsLockX) { MsgBox, % "本模块只为 CapsLockX 工作" ExitApp } -; Func("CapsLockX_AppendHelp").Call(Func("CapsLockX_LoadHelpFrom").Call(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +; Func("CLX_AppendHelp").Call(Func("CLX_LoadHelpFrom").Call(CLX_THIS_MODULE_HELP_FILE_PATH)) -global 快速窗口热键编辑用户模块目录 := CapsLockX_配置目录 "/" +global 快速窗口热键编辑用户模块目录 := CLX_ConfigDir "/" global 快速窗口热键编辑初始内容 := " ( ; ========== CapsLockX ========== @@ -46,8 +46,8 @@ Return UserModuleEdit(dir, filename := "") { - global CapsLockX_DontReload - CapsLockX_DontReload := 1 + global CLX_DontReload + CLX_DontReload := 1 WinGet, hWnd, ID, A WinGetClass, 窗口类名, ahk_id %hWnd% @@ -66,7 +66,7 @@ UserModuleEdit(dir, filename := "") 填充内容 := "`n" "`n" "; #if WinActive(""" match """)" "`n" "`n" "; !d`:`: TrayTip, CapsLockX, 在当前窗口按下了Alt+d" "`n" FileAppend, %填充内容%, %path% - CapsLockX_DontReload := 0 + CLX_DontReload := 0 ; clipboard := 填充内容 Run code.cmd "%path%" || notepad "%path%" @@ -79,6 +79,6 @@ UserModuleEdit(dir, filename := "") } ; 自定义脚本创建 -!,:: UserModuleEdit(快速窗口热键编辑用户模块目录, "CapsLockX_用户脚本.user.ahk") +!,:: UserModuleEdit(快速窗口热键编辑用户模块目录, "CLX_用户脚本.user.ahk") +!,:: UserModuleEdit(快速窗口热键编辑用户模块目录, "使用进程名AHK") diff --git a/Modules/CLX-VirtualDesktop.ahk b/Modules/CLX-VirtualDesktop.ahk index 1f3958e..0399c38 100644 --- a/Modules/CLX-VirtualDesktop.ahk +++ b/Modules/CLX-VirtualDesktop.ahk @@ -30,16 +30,16 @@ if (!CapsLockX) { ExitApp } -global VirtualDesktopPinPattern1 := CapsLockX_Config("VirtualDesktopPinPattern", "p1", "#Desktop1", "Pin matched window to desktop 1") -global VirtualDesktopPinPattern2 := CapsLockX_Config("VirtualDesktopPinPattern", "p2", "#Desktop2", "Pin matched window to desktop 2") -global VirtualDesktopPinPattern3 := CapsLockX_Config("VirtualDesktopPinPattern", "p3", "#Desktop3", "Pin matched window to desktop 3") -global VirtualDesktopPinPattern4 := CapsLockX_Config("VirtualDesktopPinPattern", "p4", "#Desktop4", "Pin matched window to desktop 4") -global VirtualDesktopPinPattern5 := CapsLockX_Config("VirtualDesktopPinPattern", "p5", "#Desktop5", "Pin matched window to desktop 5") -global VirtualDesktopPinPattern6 := CapsLockX_Config("VirtualDesktopPinPattern", "p6", "#Desktop6", "Pin matched window to desktop 6") -global VirtualDesktopPinPattern7 := CapsLockX_Config("VirtualDesktopPinPattern", "p7", "#Desktop7", "Pin matched window to desktop 7") -global VirtualDesktopPinPattern8 := CapsLockX_Config("VirtualDesktopPinPattern", "p8", "#Desktop8", "Pin matched window to desktop 8") -global VirtualDesktopPinPattern9 := CapsLockX_Config("VirtualDesktopPinPattern", "p9", "#Desktop9", "Pin matched window to desktop 9") -global VirtualDesktopPinPattern0 := CapsLockX_Config("VirtualDesktopPinPattern", "p0", "#Desktop0", "Pin matched window to desktop 0") +global VirtualDesktopPinPattern1 := CLX_Config("VirtualDesktopPinPattern", "p1", "#Desktop1", "Pin matched window to desktop 1") +global VirtualDesktopPinPattern2 := CLX_Config("VirtualDesktopPinPattern", "p2", "#Desktop2", "Pin matched window to desktop 2") +global VirtualDesktopPinPattern3 := CLX_Config("VirtualDesktopPinPattern", "p3", "#Desktop3", "Pin matched window to desktop 3") +global VirtualDesktopPinPattern4 := CLX_Config("VirtualDesktopPinPattern", "p4", "#Desktop4", "Pin matched window to desktop 4") +global VirtualDesktopPinPattern5 := CLX_Config("VirtualDesktopPinPattern", "p5", "#Desktop5", "Pin matched window to desktop 5") +global VirtualDesktopPinPattern6 := CLX_Config("VirtualDesktopPinPattern", "p6", "#Desktop6", "Pin matched window to desktop 6") +global VirtualDesktopPinPattern7 := CLX_Config("VirtualDesktopPinPattern", "p7", "#Desktop7", "Pin matched window to desktop 7") +global VirtualDesktopPinPattern8 := CLX_Config("VirtualDesktopPinPattern", "p8", "#Desktop8", "Pin matched window to desktop 8") +global VirtualDesktopPinPattern9 := CLX_Config("VirtualDesktopPinPattern", "p9", "#Desktop9", "Pin matched window to desktop 9") +global VirtualDesktopPinPattern0 := CLX_Config("VirtualDesktopPinPattern", "p0", "#Desktop0", "Pin matched window to desktop 0") Return @@ -57,7 +57,7 @@ Return +]:: MoveActiveWindowWithAction("^#{Right}") #if CapsLockXMode - + ; Add or delete desktop !Backspace:: SendEvent ^#{F4} !+Backspace:: SendEvent ^#d @@ -226,7 +226,7 @@ MoveActiveWindowToDesktop(idx) MoveAllVisibleWindowToDesktop(idx) { listOfWindow := WindowsListOfMonitorFast(arrangeFlags | ARRANGE_MAXWINDOW | ARRANGE_MINWINDOW) - + loop Parse, listOfWindow, `n { hWnd := RegExReplace(A_LoopField, "^.*?ahk_id (\S+?)$", "$1") @@ -242,7 +242,7 @@ MoveAllVisibleWindowToDesktop(idx) hWnd := RegExReplace(A_LoopField, "^.*?ahk_id (\S+?)$", "$1") if(!hWnd) continue - + DllCall("ShowWindowAsync", UInt, hWnd, UInt, (SW_SHOWNOACTIVATE := 0x4) ) } } @@ -302,7 +302,7 @@ SwitchToDesktopByHotkey(idx) SendEvent ^#{Left} } lastIdx := idx - + return idx } @@ -400,7 +400,7 @@ WindowsListInAllVirtualDesktop() WS_EX_NOACTIVATE := 0x08000000 WS_POPUP := 0x80000000 DetectHiddenWindows, Off - WinGet, id, List, , , + WinGet, id, List, , , loop %id% { hWnd := id%A_Index% filter := !WindowsListOfMonitorInAllVirtualDesktopFilter(hWnd) diff --git a/Modules/CLX-WindowManager.ahk b/Modules/CLX-WindowManager.ahk index 5d47496..c9a4579 100644 --- a/Modules/CLX-WindowManager.ahk +++ b/Modules/CLX-WindowManager.ahk @@ -16,7 +16,7 @@ if (!CapsLockX) { ExitApp } -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) ; setup done ; flags @@ -36,7 +36,7 @@ global ARRANGE_Z_ORDERING := 0x20 global lastFlashWinIDs := [] global 最迟闪动窗口 := {} ; global 窗口鼠标位置表表 := {} -global T窗口增强_鼠标位置记忆 := CapsLockX_Config("窗口增强", "鼠标位置记忆尝试", 1, "在CLX+Z窗口切换时记住还原鼠标在每个窗口中的位置") +global T窗口增强_鼠标位置记忆 := CLX_Config("窗口增强", "鼠标位置记忆尝试", 1, "在CLX+Z窗口切换时记住还原鼠标在每个窗口中的位置") 闪动窗口记录器初始化() diff --git a/Modules/QuickInput.ahk b/Modules/QuickInput.ahk index e21d4ba..3897c40 100644 --- a/Modules/QuickInput.ahk +++ b/Modules/QuickInput.ahk @@ -8,7 +8,7 @@ ; 版权:Copyright © 2017-2022 Snowstar Laboratory. All Rights Reserved. ; ========== CapsLockX ========== -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) Return diff --git a/Modules/QuickTips.ahk b/Modules/QuickTips.ahk index 6eff943..3f3de5c 100644 --- a/Modules/QuickTips.ahk +++ b/Modules/QuickTips.ahk @@ -42,11 +42,11 @@ SceneTips() ToolTip %msg% } } -CapsLockX_LongPressDown() +CLX_LongPressDown() { SceneTips() } -CapsLockX_LongPressUp() +CLX_LongPressUp() { SceneTipsRemove() } \ No newline at end of file diff --git a/Modules/SnoChordTyping.ahk b/Modules/SnoChordTyping.ahk index 4d23e30..2aa30d1 100644 --- a/Modules/SnoChordTyping.ahk +++ b/Modules/SnoChordTyping.ahk @@ -13,7 +13,7 @@ FileEncoding, UTF-8 ; 開關 默认关 -global SnoChordTypingEnable := CapsLockX_Config("Plugins", "EnableSnoChordTyping", 0, "启用雪星并击(实验中),") +global SnoChordTypingEnable := CLX_Config("Plugins", "EnableSnoChordTyping", 0, "启用雪星并击(实验中),") if (!T_SnoChordTypingEnable) Return @@ -36,7 +36,7 @@ Return global SnoChordTypingLastKeyDownTick := 0 ; 读入配置 - ConfigPath := CapsLockX_配置目录 "/雪星并击配置.ini" + ConfigPath := CLX_ConfigDir "/雪星并击配置.ini" IniRead, SnoChordTypingChordIntervalThreshold, %ConfigPath%, Common, SnoChordTypingChordIntervalThreshold, %SnoChordTypingChordIntervalThreshold% IniWrite, %SnoChordTypingChordIntervalThreshold%, %ConfigPath%, Common, SnoChordTypingChordIntervalThreshold IniRead, SnoChordTypingAllowRewriteString, %ConfigPath%, Common, SnoChordTypingAllowRewriteString, %SnoChordTypingAllowRewriteString% diff --git a/Modules/TomatoLife.ahk b/Modules/TomatoLife.ahk index cc03d09..e8083c0 100644 --- a/Modules/TomatoLife.ahk +++ b/Modules/TomatoLife.ahk @@ -7,26 +7,26 @@ ; 版本:v2021.03.26 ; ========== CapsLockX ========== -global T_TomatoLife := CapsLockX_Config("TomatoLife", "Enable", 0, "使用番茄时钟(默认禁用,改为 1 开启)") -global T_TomatoLife_NoticeOnLaunch := CapsLockX_Config("TomatoLife", "NoticeOnLaunch", 1, "启动时报告番茄状态") -global T_TomatoLife_UseTomatoLifeSound := CapsLockX_Config("TomatoLife", "UseTomatoLifeSound", 1, "使用番茄报时(00分和30分播放工作铃声,每小时的25分和55分播放休息铃声)(需要先开启番茄时钟)") -global T_TomatoLife_UseTomatoLifeSwitchVirtualDesktop := CapsLockX_Config("TomatoLife", "UseTomatoLifeSwitchVirtualDesktop", 1, "使用番茄报时时,自动切换桌面(休息为桌面1,工作为桌面2)") +global T_TomatoLife := CLX_Config("TomatoLife", "Enable", 0, "使用番茄时钟(默认禁用,改为 1 开启)") +global T_TomatoLife_NoticeOnLaunch := CLX_Config("TomatoLife", "NoticeOnLaunch", 1, "启动时报告番茄状态") +global T_TomatoLife_UseTomatoLifeSound := CLX_Config("TomatoLife", "UseTomatoLifeSound", 1, "使用番茄报时(00分和30分播放工作铃声,每小时的25分和55分播放休息铃声)(需要先开启番茄时钟)") +global T_TomatoLife_UseTomatoLifeSwitchVirtualDesktop := CLX_Config("TomatoLife", "UseTomatoLifeSwitchVirtualDesktop", 1, "使用番茄报时时,自动切换桌面(休息为桌面1,工作为桌面2)") if (T_TomatoLife) { 高精度时间配置() - GoSub CapsLockX_番茄时钟定时任务 + GoSub CLX_番茄时钟定时任务 ; [有一个难以复现的 bug・Issue #17・snolab/CapsLockX]( https://github.com/snolab/CapsLockX/issues/17 ) } Return 高精度时间配置(){ - ; global T_TomatoLife := CapsLockX_Config("TomatoLife", "", 0, "使用定时任务") + ; global T_TomatoLife := CLX_Config("TomatoLife", "", 0, "使用定时任务") ; MsgBox, 你开启了定时任务,是否现在配置高精度时间? ; IfMsgBox, Cancel ; return - - global T_TomatoLife_UsingHighPerformanceTime := CapsLockX_Config("TomatoLife", "T_UsingHighPerformanceTime", "0", "已经配置过高精度时间的Flag") + + global T_TomatoLife_UsingHighPerformanceTime := CLX_Config("TomatoLife", "T_UsingHighPerformanceTime", "0", "已经配置过高精度时间的Flag") if (T_TomatoLife_UsingHighPerformanceTime) return ToolTip, 番茄时钟开启,正在为您配置系统高精度时间 @@ -38,7 +38,7 @@ Return RunWait reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v "SpecialPollInterval" /t REG_DWORD /d 64 /f, , Hide RunWait net stop w32time, , Hide RunWait net start w32time, , Hide - CapsLockX_ConfigSet("TomatoLife", "T_UsingHighPerformanceTime", "1", "") + CLX_ConfigSet("TomatoLife", "T_UsingHighPerformanceTime", "1", "") ToolTip } @@ -48,7 +48,7 @@ Return 番茄报时(force:=0){ ; CapsLockX 暂停时,番茄状态也暂停 - if (CapsLockX_Paused) + if (CLX_Paused) Return ; tooltip 检测睡眠标记文件以跳过报时 static SLEEPING_FLAG_CLEAN := 0 @@ -64,12 +64,12 @@ Return } 番茄状态 := 番茄状态计算() ; tooltip 边沿触发过滤器 - + static 上次番茄状态 := "" ; : 番茄状态计算() - + global T_TomatoLife_NoticeOnLaunch ; tomatoLaunchFlag := 0 ; - + if ( 上次番茄状态 == "" && !T_TomatoLife_NoticeOnLaunch) { 上次番茄状态 = 番茄状态计算() tomatoLaunchFlag := 1 @@ -81,7 +81,7 @@ Return } 上次番茄状态 := 番茄状态 MsgBox, 番茄:%番茄状态% - + ; 状态动作 if ("工作时间" == 番茄状态) { TrayTip 番茄时钟:%番茄状态%, 工作时间到啦! @@ -109,14 +109,14 @@ UnixTimeGet() Return t * 1000 + A_MSec } -CapsLockX_番茄时钟定时任务: +CLX_番茄时钟定时任务: if (T_TomatoLife && T_TomatoLife_UseTomatoLife) 番茄报时() ; 下次循环时间计算 间隔 := 60000 ; 间隔为1分钟,精度到毫秒级 延时 := (间隔 - Mod(UnixTimeGet(), 间隔)) ; ToolTip, % 延时 - SetTimer CapsLockX_番茄时钟定时任务, %延时% + SetTimer CLX_番茄时钟定时任务, %延时% Return #If diff --git a/README.md b/README.md index 80b0fd7..76eafd6 100644 --- a/README.md +++ b/README.md @@ -680,7 +680,7 @@ Ctrl + Alt + 同上,但一般为全局热键 相关社群: - [CapsLockX 的 issues (可作论坛使用)](https://github.com/snolab/CapsLockX/issues) ✉️ -- CapsLockX 用户电报群:[t.me/CapsLockX_users](https://t.me/CapsLockX_users)📱 +- CapsLockX 用户电报群:[t.me/CLX_users](https://t.me/CLX_users)📱 - CapsLockX 用户 QQ 群 🐧:[100949388](https://jq.qq.com/?_wv=1027&k=56lsK8ko) - QZ/VimD/TC/AHK QQ 群 🐧: 271105729 - AHK 高级 QQ 群 🐧: 717947647 diff --git "a/Tools/DeprecatedModules/\350\256\257\351\243\236\350\276\223\345\205\245\346\263\225\350\257\255\351\237\263\346\202\254\346\265\256\347\252\227.ahk" "b/Tools/DeprecatedModules/\350\256\257\351\243\236\350\276\223\345\205\245\346\263\225\350\257\255\351\237\263\346\202\254\346\265\256\347\252\227.ahk" index 50c099a..35d7505 100644 --- "a/Tools/DeprecatedModules/\350\256\257\351\243\236\350\276\223\345\205\245\346\263\225\350\257\255\351\237\263\346\202\254\346\265\256\347\252\227.ahk" +++ "b/Tools/DeprecatedModules/\350\256\257\351\243\236\350\276\223\345\205\245\346\263\225\350\257\255\351\237\263\346\202\254\346\265\256\347\252\227.ahk" @@ -9,7 +9,7 @@ ; 2021-04-15 更新 @telppa:[修改了一下语音识别模块的代码。・Issue #14・snolab/CapsLockX]( https://github.com/snolab/CapsLockX/issues/14 ) ; -CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH)) +CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH)) Return diff --git a/docs/README.md b/docs/README.md index 719992c..42e4c05 100644 --- a/docs/README.md +++ b/docs/README.md @@ -682,7 +682,7 @@ Star Chart ⭐️ Related Communities: - [CapsLockX's issues (can be used as a forum)](https://github.com/snolab/CapsLockX/issues) ✉️ -- CapsLockX User Telegram Group: [t.me/CapsLockX_users](https://t.me/CapsLockX_users)📱 +- CapsLockX User Telegram Group: [t.me/CLX_users](https://t.me/CLX_users)📱 - CapsLockX User QQ Group 🐧: [100949388](https://jq.qq.com/?_wv=1027&k=56lsK8ko) - QZ/VimD/TC/AHK QQ Group 🐧: 271105729 - AHK Advanced QQ Group 🐧: 717947647