Skip to content

Commit

Permalink
fix: 按住其它键的时候 不触发 CapsLockX 避免影响打字
Browse files Browse the repository at this point in the history
  • Loading branch information
snomiao committed Mar 31, 2021
1 parent 6669bd0 commit 3daab90
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 61 deletions.
1 change: 1 addition & 0 deletions CapsLockX.user.ignores
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ ahk_exe virtualbox.exe
# 各种游戏
ahk_exe yuanshen.exe
ahk_class UnityWndClass ahk_exe YuanShen.exe
ahk_exe YuanShen.exe

# 高级编辑器
gvim
50 changes: 26 additions & 24 deletions Core/CapslockX-Core.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ SetTitleMatchMode RegEx
#MaxHotkeysPerInterval 1000 ; 时间内按键最大次数(通常是一直按着键触发的。。)
#InstallMouseHook ; 安装鼠标钩子

global lastCapsLockKey := ""
global CapsLockX_上次触发键 := ""
; 载入设定
global CapsLockXConfigPath := "./CapsLockX-Config.ini"
#Include Core/CapsLockX-Config.ahk
Expand Down Expand Up @@ -83,15 +83,15 @@ if(T_XKeyAs && T_XKeyAsRAlt)
Hotkey, If

if (T_XKeyAs && T_XKeyAsCapsLock)
Hotkey $*CapsLock Up, CapsLockX_Up
Hotkey ~$*CapsLock Up, CapsLockX_Up
if (T_XKeyAs && T_XKeyAsSpace)
Hotkey $Space Up, CapsLockX_Up
Hotkey ~$Space Up, CapsLockX_Up
if (T_XKeyAs && T_XKeyAsInsert)
Hotkey $Insert Up, CapsLockX_Up
Hotkey ~$Insert Up, CapsLockX_Up
if (T_XKeyAs && T_XKeyAsScrollLock)
Hotkey $ScrollLock Up, CapsLockX_Up
Hotkey ~$ScrollLock Up, CapsLockX_Up
if (T_XKeyAs && T_XKeyAsRAlt)
Hotkey $RAlt Up, CapsLockX_Up
Hotkey ~$RAlt Up, CapsLockX_Up

#Include Core\CapsLockX-ModulesRunner.ahk
CapsLockX_Loaded()
Expand Down Expand Up @@ -169,13 +169,14 @@ CapsLockX_Reload(){
}
CapsLockX_Dn(){
; 按住其它键的时候 不触发 CapsLockX 避免影响打字
lastCapsLockKey := RegExReplace(A_ThisHotkey, "[\$\*\!\^\+\#\s]")
CapsLockX_上次触发键 := 触发键 := RegExReplace(A_ThisHotkey, "[\$\*\!\^\+\#\s]")
StringLeft, first5char, A_PriorKey, 5
if(first5char != "Wheel" && GetKeyState(A_在PriorKey, "P") && lastCapsLockKey != A_PriorKey && lastCapsLockKey){
SendEvent {%lastCapsLockKey% Down}
KeyWait %lastCapsLockKey%
SendEvent {%lastCapsLockKey% Up}
lastCapsLockKey := ""
if(first5char != "Wheel" && GetKeyState(A_PriorKey, "P") && 触发键 != A_PriorKey && 触发键){
CapsLockX_上次触发键 := ""
; ToolTip, % first5char "_" 触发键
SendEvent {%触发键% Down}
KeyWait %触发键%
SendEvent {%触发键% Up}
Return
}
; 记录 CapsLockX 按住的时间
Expand All @@ -186,9 +187,9 @@ CapsLockX_Dn(){
CapsLockXMode |= CM_FN

; (20200809)长按显示帮助(空格除外)
if (A_PriorKey == lastCapsLockKey && A_PriorKey != "Space") {
if (A_PriorKey == CapsLockX_上次触发键 && A_PriorKey != "Space") {
if ( A_TickCount - CapsLockPressTimestamp > 1000) {
CapsLockX_ShowHelp(CapsLockX_HelpInfo, 1, lastCapsLockKey)
CapsLockX_ShowHelp(CapsLockX_HelpInfo, 1, CapsLockX_上次触发键)
}
}
UpdateLight()
Expand All @@ -197,19 +198,20 @@ CapsLockX_Up(){
CapsLockPressTimestamp := 0
; 退出 Fn 模式
CapsLockXMode &= ~CM_FN

if (lastCapsLockKey == "CapsLock") {
if (GetKeyState("CapsLock", "T")) {
SetCapsLockState, Off
} else {
SetCapsLockState, On
if(A_PriorKey == CapsLockX_上次触发键){
if (CapsLockX_上次触发键 == "CapsLock") {
if (GetKeyState("CapsLock", "T")) {
SetCapsLockState, Off
} else {
SetCapsLockState, On
}
}
if(CapsLockX_上次触发键 == "Space"){
SendEvent {Space}
}
}
if(lastCapsLockKey == "Space" && A_PriorKey == "Space"){
SendEvent {Space}
}
UpdateLight()
lastCapsLockKey := ""
CapsLockX_上次触发键 := ""
}

; 接下来是流程控制
Expand Down
24 changes: 11 additions & 13 deletions Modules/01.1-插件-鼠标模拟.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -328,19 +328,9 @@ ScrollTicker(){
; 计算速度
lastsvx := 轮速横
lastsvy := 轮速纵
; _ := "_", 换行 := "`n"
; tooltip % tdr _ tdf 换行 say _ sax 换行 轮速纵 _ 轮速横 换行 lastsvy _ lastsvx

轮速纵 := Friction(轮速纵 + say, say), 轮速横 := Friction(轮速横 + sax, sax)

; tooltip %轮刻上%`n%轮刻下%`n%轮刻左%`n%轮刻右%`n%轮速横%`n%轮速纵%`n%轮差横%`n%轮差纵%

if ( 轮速纵 == 0 && 轮速横 == 0){
; 完成滚动,退出定时
; tooltip Done
轮刻上 := 0, 轮刻下 := 0, 轮刻左 := 0, 轮刻右 := 0, 轮速横 := 0, 轮速纵 := 0, 轮差横 := 0, 轮差纵 := 0
SetTimer, ScrollTicker, Off
轮动中 := 0
ScrollTickerStop()
Return
}

Expand All @@ -365,9 +355,17 @@ ScrollTicker(){
#If CapsLockXMode

; 鼠标按键处理
$*q:: RButton
$*e:: LButton

$*e::
SendEvent {LButton Down}
KeyWait, e
Return
$*e Up:: SendEvent {LButton Up}
$*q::
SendEvent {RButton Down}
KeyWait, q
Return
$*q Up:: SendEvent {RButton Up}
; 鼠标运动处理
$*a:: 鼠刻左 := (鼠刻左 ? 鼠刻左 : TM_QPC()), MouseTickerStart()
$*d:: 鼠刻右 := (鼠刻右 ? 鼠刻右 : TM_QPC()), MouseTickerStart()
Expand Down
3 changes: 2 additions & 1 deletion Modules/应用-Anki增强.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ AnkiUnlock(x){
)")
#If !CapsLockXMode && (WinActive("Anki -.* ahk_class QWidget ahk_exe anki.exe") or WinActive("Anki - .*|.* - Anki ahk_class Qt5QWindowIcon ahk_exe anki.exe"))
$x:: SendEvent s ; study

$x:: SendEvent s ; study
$q:: SendEvent d ; quit
$c:: SendEvent a ; create

Expand Down
48 changes: 25 additions & 23 deletions Modules/应用-Edge增强.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,30 @@
SetTitleMatchMode RegEx

Return
#IfWinActive .*- Microsoft Edge ahk_class ApplicationFrameWindow ahk_exe ApplicationFrameHost.exe
; 对于 UWP 应用,SendEvent 比 SendInput更好用

; 拿笔(不稳定……)//暂不支持全屏模式下切换笔
$!w:: SendEvent {Esc}{Esc}{F4}{Sleep 5}{F4}{Sleep 5}{Tab 3}{Space}
$!q:: SendEvent {F6}{Sleep 10}{Left}{Enter}{F6}
$!e:: SendEvent {F6}{Sleep 10}{Right}{Enter}{F6}
#If WinActive(".*- Microsoft Edge ahk_class ApplicationFrameWindow ahk_exe ApplicationFrameHost.exe")

; 章节跳转
!,::
SendEvent !t
Sleep, 500
SendEvent {Up}{Enter}{Esc}
Return
!.::
SendEvent !t
Sleep, 500
SendEvent {Down}{Enter}{Esc}
Return
; 显示目录
!/:: SendEvent !t
; 切换自适应页面大小
!;:: SendEvent ^+a{Esc}
; 切换双页布局
!':: SendEvent {F8}{Esc}
; 对于 UWP 应用,SendEvent 比 SendInput更好用

; 拿笔(不稳定……)//暂不支持全屏模式下切换笔
$!w:: SendEvent {Esc}{Esc}{F4}{Sleep 5}{F4}{Sleep 5}{Tab 3}{Space}
$!q:: SendEvent {F6}{Sleep 10}{Left}{Enter}{F6}
$!e:: SendEvent {F6}{Sleep 10}{Right}{Enter}{F6}

; 章节跳转
!,::
SendEvent !t
Sleep, 500
SendEvent {Up}{Enter}{Esc}
Return
!.::
SendEvent !t
Sleep, 500
SendEvent {Down}{Enter}{Esc}
Return
; 显示目录
!/:: SendEvent !t
; 切换自适应页面大小
!;:: SendEvent ^+a{Esc}
; 切换双页布局
!':: SendEvent {F8}{Esc}

0 comments on commit 3daab90

Please sign in to comment.