#NoEnv SendMode Input SetWorkingDir %A_ScriptDir% #SingleInstance, force Menu, Tray, Icon, shell32.dll, 21 SetTitleMatchMode, 2 SetTitleMatchMode, Slow ;~ SetKeyDelay 50, 50 goto start ; Íàñòðîéêè ãîðÿ÷èõ êëàâèø ïðîãðàììû äîëæíû áûòü: Ctrl+F12 - ñîçäàíèå, CTRL+ALT+F12 - ïîêàçàòü ãëàâíîå îêíî. ;  Íàñòðîéêàõ - Çàõâàò òåêñòà - Ïîñëå çàõâàòà äîëæíî ñòîÿòü "Îòêðûòü íà ðåäàêòèðîâàíèå" ; Ïðè çàïóñêå â êàòàëîãå ñêðèïòà ñîçäàåòñÿ îäíîèìåííûé êîíôèãóðàöèîííûé cfg-ôàéë, çàäàþùèé ñîçäàíèå/îòêðûòèå çàìåòîê â çàäàííîé ñåêöèè è ñîîòâåòñòâóþùèì òýãîì ïî ãîðÿ÷åé êëàâèøå (â íåì óæå åñòü òðè ñòðîêè, çàäàþùèå ñîîòâåòñòâèÿ 1 - 1-é ñåêöèè, 2 - 2-é, 3 - 3-é.). ; Ñèíòàêñèñ ñòðîê ïðåäåëüíî ïðîñò: ; íîìåð ñåêöèè,òýã,èìÿ êëàâèøè èëè åå êîä (âèðòóàëüíûé èëè ñêàí),ïîÿñíåíèå (íåîáÿçàòåëüíî) ; Íàïðèìåð: ; 1,Comp,vk43,c - òýã Comp â ïåðâîé ñåêöèè ïî êëàâèøå c ; 1,Soft Comp,vk53,S - äâà òýãà òàì æå ïî s ; 1,Books/÷èòàòü,sc30,b - äî÷åðíèé òýã "÷èòàòü" â Books ïî b ; 1,Êíèãè Books/÷èòàòü,F6 - êîìáèíàöèÿ äâóõ ïðåäûäóùèõ âîçìîæíîñòåé ïî F6 ; 5,,5 - ïÿòàÿ ñåêöèÿ áåç òýãà ïî 5 è ò.ä. ; Äîïóñêàþòñÿ ïóñòûå ñòðîêè, ëèøíèå ïðîáåëû - òîëüêî â ïîÿñíåíèÿõ. Âðåìåííî íåíóæíîå ìîæíî çàêîìåíòèðîâàòü ";". Óäîáíî îòìå÷àòü ïîñòîÿííûå òýãè ëàòèíèöåé, òîãäà îíè âñåãäà áóäóò ââåðõó. Äëÿ ïðèìåíåíèÿ èçìåíåíèé òðåáóåòñÿ ïåðåçàïóñê ñêðèïòà ; --------- Ãîðÿ÷èå êëàâèøè ---------- >^>+F12::Run % cfg ; RCtrl+RShift+F12 - îêðûòèå êîíôèãóðàöèîííîãî ôàéëà ; RCtrl+RShift+êëàâèøà - ñîçäàíèå çàìåòêè ñ çàäàííîé (è óæå ñóùåñòâóþùåé!) ñåêöèåé è òýãîì (åñëè îïðåäåëåí) ; RCtrl+RAlt+êëàâèøà - îòêðûòèå çàìåòîê ñ çàäàííûìè ñåêöèåé è òýãîì ;  îòêðûòîì îêíå ðåäàêòèðîâàíèÿ: ; RCtrl+êëàâèøà - çàìåíà ñåêöèè è òýãà äàííûìè, ñâÿçàííûìè ñ êëàâèøåé ; RShift+êëàâèøà - äîïîëíåíèå òåêóùåãî òýãà ñâÿçàííûì ñ êëàâèøåé ; Ïî L/RCtrl+Space è L/RShift+Space - äîáàâëÿþòñÿ íàñòðàèâàåìûå òýãè, ñóôôèêñû èëè äî÷åðíèå òýãè ; Âî âñåõ ñëó÷àÿõ (â ò.÷. è ïðè àâòîìàòè÷åñêîé ãåíåðàöèè òýãîâ) ñåêóíäíîå çàæàòèå ïðàâîãî Ctrl äîáàâëÿåò/îòêðûâàåò ñóôôèêñ, äîïîëíèòåëüíûé èëè äî÷åðíèé òýã, ïðîïèñàííûé â íàñòðîéêàõ >^>+Space::Note(last_tab,last_tag) ; RCtrl+RShift+Space - ñîçäàíèå çàìåòêè ñ ââåäåííûìè ïðåæäå ñåêöèåé è íàáîðîì òýãîâ >^>!Space::Open(last_tab,last_tag) ; RCtrl+RAlt+Space - îòêðûòèå ñîîòâåòñòâóþùèõ çàìåòîê >^>+vkBF::Note(name_tag,"$name") ; RCtrl+RShift+/ - ñîçäàíèå çàïèñè ñ àâòîìàòè÷åñêè ñãåíåðèðîâàííûì èç íàçâàíèÿ îòêðûòîãî ôàéëà, îïðåäåëåííîãî èç êîìàíäíîé ñòðîêè (ñåêöèÿ/ìàòåðèíñêèé òýã çàäàþòñÿ â íàñòðîéêàõ íèæå; ðàáîòàåò, åñëè ïðîãðàììà çàïóñêàåòñÿ âìåñòå ñ îòêðûòèåì ôàéëà) >^>!vkBF::Open(name_tag,"$name") ; RCtrl+RAlt+/ - îòêðûòèå ñåêöèè/òýãà, ñîîòâåòñòâóþùèõ äàííîìó çàïóùåííîìó ôàéëó >^>+vkBE::Note(site_tag,"$site") ; RCtrl+RShift+. - ñîçäàíèå çàïèñè ñ àâòîìàòè÷åñêè ñãåíåðèðîâàííûì èç àäðåñà îòêðûòîãî ñàéòà òýãå (ñåêöèÿ è ìàòåðèíñêèé òýã çàäàþòñÿ íèæå) >^>!vkBE::Open(site_tag,"$site") ; RCtrl+RAlt+. - îòêðûòèå çàïèñåé, ñîîòâåòñòâóþùèõ îòêðûòîìó â íàñòîÿùèé ìîìåíò ñàéòó >^>+vkDC::Note(proc_tag,"$proc") ; RCtrl+RShift+\ - âñå òî æå, íî íàçâàíèå áåðåòñÿ èç èìåíè ïðîöåññà, ñîîòâåòñòâóþùåãî àêòèâíîìó îêíó >^>!vkDC::Open(proc_tag,"$proc") ; RCtrl+RAlt+\ - îòêðûòèå ñåêöèè/òýãà, ñîîòâåòñòâóþùèõ àêòèâíîìó ïðèëîæåíèþ ; Ìûøü (äåéñòâóåò â îêíå ïðîãðàììû) #IfWinActive ahk_class CintaNotes.MainFrame MButton::Send {F7} ; Cðåäíÿÿ êíîïêà - îòêðûòèå àäðåñà âûäåëåííîé çàìåòêè ^RButton::Send ^{vk43} ; Ctrl+ÏÊÌ - êîïèðîâàíèå âûäåëåííîé çàìåòêè +RButton::Send {F4} ; Shift+ÏÊÌ - ðåäàêòèðîâàíèå òýãîâ çàìåòêè #IfWinActive start: ;------------ Íàñòðîéêè ñêðèïòà ------------- ctrl_tag:="_ToDo" ; Ñóôôèêñ, ïðîïèñûâàþùèéñÿ ïðè ñåêóíäíîì çàæàòèè ïðàâîãî Ctrl. Åñëè âïèñàòü " ToDo", áóäåò äîáàâëÿòüñÿ äîïîëíèòåëüíûé òýã, åñëè "/ToDo" - äî÷åðíèé lctrl_space:=" !×èòàòü" ; Ñóôôèêñ, äîïîëíèòåëüíûé èëè äî÷åðíèé òýã äîïèñûâàþùèéñÿ ê òåêóùåìó òýãó ïî LCtrl+Space â îêíå ðåäàêòèðîâàíèÿ rctrl_space:="_ToDo" ; Òî æå äëÿ RCtrl+Space lshift_space:=" !Ñìîòðåòü" ; Òî æå äëÿ LShift+Space rshift_space:="_Old" ; Òî æå äëÿ RShift+Space stab:=1 ; Ïðè äîïîëíåíèè òýãà ïî RShift+êëàâèøà ïðîâåðÿòü, ñâÿçàí ëè ýòîò òýã ñ âûáðàííîé ñåêöèåé local_path:=2 ; Îïðåäåëåíèÿ ïóòè ëîêàëüíîãî ôàéëà èç êîìàíäíîé ñòðîêè (ðàáîòàåò, åñëè ïðîãðàììà çàïóñêàåòñÿ âìåñòå ñ îòêðûòèåì ôàéëà). 1 - çàïèñûâàòü â ïîëå àäðåñà, äëÿ çàïóñêà ïî F7/ÑÊÌ, 2 - çàïèñûâàòü è â ïðèìå÷àíèå, 3 - òî æå, íî çàïèñûâàòü â ïîëå àäðåñà ñîäåðæàùóþ ôàéë ïàïêó, 0 - íå èñïîëüçîâàòü. ; Åñëè àêòèâíî îêíî FAR, ïðè local_path > 0 áóäåò ñîçäàâàòüñÿ ïóñòàÿ çàìåòêà ñ çàãîëîâêîì èç èìåíè âûäåëåííîãî ôàéëà èëè ïàïêè è ññûëêîé íà íåãî name_tag:="3,Files" ; Íîìåð ñåêöèè è ìàòåðèíñêèé òýã (ìîæíî îïóñòèòü), ÷åðåç çàïÿòóþ, â êîòîðûõ áóäåò àâòîìàòè÷åñêè ñîçäàâàòüñÿ çàïèñü ñ òýãîì èç íàçâàíèÿ îòêðûòîãî ôàéëà proc_tag:="1,Programs" ; Òî æå äëÿ àâòîìàòè÷åñêîãî ñîçäàíèÿ çàïèñè ñ òýãîì èç ïðîöåññà àêòèâíîãî îêíà site_tag:="2,Sites" ; Òî æå äëÿ àâòîìàòè÷åñêîãî ñîçäàíèÿ çàïèñè ñ òýãîì èç àäðåñà îòêðûòîãî ñàéòà max_empty_str:=2 ; Ìàêñèìàëüíîå ÷èñëî ïîñëåäîâàòåëüíûõ ïóñòûõ ñòðîê â ñêîïèðîâàííîì òåêñòå; ïåðâûå ïóñòûå ñòðîêè îòáðàñûâàþòñÿ àâòîìàòè÷åñêè. 0 - áåç îãðàíè÷åíèÿ clip:=2 ; Ñîõðàíÿòü â áóôåðå îáìåíà ïîñëå ñîçäàíèÿ çàìåòêè: 1 - òåêñò çàìåòêè, 2 - ïåðâóþ íåïóñòóþ ñòðîêó â âèäå, ïðèãîäíîì äëÿ ïåðåèìåíîâàíèÿ ôàéëîâ; 0 - áåç èçìåíåíèÿ ;---------------------------------- SplitPath A_ScriptName, , , , cfg cfg:=cfg ".cfg" IfNotExist % cfg FileAppend , % "1,,1`r`n2,,2`r`n3,,3", % cfg, utf-8 Loop Read, % cfg { If A_LoopReadLine contains `; continue If A_LoopReadLine=`r`n continue Loop Parse, A_LoopReadLine, CSV { If (A_Index=1) tab:=A_LoopField If (A_Index=2) tag:=A_LoopField If (A_Index=3) key:=A_LoopField } tab_%key%:=tab tag_%key%:=tag Hotkey % ">^>+" key, Note Hotkey IfWinActive, ahk_class Cinta.ModelessDialog Hotkey % ">^" key, Note Hotkey % ">+" key, Note Hotkey IfWinActive Hotkey % ">^>!" key, Open } return #IfWinActive ahk_class Cinta.ModelessDialog <^Space::Addtag(lctrl_space) >^Space::Addtag(rctrl_space) <+Space::Addtag(lshift_space) >+Space::Addtag(rshift_space) #IfWinActive Addtag(tt) { KeyWait Ctrl, T1 KeyWait Shift, T1 ControlGetText tag, Cinta.Edit2 s:=SubStr(tag,0) If (s=" ") StringTrimRight tag, tag, 1 ControlSetText Cinta.Edit2, % tag . tt " " Send {End} return } Note: getp() Note(tab,tag) return Open: getp() Open(tab,tag) return getp() { global StringGetPos kf, A_ThisHotkey, ^ StringTrimLeft key, A_ThisHotkey, kf+1 StringGetPos kf, key, + StringTrimLeft key, key, kf+1 StringGetPos kf, key, ! StringTrimLeft key, key, kf+1 tab:=tab_%key% tag:=tag_%key% return } Note(tab,tag="") { global clip_old:=Clipboard far:=0 mtg:="" old_tag:="" end:="" tt:=tag If tab contains `, { Loop parse, tab, CSV { If (A_Index=1) tab:=A_LoopField If (A_Index=2) mtg:=A_LoopField } } KeyWait Shift, T1 KeyWait Ctrl, T0.6 e:=ErrorLevel WinGetActiveTitle t WinGetClass cl, A f_path:="" If local_path { f_path:=GetPath(t) If t contains Far 3,Far 2,Far 1 { Clipboard:="" Send ^!{Ins} ClipWait 2 If Clipboard { f_path:=ClipBoard far:=1 } } } If (tag="$name") { If ! f_path { MsgBox, 262160, , Ïóòü ôàéëà íåäîñòóïåí!, 1.5 return } SplitPath f_path, , , , tag tag:=ValidName(tag) StringReplace tag, tag, % " ", % "_", All StringReplace tag, tag, `,, % "_", All } If (tag="$proc") { WinGet pr, ProcessName, % t SplitPath pr, , , , pr StringReplace tag, pr, % " ", % "_", All } If A_Thishotkey contains >^>+ { KeyWait RCtrl Send ^{F12} If (cl="Cinta.ModelessDialog") WinWaitNotActive % t, , 10 WinWaitActive ahk_class Cinta.ModelessDialog, , 10 Sleep 200 } If far { SplitPath f_path, fn ControlSetText Cinta.Edit1, % "Far: " fn ControlSetText Cinta.RichEdit1,% "" } ControlGetText add, Cinta.Edit3, ahk_class Cinta.ModelessDialog If (tag="$site") { If ! add { MsgBox, 262160, , Àäðåñ íåäîñòóïåí!, 1.5 return } SplitPath add, tag StringReplace tag, tag,% "https://" StringReplace tag, tag,% "http://" StringReplace tag, tag,% "ftp://" StringReplace tag, tag,% "file://" StringReplace tag, tag, www. } If ((add="") && (local_path>0) && (f_path<>"")) || (tt="$name") { If (local_path>1) ControlSetText Cinta.RichEdit2, % f_path If (local_path=3) SplitPath f_path, , f_path ControlSetText Cinta.Edit3 ControlSetText Cinta.Edit3, % f_path } If max_empty_str { ControlGetText txt, Cinta.RichEdit1 txt:=MaxEmptyString(txt,max_empty_str) ControlSetText Cinta.RichEdit1, % txt } ControlGetText ntxt, Cinta.RichEdit1, ahk_class Cinta.ModelessDialog If (clip>0) && (ntxt<>"") { If (clip=2) { Loop parse, ntxt, `n, `r { If (A_LoopField="") continue ntxt:=A_LoopField break } ntxt:=ValidName(ntxt) ntxt:=FirstUppercase(ntxt) } Clipboard:=ntxt } else Clipboard:=clip_old If A_Thishotkey contains >^ Control Choose, % tab, Cinta.Combobox1, ahk_class Cinta.ModelessDialog else { SendMessage, 0x147, 0, 0, Cinta.Combobox1 stab:=ErrorLevel+1 If (stab<>tab) { MsgBox, 262160, , Òýã îòíîñèòñÿ ê äðóãîé ñåêöèè!, 1.5 return } ControlGetText old_tag, Cinta.Edit2 s:=SubStr(old_tag,0) If (s=" ") StringTrimRight old_tag, old_tag, 1 ControlSetText Cinta.Edit2, % old_tag " " tag " " Send {End} return } If mtg || tag { If e end:=ctrl_tag If mtg && tag tag:="/" tag ControlSetText Cinta.Edit2, % mtg . tag . end " " Send {End} } Loop { IfWinNotActive ahk_class Cinta.ModelessDialog break SendMessage, 0x147, 0, 0, Cinta.Combobox1, ahk_class Cinta.ModelessDialog last_tab:=ErrorLevel+1 ControlGetText last_tag, Cinta.Edit2, ahk_class Cinta.ModelessDialog sl:=SubStr(last_tag,0) If (sl=" ") StringTrimRight last_tag, last_tag, 1 Sleep 100 } return } Open(tab,tag="") { global mtg:="" end:="" If tab contains `, { Loop parse, tab, CSV { If (A_Index=1) tab:=A_LoopField If (A_Index=2) mtg:=A_LoopField } } KeyWait RAlt, T1 KeyWait RCtrl, T0.6 e:=ErrorLevel If (tag="$name") { WinGetActiveTitle t f_path:=GetPath(t) If ! f_path MsgBox, 262160, , Ïóòü ôàéëà íåäîñòóïåí!, 1 SplitPath f_path, , , , tag tag:=ValidName(tag) StringReplace tag, tag, % " ", % "_", All StringReplace tag, tag, `,, % "_", All } If (tag="$proc") { WinGet pr, ProcessName, % t SplitPath pr, , , , pr StringReplace tag, pr, % " ", % "_", All } IfWinActive ahk_class CintaNotes.MainFrame goto end If (tag="$site") { Send !{vk44} Sleep 200 Send ^{Ins} ClipWait 1 If Errorlevel { MsgBox, 262160, , Àäðåñ íåäîñòóïåí!, 1 return } SplitPath Clipboard, , , , ,tag StringReplace tag, tag,% "https://" StringReplace tag, tag,% "http://" StringReplace tag, tag,% "ftp://" StringReplace tag, tag,% "file://" StringReplace tag, tag, www. } KeyWait RCtrl, T3 Send ^!{F12} WinWait ahk_class CintaNotes.MainFrame, , 2 If ErrorLevel return end: Send ^{%tab%} Sleep 300 If mtg || tag { If e end:=ctrl_tag If mtg && tag tag:="/" tag ControlSetText Cinta.Edit1, % mtg . tag . end ControlSend Cinta.Edit1, {Enter} Sleep 200 Send {Home} } return } FirstUppercase(t) { StringLeft n, t, 1 StringTrimLeft k, t, 1 StringUpper n, n return n . k } GetPath(title,quotes=0) { WinGet pr, ProcessName, % title Process, Exist, % pr pid := ErrorLevel for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process") If (process.ProcessId = pid) cmdline := process.CommandLine If cmdline contains Explorer.exe cmdline:="" AutoTrim On StringReplace cmdline, cmdline, ", , All StringGetPos p1, cmdline, .exe StringGetPos p2, cmdline, ., R If (p1=p2) cmdline:="" n:=0 Loop parse, cmdline { n:=n+1 If (A_Loopfield<>A_Space) continue If (A_Index>p2) break } StringMid f_path, cmdline, p1+6, n-p1-5 StringGetPos dp, f_path, :\, R StringTrimLeft f_path, f_path, dp-1 If quotes f_path:="" f_path "" return f_path } MaxEmptyString(text,max) { t:="" n:=max Loop Parse, text, `n, `r { If A_LoopField { t:=t . A_LoopField "`r`n" n:=0 continue } else { n:=n+1 If (n<=max) t:=t "`r`n" } } return t } ValidName(n) { StringReplace n, n, `r`n,% " ", All StringReplace n, n, `n,% " ", All StringReplace n, n, \,% " ", All StringReplace n, n, /,% " ", All StringReplace n, n, :, ,All StringReplace n, n, *, ,All StringReplace n, n, ?, ,All StringReplace n, n, ", ,All StringReplace n, n, >,% " ", All StringReplace n, n, <,% " ", All StringReplace n, n, |, -, All StringReplace n, n,% " ", % " ", All return Trim(n) } |