Skip to content

Commit

Permalink
fix: 配置项优化
Browse files Browse the repository at this point in the history
  • Loading branch information
snomiao committed Nov 24, 2021
1 parent a56aa84 commit 91ee1df
Show file tree
Hide file tree
Showing 10 changed files with 107 additions and 83 deletions.
28 changes: 6 additions & 22 deletions CapsLockX.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ if (A_IsAdmin){
#NoTrayIcon ; 隐藏托盘图标
SetWorkingDir, %A_ScriptDir%

FileCreateDir ./User
FileCreateDir %USERPROFILE%/.CapsLockX
global CapsLockX_配置路径 := "./User/CapsLockX-Config.ini"
#Include Core/CapsLockX-Config.ahk


global CapsLockX_模块路径 := "./Modules"
global CapsLockX_核心路径 := "./Core"
; 版本
Expand All @@ -37,18 +37,12 @@ global loadingTips := ""
清洗为_UTF8_WITH_BOM_型编码(CapsLockX_核心路径 "/CapsLockX-RunSilent.ahk")
清洗为_UTF8_WITH_BOM_型编码(CapsLockX_核心路径 "/CapsLockX-Update.ahk")

; 配置文件编码清洗
清洗为_UTF16_WITH_BOM_型编码(CapsLockX_配置路径)

; 复制用户模块
; :如果CLX已经开了的话,这一步会触发重启,这可能会导致一些文件冲突的BUG……
; TODO FIX:如果CLX已经开了的话,这一步会触发重启,这可能会导致一些文件冲突的BUG……
FileDelete, %CapsLockX_模块路径%/*.user.ahk
FileDelete, %CapsLockX_模块路径%/*.user.md
FileCopy ./User/*.user.ahk, %CapsLockX_模块路径%/, 1
FileCopy ./User/*.user.md, %CapsLockX_模块路径%/, 1
; 备份旧版本的用户模块(注意顺序,不要把新版用户模块覆盖了)
; FileCopy %CapsLockX_模块路径%/*.user.ahk, ./User/
; FileCopy %CapsLockX_模块路径%/*.user.md, ./User/
FileCopy %CapsLockX_配置目录%/*.user.ahk, %CapsLockX_模块路径%/, 1
FileCopy %CapsLockX_配置目录%/*.user.md, %CapsLockX_模块路径%/, 1

; 加载模块
global CapsLockX_ModulesRunner := CapsLockX_核心路径 "/CapsLockX-ModulesRunner.ahk"
Expand Down Expand Up @@ -119,11 +113,6 @@ Return
FileDelete %path%
FileAppend %ModuleCode%, %path%, UTF-8
}
清洗为_UTF16_WITH_BOM_型编码(path){
FileRead ModuleCode, %path%
FileDelete %path%
FileAppend %ModuleCode%, %path%, UTF-16
}
模块和帮助README更新(sourceREADME, docs=""){
FileEncoding UTF-8-Raw
; 列出模块文件
Expand Down Expand Up @@ -274,8 +263,3 @@ CapsLockX启动(){
ExitApp
}

CapsLockX_ConfigGet(field, varName, defaultValue){
IniRead, %varName%, %CapsLockX_配置路径%, %field%, %varName%, %defaultValue%
content := %varName% ; 千层套路XD
return content
}
20 changes: 1 addition & 19 deletions Core/CapsLockX-Update.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,7 @@
; 防多开
#SingleInstance, ignore

; 载入设定、检查配置文件
global CapsLockX_配置路径_旧 := "./CapsLockX-Config.ini"
global CapsLockX_配置路径 := "./User/CapsLockX-Config.ini"
FileMove CapsLockX_配置路径_旧, CapsLockX_配置路径

if(!FileExist(CapsLockX_配置路径)){
SetWorkingDir, ../
}
if(!FileExist(CapsLockX_配置路径)){
MsgBox 更新失败:配置文件不存在
ExitApp
}
; 加载模块(这里更新模块可能由 CapsLockX 加载也可能自己启动)
; 加载模块(这里更新模块可能由 CapsLockX 加载也可能自己启动所以需要动态加载配置ahk)
#Include *i Core/CapsLockX-Config.ahk
#Include *i Core/CapsLockX-RunSilent.ahk
; #Include *i ./CapsLockX-Config.ahk
Expand Down Expand Up @@ -173,12 +161,6 @@ CapsLockX_ZIP下载解压更新(包网址, 包路径, 解压目录, 程序目录
}
CapsLockX_更新记录("解压完成...")

; 迁移用户配置
FileCreateDir, %程序目录%/User/
; FileCopy, ./User/*.*, %程序目录%/User/, 1
FileCopyDir, ./User/, %程序目录%/User/, 1
; FileCopy, ./UserModules/*.user.ahk, %程序目录%/UserModules/, 1
; FileCopy, ./UserModules/*.user.md, %程序目录%/UserModules/, 1
CapsLockX_更新提示("解压完成,将打开新版本文件夹,请把它手动复制到当前软件目录。")
Run explorer /select`, %程序目录%
Run explorer /select`, %A_ScriptDir%
Expand Down
31 changes: 31 additions & 0 deletions Core/CapslockX-Config.ahk
Original file line number Diff line number Diff line change
@@ -1,10 +1,36 @@
; 保存为 save with UTF8 with DOM

; 用户创建
便携版配置目录 = ./User
用户目录配置目录 = %USERPROFILE%/.CapsLockX
APPDATA配置目录 = %APPDATA%/CapsLockX

启动配置目录 := APPDATA配置目录

if ( InStr(FileExist(APPDATA配置目录), "D")) {
启动配置目录 := APPDATA配置目录
}
if ( InStr(FileExist(用户目录配置目录), "D")) {
启动配置目录 := 用户目录配置目录
}
if ( InStr(FileExist(便携版配置目录), "D")) {
启动配置目录 := 便携版配置目录
}
FileCreateDir %启动配置目录%

global CapsLockX_配置目录 := 启动配置目录
global CapsLockX_配置路径 := CapsLockX_配置目录 "/CapsLockX-Config.ini"

CapsLockX_ConfigInit()

; return 这里还不能 return

CapsLockX_ConfigInit(){

if (!CapsLockX_配置路径)
Return
; 配置文件编码清洗
清洗为_UTF16_WITH_BOM_型编码(CapsLockX_配置路径)
CapsLockX_Config("_NOTICE_", "ENCODING_USING", "UTF16_LE", "")
; 基本设定
; [Core]
Expand Down Expand Up @@ -70,3 +96,8 @@ CapsLockX_Config(field, varName, defaultValue, comment := ""){
IniWrite, %content%, %CapsLockX_配置路径%, %field%, %varName%
return content
}
清洗为_UTF16_WITH_BOM_型编码(path){
FileRead ModuleCode, %path%
FileDelete %path%
FileAppend %ModuleCode%, %path%, UTF-16
}
8 changes: 3 additions & 5 deletions Core/CapslockX-Core.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,8 @@ SetTitleMatchMode RegEx
#MaxHotkeysPerInterval 1000 ; 时间内按键最大次数(通常是一直按着键触发的。。)
#InstallMouseHook ; 安装鼠标钩子

global CapsLockX_上次触发键 := ""

; 载入设定
global CapsLockX_配置路径_旧 := "./CapsLockX-Config.ini"
global CapsLockX_配置路径 := "./User/CapsLockX-Config.ini"
FileMove CapsLockX_配置路径_旧, CapsLockX_配置路径
#Include Core/CapsLockX-Config.ahk

; 模式处理
Expand All @@ -43,6 +40,7 @@ global CM_CapsLockX := 2 ; CapsLockX 模式,通过长按CLX键进入
; global CM_FNX := 3 ; FnX 模式并不存在
global LastLightState := ((CapsLockXMode & CM_CapsLockX) || (CapsLockXMode & CM_FN))
global CapsLockPressTimestamp := 0
global CapsLockX_上次触发键 := ""

; 根据灯的状态来切换到上次程序退出时使用的模式(不)
UpdateCapsLockXMode(){
Expand All @@ -62,7 +60,7 @@ UpdateLight()

global T_IgnoresByLines
defaultIgnoreFilePath := "./Data/CapsLockX.defaults.ignore.txt"
userIgnoreFilePath := "./User/CapsLockX.user.ignore.txt"
userIgnoreFilePath := CapsLockX_配置目录 "/CapsLockX.user.ignore.txt"
FileRead, T_IgnoresByLines, %userIgnoreFilePath%
if (!T_IgnoresByLinesUser){
FileCopy, %defaultIgnoreFilePath%, %userIgnoreFilePath%
Expand Down
2 changes: 1 addition & 1 deletion Modules/01.1-插件-鼠标模拟.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ global TMouse_DPIRatio := TMouse_UseDPIRatio ? A_ScreenDPI / 96 : 1
CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom("Modules/01.1-插件-鼠标模拟.md" ))
; global debug_fps := new FPS_Debugger()
global 鼠标模拟 := new AccModel2D(Func("鼠标模拟"), 0.1, TMouse_DPIRatio * 360 * TMouse_MouseSpeedRatio)
global 滚轮模拟 := new AccModel2D(Func("滚轮模拟"), 0.1, TMouse_DPIRatio * 360 * TMouse_WheelSpeedRatio)
global 滚轮模拟 := new AccModel2D(Func("滚轮模拟"), 0.1, TMouse_DPIRatio * 120 * 10 * TMouse_WheelSpeedRatio)
global 滚轮自控 := new AccModel2D(Func("滚轮自控"), 0.1, 10)
global 滚轮自动 := new AccModel2D(Func("滚轮自动"), 0, 1)

Expand Down
2 changes: 1 addition & 1 deletion Modules/CapsLockX_Reload.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
; tooltip loaded
; WatchFolder(A_WorkingDir "\User\", "CapsLockX_FolderModified", true, 0x08)
WatchFolder(A_WorkingDir "\Modules\", "CapsLockX_FolderModified", true, 0x08) ; chagned
WatchFolder(A_WorkingDir "\User\", "CapsLockX_FolderChanged", true, 0x02 | 0x03 | 0x08) ; delete or add, iguess
WatchFolder(CapsLockX_配置目录, "CapsLockX_FolderChanged", true, 0x02 | 0x03 | 0x08) ; delete or add, iguess
; WatchFolder(A_WorkingDir "\Modules\", "CapsLockX_FolderChanged", true, 0x02 | 0x03) ; delete or add

#include Modules/WatchFolder/WatchFolder.ahk
Expand Down
7 changes: 4 additions & 3 deletions Modules/LaptopKeyboardFix.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
if !CapsLockX
ExitApp

global FLAG_SWAP_ESC_STROKE := false
global FLAG_SWAP_ESC_STROKE := CapsLockX_Config("CLX_LKF", "FLAG_SWAP_ESC_STROKE", 0, "交换ESC和~键,你可以按CLX+Esc来切换这个选项")

fix: 配置项优化
CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH))

Return
Expand Down Expand Up @@ -45,8 +46,8 @@ Return
; 对于没有Esc或没有 Stroke 键的键
#if CapsLockXMode

`:: FLAG_SWAP_ESC_STROKE := !FLAG_SWAP_ESC_STROKE
Esc:: FLAG_SWAP_ESC_STROKE := !FLAG_SWAP_ESC_STROKE
`:: 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来切换这个选项")

#if FLAG_SWAP_ESC_STROKE

Expand Down
2 changes: 1 addition & 1 deletion Modules/SnoChordTyping.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Return
global SnoChordTypingLastKeyDownTick := 0

; 读入配置
ConfigPath := "./User/雪星并击配置.ini"
ConfigPath := CapsLockX_配置目录 "/雪星并击配置.ini"
IniRead, SnoChordTypingChordIntervalThreshold, %ConfigPath%, Common, SnoChordTypingChordIntervalThreshold, %SnoChordTypingChordIntervalThreshold%
IniWrite, %SnoChordTypingChordIntervalThreshold%, %ConfigPath%, Common, SnoChordTypingChordIntervalThreshold
IniRead, SnoChordTypingAllowRewriteString, %ConfigPath%, Common, SnoChordTypingAllowRewriteString, %SnoChordTypingAllowRewriteString%
Expand Down
86 changes: 58 additions & 28 deletions Modules/插件-新手教程.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -6,53 +6,83 @@
; 版本:v0.0.1
; ========== CapsLockX ==========


global T_XKeyAsCapsLock
global T_XKeyAsSpace
global T_AskRunAsAdmin
global CLX_CONFIG_ONSTARTUP

global CapsLockX_FIRST_LAUNCH := CapsLockX_Config("_NOTICE_", "FIRST_LAUNCH", 1, "首次启动?若想重新进入首次使用教学,请改为 1 并保存,然后使用 Ctrl+Alt+\ 重载 CapsLockX。")
if(CapsLockX_FIRST_LAUNCH)
CapsLockX_首次使用教学()
global CLX_CONFIG_ONSTARTUP := CapsLockX_Config("Core", "CLX_CONFIG_ONSTARTUP", 1, "启动时显示配置窗口")

Menu, Tray, Add ; Creates a separator line.
Menu, Tray, Add, 配置文件编辑, 配置文件编辑 ; Creates a new menu item.

if (CLX_CONFIG_ONSTARTUP) {
SetTimer CapsLockX_首次使用配置, -1
}

return

; 修改配置
#if CapsLockXMode
m:: 配置文件编辑()

m:: 配置文件编辑()


CapsLockX_首次使用教学2(){
CapsLockX_首次使用配置(){
CLX_CONFIG_ONSTARTUP := 0
Gui, Add, Text, , CapsLockX_配置目录:%CapsLockX_配置目录%

Gui, Add, CheckBox, T_XKeyAsCapsLock, 使用 CapsLock 作为引导键(默认启用,用户启用)
Gui, Add, CheckBox, T_AskRunAsAdmin, 请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0
Gui, Add, CheckBox, FIRST_LAUNCH, 启动时显示配置
if(T_XKeyAsCapsLock){
Gui, Add, CheckBox, gCapsLockX_配置刷新 vT_XKeyAsCapsLock Checked, 使用 CapsLock 作为引导键(默认启用)
}else{
Gui, Add, CheckBox, gCapsLockX_配置刷新 vT_XKeyAsCapsLock, 使用 CapsLock 作为引导键(默认启用)
}

; 打开进阶配置编辑器?
; SetTimer, 配置文件编辑, -1
if(T_XKeyAsSpace){
Gui, Add, CheckBox, gCapsLockX_配置刷新 vT_XKeyAsSpace Checked, 使用 Space 作为引导键(默认启用)
}else{
Gui, Add, CheckBox, gCapsLockX_配置刷新 vT_XKeyAsSpace, 使用 Space 作为引导键(默认启用)
}

CapsLockX_ConfigSet("_NOTICE_", "FIRST_LAUNCH", 0)
if(T_AskRunAsAdmin){
Gui, Add, CheckBox, gCapsLockX_配置刷新 vT_AskRunAsAdmin Checked, 请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0
}else{
Gui, Add, CheckBox, gCapsLockX_配置刷新 vT_AskRunAsAdmin, 请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0
}
Gui, Add, CheckBox, gCapsLockX_配置刷新 vCLX_CONFIG_ONSTARTUP, 启动时显示配置窗口
; Gui, Add, CheckBox, FIRST_LAUNCH, 启动时显示配置选项
Gui, Add, Button, w80, 配置文件编辑 (进阶)
Gui, Add, Button, Default w80, 确认
Gui, Show
}

CapsLockX_首次使用教学(){
MsgBox, 4, CapsLockX 教程, 首次启动 CapsLockX ,是否进行基本偏好设置?`n`n(你可以随时按 CapsLockX + M 修改配置文件)
IfMsgBox No
return
CapsLockX_配置刷新:
gui,submit, nohide
ToolTip conf %T_XKeyAsCapsLock% %T_XKeyAsSpace% %T_AskRunAsAdmin%

MsgBox, 4, CapsLockX 教程, 是否使用空格作为 CapsLockX 引导键?(例如,启用后,使用空格组合键 空格 + WASD 可控制鼠标,而单独按下时将保持原空格的功能,不影响打字)
IfMsgBox Yes
CapsLockX_ConfigSet("Core", "T_XKeyAsCapsLock", 1, "使用 CapsLock 作为引导键(默认启用,用户启用)")
IfMsgBox No
CapsLockX_ConfigSet("Core", "T_XKeyAsCapsLock", 0, "使用 CapsLock 作为引导键(默认启用,用户禁用)")
; CapsLockX_ConfigSet("Core", "T_XKeyAsCapsLock", T_XKeyAsCapsLock, "使用 Space 作为引导键(默认启用,用户启用)")
; CapsLockX_ConfigSet("Core", "T_XKeyAsSpace", T_XKeyAsSpace, "使用 CapsLock 作为引导键(默认启用,用户启用)")
; CapsLockX_ConfigSet("Core", "T_AskRunAsAdmin", T_AskRunAsAdmin, "请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)")

ToolTip conf %T_XKeyAsCapsLock% %T_XKeyAsSpace% %T_AskRunAsAdmin%
return
Button确认:
gui, destroy
Button配置文件编辑:
配置文件编辑()
Return

MsgBox, 4, CapsLockX 教程, 是否在启动时询问管理员权限?(权限受限时,权限受限,例如鼠标模拟等功能无法正常运行,默认请求提升权限,如果不需要管理权限下的功能,可以改为0
IfMsgBox Yes
CapsLockX_ConfigSet("Core", "T_AskRunAsAdmin", 1, "请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)")
IfMsgBox No
CapsLockX_ConfigSet("Core", "T_AskRunAsAdmin", 0, "请求管理员权限(权限受限时,鼠标模拟等功能无法正常运行,如果不需要管理权限下的功能,可以改为0)")

MsgBox, 4, CapsLockX 教程, 完成,是否打开进阶配置编辑器?
IfMsgBox Yes
SetTimer, 配置文件编辑, -1000

CapsLockX_ConfigSet("_NOTICE_", "FIRST_LAUNCH", 0)
CapsLockX_首次使用教学(){
; TODO
}

配置文件编辑(){
Run notepad %CapsLockX_配置路径%
; TrayTip, 配置文件关, 自动重载
; CapsLockX_Reload()
}

4 changes: 1 addition & 3 deletions Modules/插件-用户脚本编辑.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ if (!CapsLockX){
}
CapsLockX_AppendHelp( CapsLockX_LoadHelpFrom(CapsLockX_THIS_MODULE_HELP_FILE_PATH))

global 快速窗口热键编辑用户模块目录 := "./User/"
global 快速窗口热键编辑用户模块目录 := CapsLockX_配置目录 "/"
global 快速窗口热键编辑初始内容 := "
(
; ========== CapsLockX ==========
Expand All @@ -39,8 +39,6 @@ Return

; 这里可以写上你的自定义全局热键
)"
Menu, Tray, Add ; Creates a separator line.
Menu, Tray, Add, 配置文件编辑, 配置文件编辑 ; Creates a new menu item.
Return

Expand Down

0 comments on commit 91ee1df

Please sign in to comment.