Skip to content

Commit

Permalink
fix(capslockx): xflymsg
Browse files Browse the repository at this point in the history
xflymsg
  • Loading branch information
snomiao committed May 13, 2024
1 parent bb79216 commit 6052549
Show file tree
Hide file tree
Showing 10 changed files with 691 additions and 938 deletions.
86 changes: 44 additions & 42 deletions CapsLockX.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ if (A_IsAdmin) {
SetWorkingDir, %A_ScriptDir%

#Include %A_ScriptDir%/Core/CapsLockX-Config.ahk

#Include %A_ScriptDir%/Core/CapsLockX-RunSilent.ahk
#Include %A_ScriptDir%/Core/CapsLockX-i18n.ahk

global CLX_模块路径 := "./Modules"
global CLX_ModuleDir := "./Modules"
; global CLX_用户模块路径 := CLX_ConfigDir "/Modules"
global CLX_核心路径 := "./Core"
global CLX_CoreDir := "./Core"
; 版本
global CLX_Version
FileRead, CLX_Version, ./Core/version.txt
Expand All @@ -35,21 +35,22 @@ global 显示加载提示 := 1
global loadingTips := ""

; 对 核心模块 进行 编码清洗
清洗为_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")
清洗为_UTF8_WITH_BOM_型编码(CLX_CoreDir "/CapsLockX-Config.ahk")
清洗为_UTF8_WITH_BOM_型编码(CLX_CoreDir "/CapsLockX-Core.ahk")
清洗为_UTF8_WITH_BOM_型编码(CLX_CoreDir "/CapsLockX-RunSilent.ahk")
清洗为_UTF8_WITH_BOM_型编码(CLX_CoreDir "/CapsLockX-Update.ahk")
清洗为_UTF8_WITH_BOM_型编码(CLX_CoreDir "/CapsLockX-i18n.ahk")

; 复制用户模块
; TODO FIX:如果CLX已经开了的话,这一步会触发重启,这可能会导致一些文件冲突的BUG……
FileDelete, %CLX_模块路径%/*.user.ahk
FileDelete, %CLX_模块路径%/*.user.md
FileCopy %CLX_ConfigDir%/*.user.ahk, %CLX_模块路径%/, 1
FileCopy %CLX_ConfigDir%/*.user.md, %CLX_模块路径%/, 1
FileDelete, %CLX_ModuleDir%/*.user.ahk
FileDelete, %CLX_ModuleDir%/*.user.md
FileCopy %CLX_ConfigDir%/*.user.ahk, %CLX_ModuleDir%/, 1
FileCopy %CLX_ConfigDir%/*.user.md, %CLX_ModuleDir%/, 1

; 模块加载器路径
global CLX_ModulesRunner := CLX_核心路径 "/CapsLockX-ModulesRunner.ahk"
global CLX_ModulesFunctions := CLX_核心路径 "/CapsLockX-ModulesFunctions.ahk"
global CLX_ModulesRunner := "Core\CapsLockX-ModulesRunner.ahk"
global CLX_ModulesFunctions := "Core\CapsLockX-ModulesFunctions.ahk"
; LoadModules(CLX_ModulesRunner, CLX_ModulesFunctions)

; 判断安装方式
Expand Down Expand Up @@ -92,11 +93,11 @@ Return
}
; 如果不一样,就再编译一次,并且显示加载提示
显示加载提示 := 1
加载提示追加("模块帮助有变更")
加载提示追加(t("模块帮助有变更"))
; 然后进行稳定性检查
source := 模块编译和帮助README更新(target)
if (target != source) {
MsgBox % "如果你看到了这个,请联系雪星(QQ:997596439),这里肯定有 BUG……(20200228)"
MsgBox % t("警告:模块帮助未能稳定更新,如果你看到了这个消息,请联系雪星(QQ:997596439, 邮箱: [email protected]")
}
; 输出到 docs/readme.md (用于 github-pages )
; docs_target := 模块编译和帮助README更新(source, 1)
Expand Down Expand Up @@ -126,13 +127,13 @@ Return
}
加载提示显示(){
ToolTip % loadingTips
sleep 2000
sleep 1000
}
模块编译和帮助README更新(sourceREADME, docs=""){
模块编译和帮助README更新(sourceREADME, lang="en"){
FileEncoding UTF-8-Raw
; 列出模块文件
ModuleFiles := ""
loop, Files, %CLX_模块路径%\*.ahk
loop, Files, %CLX_ModuleDir%\*.ahk
{
; Do not Recurse into subfolders. 子文件夹由模块自己去include去加载
ModuleFiles .= A_LoopFileName "`n"
Expand All @@ -159,50 +160,50 @@ Return
模块帮助内容 := ""
模块帮助文件 := ""
if (!模块帮助内容) {
模块帮助文件 := CLX_模块路径 "/" 模块名称 ".md"
模块帮助文件 := CLX_ModuleDir "/" 模块名称 ".md"
if (FileExist(模块帮助文件)) {
FileRead, 模块帮助内容, %模块帮助文件%
}
}
if (!模块帮助内容) {
模块帮助文件 := CLX_模块路径 "/" 模块文件名称 ".md"
模块帮助文件 := CLX_ModuleDir "/" 模块文件名称 ".md"
if (FileExist(模块帮助文件)) {
FileRead, 模块帮助内容, %模块帮助文件%
}
}

; 加载模块描述
FileRead, 模块文件内容, % CLX_模块路径 "/" 模块文件
matchPos := RegExMatch(模块文件内容, "mi)^; 描述:(.*)", 模块描述)
FileRead, 模块文件内容, % CLX_ModuleDir "/" 模块文件
T%模块名称%_Disabled := CLX_Config("ModuleDisable", "T" 模块名称 "_Disabled", 0, "是否禁用模块:" 模块名称 (模块描述1 ? " - " 模块描述1 : "") )

if (模块帮助内容) {
模块帮助内容 := Trim(模块帮助内容, " `t`n")
加载提示追加("加载模块帮助:" + i + "-" + 模块名称)
加载提示追加(t("加载模块帮助:") . i . "-" . 模块名称)

全部帮助 .= "<!-- 模块文件名:" Match[1] Match[2] ".ahk" "-->" "`n`n"
全部帮助 .= "<!-- MODULE_FILE: " Match[1] Match[2] ".ahk" "-->" "`n`n"
; 替换标题层级
模块帮助内容 := RegExReplace(模块帮助内容, "m)^#", "###")

; 替换资源链接的相对目录(图片gif等)
FileCopy, %CLX_模块路径%\*.gif, .\docs\media\, 1
FileCopy, %CLX_模块路径%\*.png, .\docs\media\, 1
FileCopy, %CLX_ModuleDir%\*.gif, .\docs\media\, 1
FileCopy, %CLX_ModuleDir%\*.png, .\docs\media\, 1
模块帮助内容 := RegExReplace(模块帮助内容, "m)\[(.*)\]\(\s*?\.\/(.*?)\)", "[$1](./media/$2)")
; 没有标题的,给自动加标题
if (!RegExMatch(模块帮助内容, "^#")) {
if (T%模块名称%_Disabled) {
全部帮助 .= "### " 模块名称 "模块(禁用)" "`n"
模块帮助内容 .= "### " 模块名称 "模块(禁用)" "`n"
} else {
全部帮助 .= "### " 模块名称 "模块" "`n"
模块帮助内容 .= "### " 模块名称 "模块" "`n"
}
}
全部帮助 .= 模块帮助内容 "`n`n"

全部帮助 .= t(模块帮助内容, lang) "`n`n"
}
if (T%模块名称%_Disabled) {
加载提示追加("跳过模块:" i " " 模块名称)
加载提示追加(t("跳过模块:") . i . " " . 模块名称)
} else {
; 这里引入模块代码
清洗为_UTF8_WITH_BOM_型编码(CLX_模块路径 "/" 模块文件)
清洗为_UTF8_WITH_BOM_型编码(CLX_ModuleDir "/" 模块文件)
; 导入模块
模块初始化代码 .= "GoSub CLX_ModuleSetup_" i "`n"
模块导入代码 .= "`n" "#If" "`n" "`n"
Expand All @@ -212,17 +213,17 @@ Return
} else {
模块导入代码 .= " " " " " " " " "CLX_THIS_MODULE_HELP_FILE_PATH := """"" "`n"
}
模块导入代码 .= " " " " " " " " "#Include " CLX_模块路径 "/" 模块文件 "`n"
模块导入代码 .= " " " " " " " " "#Include " CLX_ModuleDir "/" 模块文件 "`n"
模块导入代码 .= "Return" "`n"
加载提示追加("运行模块:" i " " 模块名称)
加载提示追加(t("运行模块:") . i . " " . 模块名称)
}
}
加载提示显示()

; 拼接模块加载器代码
常量语句 .= "; 请勿直接编辑本文件,以下内容由核心加载器自动生成。雪星/(20210318)" "`n"
常量语句 .= "global CLX_模块路径 := " """" CLX_模块路径 """" "`n"
常量语句 .= "global CLX_核心路径 := " """" CLX_核心路径 """" "`n"
常量语句 .= "; " . t("请勿直接编辑本文件,以下内容由核心加载器自动生成。雪星/(20210318)") . "`n"
常量语句 .= "global CLX_ModuleDir := " """" CLX_ModuleDir """" "`n"
常量语句 .= "global CLX_CoreDir := " """" CLX_CoreDir """" "`n"
常量语句 .= "global CLX_Version := " """" CLX_Version """" "`n"
常量语句 .= "global CLX_VersionName := " """" CLX_VersionName """" "`n"

Expand All @@ -234,8 +235,9 @@ Return
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 首次安装后,请以管理员权限运行。"
msg .= t("Unable to write ModulesRunner.ahk, if you are install with chocolatey, run me as admin at the first time please.")
msg .= "`n"
msg .= t("注意:未能写入模块运行器,如果使用 chocolatey 首次安装后,请以管理员权限运行。")
msgbox %msg%
}
FileDelete %CLX_ModulesFunctions%
Expand All @@ -260,8 +262,8 @@ Return
Return targetREADME
}
CapsLockX启动(){
CoreAHK := CLX_核心路径 "\CapsLockX-Core.ahk"
UpdatorAHK := CLX_核心路径 "\CapsLockX-Update.ahk"
CoreAHK := CLX_CoreDir "\CapsLockX-Core.ahk"
UpdatorAHK := CLX_CoreDir "\CapsLockX-Update.ahk"
; 为了避免运行时对更新模块的影响,先把 EXE 文件扔到 Temp 目录,然后再使用 Temp 里的 AHK 来运行本核心。
AHK_EXE_ROOT_PATH := "CapsLockX.exe"
AHK_EXE_CORE_PATH := "./Core/CapsLockX.exe"
Expand All @@ -286,12 +288,12 @@ CapsLockX启动(){
RunWait %AHK_EXE_TEMP_PATH% %CoreAHK%, %A_ScriptDir%
}
if (ErrorLevel) {
MsgBox, 4, CapsLockX 错误, CapsLockX 异常退出,是否重载?
MsgBox, 4, % t("CapsLockX 错误"), % t("CapsLockX 异常退出,是否重载?")
IfMsgBox No
return
Reload
} else {
TrayTip, CapsLockX 退出, CapsLockX 已退出。
TrayTip, % t("CapsLockX 退出"), % t("CapsLockX 已退出。")
Sleep, 1000
}
ExitApp
Expand Down
39 changes: 30 additions & 9 deletions Core/CapsLockX-i18n.ahk
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@


global CLX_Lang := CLX_Config("Core", "Language", "auto", "语言切换")
global CLX_i18nConfigPath := "Core/lang.ini"
global CLX_i18n_newTranslated := "Core/lang.ini"

清洗为_UTF16_WITH_BOM_型编码(CLX_i18nConfigPath)

; - [Language Codes \| AutoHotkey v1]( https://www.autohotkey.com/docs/v1/misc/Languages.htm )
Expand All @@ -16,7 +18,7 @@ LCID_0011 := "Japanese" ; ja
LCID_0411 := "Japanese (Japan)" ; ja-JP

; TODO: converts
t(s)
t(s, lang = "")
{
global CLX_Lang

Expand All @@ -26,8 +28,9 @@ t(s)

; for dev, autotranslate
; run node "prompts/translate-en.md"

lang := CLX_Lang
if (!lang) {
lang := CLX_Lang
}
if (!lang) {
lang:="auto"
}
Expand Down Expand Up @@ -125,31 +128,49 @@ i18n_changeLanguage(lang := "auto")
}
CLX_i18n_ConfigGet(field, varName, defaultValue)
{
encodedKey := CLX_i18n_ConfigEnocde(varName)
global CLX_ConfigChangedTickCount
CLX_ConfigChangedTickCount := A_TickCount
; user locales
global CLX_ConfigDir
IniRead, content, % CLX_ConfigDir . "/" . field . ".ini", %field%, %varName%, %defaultValue%
IniRead, content, % CLX_ConfigDir . "/" . field . ".ini", %field%, % encodedKey, %defaultValue%
if (content == "ERROR") {
content := ""
}
if (content) {
return content
return CLX_i18n_ConfigDecode(content)
}
; clx pre-installed locales
IniRead, content, % CLX_i18nConfigPath, %field%, %varName%, %defaultValue%
IniRead, content, % CLX_i18nConfigPath, %field%, % encodedKey, %defaultValue%
if (content == "ERROR") {
content := ""
}
if (content) {
return content
return CLX_i18n_ConfigDecode(content)
}
}
CLX_i18n_ConfigSet(field, varName, value)
{
encodedKey := CLX_i18n_ConfigEnocde(varName)
encodedValue := CLX_i18n_ConfigEnocde(value)
global CLX_ConfigChangedTickCount
CLX_ConfigChangedTickCount := A_TickCount
global CLX_ConfigDir
IniSave(value, CLX_ConfigDir . "/" . field . ".ini", field, varName)
IniSave(encodedValue, CLX_ConfigDir . "/" . field . ".ini", field, encodedKey)

; 清洗为_UTF16_WITH_BOM_型编码(CLX_ConfigDir)
}
CLX_i18n_ConfigEnocde(str){
str := RegExReplace(str, "\\", "\\")
str := RegExReplace(str, "`r", "\r")
str := RegExReplace(str, "`n", "\n")
str := RegExReplace(str, "=", "\e")
return str
}
CLX_i18n_ConfigDecode(str){
str := RegExReplace(str, "\\e", "=")
str := RegExReplace(str, "\\n", "`n")
str := RegExReplace(str, "\\r", "`r")
str := RegExReplace(str, "\\\\", "\")
return str
}
6 changes: 3 additions & 3 deletions Core/CapslockX-Config.ahk
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
; 保存为 save with UTF8 with DOM

; 用户创建目录
ConfigDir_Portable := "./User"
ConfigDir_UserProfile := USERPROFILE . "/.CapsLockX"
ConfigDir_AppData := APPDATA . "/CapsLockX"
ConfigDir_Portable := ".\User"
ConfigDir_UserProfile := USERPROFILE . "\.CapsLockX"
ConfigDir_AppData := APPDATA . "\CapsLockX"

; 默认值
LaunchConfigDir := ConfigDir_AppData
Expand Down
11 changes: 4 additions & 7 deletions Modules/App-XunFeiSwitching.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
; 2021-04-15 更新 @telppa:[修改了一下语音识别模块的代码。・Issue #14・snolab/CapsLockX]( https://github.com/snolab/CapsLockX/issues/14 )
;

global T_EnableXunFeiSwitching := CLX_Config("App", "T_EnableXunFeiSwitching", 1, "使用 Win+H 快速启动讯飞语音悬浮窗(默认启用)")
global T_EnableXunFeiSwitching := CLX_Config("App", "T_EnableXunFeiSwitching", 1, t("使用 Win+Alt+H 快速启动讯飞语音悬浮窗(默认启用)"))
CLX_AppendHelp( CLX_LoadHelpFrom(CLX_THIS_MODULE_HELP_FILE_PATH))

Return

#if !CapsLockXMode && T_EnableXunFeiSwitching

#h:: 讯飞语音输入法切换()
#!h:: 讯飞语音输入法切换()

讯飞语音输入法切换(){
xflyInstallMsg := t("你似乎还没有安装讯飞语音输入法,是否现在下载安装包并【手动安装】到默认目录? - [讯飞输入法官网 - 更好用的手机输入法,提供专业输入法定制解决方案!]( https://srf.xunfei.cn/#/ )")

; v3
iFlyWnd := WinExist("ahk_class BaseGui ahk_exe iFlyVoice.exe" )
Expand Down Expand Up @@ -48,7 +48,7 @@ Return
If (FileExist(iFlyPath "\iFlyVoice.exe")){
Run "%iFlyPath%\iFlyVoice.exe"
}else{
MsgBox, 4, , 你似乎还没有安装讯飞语音输入法,是否现在下载安装包并【手动安装】到默认目录? - [讯飞输入法官网 - 更好用的手机输入法,提供专业输入法定制解决方案!]( https://srf.xunfei.cn/#/ )
MsgBox, 4, , % xflyInstallMsg
IfMsgBox, NO, Return
; Run https://download.voicecloud.cn/200ime/iFlyIME_Setup_2.1.1708.exe
run https://srf.xunfei.cn/#/
Expand All @@ -58,6 +58,3 @@ Return
; Run %TEMP%/iFlyIME_Setup_2.1.1708.exe
}
}

; 加 Alt 访问原热键
#!h:: Send #h
5 changes: 2 additions & 3 deletions Modules/App-XunFeiSwitching.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@

| 作用于 | 按键 | 功能说明 |
| ------ | :-----: | --------------------- |
| 全局 | Win + H | 启动/切换讯飞语音输入 |
| 全局 | Win + Alt + H | 启动/切换讯飞语音输入 |

##

1.`Win + H` 的功能是 Windows 自带听写,安装本插件后,可通过 `Win + Shift + H` 使用原 Windows 的听写
2. 若没有安装讯飞语音则会自动询问是否引导下载安装
1. 若没有安装讯飞语音则会自动询问是否引导下载安装

## 效果如下图

Expand Down
2 changes: 1 addition & 1 deletion Modules/CLX-RunOnLogin.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ CLX_MakeStartup()
content = cd "%A_WorkingDir%" && start "" CapsLockX.exe
startCMDPath := APPDATA "\Microsoft\Windows\Start Menu\Programs\Startup\capslockx-startup.cmd"
FileDelete, %startCMDPath%
FileAppend, echo off, %startCMDPath%
FileAppend, echo off`r`n, %startCMDPath%
FileAppend, %content%, %startCMDPath%
cmdView := "explorer /select, " """" startCMDPath """"
run % cmdView
Expand Down
2 changes: 1 addition & 1 deletion Modules/SnoChordTyping.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
FileEncoding, UTF-8

; 開關 默认关
global SnoChordTypingEnable := CLX_Config("Plugins", "EnableSnoChordTyping", 0, "启用雪星并击(实验中),")
global SnoChordTypingEnable := CLX_Config("SnoChordTyping", "EnableSnoChordTyping", 0, t("启用雪星并击(实验中),使用单手操作整个主键区"))
if (!T_SnoChordTypingEnable)
Return

Expand Down
Loading

0 comments on commit 6052549

Please sign in to comment.