;============================
#SingleInstance Force
#Persistent
#NoEnv
#NoTrayIcon
;============================
Setkeydelay,-1
SetControlDelay,-1
Detecthiddenwindows,on
Coordmode,Menu,Window
;============================
; Initialization Variables {{{1
; String {{{2
Version := "0.52"
KeyTemp :=
Repeat :=
VimAction :=
; Int {{{2
KeyCount := 0
; Bool {{{2
Global Vim := true
Global InsertMode := False
Global VimRN
Global VimRN_Count
Global VimRN_ID
Global VimRN_History := Object()
Global VimRN_Temp
Global VimRN_Vis := False
Global VimRN_IsReplace := False
Global VimRN_IsMultiReplace := False
Global VimRN_IsFind := False
; Arrays {{{2
GroupKey_Arr := object()
MapKey_Arr := object()
ExecFile_Arr := object()
SendText_Arr := object()
Command_Arr := object()
CmdHistory_Arr := object()
Mark_Arr := object()
HideControl_Arr := object()
;VimAction_Arr := object()
ActionInfo_Arr := object()
HelpInfo_Arr := object()
GroupInfo_Arr := object()
ReName_Arr := Object()
STabs := Object()
HideControl_Arr["Toggle"] := False
; FilePath {{{2
TcExe := FindPath("exe")
TcIni := FindPath("ini")
Splitpath,TcExe,,TcDir
If RegExMatch(TcExe,"i)totalcmd64.exe")
{
Global TCListBox := "LCLListBox"
Global TCEdit := "Edit2"
GLobal TCPanel1 := "Window1"
Global TCPanel2 := "Window11"
}
Else
{
Global TCListBox := "TMyListBox"
Global TCEdit := "Edit1"
Global TCPanel1 := "TPanel1"
Global TCPanel2 := "TMyPanel8"
}
RegRead,ViATcIni,HKEY_CURRENT_USER,SoftwareVIATC,ViATcINI
If Not FileExist(ViATcINI)
ViatcIni := TcDir . "viatc.ini"
; ConfigVar {{{2
GoSub,
; Menu Tray {{{1
;If A_IsCompiled
Menu,VimRN_Set,Add,默认Vim模式`tAlt+V,VimRN_SelMode
Menu,VimRN_Set,Add,默认选择后缀`tAlt+E,VimRN_SelExt
;Menu,VimRN_MENU,Add,常用(&F),VimRN_Help
Menu,VimRN_MENU,Add,选项(&G),:VimRN_Set
Menu,VimRN_MENU,Add,帮助(&H),VimRN_Help
Menu,Tray,NoStandard
Menu,Tray,Add,运行TC(&T),
Menu,Tray,Add,禁用(&E),
Menu,Tray,Add,重启(&R),
Menu,Tray,Add
Menu,Tray,Add,选项(&O),
Menu,Tray,Add,帮助(&H),
Menu,Tray,Add
Menu,Tray,Add,退出(&X),
Menu,Tray,Tip,Vim Mode At TotalCommander
Menu,Tray,Default,运行TC(&T)
If TrayIcon
Menu,Tray,Icon
SetHelpInfo()
;SetGroupInfo()
SetVimAction()
SetActionInfo()
SetDefaultKey()
ReadKeyFromIni()
EmptyMem()
return
; Labels {{{1
:
Vim := GetConfig("Configuration","Vim")
Toggle := TransHotkey(GetConfig("Configuration","Toggle"),"ALL")
GlobalTogg := GetConfig("Configuration","GlobalTogg")
If GlobalTogg
{
;HotKey,Ifwinactive
Hotkey,%Toggle%,,On,UseErrorLevel
Toggle := GetConfig("Configuration","Toggle")
}
Else
{
HotKey,Ifwinactive,AHK_CLASS TTOTAL_CMD
Hotkey,%Toggle%,,On,UseErrorLevel
Toggle := GetConfig("Configuration","Toggle")
}
Susp := TransHotkey(GetConfig("Configuration","Suspend"),"ALL")
GlobalSusp := GetConfig("Configuration","GlobalSusp")
If GlobalSusp
{
HotKey,Ifwinactive
Hotkey,%Susp%,,On,UseErrorLevel
Susp := GetConfig("Configuration","Suspend")
}
Else
{
HotKey,Ifwinactive,AHK_CLASS TTOTAL_CMD
Hotkey,%Susp%,,On,UseErrorLevel
Susp := GetConfig("Configuration","Suspend")
}
TrayIcon := GetConfig("Configuration","TrayIcon")
Service := GetConfig("Configuration","Service")
If Not Service
{
IfWinExist,AHK_CLASS TTOTAL_CMD
Winactivate,AHK_CLASS TTOTAL_CMD
Else
{
Run,%TcExe%,,UseErrorLevel
If ErrorLevel = ERROR
TcExe := FindPath("exe")
}
WinWait,AHK_CLASS TTOTAL_CMD
Settimer,,100
}
StartUp := GetConfig("Configuration","Startup")
If StartUp
{
RegRead,IsStartup,HKEY_CURRENT_USER,SOFTWAREMicrosoftWindowsCurrentVersionRun,ViATc
If Not RegExMatch(IsStartup,A_ScriptFullPath)
{
RegWrite,REG_SZ,HKEY_CURRENT_USEr,SOFTWAREMicrosoftWindowsCurrentVersionRun,ViATc,%A_ScriptFullPath%
If ErrorLevel
Msgbox,16,ViATc,设置开机启动失败,3 ;Lang
}
}
Else
Regdelete,HKEY_CURRENT_USER,SOFTWAREMicrosoftWindowsCurrentVersionRun,ViATc
GroupWarn := GetConfig("Configuration","GroupWarn")
GlobalSusp := GetConfig("Configuration","GlobalSusp")
TransParent := GetConfig("Configuration","TransParent")
TranspHelp := GetConfig("Configuration","TranspHelp")
MaxCount := GetConfig("Configuration","MaxCount")
TranspVar := GetConfig("Configuration","TranspVar")
DefaultSE := GetConfig("SearchEngine","Default")
SearchEng := GetConfig("SearchEngine",DefaultSE)
LnkToDesktop := GetConfig("Other","LnkToDesktop")
Return
; {{{2
; 测试32768类是否存在
:
Get32768()
RETURN
Get32768()
{
Global InsertMode
WinGet,MenuID,ID,AHK_CLASS #32768
IF MenuID
InsertMode := True
ELSE
{
InsertMode := False
SetTimer,,OFF
}
}
; {{{2
:
GroupKey(A_ThisHotkey)
Return
; {{{2
:
IfWinNotExist,AHK_CLASS TTOTAL_CMD
ExitApp
Return
; {{{2
:
SetTimer,, Off
ToolTip
return
; {{{2
:
Ifwinnotactive,AHK_CLASS TTOTAL_CMD
{
SetTimer,, Off
ToolTip
}
If A_ThisHotkey = Esc
{
SetTimer,, Off
Tooltip
}
return
; {{{2
:
If SendPos(0)
ExecFile()
return
; {{{2
:
If SendPos(0)
SendText()
return
; {{{2
:
SendPos(-1) ;无效果,并且不记录repaet
return
; {{{2
; 用于测试用的,查看变量
:
Msgbox % "Text=" SendText_Arr["Hotkeys"] "`n" "Exec=" ExecFile_Arr["HotKeys"] "`n" "MapKeys=" MapKey_Arr["HotKeys"] "`nGroupkey=" GroupKey_Arr["Hotkeys"]
Return
; {{{2
:
Msg := GroupInfo_arr[A_ThisHotkey]
StringSplit,Len,Msg,`n
ControlGetPos,xn,yn,,hn,%TCEdit%,AHK_CLASS TTOTAL_CMD
yn := yn - hn - ( Len0 - 1 ) * 17
Tooltip,%Msg%,%xn%,%yn% ;Lang
SetTimer,,50
settimer,,off
return
; Actions {{{1
; >>回复到正常状态{{{2
:
Send,{Esc}
Vim := True
KeyCount := 0
KeyTemp :=
InsertMode := False
Tooltip
ControlSetText,%TCEdit%,,AHK_CLASS TTOTAL_CMD
Settimer,,off
EmptyMem()
WinClose,ViATc_TabList
Gui,Destroy
Return
; >>打开/最小化/激活TC {{{2
:
;If SendPos(0)
;{
Ifwinexist,AHK_CLASS TTOTAL_CMD
{
WinGet,AC,MinMax,AHK_CLASS TTOTAL_CMD
If Ac = -1
Winactivate,AHK_ClASS TTOTAL_CMD
Else
Ifwinnotactive,AHK_CLASS TTOTAL_CMD
Winactivate,AHK_CLASS TTOTAL_CMD
Else
Winminimize,AHK_CLASS TTOTAL_CMD
}
Else
{
Run,%TcExe%,,UseErrorLevel
If ErrorLevel = ERROR
TcExe := FindPath("exe")
Loop,6
{
WinWait,AHK_CLASS TTOTAL_CMD,,0
If ErrorLevel
Run,%TcExe%,,UseErrorLevel
Else
Break
}
Winactivate,AHK_CLASS TTOTAL_CMD
If TransParent
WinSet,Transparent,220,ahk_class TTOTAL_CMD
}
EmptyMem()
;}
Return
; >>启用/禁用VIM模式 {{{2
:
Suspend
If Not IsSuspended
{
Menu,Tray,Rename,禁用(&E),启用(&E)
TrayTip,,禁用VIM,10,17
If A_IsCompiled
Menu,Tray,icon,%A_ScriptFullPath%,5,1
Else
Menu,Tray,icon,%A_AHKPath%,5,1
Settimer,,100
IsSuspended := 1
}
Else
{
Menu,Tray,Rename,启用(&E),禁用(&E)
TrayTip,,启用VIM,10,17
If A_IsCompiled
Menu,Tray,icon,%A_ScriptFullPath%,1,1
Else
Menu,Tray,icon,%A_AHKPath%,1,1
Settimer,,off
IsSuspended := 0
Suspend,off
}
Return
:
IfWinActive AHK_CLASS TTOTAL_CMD
Suspend,on
Else
Suspend,off
Return
; >>重启VIATC {{{2
:
ReloadVIATC()
Return
ReloadVIATC()
{
ToggleMenu(1)
If HideControl_arr["Toggle"]
HideControl()
Reload
}
; >>回车 {{{2
:
Enter()
Return
; >>快捷搜索(禁用VIM){{{2
:
If SendPos(0)
Vim := !Vim
Return
; >>配置界面 {{{2
:
If SendPos(0)
Setting()
Return
; >>帮助界面 {{{2
:
If SendPos(0)
Help()
Return
; >>重启VIATC{{{2
; 帮助界面
:
If SendPos(0)
ExitApp
Return
; >>数字 {{{2
; >>数字0 {{{3
:
SendNum("0")
Return
; >>数字1 {{{3
:
SendNum("1")
Return
; >>数字2 {{{3
:
SendNum("2")
Return
; >>数字3 {{{3
:
SendNum("3")
Return
; >>数字4 {{{3
:
SendNum("4")
Return
; >>数字5 {{{3
:
SendNum("5")
Return
; >>数字6 {{{3
:
SendNum("6")
Return
; >>数字7 {{{3
:
SendNum("7")
Return
; >>数字8 {{{3
:
SendNum("8")
Return
; >>数字9 {{{3
:
SendNum("9")
Return
; >>下方向 {{{2
:
SendKey("{down}")
Return
; >>上方向 {{{2
:
SendKey("{up}")
Return
; >>左方向 {{{2
:
SendKey("{Left}")
Return
; >>右方向 {{{2
:
SendKey("{Right}")
Return
; >> 强制删除 {{{2
:
SendKey("+{Delete}")
Return
; >>向上选择{{{2
:
SendKey("+{Up}")
Return
; >>向下选择 {{{2
:
SendKey("+{down}")
Return
; >>向下翻页 {{{2
:
SendKey("{PgUp}")
Return
; >>向下翻页 {{{2
:
SendKey("{PgDn}")
Return
; >>转到第一行,相当于HOME{{{2
:
If SendPos(0)
GG()
Return
GG()
{
ControlGetFocus,ctrl,AHK_CLASS TTOTAL_CMD
;ControlGet,text,List,,%ctrl%,AHK_CLASS TTOTAL_CMD
;Stringsplit,T,Text,`n
PostMessage, 0x19E, 0, 1, %CTRL%, AHK_CLASS TTOTAL_CMD
}
; >>转到最后一行,相当于End{{{2
:
If SendPos(0)
G()
Return
G()
{
ControlGetFocus,ctrl,AHK_CLASS TTOTAL_CMD
ControlGet,text,List,,%ctrl%,AHK_CLASS TTOTAL_CMD
Stringsplit,T,Text,`n
Last := T0 - 1
PostMessage, 0x19E, %Last% , 1 , %CTRL%, AHK_CLASS TTOTAL_CMD
}
; >>标记功能{{{2
:
If SendPos(4003)
{
ControlGet,EditId,Hwnd,,AHK_CLASS TTOTAL_CMD
ControlSetText,%TCEdit%,m,AHK_CLASS TTOTAL_CMD
Postmessage,0xB1,2,2,%TCEdit%,AHK_CLASS TTOTAL_CMD
SetTimer,,100
}
Return
:
MarkTimer()
Return
MarkTimer()
{
Global Mark_Arr,VIATCINI
ControlGetFocus,ThisControl,AHK_CLASS TTOTAL_CMD
ControlGetText,OutVar,%TCEdit%,AHK_CLASS TTOTAL_CMD
Match_TCEdit := "i)^" . TCEdit . "$"
If Not RegExMatch(ThisControl,Match_TCEdit) OR Not RegExMatch(Outvar,"i)^m.?")
{
Settimer,,Off
Return
}
If RegExMatch(OutVar,"i)^m.$")
{
SetTimer,,off
ControlSetText,%TCEdit%,,AHK_CLASS TTOTAL_CMD
ControlSend,%TCEdit%,{Esc},AHK_CLASS TTOTAL_CMD
ClipSaved := ClipboardAll
Clipboard :=
Postmessage 1075, 2029, 0, , ahk_class TTOTAL_CMD
ClipWait
Path := Clipboard
Clipboard := ClipSaved
If StrLen(Path) > 80
{
SplitPath,Path,,PathDir
Path1 := SubStr(Path,1,15)
Path2 := SubStr(Path,RegExMatch(Path,"\[^\]*$")-Strlen(Path))
Path := Path1 . "..." . SubStr(Path2,1,65) "..."
}
M := SubStr(OutVar,2,1)
mPath := "&" . m . ">>" . Path
If RegExMatch(Mark_Arr["ms"],m)
{
DelM := Mark_Arr[m]
Menu,MarkMenu,Delete,%DelM%
Menu,MarkMenu,Add,%mPath%,
Mark_Arr["ms"] := Mark_Arr["ms"] . m
Mark_Arr[m] := mPath
}
Else
{
Menu,MarkMenu,Add,%mPath%,
Mark_Arr["ms"] := Mark_Arr["ms"] . m
Mark_Arr[m] := mPath
}
/*
Inidelete,%VIATCINI%,Mark,%M%
if RegExMatch(OutVar,"^M.$")
{
Mark_Arr["sms"] .= M ; saved marks
Iniwrite,%Path%,%VIATCINI%,Mark,%M%
}
*/
}
}
:
AddMark()
Return
AddMark()
{
ThisMenuItem := SubStr(A_ThisMenuItem,5,StrLen(A_ThisMenuItem))
If RegExMatch(ThisMenuItem,"i)\\桌面$")
{
Postmessage 1075, 2121, 0, , ahk_class TTOTAL_CMD
Return
}
If RegExMatch(ThisMenuItem,"i)\\计算机$")
{
Postmessage 1075, 2122, 0, , ahk_class TTOTAL_CMD
Return
}
If RegExMatch(ThisMenuItem,"i)\\所有控制面板项$")
{
Postmessage 1075, 2123, 0, , ahk_class TTOTAL_CMD
Return
}
If RegExMatch(ThisMenuItem,"i)\\Fonts$")
{
Postmessage 1075, 2124, 0, , ahk_class TTOTAL_CMD
Return
}
If RegExMatch(ThisMenuItem,"i)\\网络$")
{
Postmessage 1075, 2125, 0, , ahk_class TTOTAL_CMD
Return
}
If RegExMatch(ThisMenuItem,"i)\\打印机$")
{
Postmessage 1075, 2126, 0, , ahk_class TTOTAL_CMD
Return
}
If RegExMatch(ThisMenuItem,"i)\\回收站$")
{
Postmessage 1075, 2127, 0, , ahk_class TTOTAL_CMD
Return
}
ControlSetText, %TCEdit%, cd %ThisMenuItem%, ahk_class TTOTAL_CMD
ControlSend, %TCEdit%, {Enter}, ahk_class TTOTAL_CMD
Return
}
; >>显示标记 {{{2
:
If SendPos(0)
ListMark()
Return
ListMark()
{
Global Mark_Arr,VIATCINI
If Not Mark_Arr["ms"]
Return
ControlGetFocus,TLB,ahk_class TTOTAL_CMD
ControlGetPos,xn,yn,,,%TLB%,ahk_class TTOTAL_CMD
Menu,MarkMenu,Show,%xn%,%yn%
}
; >>在文件夹历史加上前缀,方便用a-z导航 {{{2
:
If SendPos(572)
azhistory()
Return
azhistory()
{
;Postmessage,1075,%Num%,0,,ahk_class TTOTAL_CMD
Sleep, 100
if WinExist("ahk_class #32768")
{
SendMessage,0x01E1 ;Get Menu Hwnd
hmenu := ErrorLevel
if hmenu!=0
{
If Not RegExMatch(GetMenuString(Hmenu,1),".*[\|/]$")
Return
Menu,sh,add
Menu,sh,deleteall
a :=
itemCount := DllCall("GetMenuItemCount", "Uint", hMenu, "Uint")
Loop %itemCount%
{
a := chr(A_Index+64) . ">>" . GetMenuString(Hmenu,A_Index-1)
Menu,SH,add,%a%,azSelect
}
Send {Esc}
ControlGetFocus,TLB,ahk_class TTOTAL_CMD
ControlGetPos,xn,yn,,,%TLB%,ahk_class TTOTAL_CMD
Menu,SH,show,%xn%,%yn%
Return
}
}
}
GetMenuString(hMenu, nPos)
{
VarSetCapacity(lpString, 256)
length := DllCall("GetMenuString"
, "UInt", hMenu
, "UInt", nPos
, "Str", lpString
, "Int", 255
, "UInt", 0x0400)
return lpString
}
azSelect:
azSelect()
Return
azSelect()
{
nPos := A_ThisMenuItem
nPos := Asc(Substr(nPos,1,1)) - 64
Winactivate,ahk_class TTOTAL_CMD
Postmessage,1075,572,0,,ahk_class TTOTAL_CMD
Sleep,100
if WinExist("ahk_class #32768")
{
Loop %nPos%
SendInput {Down}
Send {enter}
}
}
/*
; >>查看命令历史记录
:
If SendPos(0)
ListCmdHistory()
Return
ListCmdHistory()
{
Global TcIni
Menu,cmdMenu,Add
Menu,cmdMenu,DeleteAll
VarSetCapacity(var,256)
;Menu,cmdMenu,Add,命令行历史,en
;Index := CmdHistory[0]
Loop ;,%Index%
{
Index := A_Index - 1
IniRead,CMD,%TcIni%,Command line history,%Index%
If CMD = ERROR
Break
var := chr(A_Index+64) . ">>" . CMD ;CmdHistory[A_Index]
Menu,CmdMenu,add,%var%,GetCmd
}
ControlGetPos,xn,yn,,hn,%TCEdit%,AHK_CLASS TTOTAL_CMD
yn := yn - 30 - ( (Index - 1) * 22 )
Menu,CmdMenu,Show,%xn%,%yn%
}
GetCMD:
GetCMD()
Return
GetCMD()
{
var := Substr(A_ThisMenuItem,4,StrLen(A_ThisMenuItem))
ControlSetText,%TCEdit%,%var%,AHK_CLASS TTOTAL_CMD
ControlFocus,%TCEdit%,AHK_CLASS TTOTAL_CMD
ControlSend,%TCEdit%,{End},AHK_CLASS TTOTAL_CMD
}
*/
; >>使用网络搜索引擎搜索当前文件 {{{2
:
If SendPos(0)
Internetsearch()
Return
Internetsearch()
{
Global SearchEng
If CheckMode()
{
ClipSaved := ClipboardAll ;保存原来剪切板里的内容UserInput
Clipboard = ;初始化剪切板
PostMessage 1075, 2017, 0, , ahk_class TTOTAL_CMD
ClipWait
rFileName := clipboard
clipboard := ClipSaved
StringRight,lastchar,rFileName,1
If(lastchar = "" )
Stringleft,rFileName,rFileName,Strlen(rFileName)-1
;rFileName := rFileName
rFileName := RegExReplace(SearchEng,"{%1}",rFileName)
Run %rFileName%
}
Return
}
; >>切换到桌面{{{2
:
If SendPos(0)
{
ControlSetText,%TCEdit%,CD %A_Desktop%,AHK_CLASS TTOTAL_CMD
ControlSend,%TCEdit%,{Enter},AHK_CLASS TTOTAL_CMD
}
Return
; >> 增强的 {{{2
:
If CheckMode()
IsRootDir()
SendPos(2002,True)
Return
IsRootDir()
{
ClipSaved := ClipboardAll
clipboard :=
PostMessage,1075,2029,0,,AHK_CLASS TTOTAL_CMD
ClipWait,1
Path := Clipboard
Clipboard := ClipSaved
If RegExMatch(Path,"^.:\$")
{
PostMessage,1075,2122,0,,AHK_CLASS TTOTAL_CMD
Path := "i)" . RegExReplace(Path,"\","")
ControlGetFocus,focus_control,AHK_CLASS TTOTAL_CMD
ControlGet,outvar,list,,%focus_control%,AHK_CLASS TTOTAL_CMD
Loop,Parse,Outvar,`n
{
If Not A_LoopField
Break
If RegExMatch(A_LoopField,Path)
{
Focus := A_Index - 1
Break
}
}
PostMessage, 0x19E, %Focus%, 1, %focus_control%, AHK_CLASS TTOTAL_CMD
}
}
; >>重复 {{{2
:
If SendPos(-1)
SingleRepeat()
Return
; >>TC最简 {{{2
:
If SendPos(0)
{
ToggleMenu()
HideControl()
GoSub,
;GoSub,
;GoSub,
Send,{Esc}
}
Return
; >>TC全屏 {{{2
:
If SendPos(0)
{
ToggleMenu()
HideControl()
GoSub,
;GoSub,
;GoSub,
If HideControl_arr["Max"]
{
PostMessage 1075, 2016, 0, , ahk_class TTOTAL_CMD
HideControl_arr["Max"] := 0
Return
}
WinGet,AC,MinMax,AHK_CLASS TTOTAL_CMD
If AC = 1
{
PostMessage 1075, 2016, 0, , ahk_class TTOTAL_CMD
PostMessage 1075, 2015, 0, , ahk_class TTOTAL_CMD
HideControl_arr["Max"] := 0
}
If AC = 0
{
PostMessage 1075, 2015, 0, , ahk_class TTOTAL_CMD
HideControl_arr["Max"] := 1
}
}
Return
; >>文件模板 {{{2
:
If SendPos(0)
CreateNewFile()
Return
; >>直接编辑配置文件 {{{2
:
If SendPos(0)
Editviatcini()
Return
; >>切换到最后一个标签{{{2
:
if SendPos(0)
{
PostMessage 1075, 5001, 0, , ahk_class TTOTAL_CMD
PostMessage 1075, 3006, 0, , ahk_class TTOTAL_CMD
}
Return
; >>删除左侧文件夹历史 {{{2
:
If SendPos(0)
DeleteHistory(1)
Return
; >>删除右侧文件夹历史 {{{2
:
If SendPos(0)
DeleteHistory(0)
Return
DeleteHistory(A)
{
Global TCEXE,TCINI
If A
{
H := "LeftHistory"
DelMsg := "删除左侧文件夹历史记录?" ;Lang
}
Else
{
H := "RightHistory"
DelMsg := "删除右侧文件夹历史记录?" ;Lang
}
Msgbox,4,ViATC,%DelMsg%
Ifmsgbox YES
{
Winkill,AHK_CLASS TTOTAL_CMD
n := 0
Loop
{
IniRead,TempField,%TCINI%,%H%,%n%
If TempField = ERROR
Break
IniDelete,%TCINI%,%H%,%n%
n++
}
Run,%TCEXE%,,UseErrorLevel
If ErrorLevel = ERROR
TCEXE := findpath(1)
WinWait,AHK_CLASS TTOTAL_CMD,3
Winactivate,AHK_CLASS TTOTAL_CMD
}
Else
Winactivate,AHK_CLASS TTOTAL_CMD
}
; >>删除命令行历史 {{{2
:
If SendPos(0)
DeleteCmd()
Return
DeleteCMD()
{
Global TCEXE,TCINI,CmdHistory
CmdHistory := Object()
Msgbox,4,ViATc,删除命令行历史? ;Lang
Ifmsgbox YES
{
Winkill ahk_class TTOTAL_CMD
n := 0
TempField :=
Loop
{
IniRead,TempField,%TCINI%,Command line history,%n%
If TempField = ERROR
Break
IniDelete,%TCINI%,Command line history,%n%
n++
}
Run,%TCEXE%,,UseErrorLevel
If ErrorLevel = ERROR
TCEXE := findpath(1)
WinWait,AHK_CLASS TTOTAL_CMD,3
Winactivate,AHK_CLASS TTOTAL_CMD
}
Else
Winactivate ahk_class TTOTAL_CMD
}
; {{{2
:
If SendPos(0)
ListMapKey()
Return
ListMapKey()
{
Global MapKey_Arr,ActionInfo_Arr,ExecFile_Arr,SendText_Arr
Map := MapKey_Arr["Hotkeys"]
Stringsplit,ListMap,Map,%A_Space%
Loop,% ListMap0
{
If ListMap%A_Index%
{
Action := MapKey_Arr[ListMap%A_Index%]
If Action =
{
EX := SubStr(ListMap%A_Index%,1,1) . TransHotkey(SubStr(ListMap%A_Index%,2))
Action := "(" . ExecFile_Arr[EX] . ")"
}
If Action =
{
TX := SubStr(ListMap%A_Index%,1,1) . TransHotkey(SubStr(ListMap%A_Index%,2))
Action := "{" . SendText_Arr[TX] . "}"
}
LM .= SubStr(ListMap%A_Index%,1,1) . " " . SubStr(ListMap%A_Index%,2) . " " . Action . "`n"
}
}
ControlGetPos,xn,yn,,hn,%TCEdit%,AHK_CLASS TTOTAL_CMD
yn := yn - hn - ( ListMap0 * 8 ) - 2
Tooltip,%LM%,%xn%,%yn%
Settimer,,100
}
; {{{2
:
If SendPos(4003)
{
ControlSetText,%TCEdit%,:,AHK_CLASS TTOTAL_CMD
Send,{end}
}
Return
; >>最大化左面板 {{{2
:
If SendPos(0)
WinMaxLeft()
Return
WinMaxLeft()
{
ControlGetPos,x,y,w,h,%TCPanel2%,ahk_class TTOTAL_CMD
ControlGetPos,tm1x,tm1y,tm1W,tm1H,%TCPanel1%,ahk_class TTOTAL_CMD
If (tm1w >>最大化右面板 {{{2
:
If SendPos(0)
{
ControlMove,%TCPanel1%,0,0,,,ahk_class TTOTAL_CMD
ControlClick,%TCPanel1%,ahk_class TTOTAL_CMD
WinActivate ahk_class TTOTAL_CMD
}
Return
; >>窗口最前 {{{2
:
If SendPos(0)
AlwayOnTop()
Return
AlwayOnTop()
{
WinGet,ExStyle,ExStyle,ahk_class TTOTAL_CMD
If (ExStyle & 0x8)
WinSet,AlwaysOnTop,off,ahk_class TTOTAL_CMD
else
WinSet,AlwaysOnTop,on,ahk_class TTOTAL_CMD
}
; >>TC透明 {{{2
:
If SendPos(0)
TransParent()
Return
TransParent()
{
Global VIATCINI,Transparent,TranspVar
IniRead,Transparent,%VIATCINI%,Configuration,Transparent
If Transparent
{
WinSet,Transparent,255,ahk_class TTOTAL_CMD
IniWrite,0,%VIATCINI%,Configuration,Transparent
Transparent := 0
}
Else
{
WinSet,Transparent,%TranspVar%,ahk_class TTOTAL_CMD
IniWrite,1,%VIATCINI%,Configuration,Transparent
Transparent := 1
}
}
; >>重启TC{{{2
:
If SendPos(0)
{
ToggleMenu(1)
If HideControl_arr["Toggle"]
HideControl()
WinKill,AHK_CLASS TTOTAL_CMD
Loop,100
{
IfWinNotExist,AHK_CLASS TTOTAL_CMD
Break
}
GoSub,
}
Return
; 退出TC{{{2
:
WinClose,AHK_CLASS TTOTAL_CMD
return
; >>移动到中间行 {{{2
:
If SendPos(0)
Half()
Return
Half()
{
winget,tid,id,ahk_class TTOTAL_CMD
controlgetfocus,ctrl,ahk_id %tid%
controlget,cid,hwnd,,%ctrl%,ahk_id %tid%
controlgetpos,x1,y1,w1,h1,THeaderClick2,ahk_id %tid%
controlgetpos,x,y,w,h,%ctrl%,ahk_id %tid%
SendMessage,0x01A1,1,0,,ahk_id %cid%
Hight := ErrorLevel
SendMessage,0x018E,0,0,,ahk_id %cid%
Top := ErrorLevel
HalfLine := Ceil( ((h-h1)/Hight)/2 ) + Top
PostMessage, 0x19E, %HalfLine%, 1, , AHK_id %cid%
}
; {{{2
:
If SendPos(0)
CopyNameOnly()
Return
CopyNameOnly()
{
clipboard :=
GoSub,
ClipWait
If Not RegExMatch(clipboard,"^..*")
clipboard := RegExReplace(RegExReplace(clipboard,"\$"),".[^.]*$")
}
; >>a-z导航的菜单 {{{2
:
If SendPos(0)
azTab()
Return
azTab()
{
Global TabsBreak,TcExe
If RegExMatch(TcExe,"i)totalcmd64.exe")
Return
TCid := WinExist("AHK_CLASS TTOTAL_CMD")
WinClose,ViATc_TabList
ControlGetPos,xe,ye,we,he,Edit1,AHK_CLASS TTOTAL_CMD
Gui,New
Gui,+HwndTabsHwnd -Caption +Owner%TCid%
Gui,Add,ListBox,x2 y2 w%we% gSetTab
Index := 1
for i,tab in ControlGetTabs("TMyTabControl1","AHK_CLASS TTOTAL_CMD")
{
vTab := Chr(Index+64) . ":" . Tab
STabs[vTab] := "L" . A_index
If A_Index = 1
{
ControlGet,TMyT2,hwnd,,TMyTabControl2,AHK_CLASS TTOTAL_CMD
If TMyT2
GuiControl,,ListBox1,=====左边===================
Else
{
ControlGetPos,x1,y1,,,TPanel1,AHK_CLASS TTOTAL_CMD
ControlGetPos,x2,y2,,,TMyTabControl1,AHK_CLASS TTOTAL_CMD
If ( x2 TabsBreak )
{
Pos := Pos - TabsBreak - 1
PostMessage,0x1330,%Pos%,0,TMyTabControl2,AHK_CLASS TTOTAL_CMD
If Not LeftRight()
PostMessage,1075,4002,0,,AHK_CLASS TTOTAL_CMD
;PostMessage,1075,4002,0,,AHK_CLASS TTOTAL_CMD
}
WinClose,AHK_ID %TabsHwnd%
Return
}
return
; 判断当前焦点在左还是右
LeftRight()
{
ControlGetPos,x1,y1,,,TPanel1,AHK_CLASS TTOTAL_CMD
ControlGetFocus,TLB,AHK_CLASS TTOTAL_CMD
ControlGetPos,x2,y2,,,%TLB%,AHK_CLASS TTOTAL_CMD
If ( x2 >>Vim重命名 {{{2
:
If SendPos(0)
VimRNCreateGui()
Return
; VimRN Gui {{{3
VimRNCreateGui()
{
Static WM_CHAR := 0x102
Global GetName
/*
ClipSaved := ClipboardAll
Clipboard =
PostMessage 1075, 2017, 0, , ahk_class TTOTAL_CMD
ClipWait,1
If ErrorLevel
Return
GetName := clipboard
clipboard := ClipSaved
*/
WinClose,AHK_ID %VimRN_ID%
;Loop,parse,GetName,`n
;{
; If A_Index = 1
; GetName := A_LoopField
; If A_Index = 2
; {
PostMessage 1075, 1007, 0, , ahk_class TTOTAL_CMD
Loop,8
{
ControlGetFocus,ThisCtrl,AHK_CLASS TTOTAL_CMD
If ThisCtrl = TInEdit1
{
ControlGetText,GetName,TInEdit1,AHK_CLASS TTOTAL_CMD
Break
}
Sleep,50
}
If Not GetName
Return
; Break
; }
;}
StringRight,GetDir,GetName,1
If GetDir =
{
StringLeft,GetName,GetName,Strlen(GetName)-1
GetDir := True
}
Else
GetDir := False
WinGet,TCID,ID,AHK_CLASS TTOTAL_CMD
Gui,New
Gui,+HwndVimRN_ID
Gui,+Owner%TCID%
Gui,Menu,VimRN_MENU
Gui,Add,Edit,r6 w300 -WantReturn gVimRN_Edit,%GetName%
Gui,Add,StatusBar
Gui,Add,Button,Default Hidden gVimRN_Enter
Gui,Show,h125,ViATc 重命名
PostMessage,0x00C5,256,,Edit1,AHK_ID %VimRN_ID%
VimRN := GetConfig("VimReName","Mode")
If VimRN
{
Menu,VimRN_Set,Check,默认Vim模式`tAlt+V
Status := " 模式: Vim "
}
Else
Status := " 模式: Normal "
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
If GetConfig("VimReName","SelectExt")
{
SplitPath,GetName,,,Ext
Menu,VimRN_Set,Check,默认Vim模式`tAlt+V
Menu,VimRN_Set,Check,默认选择后缀`tAlt+E
}
If Ext And ( Not GetDir )
{
StartPos := 0
EndPos := StrLen(GetName) - strlen(Ext) - 1
VimRN_SetPos(StartPos,EndPos)
}
VimRN_History["s"] := 0
VimRN_History[0] := StartPos . "," . EndPos . "," . GetName
VimRN_History["String"] := GetName
OnMessage(WM_CHAR,"GetFindText")
}
GetFindText(byRef w, byRef l)
{
If VimRN_IsFind
{
ThisChar := Chr(w)
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
GetPos := VimRN_GetPos()
StartPos := GetPos[2] + 1
Pos := RegExMatch(Text,RegExReplace(ThisChar,"+|?|.|*|{|}|(|)|||^|$|[|]|\","$0"),"",StartPos)
VimRN_SetPos(Pos-1,Pos)
VimRN_IsFind := False
VimRN := True
Return 0
}
}
; VimRN Keys {{{3
;======================
; VimRN_Num: {{{4
VimRN_Num:
VimRN_SendNum()
Return
; VimRN_Down: {{{4
VimRN_Down:
Key := VimRN_Vis ? "+{Down}" : "{Down}"
VimRN_SendKey(key)
Return
; VimRN_Up: {{{4
VimRN_Up:
Key := VimRN_Vis ? "+{Up}" : "{Up}"
VimRN_SendKey(key)
Return
; VimRN_Left: {{{4
VimRN_Left:
Key := VimRN_Vis ? "+{Left}" : "{Left}"
VimRN_SendKey(key)
Return
; VimRN_Right: {{{4
VimRN_Right:
Key := VimRN_Vis ? "+{Right}" : "{Right}"
VimRN_SendKey(key)
Return
; VimRN_SDown: {{{4
VimRN_SDown:
VimRN_SendKey("+{Down}")
Return
; VimRN_SLeft: {{{4
VimRN_SLeft:
VimRN_SendKey("+{Left}")
Return
; VimRN_SUp: {{{4
VimRN_SUp:
VimRN_SendKey("+{Up}")
Return
; VimRN_SRight: {{{4
VimRN_SRight:
VimRN_SendKey("+{Right}")
Return
; VimRN_Find: {{{4
VimRN_Find:
If VimRN_SendKey("")
{
VimRN := False
VimRN_IsFind := True
}
Return
; VimRN_SelectThis: {{{4
VimRN_SelectThis:
If VimRN_SendKey("")
{
Pos := VimRN_GetPos()
Pos := Pos[2]
VimRN_SetPos(Pos,Pos)
}
return
; VimRN_Selectall: {{{4
VimRN_Selectall:
If VimRN_SendKey("")
{
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
Pos := Strlen(Text)
VimRN_SetPos(0,Pos)
}
Return
; VimRN_SelectFileName: {{{4
VimRN_SelectFileName:
If VimRN_SendKey("")
{
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
splitpath,Text,,,,FileName
Pos := Strlen(FileName)
VimRN_SetPos(0,Pos)
}
Return
; VimRN_SelectExt: {{{4
VimRN_SelectExt:
If VimRN_SendKey("")
{
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
splitpath,Text,,,FileExt,FileName
Pos1 := Strlen(FileName)
Pos2 := Strlen(FileExt)
VimRN_SetPos(Pos1+1,Pos1+Pos2+1)
}
Return
; VimRN_Home: {{{4
VimRN_Home:
If VimRN_SendKey("")
VimRN_SetPos(0,0)
Return
; VimRN_End: {{{4
VimRN_End:
If VimRN_SendKey("")
{
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
Pos := Strlen(Text)
VimRN_SetPos(Pos,Pos)
}
Return
; VimRN_Copy: {{{4
VimRN_Copy:
If VimRN_SendKey("")
{
Pos := VimRN_GetPos()
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
VimRN_Temp := SubStr(Text,Pos[1]+1,Pos[2]-Pos[1])
}
Return
; VimRN_Backspace: {{{4
VimRN_Backspace:
If VimRN_SendKey("")
{
VimRN_Cut(-1)
Send {Backspace}
}
Return
; VimRN_Delete: {{{4
VimRN_Delete:
If VimRN_SendKey("")
{
VimRN_Cut(0)
Send {Delete}
}
Return
; VimRN_Paste: {{{4
VimRN_Paste:
If VimRN_SendKey("")
VimRN_Paste()
Return
; VimRN_Trade: {{{4
VimRN_Trade:
If VimRN_SendKey("")
{
Pos := VimRN_GetPos()
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
If Pos[1] > 0
{
TextA := SubStr(Text,Pos[1],1)
TextB := SubStr(Text,Pos[1]+1,1)
SetText := SubStr(Text,1,Pos[1]-1) . TextB . TextA . SubStr(Text,Pos[1]+2)
ControlSetText,Edit1,%SetText%,AHK_ID %VimRN_ID%
VimRN_SetPos(Pos[1],Pos[2])
VimRN_Edit()
}
}
Return
; VimRN_Replace: {{{4
VimRN_Replace:
If VimRN_SendKey("")
{
VimRN_IsReplace := True
Pos := VimRN_GetPos()
If Pos[1] = Pos[2]
{
VimRN_SetPos(Pos[1],Pos[1]+1)
VimRN := False
}
}
Return
; VimRN_MultiReplace: {{{4
VimRN_MultiReplace:
If VimRN_SendKey("")
{
VimRN_IsMultiReplace := True
Pos := VimRN_GetPos()
If Pos[1] = Pos[2]
{
VimRN_SetPos(Pos[1],Pos[1]+1)
VimRN := False
}
}
Return
; VimRN_visual: {{{4
VimRN_visual:
If VimRN_SendKey("")
{
VimRN_Vis := !VimRN_Vis
If VimRN_Vis
{
Status := " 模式: Visual "
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
}
Else
{
Status := " 模式: Vim "
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
}
}
Return
; VimRN_Insert: {{{4
VimRN_Insert:
If VimRN_SendKey("")
{
VimRN := False
Status := " 模式: Normal "
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
}
Return
; VimRN_Esc: {{{4
VimRN_Esc:
VimRN := True
VimRN_IsReplace := False
VimRN_IsMultiReplace := False
VimRN_Count := 0
Status := " 模式: Vim "
Tooltip
Settimer,,off
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
Return
; VimRN_Quit: {{{4
VimRN_Quit:
If VimRN_SendKey("")
WinClose,AHK_ID %VimRN_ID%
Return
; VimRN_Undo: {{{4
VimRN_Undo:
If VimRN_SendKey("")
VimRN_Undo()
Return
; VimRN_Enter: {{{4
VimRN_Enter:
GuiControlGet,NewName,,Edit1
Gui,Destroy
Postmessage,1075,1007,0,,AHK_CLASS TTOTAL_CMD
Loop,40
{
ControlGetFocus,This,AHK_CLASS TTOTAL_CMD
If This = TInEdit1
{
ControlGetText,ConfirName,TInEdit1,AHK_CLASS TTOTAL_CMD
ControlSetText,TInEdit1,%NewName%,AHK_CLASS TTOTAL_CMD
Break
}
Sleep,50
}
If Diff(ConfirName,GetName)
ControlSend,TInEdit1,{enter},AHK_CLASS TTOTAL_CMD
Else
Return
Return
; VimRN Label {{{3
;======================
; VimRN_Edit: {{{4
VimRN_Edit:
VimRN_Edit()
Return
; VimRN_SelMode: {{{4
VimRN_SelMode:
SetConfig("VimReName","Mode",!GetConfig("VimReName","Mode"))
If GetConfig("VimReName","Mode")
Menu,VimRN_Set,Check,默认Vim模式`tAlt+V
Else
Menu,VimRN_Set,UnCheck,默认Vim模式`tAlt+V
Return
; VimRN_SelExt: {{{4
VimRN_SelExt:
SetConfig("VimReName","SelectExt",!GetConfig("VimReName","SelectExt"))
If GetConfig("VimReName","SelectExt")
Menu,VimRN_Set,Check,默认选择后缀`tAlt+E
Else
Menu,VimRN_Set,UnCheck,默认选择后缀`tAlt+E
Return
; VimRN_Help: {{{4
VimRN_Help:
VimRN_Help()
Return
VimRN_Help()
{
test =
(
h : 向左移动N个字符
j : 向下移动N个字符
k : 向上移动N个字符
l : 向右移动N个字符
w : 选择文件名
e : 选择扩展名
u : 撤销
x : 向后删除
d : 向前删除
y : 复制字符
p : 粘贴字符
t : 对换光标处的两个字符
r : 只替换光标处的字符
R : 替换光标之后的所有字符,直遇到Esc
a : 全选
g : 光标位于第一个字符
b : 光标位于最后一个字符
s : 光标位于选中字符的最后一个字符处
f : 查找字符,例如f后按a,就是查找a
q : 退出重命名
i : 编辑模式
v : 选择模式
Esc : 正常模式
Enter : 保存重命名
)
WinGetPos,,,w,h,AHK_ID %VimRN_ID%
tooltip,%test%,0,%h%
Settimer,,50
Return
}
:
Ifwinnotactive,AHK_ID %VimRN_ID%
{
SetTimer,, Off
ToolTip
}
return
; VimRN Function {{{3
;======================
; VimRN_SendKey(ThisKey) {{{4
VimRN_SendKey(ThisKey)
{
If VimRN
{
VimRN_Count := VimRN_Count ? VimRN_Count : 1
Loop % VimRN_Count
{
Send %ThisKey%
}
VimRN_Count := 0
ControlGetText,status,msctls_statusbar321,AHK_ID %VimRN_ID%
status := SubStr(status,1,Strlen(status)-3) . " "
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
Return True
}
Else
{
Send %A_ThisHotkey%
Return False
}
}
; VimRN_SendNum() {{{4
VimRN_SendNum()
{
If A_ThisHotkey is integer
ThisNum := A_ThisHotkey
Else
Return
If VimRN
{
If VimRN_Count
VimRN_Count := ThisNum + (VimRN_Count * 10 )
Else
VimRN_Count := ThisNum + 0
if VimRN_Count > 256
VimRN_Count := 256
ControlGetText,status,msctls_statusbar321,AHK_ID %VimRN_ID%
StringRight,isNumber,status,3
If RegExMatch(isNumber,"sss")
Status := RegExReplace(Status,"sss$") . VimRN_Count . " "
If RegExMatch(isNumber,"dss")
Status := RegExReplace(Status,"dss$") . VimRN_Count . " "
If RegExMatch(isNumber,"dds")
Status := RegExReplace(Status,"dds$") . VimRN_Count
If RegExMatch(isNumber,"ddd")
Status := RegExReplace(Status,"ddd$") . VimRN_Count
ControlSetText,msctls_statusbar321,%status%,AHK_ID %VimRN_ID%
Return True
}
Else
{
Send %A_ThisHotkey%
Return False
}
}
; VimRN_Undo() {{{4
VimRN_Undo()
{
DontSetText := False
Serial := VimRN_History["s"]
If Serial > 0
Serial--
Else
DontSetText := True
Change := VimRN_History[Serial]
Stringsplit,Pos,Change,`,
If Not DontSetText
ControlSetText,Edit1,%Pos3%,AHK_ID %VimRN_ID%
VimRN_SetPos(Pos1,Pos2)
VimRN_History["s"] := Serial
VimRN_History["String"] := Pos3
}
; VimRN_Edit() {{{4
VimRN_Edit()
{
Match := "^" . RegExReplace(VimRN_History["String"],"+|?|.|*|{|}|(|)|||^|$|[|]|\","$0") . "$"
ControlGetText,Change,Edit1,AHK_ID %VimRN_ID%
if Not RegExMatch(Change,Match)
{
Serial := VimRN_History["s"]
Serial++
pos := VimRN_GetPos()
StartPos := pos[1]
EndtPos := pos[2]
VimRN_History[Serial] := StartPos . "," . EndPos . "," . Change
VimRN_History["s"] := Serial
VimRN_History["String"] := change
If VimRN_IsReplace
{
VimRN_IsReplace := !VimRN_IsReplace
VimRN := True
}
If VimRN_IsMultiReplace
{
Pos := VimRN_GetPos()
If Pos[1] = Pos[2]
{
VimRN_SetPos(Pos[1],Pos[1]+1)
}
}
}
}
; VimRN_Cut(Length) {{{4
VimRN_Cut(Length)
{
Pos := VimRN_GetPos()
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
If Pos[1] = Pos[2]
{
Pos1 := Pos[1] + 1 + Length
Len := 1
}
Else
{
Pos1 := Pos[1] + 1
Len := Pos[2] - Pos[1]
}
VimRN_Temp := SubStr(Text,Pos1,Len)
}
; VimRN_Paste(Direction="") {{{4
VimRN_Paste(Direction="")
{
Pos := VimRN_GetPos()
ControlGetText,Text,Edit1,AHK_ID %VimRN_ID%
SetText := SubStr(Text,1,Pos[1]) . VimRN_Temp . SubStr(Text,Pos[1]+1)
Pos1 := Pos[1] + Strlen(VimRN_Temp)
ControlSetText,Edit1,%SetText%,AHK_ID %VimRN_ID%
VimRN_SetPos(Pos1,Pos1)
VimRN_Edit()
}
; VimRN_GetPos() {{{4
VimRN_GetPos()
{
Pos := []
ControlGet,Edit_ID,hwnd,,Edit1,AHK_ID %VimRN_ID%
Varsetcapacity(StartPos,2)
Varsetcapacity(EndPos,2)
Sendmessage,0x00B0,&StartPos,&EndPos,,AHK_ID %Edit_ID%
Pos[1] := NumGet(StartPos)
Pos[2] := NumGet(EndPos)
Return Pos
}
; VimRN_SetPos(Pos1,Pos2) {{{4
VimRN_SetPos(Pos1,Pos2)
{
PostMessage,0x00B1,%Pos1%,%Pos2%,Edit1,AHK_ID %VimRN_ID%
}
;==============================
; Functions {{{1
; SetDefaultKey() {{{2
; 设置VIATC的默认键
SetDefaultKey()
{
Hotkey,Ifwinactive,ahk_class TQUICKSEARCH
Hotkey,+j,
Hotkey,+k,
Hotkey,Ifwinactive,AHK_CLASS TTOTAL_CMD
HotKey,1,,on,UseErrorLevel
HotKey,2,,on,UseErrorLevel
HotKey,3,,on,UseErrorLevel
HotKey,4,,on,UseErrorLevel
HotKey,5,,on,UseErrorLevel
HotKey,6,,on,UseErrorLevel
HotKey,7,,on,UseErrorLevel
HotKey,8,,on,UseErrorLevel
HotKey,9,,on,UseErrorLevel
HotKey,0,,on,UseErrorLevel
HotKey,j,,on,UseErrorLevel
HotKey,k,,on,UseErrorLevel
HotKey,h,,on,UseErrorLevel
HotKey,l,,on,UseErrorLevel
HotKey,+k,,on,UseErrorLevel
HotKey,+j,,on,UseErrorLevel
HotKey,+h,,on,UseErrorLevel
HotKey,+l,,on,UseErrorLevel
HotKey,d,,on,UseErrorLevel
HotKey,+d,,on,UseErrorLevel
Hotkey,.,,On,UseErrorLevel
HotKey,e,,on,UseErrorLevel
HotKey,+e,,on,UseErrorLevel
HotKey,u,,on,UseErrorLevel
HotKey,+u,,on,UseErrorLevel
Hotkey,i,,on,UseErrorLevel
Hotkey,x,,On,UseErrorLevel
Hotkey,+x,,On,UseErrorLevel
HotKey,o,,on,UseErrorLevel
HotKey,+o,,on,UseErrorLevel
HotKey,q,,on,UseErrorLevel
HotKey,p,,on,UseErrorLevel
HotKey,+p,,on,UseErrorLevel
HotKey,t,,on,UseErrorLevel
HotKey,+t,,on,UseErrorLevel
;Hotkey,r,,on,UseErrorLevel
Hotkey,r,,on,UseErrorLevel
Hotkey,+r,,on,UseErrorLevel
Hotkey,f,,On,UseErrorLevel
Hotkey,+f,,On,UseErrorLevel
Hotkey,b,,On,UseErrorLevel
Hotkey,+b,,On,UseErrorLevel
Hotkey,y,,On,UseErrorLevel
Hotkey,+y,,On,UseErrorLevel
Hotkey,/,,On,UseErrorLevel
Hotkey,+/,,On,UseErrorLevel
Hotkey,`;,,On,UseErrorLevel
Hotkey,:,,On,UseErrorLevel
Hotkey,[,,On,UseErrorLevel
Hotkey,+[,,On,UseErrorLevel
Hotkey,],,On,UseErrorLevel
Hotkey,+],,On,UseErrorLevel
Hotkey,,,On,UseErrorLevel
Hotkey,+,,On,UseErrorLevel
Hotkey,=,,On,UseErrorLevel
Hotkey,-,,On,UseErrorLevelHotkey,,,On,UseErrorLevel
Hotkey,v,,On,UseErrorLevel
HotKey,a,,on,UseErrorLevel
Hotkey,m,,On,UseErrorLevel
Hotkey,+m,,On,UseErrorLevel
Hotkey,',,On,UseErrorLevel
HotKey,+q,,on,UseErrorLevel
Hotkey,+g,,On,UseErrorLevel
Hotkey,w,,On,UseErrorLevel
Hotkey,n,,On,UseErrorLevel
Hotkey,+n,,On,UseErrorLevel
Hotkey,`,,,On,UseErrorLevel
Hotkey,$Enter,,On,UseErrorLevel
Hotkey,Esc,