From 329e8214403d2137a1823417078f7f0dd90e15d0 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Fri, 12 Jun 2020 01:18:40 -0500 Subject: [PATCH] - Improved Windows UX, Added System Tray, Kinto icon assets --- assets/kinto-black.ico | Bin 0 -> 104530 bytes assets/kinto-color-black.ico | Bin 0 -> 108337 bytes assets/kinto-color.ico | Bin 0 -> 108440 bytes assets/kinto-white.ico | Bin 0 -> 104724 bytes setup.py | 31 +-- windows/NoShell.vbs | 14 ++ windows/kinto-start.vbs | 7 + windows/kinto.ahk | 363 ++++++++++++++++++++--------------- windows/mac_kinto.ahk | 254 ------------------------ windows/toggle_kb.bat | 22 +++ windows/win_kinto.ahk | 258 ------------------------- 11 files changed, 274 insertions(+), 675 deletions(-) create mode 100644 assets/kinto-black.ico create mode 100644 assets/kinto-color-black.ico create mode 100644 assets/kinto-color.ico create mode 100644 assets/kinto-white.ico create mode 100644 windows/NoShell.vbs create mode 100644 windows/kinto-start.vbs delete mode 100644 windows/mac_kinto.ahk create mode 100644 windows/toggle_kb.bat delete mode 100644 windows/win_kinto.ahk diff --git a/assets/kinto-black.ico b/assets/kinto-black.ico new file mode 100644 index 0000000000000000000000000000000000000000..9d3a1f9e805cceb4aaca20123d7eba4e1eae8072 GIT binary patch literal 104530 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 QU{Q$EppgTQ445AAf37#lVgLXD literal 0 HcmV?d00001 diff --git a/assets/kinto-color.ico b/assets/kinto-color.ico new file mode 100644 index 0000000000000000000000000000000000000000..c4f9023724f93a25c7296d4f1ba13b91d880dc7b GIT binary patch literal 108440 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 WCd@N04LXQxPvqqk<~ztLo%uh{qDmV8 literal 0 HcmV?d00001 diff --git a/assets/kinto-white.ico b/assets/kinto-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..1bf3848dd78245b223dc37bc740c1bdd67052e1c GIT binary patch literal 104724 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 0 and default < 5: + if default > 0 and default < 3: print("Will now install chocolatey and autohotkey with elevated privileges...") print("This install will fail if you are not running with elevated privileges") os.system('powershell -executionpolicy bypass ".\\windows\\autohotkey.ps1"') os.system('refreshenv') print("\nWill now install Ubuntu Terminal Theme as default...") os.system("regedit " + path + "\\windows\\theme_ubuntu.reg") - print("Copying autohotkey combinations for Terminals & Editors...") - os.system("copy /Y " + path + "\\windows\\kinto.ahk " + path + "\\windows\\kinto-new.ahk") if(stvscode): os.system('perl -pi -e "s/(; )(.*)(; ST2CODE)/$2$3/g" ./windows/kinto-new.ahk') - os.system("copy /Y " + path + "\\windows\\kinto-new.ahk \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\"") + os.system('copy /Y ' + path + '\\windows\\kinto-start.vbs "%userprofile%\\.kinto\\kinto-start.vbs"') + os.system('mklink "%userprofile%\\Start Menu\\Programs\\Startup\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"') + os.system('cp '+ path + '\\windows\\NoShell.vbs "%userprofile%\\.kinto\\NoShell.vbs"') + os.system('cp '+ path + '\\windows\\toggle_kb.bat "%userprofile%\\.kinto\\toggle_kb.bat"') + os.system('cp '+ path + '\\windows\\kinto-new.ahk "%userprofile%\\.kinto\\kinto.ahk"') + os.system('robocopy '+ path + '\\assets "%userprofile%\\.kinto\\assets" /E') os.system("del /f .\\windows\\kinto-new.ahk") - print("\nPlease log off and back on for changes to take full effect.") + os.system("del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\"") + os.system("%userprofile%\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs") + + # # print("\nPlease log off and back on for changes to take full effect.") print("If using WSL then please remember to right click on title bar -> Properties -> Edit Options -> Use Ctrl+Shift+C/V as Copy/Paste and enable it.") else: os.system("del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\"") diff --git a/windows/NoShell.vbs b/windows/NoShell.vbs new file mode 100644 index 0000000..bb05151 --- /dev/null +++ b/windows/NoShell.vbs @@ -0,0 +1,14 @@ +If WScript.Arguments.Count >= 1 Then + ReDim arr(WScript.Arguments.Count-1) + prog = WScript.Arguments(0) + For i = 1 To WScript.Arguments.Count-1 + Arg = WScript.Arguments(i) + If InStr(Arg, " ") > 1 Then Arg = """" & Arg & """" + arr(i) = Arg + Next + + RunCmd = Join(arr) + ' CreateObject("Wscript.Shell").Run RunCmd, 0, True + Set oShell = CreateObject("Shell.Application") + oShell.ShellExecute prog, RunCmd, , "runas", 0 +End If \ No newline at end of file diff --git a/windows/kinto-start.vbs b/windows/kinto-start.vbs new file mode 100644 index 0000000..fbe1078 --- /dev/null +++ b/windows/kinto-start.vbs @@ -0,0 +1,7 @@ +Set oShell = CreateObject("Shell.Application") +Set wShell = WScript.CreateObject("WScript.Shell") +Set fso = CreateObject("Scripting.FileSystemObject") + +path = wShell.ExpandEnvironmentStrings("%userprofile%") +strFolder = fso.BuildPath(path, "\.kinto\kinto.ahk") +oShell.ShellExecute "C:\Program Files\AutoHotkey\AutoHotkey.exe", strFolder, , "runas", 0 \ No newline at end of file diff --git a/windows/kinto.ahk b/windows/kinto.ahk index e3e9ac7..00f4029 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -1,42 +1,51 @@ -; Cmd Tab For App Switching -; LWin & Tab::AltTab -; RWin & Tab::AltTab +#SingleInstance force +#NoEnv +#Persistent -; New AltTab and CtrlTab fix -*tab:: -{ - if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) { - Send {LAlt up}{LCtrl down}{tab} - KeyWait, tab - } else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) { - Send {LAlt up}{LShift down}{LCtrl down}{tab} - KeyWait, tab - } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P") = false) { - Send {LAlt down}{tab} - KeyWait, tab - } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) { - Send {LShift down}{LAlt down}{tab} - KeyWait, tab - } else { - send {tab} - } - return +I_Icon = %A_ScriptDir%\assets\kinto-white.ico +IfExist, %I_Icon% +Menu, Tray, Icon, %I_Icon% + +; Set Tray menu +; Menu, Tray, Standard +Menu, Tray, NoStandard ; to remove default menu +Menu, Tray, Add, Set Windows Keyboard, winkb +Menu, Tray, Add, Set Apple Keyboard, mackb +Menu, Tray, Add, Suspend Kinto, tray_suspend +Menu, Tray, Add, Returns to Desktop, min +Menu, Tray, Add +Menu, Tray, Add, Close, Exit +Menu, Tray, Click, 1 +Menu, Tray, Tip, Kinto + +winkb(){ + Run, %A_ScriptDir%\NoShell.vbs %A_ScriptDir%\toggle_kb.bat win, %A_ScriptDir% } -; Basic Remap -; -; Primary::LCtrl -; Secondary::LAlt -; Tertiary::LWin +mackb(){ + Run, %A_ScriptDir%\NoShell.vbs %A_ScriptDir%\toggle_kb.bat mac, %A_ScriptDir% +} -$LCtrl::LWin -$LWin::LCtrl -; Hack to disable start menu on winkey -$LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} +min(){ +; Refocus last active Window +Send {LAlt down}{tab}{LAlt up} +} -; temporary hack to ensure keys don't get stuck -; impacts Alt-Tab fix -$LWin up::Send {LAlt up}{LCtrl up} +tray_suspend(){ + suspend toggle + if (a_isSuspended = 1){ + menu, tray, check , Suspend Kinto + } + else{ + menu, tray, unCheck, Suspend Kinto + } + ; Refocus last active Window + Send {LAlt down}{tab}{LAlt up} +} + +Exit() { + ExitApp +} SetTitleMatchMode, 2 @@ -47,6 +56,7 @@ GroupAdd, terminals, ahk_exe powershell.exe GroupAdd, terminals, ahk_exe WindowsTerminal.exe GroupAdd, terminals, ahk_exe Hyper.exe GroupAdd, terminals, ahk_exe Cmd.exe +GroupAdd, terminals, ahk_exe Terminus.exe GroupAdd, terminals, Fluent Terminal ahk_class ApplicationFrameWindow GroupAdd, posix, ahk_exe ubuntu.exe @@ -54,6 +64,7 @@ GroupAdd, posix, ahk_exe ConEmu.exe GroupAdd, posix, ahk_exe ConEmu64.exe GroupAdd, posix, ahk_exe Hyper.exe GroupAdd, posix, ahk_exe mintty.exe +GroupAdd, terminals, ahk_exe Terminus.exe GroupAdd, posix, Fluent Terminal ahk_class ApplicationFrameWindow GroupAdd, ConEmu, ahk_exe ConEmu.exe @@ -67,7 +78,79 @@ GroupAdd, editors, ahk_exe Code.exe GroupAdd, vscode, ahk_exe VSCodium.exe GroupAdd, vscode, ahk_exe Code.exe -; Close Apps +GroupAdd, vstudio, ahk_exe devenv.exe + +; New AltTab and CtrlTab fix +*tab:: +{ + ; Tertiary + if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) { + ; Secondary + ; Send {LCtrl down}{Secondary up}{tab} +; Send {LCtrl down}{LWin up}{tab} ; WinModifiers +; Send {LCtrl down}{LAlt up}{tab} ; MacModifiers + KeyWait, tab + ; Tertiary + } else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) { + ; Secondary + ; Send {LCtrl down}{Secondary up}{LShift down}{tab} +; Send {LCtrl down}{LWin up}{LShift down}{tab} ; WinModifiers +; Send {LCtrl down}{LAlt up}{LShift down}{tab} ; MacModifiers + KeyWait, tab + ; Primary +; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) { ; WinModifiers +; } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P") = false) { ; MacModifiers + Send {LAlt down}{tab} + KeyWait, tab + ; Primary +; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) { ; WinModifiers +; } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) { ; MacModifiers + Send {LAlt down}{LShift down}{tab} + KeyWait, tab + ; Secondary +; } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) = false { ; WinModifiers +; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) { ; MacModifiers + return + ; Secondary +; } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) { ; WinModifiers +; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) { ; MacModifiers + return + } else { + send {Blind}{tab} + } + return +} + +tab::Send {tab} + ++tab::Send {Shift down}{tab}{Shift up} + +; Basic Remap +; +; Primary::LCtrl +; Secondary::LAlt +; Tertiary::LWin + +; $LAlt::LCtrl ; WinModifiers +; $RAlt::RCtrl ; WinModifiers +; $LWin::LAlt ; WinModifiers +; $LCtrl::LWin ; WinModifiers + +; $LWin::LCtrl ; MacModifiers +; $RWin::RCtrl ; MacModifiers +; $LCtrl::LWin ; MacModifiers + +; Hack to disable start menu on winkey +; Static +$LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} + +; temporary hack to ensure keys don't get stuck +; impacts Alt-Tab fix +; Primary +; $LAlt up::Send {LWin up}{LAlt up}{LCtrl up} ; WinModifiers +; $LWin up::Send {LWin up}{LAlt up}{LCtrl up} ; MacModifiers + +; Close Apps ^q::Send !{F4} ; Emoji Panel @@ -97,134 +180,112 @@ $^+Right::Send +{End} ; Cmd+Space Alternative ^Space::Send ^{Esc} -; ^Space::run AppName - -; ; Ctrl Tab for In-App Tab Switching -; ; https://autohotkey.com/board/topic/72433-controltab/ -; #if GetKeyState("LWin") -; *Tab:: -; if(!GetKeyState("LControl")) -; Send {LControl Down} -; Send {Tab} -; SetTimer, WaitForWinUp, 10 -; ToolTip trigger -; return - -; WaitForWinUp: -; if(!GetKeyState("LWin", "P")) -; { -; Send {LControl Up} -; SetTimer, WaitForWinUp, Off -; } -; return ; ; Sublime Text Remaps for VS Code -; #IfWinActive ahk_group vscode ; ST2CODE -; ; Remap Ctrl+Shift to behave like macOS Sublimetext -; ; Will extend cursor to multiple lines -; #+Up::send ^!{Up} ; ST2CODE -; #+Down::send ^!{Down} ; ST2CODE -; ; Remap Ctrl+Cmd+G to select all matches -; #^g::send ^+{L} ; ST2CODE -; #If ; ST2CODE +#IfWinActive ahk_group vscode ; ST2CODE + ; Remap Ctrl+Shift to behave like macOS Sublimetext + ; Will extend cursor to multiple lines + #+Up::send ^!{Up} ; ST2CODE + #+Down::send ^!{Down} ; ST2CODE + ; Remap Ctrl+Cmd+G to select all matches + #^g::send ^+{L} ; ST2CODE +#If ; ST2CODE #IfWinActive ahk_exe sublime_text.exe - ; Remap Ctrl+Shift to behave like macOS Sublimetext - ; Will extend cursor to multiple lines - #+Up::send {shift up}^!{Up} - #+Down::send {shift up}^!{Down} + ; Remap Ctrl+Shift to behave like macOS Sublimetext + ; Will extend cursor to multiple lines + #+Up::send {shift up}^!{Up} + #+Down::send {shift up}^!{Down} - ; Remap Ctrl+Cmd+G to select all matches - #^g::send !{F3} + ; Remap Ctrl+Cmd+G to select all matches + #^g::send !{F3} #If -; #IfWinActive ahk_group terminals -; ; Copy -; ^c::Send {LCtrl down}{LShift down}c{LCtrl Up}{LShift Up} -; #c::Send {LCtrl down}c{LCtrl Up} -; ; Paste -; $^v:: -; If not WinActive("ahk_group ConEmu") && not WinActive("ahk_exe cmd.exe"){ -; Send {LCtrl down}{LShift down}v{LCtrl Up}{LShift Up} -; } -; else{ -; Send ^v -; } -; return -; #If +#IfWinActive ahk_group terminals + ; Copy + ^c:: + SetKeyDelay -1 + Send {Blind}{LShift down}{c DownTemp} + return -; #IfWinActive ahk_group posix -; ; Open/Close Tab for those that support it -; $^t:: -; If not WinActive("ahk_group ConEmu"){ -; Send {LCtrl down}{LShift down}t{LCtrl Up}{LShift Up} -; } -; else{ -; Send ^t -; } -; return + ^c up:: + SetKeyDelay -1 + Send {Blind}{c Up}{LShift Up} + return -; $^w:: -; If not WinActive("ahk_group ConEmu"){ -; Send {LCtrl down}{LShift down}w{LCtrl Up}{LShift Up} -; } -; else{ -; Send ^w -; } -; return + ; Sigints - interrupt + $#c::Send {Ctrl down}c{Ctrl up} -; ; End of Line -; #e::Send {LCtrl down}e{LCtrl Up} -; ^e::return -; ; Beginning of Line -; #a::Send {LCtrl down}a{LCtrl Up} -; ^a::return -; ;^l::Send clear{Enter} -; ;#l::return -; ; Clear Terminal and Scroll Buffer -; ^k::Send clear && printf '\e[3J'{Enter} -; ; Nano editor shortcuts -; #k::Send {LCtrl down}k{LCtrl Up} -; #x::Send {LCtrl down}x{LCtrl Up} -; #o::Send {LCtrl down}o{LCtrl Up} -; #r::Send {LCtrl down}r{LCtrl Up} -; #w::Send {LCtrl down}w{LCtrl Up} -; #\::Send {LCtrl down}\{LCtrl Up} -; #u::Send {LCtrl down}u{LCtrl Up} -; #j::Send {LCtrl down}j{LCtrl Up} -; #t::Send {LCtrl down}t{LCtrl Up} -; #_::Send {LCtrl down}_{LCtrl Up} -; #z::Send {LCtrl down}z{LCtrl Up} -; #If + ; Paste + ^v:: + If WinActive("ahk_group posix"){ + Send {Blind}{Shift down}v{Shift up} + } + else{ + Send {Blind}v + } + return +#If -; ; #IfWinActive ahk_group ConEmu -; ; ; Paste -; ; $^v::Send {Shift down}{Insert}{Shift Up} -; ; #v::Send {LCtrl down}v{LCtrl Up} -; ; #If +#IfWinActive ahk_group posix + ; Open/Close Tab for those that support it + $^t:: + If not WinActive("ahk_group ConEmu"){ + Send {LCtrl down}{LShift down}t{LCtrl Up}{LShift Up} + } + else{ + Send ^t + } + return -; #IfWinActive ahk_exe mintty.exe -; ; Copy -; $^c::Send {Control down}{Insert}{Control Up} -; #c::Send {LCtrl down}c{LCtrl Up} -; ; Paste -; $^v::Send {Shift down}{Insert}{Shift Up} -; #v::Send {LCtrl down}v{LCtrl Up} -; #If + $^w:: + If not WinActive("ahk_group ConEmu"){ + Send {LCtrl down}{LShift down}w{LCtrl Up}{LShift Up} + } + else{ + Send ^w + } + return -; ;Disable win + l key locking (This line must come before any hotkey assignments in the .ahk file) + ; End of Line + ^e:: + SetKeyDelay -1 + Send {Blind}{e DownTemp} + return -; ; Admin privileges required -; ; Sets Workstation Lock to not occur on Win+L -; ; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 1 + ^e up:: + SetKeyDelay -1 + Send {Blind}{e Up} + return -; ; Re-enables Workstation lock on Ctrl+Cmd+Q -; ; Need to Remove Quick Assist and reboot -; ; Remove-WindowsCapability -online -name App.Support.QuickAssist~~~~0.0.1.0 -; #^q:: -; ; re-enable locking workstation, then lock it -; ; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 0 -; ; DllCall("LockWorkStation") -; ; Reload script to relock Workstation Lock -; ; Reload -; ;return \ No newline at end of file + ; Beginning of Line + ^a:: + SetKeyDelay -1 + Send {Blind}{a DownTemp} + return + + ^a up:: + SetKeyDelay -1 + Send {Blind}{a Up} + return + + ^l::Send clear{Enter} + ; #l::return + ; Clear Terminal and Scroll Buffer + ^k::Send clear && printf '\e[3J'{Enter} + ; Nano editor shortcuts + #g::Send {LCtrl down}g{LCtrl Up} + #k::Send {LCtrl down}k{LCtrl Up} + #x::Send {LCtrl down}x{LCtrl Up} + #o::Send {LCtrl down}o{LCtrl Up} + #r::Send {LCtrl down}r{LCtrl Up} + #w::Send {LCtrl down}w{LCtrl Up} + #\::Send {LCtrl down}\{LCtrl Up} + #u::Send {LCtrl down}u{LCtrl Up} + #j::Send {LCtrl down}j{LCtrl Up} + #t::Send {LCtrl down}t{LCtrl Up} + #_::Send {LCtrl down}_{LCtrl Up} + #z::Send {LCtrl down}z{LCtrl Up} + #y::Send {LCtrl down}y{LCtrl Up} + #v::Send {LCtrl down}v{LCtrl Up} +#If \ No newline at end of file diff --git a/windows/mac_kinto.ahk b/windows/mac_kinto.ahk deleted file mode 100644 index 4443889..0000000 --- a/windows/mac_kinto.ahk +++ /dev/null @@ -1,254 +0,0 @@ -SetTitleMatchMode, 2 - -GroupAdd, terminals, ahk_exe ubuntu.exe -GroupAdd, terminals, ahk_exe ConEmu.exe -GroupAdd, terminals, ahk_exe ConEmu64.exe -GroupAdd, terminals, ahk_exe powershell.exe -GroupAdd, terminals, ahk_exe WindowsTerminal.exe -GroupAdd, terminals, ahk_exe Hyper.exe -GroupAdd, terminals, ahk_exe Cmd.exe -GroupAdd, terminals, ahk_exe Terminus.exe -GroupAdd, terminals, Fluent Terminal ahk_class ApplicationFrameWindow - -GroupAdd, posix, ahk_exe ubuntu.exe -GroupAdd, posix, ahk_exe ConEmu.exe -GroupAdd, posix, ahk_exe ConEmu64.exe -GroupAdd, posix, ahk_exe Hyper.exe -GroupAdd, posix, ahk_exe mintty.exe -GroupAdd, posix, ahk_exe Terminus.exe -GroupAdd, posix, Fluent Terminal ahk_class ApplicationFrameWindow - -GroupAdd, ConEmu, ahk_exe ConEmu.exe -GroupAdd, ConEmu, ahk_exe ConEmu64.exe -GroupAdd, ConEmu, ahk_exe WindowsTerminal.exe - -GroupAdd, editors, ahk_exe sublime_text.exe -GroupAdd, editors, ahk_exe VSCodium.exe -GroupAdd, editors, ahk_exe Code.exe - -GroupAdd, vscode, ahk_exe VSCodium.exe -GroupAdd, vscode, ahk_exe Code.exe - -; New AltTab and CtrlTab fix -*tab:: -{ - if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) { - Send {LCtrl down}{LAlt up}{tab} - KeyWait, tab - } else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) { - Send {LCtrl down}{LAlt up}{LShift down}{tab} - KeyWait, tab - ; } else if (GetKeyState("Primary", "P") AND GetKeyState("LShift", "P") = false) { - } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P") = false) { - Send {LAlt down}{tab} - KeyWait, tab - ; } else if (GetKeyState("Primary", "P") AND GetKeyState("LShift", "P")) { - } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) { - Send {LAlt down}{LShift down}{tab} - KeyWait, tab - ; } else if (GetKeyState("Secondary", "P") AND GetKeyState("LShift", "P") = false) { - } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) { - return - ; ; } else if (GetKeyState("Secondary", "P") AND GetKeyState("LShift", "P")) { - } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) { - return - } else { - send {Blind}{tab} - } - return -} - -tab::Send {tab} - -+tab::Send {Shift down}{tab}{Shift up} - -; Basic Remap -; -; Primary::LCtrl -; Secondary::LAlt -; Tertiary::LWin - -$LCtrl::LWin -$LWin::LCtrl - -; Hack to disable start menu on winkey -; $LCtrl up::Send {Ctrl down}{Primary up}{Ctrl up} -$LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} - -; temporary hack to ensure keys don't get stuck -; impacts Alt-Tab fix -; Primary up::Send {LAlt up}{LCtrl up} -$LWin up::Send {LWin up}{LAlt up}{LCtrl up} - -; Close Apps -^q::Send !{F4} - -; Emoji Panel -#^Space::Send {LWin down};{LWin up} - -; Full Screenshot -^+3::Send {PrintScreen} - -; Region Screenshot -^+4::Send #+{S} - -; wordwise support -$^Left::Send {Home} -$^+Left::Send +{Home} -$^Right::Send {End} -$^+Right::Send +{End} -^Up::Send ^{Home} -^+Up::Send ^+{Home} -^Down::Send ^{End} -^+Down::Send ^+{End} -^Backspace::Send +{Home}{Delete} -!Backspace::Send ^{Backspace} -!Left::Send ^{Left} -!+Left::Send ^+{Left} -!Right::Send ^{Right} -!+Right::Send ^+{Right} - -; Cmd+Space Alternative -^Space::Send ^{Esc} - -; ; Sublime Text Remaps for VS Code -#IfWinActive ahk_group vscode ; ST2CODE - ; Remap Ctrl+Shift to behave like macOS Sublimetext - ; Will extend cursor to multiple lines - #+Up::send ^!{Up} ; ST2CODE - #+Down::send ^!{Down} ; ST2CODE - ; Remap Ctrl+Cmd+G to select all matches - #^g::send ^+{L} ; ST2CODE -#If ; ST2CODE - -#IfWinActive ahk_exe sublime_text.exe - ; Remap Ctrl+Shift to behave like macOS Sublimetext - ; Will extend cursor to multiple lines - #+Up::send {shift up}^!{Up} - #+Down::send {shift up}^!{Down} - - ; Remap Ctrl+Cmd+G to select all matches - #^g::send !{F3} -#If - -#IfWinActive ahk_group terminals - ; Copy - ^c:: - SetKeyDelay -1 - Send {Blind}{LShift down}{c DownTemp} - return - - ^c up:: - SetKeyDelay -1 - Send {Blind}{c Up}{LShift Up} - return - - ; Sigints - interrupt - $#c::Send {Ctrl down}c{Ctrl up} - - ; Paste - ^v:: - If WinActive("ahk_group posix"){ - Send {Blind}{Shift down}v{Shift up} - } - else{ - Send {Blind}v - } - return - -#If - -#IfWinActive ahk_group posix - ; Open/Close Tab for those that support it - $^t:: - If not WinActive("ahk_group ConEmu"){ - Send {LCtrl down}{LShift down}t{LCtrl Up}{LShift Up} - } - else{ - Send ^t - } - return - - $^w:: - If not WinActive("ahk_group ConEmu"){ - Send {LCtrl down}{LShift down}w{LCtrl Up}{LShift Up} - } - else{ - Send ^w - } - return - - ; End of Line - ^e:: - SetKeyDelay -1 - Send {Blind}{e DownTemp} - return - - ^e up:: - SetKeyDelay -1 - Send {Blind}{e Up} - return - - ; Beginning of Line - ^a:: - SetKeyDelay -1 - Send {Blind}{a DownTemp} - return - - ^a up:: - SetKeyDelay -1 - Send {Blind}{a Up} - return - - ^l::Send clear{Enter} - ; #l::return - ; Clear Terminal and Scroll Buffer - ^k::Send clear && printf '\e[3J'{Enter} - ; Nano editor shortcuts - #g::Send {LCtrl down}g{LCtrl Up} - #k::Send {LCtrl down}k{LCtrl Up} - #x::Send {LCtrl down}x{LCtrl Up} - #o::Send {LCtrl down}o{LCtrl Up} - #r::Send {LCtrl down}r{LCtrl Up} - #w::Send {LCtrl down}w{LCtrl Up} - #\::Send {LCtrl down}\{LCtrl Up} - #u::Send {LCtrl down}u{LCtrl Up} - #j::Send {LCtrl down}j{LCtrl Up} - #t::Send {LCtrl down}t{LCtrl Up} - #_::Send {LCtrl down}_{LCtrl Up} - #z::Send {LCtrl down}z{LCtrl Up} - #y::Send {LCtrl down}y{LCtrl Up} - #v::Send {LCtrl down}v{LCtrl Up} -#If - -; #IfWinActive ahk_group ConEmu -; ; Paste -; $^v::Send {Shift down}{Insert}{Shift Up} -; #v::Send {LCtrl down}v{LCtrl Up} -; #If - -; #IfWinActive ahk_exe mintty.exe -; ; Copy -; $^c::Send {Control down}{Insert}{Control Up} -; #c::Send {LCtrl down}c{LCtrl Up} -; ; Paste -; $^v::Send {Shift down}{Insert}{Shift Up} -; #v::Send {LCtrl down}v{LCtrl Up} -; #If - -;Disable win + l key locking (This line must come before any hotkey assignments in the .ahk file) - -; Admin privileges required -; Sets Workstation Lock to not occur on Win+L -; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 1 - -; Re-enables Workstation lock on Ctrl+Cmd+Q -; Need to Remove Quick Assist and reboot -; Remove-WindowsCapability -online -name App.Support.QuickAssist~~~~0.0.1.0 -; #^q:: -; re-enable locking workstation, then lock it -; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 0 -; DllCall("LockWorkStation") -; Reload script to relock Workstation Lock -; Reload -;return \ No newline at end of file diff --git a/windows/toggle_kb.bat b/windows/toggle_kb.bat new file mode 100644 index 0000000..8cd118e --- /dev/null +++ b/windows/toggle_kb.bat @@ -0,0 +1,22 @@ +@echo off + +IF "%1"=="mac" goto mac +IF "%1"=="win" goto win + +echo Not found. +goto commonexit + +:win +perl -pi -e "s/(; )(.*)(; WinModifiers)/$2$3/g" "%userprofile%\.kinto\kinto.ahk" +perl -pi -e "s/^(?!;)(.*)(; MacModifiers)/; $1$2/gm" "%userprofile%\.kinto\kinto.ahk" +"C:\Program Files\AutoHotkey\AutoHotkey.exe" "%userprofile%\.kinto\kinto.ahk" +goto commonexit + +:mac +perl -pi -e "s/(; )(.*)(; MacModifiers)/$2$3/g" "%userprofile%\.kinto\kinto.ahk" +perl -pi -e "s/^(?!;)(.*)(; WinModifiers)/; $1$2/gm" "%userprofile%\.kinto\kinto.ahk" +"C:\Program Files\AutoHotkey\AutoHotkey.exe" "%userprofile%\.kinto\kinto.ahk" +goto commonexit + +:commonexit +exit \ No newline at end of file diff --git a/windows/win_kinto.ahk b/windows/win_kinto.ahk deleted file mode 100644 index 8a7ce58..0000000 --- a/windows/win_kinto.ahk +++ /dev/null @@ -1,258 +0,0 @@ -SetTitleMatchMode, 2 - -GroupAdd, terminals, ahk_exe ubuntu.exe -GroupAdd, terminals, ahk_exe ConEmu.exe -GroupAdd, terminals, ahk_exe ConEmu64.exe -GroupAdd, terminals, ahk_exe powershell.exe -GroupAdd, terminals, ahk_exe WindowsTerminal.exe -GroupAdd, terminals, ahk_exe Hyper.exe -GroupAdd, terminals, ahk_exe Cmd.exe -GroupAdd, terminals, Fluent Terminal ahk_class ApplicationFrameWindow - -GroupAdd, posix, ahk_exe ubuntu.exe -GroupAdd, posix, ahk_exe ConEmu.exe -GroupAdd, posix, ahk_exe ConEmu64.exe -GroupAdd, posix, ahk_exe Hyper.exe -GroupAdd, posix, ahk_exe mintty.exe -GroupAdd, posix, Fluent Terminal ahk_class ApplicationFrameWindow - -GroupAdd, ConEmu, ahk_exe ConEmu.exe -GroupAdd, ConEmu, ahk_exe ConEmu64.exe -GroupAdd, ConEmu, ahk_exe WindowsTerminal.exe - -GroupAdd, editors, ahk_exe sublime_text.exe -GroupAdd, editors, ahk_exe VSCodium.exe -GroupAdd, editors, ahk_exe Code.exe - -GroupAdd, vscode, ahk_exe VSCodium.exe -GroupAdd, vscode, ahk_exe Code.exe - -; New AltTab and CtrlTab fix -*tab:: -{ - ; if (GetKeyState("Tertiary", "P") AND GetKeyState("LShift", "P") = false) { - if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) { - ; Send {LCtrl down}{Secondary up}{tab} - Send {LCtrl down}{LWin up}{tab} - KeyWait, tab - ; } else if (GetKeyState("Tertiary", "P") AND GetKeyState("LShift", "P")) { - } else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) { - ; Send {LCtrl down}{Secondary up}{LShift down}{tab} - Send {LCtrl down}{LWin up}{LShift down}{tab} - KeyWait, tab - ; return - ; } else if (GetKeyState("Primary", "P") AND GetKeyState("LShift", "P") = false) { - } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) { - Send {LAlt down}{tab} - KeyWait, tab - ; ; } else if (GetKeyState("Primary", "P") AND GetKeyState("LShift", "P")) { - } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) { - Send {LAlt down}{LShift down}{tab} - KeyWait, tab - ; } else if (GetKeyState("Secondary", "P") AND GetKeyState("LShift", "P")) { - } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) = false { - return - ; } else if (GetKeyState("Secondary", "P") AND GetKeyState("LShift", "P")) { - } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) { - return - } else { - send {Blind}{tab} - } - return -} - -tab::Send {tab} - -+tab::Send {Shift down}{tab}{Shift up} - -; Basic Remap -; -; Primary::LCtrl -; Secondary::LAlt -; Tertiary::LWin - -$LAlt::LCtrl -$LWin::LAlt -$LCtrl::LWin - -; Hack to disable start menu on winkey -; $LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} -$LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} - -; temporary hack to ensure keys don't get stuck -; impacts Alt-Tab fix -; Primary up::Send {LAlt up}{LCtrl up} -$LAlt up::Send {LWin up}{LAlt up}{LCtrl up} -; $LWin up::Send {LWin down}{LAlt up}{LCtrl up}{LWin up} - -; Close Apps -^q::Send !{F4} - -; Emoji Panel -#^Space::Send {LWin down};{LWin up} - -; Full Screenshot -^+3::Send {PrintScreen} - -; Region Screenshot -^+4::Send #+{S} - -; wordwise support -$^Left::Send {Home} -$^+Left::Send +{Home} -$^Right::Send {End} -$^+Right::Send +{End} -^Up::Send ^{Home} -^+Up::Send ^+{Home} -^Down::Send ^{End} -^+Down::Send ^+{End} -^Backspace::Send +{Home}{Delete} -!Backspace::Send ^{Backspace} -!Left::Send ^{Left} -!+Left::Send ^+{Left} -!Right::Send ^{Right} -!+Right::Send ^+{Right} - -; Cmd+Space Alternative -^Space::Send ^{Esc} - -; ; Sublime Text Remaps for VS Code -#IfWinActive ahk_group vscode ; ST2CODE - ; Remap Ctrl+Shift to behave like macOS Sublimetext - ; Will extend cursor to multiple lines - #+Up::send ^!{Up} ; ST2CODE - #+Down::send ^!{Down} ; ST2CODE - ; Remap Ctrl+Cmd+G to select all matches - #^g::send ^+{L} ; ST2CODE -#If ; ST2CODE - -#IfWinActive ahk_exe sublime_text.exe - ; Remap Ctrl+Shift to behave like macOS Sublimetext - ; Will extend cursor to multiple lines - #+Up::send {shift up}^!{Up} - #+Down::send {shift up}^!{Down} - - ; Remap Ctrl+Cmd+G to select all matches - #^g::send !{F3} -#If - -#IfWinActive ahk_group terminals - ; Copy - ^c:: - SetKeyDelay -1 - Send {Ctrl down}{Shift down}{c DownTemp} - return - - ^c up:: - SetKeyDelay -1 - Send {c Up}{Ctrl up}{Shift up} - return - - ; Sigints - interrupt - $#c::Send {Ctrl down}c{Ctrl up} - - ; Paste - ^v:: - If WinActive("ahk_group posix"){ - Send {Blind}{Shift down}v{Shift up} - } - else{ - Send {Blind}v - } - return -#If - -#IfWinActive ahk_group posix - ; Open/Close Tab for those that support it - $^t:: - If not WinActive("ahk_group ConEmu"){ - Send {LCtrl down}{LShift down}t{LCtrl Up}{LShift Up} - } - else{ - Send ^t - } - return - - $^w:: - If not WinActive("ahk_group ConEmu"){ - Send {LCtrl down}{LShift down}w{LCtrl Up}{LShift Up} - } - else{ - Send ^w - } - return - - ; End of Line - ^e:: - SetKeyDelay -1 - Send {Blind}{e DownTemp} - return - - ^e up:: - SetKeyDelay -1 - Send {Blind}{e Up} - return - - ; Beginning of Line - ^a:: - SetKeyDelay -1 - Send {Blind}{a DownTemp} - return - - ^a up:: - SetKeyDelay -1 - Send {Blind}{a Up} - return - - ^l::Send clear{Enter} - ; #l::return - ; Clear Terminal and Scroll Buffer - ^k::Send clear && printf '\e[3J'{Enter} - ; Nano editor shortcuts - #g::Send {LCtrl down}g{LCtrl Up} - #k::Send {LCtrl down}k{LCtrl Up} - #x::Send {LCtrl down}x{LCtrl Up} - #o::Send {LCtrl down}o{LCtrl Up} - #r::Send {LCtrl down}r{LCtrl Up} - #w::Send {LCtrl down}w{LCtrl Up} - #\::Send {LCtrl down}\{LCtrl Up} - #u::Send {LCtrl down}u{LCtrl Up} - #j::Send {LCtrl down}j{LCtrl Up} - #t::Send {LCtrl down}t{LCtrl Up} - #_::Send {LCtrl down}_{LCtrl Up} - #z::Send {LCtrl down}z{LCtrl Up} - #y::Send {LCtrl down}y{LCtrl Up} - #v::Send {LCtrl down}v{LCtrl Up} -#If - -; #IfWinActive ahk_group ConEmu -; ; Paste -; $^v::Send {Shift down}{Insert}{Shift Up} -; #v::Send {LCtrl down}v{LCtrl Up} -; #If - -; #IfWinActive ahk_exe mintty.exe -; ; Copy -; $^c::Send {Control down}{Insert}{Control Up} -; #c::Send {LCtrl down}c{LCtrl Up} -; ; Paste -; $^v::Send {Shift down}{Insert}{Shift Up} -; #v::Send {LCtrl down}v{LCtrl Up} -; #If - -;Disable win + l key locking (This line must come before any hotkey assignments in the .ahk file) - -; Admin privileges required -; Sets Workstation Lock to not occur on Win+L -; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 1 - -; Re-enables Workstation lock on Ctrl+Cmd+Q -; Need to Remove Quick Assist and reboot -; Remove-WindowsCapability -online -name App.Support.QuickAssist~~~~0.0.1.0 -; #^q:: -; re-enable locking workstation, then lock it -; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 0 -; DllCall("LockWorkStation") -; Reload script to relock Workstation Lock -; Reload -;return \ No newline at end of file