Files
kinto/windows/kinto.ahk
2023-04-02 23:21:12 -05:00

1216 lines
58 KiB
AutoHotkey
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#SingleInstance force
#NoEnv
#Persistent
; DetectHiddenWindows, On ; Autodetect
; Run, %A_ScriptDir%\detectUSB.ahk ; Autodetect
; Enable Left clicks on Kinto Icon
; https://www.autohotkey.com/boards/viewtopic.php?t=9501
OnMessage(0x404, "AHK_NOTIFYICON")
AHK_NOTIFYICON(wParam, lParam)
{
if (lParam = 0x202) { ; user left-clicked tray icon
;ADD ANY SUBROUTINE OR FUNCTION HERE
Menu, Tray, Show
return
}
else if (lParam = 0x203) { ; user double left-clicked tray icon
;ADD ANY SUBROUTINE OR FUNCTION HERE
Menu, Tray, Show
return
}
}
; End Enable Left clicks
; I_Icon = %A_ScriptDir%\assets\kinto-white-invert.ico ; MacModifiers
; IfExist, %I_Icon% ; MacModifiers
; Menu, Tray, Icon, %I_Icon%,, 1 ; MacModifiers
; Menu, Tray, Tip, Mac - Kinto ; MacModifiers
; I_Icon = %A_ScriptDir%\assets\kinto-white-invert.ico ; WinModifiers/CB/IBM
; IfExist, %I_Icon% ; WinModifiers/CB/IBM
; Menu, Tray, Icon, %I_Icon%,, 1 ; WinModifiers/CB/IBM
; Menu, Tray, Tip, Windows - Kinto ; WinModifiers
; Menu, Tray, Tip, Chromebook - Kinto ; Chromebook
; Menu, Tray, Tip, IBM - Kinto ; IBM
Menu, Keyboards, Add, Windows, winkb
Menu, Keyboards, Add, Apple, mackb
Menu, Keyboards, Add, Chromebook, chromekb
Menu, Keyboards, Add, IBM (No Super/Win key), ibmkb
paramkb=%1%
if paramkb = mac
checkKB = Apple
if paramkb = win
checkKB = Windows
if paramkb = chrome
checkKB = Chromebook
if paramkb = ibm
checkKB = IBM (No Super/Win key)
menu, Keyboards, check, %checkKB%
; Set Tray menu
; Menu, Tray, Standard
Menu, Tray, NoStandard ; to remove default menu
Menu, Tray, Add, Keyboard Types, :Keyboards
Menu, Tray, Add, Autodetect Keyboards, autodetect
; Menu, Tray, check, Autodetect Keyboards ; Autodetect
; Menu, Tray, disable, Autodetect Keyboards ; CB/IBM
Menu, Tray, Add, Suspend Kinto, tray_suspend
; Add tray menu item for toggling Option key special character entry scheme
Menu, Tray, Add, OptSpecialChars Shift+Opt+Cmd+O, toggle_optspecialchars
; Menu, Tray, Add, Returns to Desktop, min
Menu, Tray, Add
Menu, Tray, Add, Close, Exit
Menu, Tray, Click, 1
winkb(){
Run, "%A_ScriptDir%\NoShell.vbs" "%A_ScriptDir%\toggle_kb.bat" win, "%A_ScriptDir%"
}
mackb(){
Run, "%A_ScriptDir%\NoShell.vbs" "%A_ScriptDir%\toggle_kb.bat" mac, "%A_ScriptDir%"
}
chromekb(){
Run, "%A_ScriptDir%\NoShell.vbs" "%A_ScriptDir%\toggle_kb.bat" chrome, "%A_ScriptDir%"
}
ibmkb(){
Run, "%A_ScriptDir%\NoShell.vbs" "%A_ScriptDir%\toggle_kb.bat" ibm, "%A_ScriptDir%"
}
autodetect(){
IfWinExist, detectUSB.ahk
WinClose
Run, "%A_ScriptDir%\NoShell.vbs" "%A_ScriptDir%\toggle_kb.bat" auto, "%A_ScriptDir%"
}
min(){
; Refocus last active Window
Send {LAlt down}{tab}{LAlt up}
}
tray_suspend(){
suspend toggle
if (a_isSuspended = 1){
Gosub ReleaseModifiers
menu, tray, check , Suspend Kinto
I_Icon = %A_ScriptDir%\assets\kinto-white.ico
Menu, Tray, Icon, %I_Icon%,, 1
Menu, Tray, Tip, Suspended - Kinto
IfWinExist, detectUSB.ahk
WinClose
}
else{
menu, tray, unCheck, Suspend Kinto
; I_Icon = %A_ScriptDir%\assets\kinto-white-invert.ico ; MacModifiers
; I_Icon = %A_ScriptDir%\assets\kinto-white-invert.ico ; WinModifiers/CB/IBM
; Menu, Tray, Tip, Mac - Kinto ; MacModifiers
; Menu, Tray, Tip, Windows - Kinto ; WinModifiers
; Menu, Tray, Tip, Chromebook - Kinto ; Chromebook
; Menu, Tray, Tip, IBM - Kinto ; IBM
Menu, Tray, Icon, %I_Icon%,,1
Run, %A_ScriptDir%\detectUSB.ahk
}
; Refocus last active Window
Send {LAlt down}{tab}{LAlt up}
}
Exit() {
Gosub ReleaseModifiers
IfWinExist, detectUSB.ahk
WinClose
ExitApp
}
SetTitleMatchMode, 2
GroupAdd, terminals, ahk_exe ubuntu.exe
GroupAdd, terminals, ahk_exe ubuntu2004.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 mintty.exe
GroupAdd, terminals, ahk_exe Cmd.exe
GroupAdd, terminals, ahk_exe box.exe
GroupAdd, terminals, ahk_exe Terminus.exe
GroupAdd, terminals, Fluent Terminal ahk_class ApplicationFrameWindow
GroupAdd, terminals, ahk_class Console_2_Main
GroupAdd, posix, ahk_exe ubuntu.exe
GroupAdd, posix, ahk_exe ubuntu2004.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, posix, ahk_class Console_2_Main
GroupAdd, posix, ahk_exe WindowsTerminal.exe
GroupAdd, ConEmu, ahk_exe ConEmu.exe
GroupAdd, ConEmu, ahk_exe ConEmu64.exe
GroupAdd, ExcPaste, ahk_exe Cmd.exe
GroupAdd, ExcPaste, ahk_exe mintty.exe
GroupAdd, editors, ahk_exe sublime_text.exe
GroupAdd, editors, ahk_exe VSCodium.exe
GroupAdd, editors, ahk_exe Code.exe
GroupAdd, browsers, ahk_exe chrome.exe
GroupAdd, browsers, ahk_exe opera.exe
GroupAdd, browsers, ahk_exe firefox.exe
GroupAdd, browsers, ahk_exe msedge.exe
; Disable Key Remapping for Virtual Machines
; Disable for Remote desktop solutions too
GroupAdd, remotes, ahk_exe VirtualBoxVM.exe
GroupAdd, remotes, ahk_exe mstsc.exe
GroupAdd, remotes, ahk_exe anydesk.exe
GroupAdd, remotes, ahk_exe msrdc.exe
GroupAdd, remotes, ahk_exe nxplayer.bin
GroupAdd, remotes, ahk_exe vmconnect.exe
GroupAdd, remotes, ahk_exe RemoteDesktopManagerFree.exe
GroupAdd, remotes, ahk_exe vncviewer.exe
GroupAdd, remotes, Remote Desktop ahk_class ApplicationFrameWindow
; Disabled Edge for now - no ability to close all instances
; GroupAdd, browsers, Microsoft Edge ahk_class ApplicationFrameWindow
GroupAdd, vscode, ahk_exe VSCodium.exe
GroupAdd, vscode, ahk_exe Code.exe
GroupAdd, vstudio, ahk_exe devenv.exe
GroupAdd, intellij, ahk_exe idea.exe
GroupAdd, intellij, ahk_exe idea64.exe
; SetCapsLockState, AlwaysOff ; CB/IBM
; Keyboards w/o media keys can use this Remap
; This will replace unneeded dedicated keys
; with most commonly used media keys
;
; Insert::SoundSet, +1, , mute ; Toggles Speaker
; +Insert::Insert ; Shift Insert maps to Insert
; Home::SoundSetWaveVolume, -10 ; Decrease volume
; PgUp::SoundSetWaveVolume, +10 ; Increase volume
; Delete::Send {Media_Prev} ; Previous
; End::Send {Media_Play_Pause} ; Pause/Play
; PgDn::Send {Media_Next} ; Next
; Virtual Desktop Hack via TotalSpaces2 - macOS Remote Desktop
; Custom Bind Gestures in Windows
; Shift-F8 on Left Swipe
; Shift-F9 on Right Swipe
#IfWinActive ahk_exe nxplayer.bin
+F8::Send !+- ; macOS TotalSpaces2 - Space Left
+F6::Send !+= ; macOS TotalSpaces2 - Space Right
#If
; +F8::Send {LCtrl down}{LWin down}{left}{LCtrl up}{LWin up} ; Comment out on host machine
; +F6::Send {LCtrl down}{LWin down}{right}{LCtrl up}{LWin up} ; Comment out on host machine
; #########################################################################
; ############# START OF FINDER MODS FOR FILE MANAGERS ################
; #########################################################################
; Finder Mods for Windows File Explorer (explore.exe)
#IfWinActive ahk_class CabinetWClass ahk_exe explorer.exe
^i::Send !{Enter} ; Cmd+i: Get Info / Properties
^r::Send {F5} ; Cmd+R: Refresh view (Not actually a Finder shortcut? But works in Linux file browsers too.)
^1::Send ^+2 ; Cmd+1: View as Icons
^2::Send ^+6 ; Cmd+2: View as List (Detailed)
^3::Send ^+5 ; Cmd+3: View as List (Compact)
^4::Send ^+1 ; Cmd+4: View as Gallery
^Up::Send !{Up} ; Cmd+Up: Up to parent folder
^Left::Send !{Left} ; Cmd+Left: Go to prior location in history
^Right::Send !{Right} ; Cmd+Right: Go to next location in history
^Down:: ; Cmd-Down: Navigate into the selected directory
For window in ComObjCreate("Shell.Application").Windows
If WinActive() = window.hwnd
For item in window.document.SelectedItems {
window.Navigate(item.Path)
Return
}
Return
^[::Send !{Left} ; Cmd+Left_Brace: Go to prior location in history
^]::Send !{Right} ; Cmd+Right_Brace: Go to next location in history
^+o::Send ^{Enter} ; Cmd+Shift+o: Open in new window (tabs not available)
^Delete::Send {Delete} ; Cmd+Delete: Delete / Send to Trash
^BackSpace::Send {Delete} ; Cmd+Delete: Delete / Send to Trash
^d::return, ; Block the unusual Explorer "delete" shortcut of Ctrl+D, used for "bookmark" in similar apps
$Enter:: ; Use Enter key to rename (F2), unless focus is inside a text input field.
ControlGetFocus, fc, A
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1,SysTreeView321
Send {Enter}
Else Send {F2}
Return
$BackSpace:: ; Backspace (without Cmd): Block Backspace key with error beep, unless inside text input field
ControlGetFocus, fc, A
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1
Send {BackSpace}
Else SoundBeep, 600, 300
Return
$Delete:: ; Delete (without Cmd): Block Delete key with error beep, unless inside text input field
ControlGetFocus, fc, A
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1
Send {Delete}
Else SoundBeep, 600, 300
Return
#IfWinActive
; #########################################################################
; ############## END OF FINDER MODS FOR FILE MANAGERS #################
; #########################################################################
#IfWinNotActive ahk_group remotes
; wordwise support
^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}
$^Left::Send {Home}
$^+Left::Send +{Home}
$^Right::Send {End}
$^+Right::Send +{End}
#If
#IfWinNotActive ahk_group remotes
; 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
; Send {LCtrl down}{CapsLock up}{tab} ; CB/IBM
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/CB
; Send {LCtrl down}{LAlt up}{LShift down}{tab} ; MacModifiers
; Send {LCtrl down}{CapsLock up}{LShift down}{tab} ; IBM
KeyWait, tab
; Primary
; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) { ; WinModifiers/CB/IBM
; } 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/CB/IBM
; } 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/CB
; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) { ; MacModifiers
; } else if (GetKeyState("CapsLock", "P") AND GetKeyState("LShift", "P")) = false { ; IBM
return
; Secondary
; } else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) { ; WinModifiers/CB
; } else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) { ; MacModifiers
; } else if (GetKeyState("CapsLock", "P") AND GetKeyState("LShift", "P")) { ; IBM
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 ; CB/IBM
; $RAlt::RCtrl ; IBM
; $RCtrl::RAlt ; CB/IBM
; $CapsLock::LWin ; IBM
; $LCtrl::LAlt ; CB/IBM
; $LAlt::LCtrl ; WinModifiers
; $RAlt::RCtrl ; WinModifiers
; $RCtrl::RAlt ; WinModifiers
; $LWin::LAlt ; WinModifiers
; $LCtrl::LWin ; WinModifiers
; $LWin::LCtrl ; MacModifiers
; $RWin::RCtrl ; MacModifiers
; $LCtrl::LWin ; MacModifiers
; Hack to disable start menu on winkey
; Static - Does not apply to IBM or Chromebooks
; $LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} ; Default
; LWin::return ; Chromebook
; RWin::return ; Chromebook
; RAlt::return ; Chromebook
; Disable Win-Up/Down - interferes with Sublime text 3 multi-cursors
#Down::return
#Up::return
; 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
; $LAlt up::Send {LWin up}{CapsLock up}{LAlt up}{LCtrl up} ; CB/IBM
!Enter::
{
if (GetKeyState("RAlt", "P")) {
Send {Insert}
}
else{
Send {Alt down}{Enter}{Alt up}
}
Return
}
; Remap Alt+Esc to Break/Pause
!Esc::SendInput, {Pause}
; Go up or down a page
#IfWinNotActive ahk_group editors
$!Down::Send {PgDn}
$!Up::Send {PgUp}
#If
; Close Apps
^q::Send !{F4}
; Minimize specific Window
^m::WinMinimize, A
; Minimize all but Active Window
!^m::
WinGet, winid ,, A
WinMinimizeAll
WinActivate ahk_id %winid%
return
; hide all instances of active Program
^h::
WinGetClass, class, A
WinGet, AllWindows, List
loop %AllWindows% {
WinGetClass, WinClass, % "ahk_id " AllWindows%A_Index%
if(InStr(WinClass,class)){
WinMinimize, % "ahk_id " AllWindows%A_Index%
}
}
return
; hide all but active program
!^h::
WinGetClass, class, A
WinMinimizeAll
WinGet, AllWindows, List
loop %AllWindows% {
WinGetClass, WinClass, % "ahk_id " AllWindows%A_Index%
if(InStr(WinClass,class)){
WinRestore, % "ahk_id " AllWindows%A_Index%
}
}
return
; Show Desktop
^F3::Send #d
; Emoji Panel
; #^Space::Send {LWin down};{LWin up} ; Default
; !^Space::Send {LWin down};{LWin up} ; CB/IBM
; Full Screenshot
^+3::Send {PrintScreen}
; Region Screenshot
^+4::Send #+{S}
; Open File Browser
; !^space::Send #e ; Default
; #^space::Send #e ; CB/IBM
; #if GetKeyState("LWin", "P") || GetKeyState("RAlt", "P") ; Chromebook
; Space::Send ^{Esc} ; Chromebook
; 0::Send #0 ; Chromebook
; 1::Send #1 ; Chromebook
; 2::Send #2 ; Chromebook
; 3::Send #3 ; Chromebook
; 4::Send #4 ; Chromebook
; 5::Send #5 ; Chromebook
; 6::Send #6 ; Chromebook
; 7::Send #7 ; Chromebook
; 8::Send #8 ; Chromebook
; 9::Send #9 ; Chromebook
; -::Send #- ; Chromebook
; =::Send #= ; Chromebook
; `::Send #` ; Chromebook
; `;::Send #; ; Chromebook
; a::Send #a ; Chromebook
; b::Send #b ; Chromebook
; c::Send #c ; Chromebook
; d::Send #d ; Chromebook
; e::Send #e ; Chromebook
; f::Send #f ; Chromebook
; g::Send #g ; Chromebook
; h::Send #h ; Chromebook
; i::Send #i ; Chromebook
; j::Send #j ; Chromebook
; k::Send #k ; Chromebook
; l::Send #l ; Chromebook
; m::Send #m ; Chromebook
; n::Send #n ; Chromebook
; o::Send #o ; Chromebook
; p::Send #p ; Chromebook
; q::Send #q ; Chromebook
; r::Send #r ; Chromebook
; s::Send #s ; Chromebook
; t::Send #t ; Chromebook
; u::Send #u ; Chromebook
; v::Send #v ; Chromebook
; w::Send #w ; Chromebook
; x::Send #x ; Chromebook
; y::Send #y ; Chromebook
; z::Send #z ; Chromebook
; #If ; Chromebook
#If Not WinActive("ahk_group terminals") and Not WinActive("ahk_group remotes")
^.::Send {Esc}
; emacs style
#n::Send {Down}
#p::Send {Up}
#f::Send {Right}
#b::Send {Left}
#a::Send {Home}
#e::Send {End}
#d::Send {Delete}
#k::Send +{End}{Backspace}
#If
; Cmd+Space Alternative
$^Space::Send ^{Esc}
#IfWinActive ahk_group intellij
; $#c::Send ^{c} ; Default - Sigints interrupt
; $!c::Send ^{c} ; CB/IBM
; General
^0::Send !{0} ;Open corresponding tool window
^1::Send !{1} ;Open corresponding tool window
^2::Send !{2} ;Open corresponding tool window
^3::Send !{3} ;Open corresponding tool window
^4::Send !{4} ;Open corresponding tool window
^5::Send !{5} ;Open corresponding tool window
^6::Send !{6} ;Open corresponding tool window
^7::Send !{7} ;Open corresponding tool window
^8::Send !{8} ;Open corresponding tool window
^9::Send !{9} ;Open corresponding tool window
#`::Send ^` ;Quick switch current scheme
^,::Send ^!s ;Open Settings dialog
^;::Send ^!+s ;Open Project Structure dialog
; Debugging
^!r::Send {F9} ;Resume program
; Search/Replace
^g::Send {F3} ;Find next
^+F3::Send +{F3} ;Find previous
#g::Send !j ;Select next occurrence
^#g::Send ^!+j ;Select all occurrences
#+g::Send !+j ;Unselect occurrence
; Editing
; #Space::Send ^{Space} ; Default - Basic code completion
; !Space::Send ^{Space} ; CB/IBM - Basic code completion
#+Space::Send ^+{Space} ;Smart code completion
#j::Send ^q ;Quick documentation lookup
^n::Send !{Insert} ;Generate code...
#o::Send ^o ;Override methods
#i::Send ^i ;Implement methods
!Up::Send ^w ;Extend selection
!Down::Send ^+w ;Shrink selection
#+q::Send !q ;Context info
#!o::Send ^!o ;Optimize imports
#!i::Send ^!i ;Auto-indent line(s)
$^Backspace::Send ^y ;Delete line at caret
#+j::Send ^+j ;Smart line join
!Delete::Send ^{Delete} ;Delete to word end
!Backspace::Send ^{Backspace} ;Delete to word start
^+::Send ^{NumpadAdd} ;Expand code block
^-::Send ^{NumpadSub} ;Collapse code block
^++::Send ^+{NumpadAdd} ;Expand all
^+-::Send ^+{NumpadSub} ;Collapse all
^w::Send ^{F4} ;Close active editor tab
; Refactoring
^Delete::Send !{Delete} ;Safe Delete
^T::Send ^!+T ;Refactor this
; Navigation
^o::Send ^n ;Go to class
^+o::Send ^+n ;Go to file
^!o::Send ^!+n ;Go to symbol
#Right::Send !{Right} ;Go to next editor tab
#Left::Send !{Left} ;Go to previous editor tab
#l::Send ^g ;Go to line
#e::Send ^e ;Recent files popup
; !Space::Send ^+i ; Default - Open quick definition lookup
; #Space::Send ^+i ; CB/IBM - Open quick definition lookup
^Y::Send ^+i ;Open quick definition lookup
#+b::Send ^+b ;Go to type declaration
#Up::Send !{Up} ;Go to previous
#Down::Send !{Down} ;Go to next method
#h::Send ^h ;Type hierarchy
#!h::Send ^!h ;Call hierarchy
^Down::Send ^{Enter} ;Edit source/View source
!Home::Send !{Home} ;Show navigation bar
F2::Send {F11} ;Toggle bookmark
#F3::Send ^{F11} ;Toggle bookmark with mnemonic
#0::Send ^{0} ;Go to numbered bookmark
#1::Send ^{1} ;Go to numbered bookmark
#2::Send ^{2} ;Go to numbered bookmark
#3::Send ^{3} ;Go to numbered bookmark
#4::Send ^{4} ;Go to numbered bookmark
#5::Send ^{5} ;Go to numbered bookmark
#6::Send ^{6} ;Go to numbered bookmark
#7::Send ^{7} ;Go to numbered bookmark
#8::Send ^{8} ;Go to numbered bookmark
#9::Send ^{9} ;Go to numbered bookmark
^F3::Send +{F11} ;Show bookmarks
; Compile and Run
#!r::Send !+{F10} ;Select configuration and run
#!d::Send !+{F9} ;Select configuration and debug
#r::Send +{F10} ;Run
#d::Send +{F9} ;Debug
#+r::Send ^+{F10} ;Run context configuration from editor
#+d::Send ^+{F9} ;Debug context configuration from editor
; VCS/Local History
#v::Send !` ;VCS quick popup
#If
; Close all browsers
#IfWinActive ahk_group browsers
; Page Navigation
^[::send !{Left} ; Go to prior page
^]::send !{Right} ; Go to next page
;Tab Navigation
^+[::send ^{PgUp} ; Go to prior tab (left)
^+]::send ^{PgDn} ; Go to next tab (right)
^!Left::send ^{PgUp} ; Go to prior tab (left)
^!Right::send ^{PgDn} ; Go to next tab (right)
#Left::send ^{PgUp} ; Go to prior tab (left)
#Right::send ^{PgDn} ; Go to next tab (right)
^q::send {Alt Down}f{Alt Up}x ; exit all windows
; Dev Tools
!^i::send {Ctrl Down}{Shift Down}i{Shift Up}{Ctrl Up}
!^j::send {Ctrl Down}{Shift Down}j{Shift Up}{Ctrl Up}
; Open preferences
#IfWinActive ahk_exe firefox.exe
^,::send, {Ctrl Down}t{Ctrl Up}about:preferences{Enter}
^+n::send ^+p
#If
#IfWinActive ahk_exe chrome.exe
^,::send {Alt Down}e{Alt Up}s{Enter}
#If
#IfWinActive ahk_exe msedge.exe
^,::send {Alt Down}e{Alt Up}s{Enter}
#If
#IfWinActive ahk_exe opera.exe
^,::send {Ctrl Down}{F12}{Ctrl Up}
#If
#If
; Sublime Text Remaps for VS Code
#IfWinActive ahk_group vscode
#p::send {Up} ; Allow for traversing quick list
#n::send {Down} ; Allow for traversing quick list
; Remap Ctrl+Shift to behave like macOS Sublimetext
; Will extend cursor to multiple lines
; #+Up::send ^!{Up} ; Default - ST2CODE
; !+Up::send ^!{Up} ; CB/IBM - ST2CODE
; #+Down::send ^!{Down} ; Default - ST2CODE
; !+Down::send ^!{Down} ; CB/IBM - ST2CODE
; Remap Ctrl+Cmd+G to select all matches
; #^g::send ^+{L} ; Default - ST2CODE
; !^g::send ^+{L} ; CB/IBM - ST2CODE
!+g::send ^+{G} ; View source control
; $#c::Send {Ctrl down}c{Ctrl up} ; Default - Sigints interrupt
; $!c::Send {Ctrl down}c{Ctrl up} ; CB/IBM
; $#x::Send {Ctrl down}x{Ctrl up} ; Default - Sigints interrupt
; $!x::Send {Ctrl down}x{Ctrl up} ; CB/IBM
; #Space::Send ^{Space} ; Default - Basic code completion
; !Space::Send ^{Space} ; CB/IBM - Basic code completion
#If
#IfWinActive ahk_exe sublime_text.exe
; #x::Send ^{x} ; Default - Terminal - Ctrl-x
; #c::Send ^{c} ; Default - Terminal - Ctrl-c sigint
; !x::Send ^{x} ; CB/IBM
; !c::Send ^{c} ; CB/IBM - Sigint
; #c::send ^{Pause} ; cancel_build
; #Space::Send ^{Space} ; Default - Basic code completion
; !Space::Send ^{Space} ; CB/IBM - Basic code completion
#^Up::send !{O} ; Switch file
#^f::send {F11} ; toggle_full_screen
^!v::send {Ctrl Down}k{Ctrl Up}{Ctrl Down}v{Ctrl Up} ; paste_from_history
^Up::Return ; cancel scroll_lines up
^!Up::send ^{Up} ; scroll_lines up
^Down::Return ; cancel scroll_lines down
^!Down::send ^{Down} ; scroll_lines down
; #+Up::send {shift up}^!{Up} ; Default - multi-cursor up
; #+Down::send {shift up}^!{Down} ; Default - multi-cursor down
; !+Up::send {shift up}^!{Up} ; CB/IBM - multi-cursor up
; !+Down::send {shift up}^!{Down} ; CB/IBM - multi-cursor down
^PgDn::Return ; cancel next_view
^PgUp::Return ; cancel prev_view
^+{::send ^{PgDn} ; next_view
^+}::send ^{PgUp} ; prev_view
^!Right::send ^{PgDn} ; next_view
^!Left::send ^{PgUp} ; prev_view
Insert::Return ; cancel toggle_overwrite
^!O::send {Insert} ; toggle_overwrite
; !c::Return ; Default - cancel toggle_case_sensitive
^!c::send !{c} ; toggle_case_sensitive
; ^h::Return ; cancel replace
^!f::send ^{h} ; replace
^+h::Return ; cancel replace_next
^!e::send ^+{h} ; replace_next
F3::Return ; cancel find_next
^g::send {F3} ; find_next
#g::send ^{g} ; goto line - disable game bar - Start menu -> Game bar shortcuts -> toggle Off
*F3::Return ; cancel find_prev, find_under, find_all_under
^+g::send +{F3} ; find_prev
#!g::send ^{F3} ; find_under
#!+g::send ^+{F3} ; find_under_prev
; #^g::send !{F3} ; Default - find_all_under
; !^g::send !{F3} ; CB/IBM - find_all_under
^+Up::Return ; cancel swap_line_up
#!Up::send ^+{Up} ; swap_line_up
^+Down::Return ; cancel swap_line_down
#!Down::send ^+{Down} ; swap_line_down
^Pause::Return ; cancel cancel_build
; #c::send ^{Pause} ; cancel_build
F9::Return ; cancel sort_lines case_s false
F5::send {F9} ; sort_lines case_s false
#F9::Return ; cancel sort_lines case_s true
#F5::send #{F9} ; sort_lines case_s true
!+1::Return ; cancel set_layout
^!1::send !+1 ; set_layout
!+2::Return ; cancel set_layout
^!2::send !+2 ; set_layout
!+3::Return ; cancel set_layout
^!3::send !+3 ; set_layout
!+4::Return ; cancel set_layout
^!4::send !+4 ; set_layout
!+5::Return ; cancel set_layout
^!5::send !+5 ; set_layout
!+8::Return ; cancel set_layout
^!8::send !+8 ; set_layout
!+9::Return ; cancel set_layout
^!9::send !+9 ; set_layout
#If
#IfWinActive ahk_group terminals
; End of Line
; #e:: ; Default
; !e:: ; CB/IBM
Send {End}
return
; Beginning of Line
; #a:: ; Default
; !a:: ; CB/IBM
Send {Home}
return
; Copy
^c::
If WinActive("ahk_exe cmd.exe") OR WinActive("ahk_exe box.exe"){
Send {Enter}
}
else if WinActive("ahk_exe mintty.exe"){
SetKeyDelay -1
Send {Blind}{Insert}
}
; else if WinActive("ahk_exe WindowsTerminal.exe"){ ; WinTerm
; SetKeyDelay -1 ; WinTerm
; Send {Blind}{F13} ; WinTerm
; } ; WinTerm
else{
SetKeyDelay -1
Send {Blind}{LShift down}{c DownTemp}
}
return
^c up::
If not WinActive("ahk_group cmd.exe") OR WinActive("ahk_exe box.exe"){
SetKeyDelay -1
Send {Blind}{c Up}{LShift Up}
}
return
; Sigints - interrupt
; $#c::Send {Ctrl down}c{Ctrl up} ; Default
; $!c::Send {Ctrl down}c{Ctrl up} ; CB/IBM
$^.::Send {Ctrl down}c{Ctrl up}
; Windows Terminal
; Ctrl+Shift+C should do nothing
If WinActive("ahk_exe WindowsTerminal.exe"){
$#+c::return
}
; Paste
$^v::
If WinActive("ahk_exe mintty.exe"){
Send {Shift down}{Insert}{Shift up}
}
else if WinActive("ahk_group posix"){
Send {Blind}{Shift down}v{Shift up}
}
else if WinActive("ahk_exe box.exe"){
SendEvent {RButton}
}
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") AND not WinActive("ahk_class Console_2_Main"){
Send {Blind}{LShift down}t{LShift Up}
}
else if WinActive("ahk_class Console_2_Main"){
Send {Blind}{F1}{LShift Up}
}
else{
Send {Blind}t
}
return
$^w::
If not WinActive("ahk_group ConEmu"){
Send {Blind}{LShift down}w{LShift Up}
}
else{
Send ^w
}
return
^l::Send clear{Enter}
; #l::return
; Clear Terminal and Scroll Buffer
^k::Send clear && printf '\e[3J'{Enter}
; Remap Physical Ctrl back to Ctrl
; #0::Send {LCtrl down}0{Ctrl up} ; Default
; #1::Send {LCtrl down}1{Ctrl up} ; Default
; #2::Send {LCtrl down}2{Ctrl up} ; Default
; #3::Send {LCtrl down}3{Ctrl up} ; Default
; #4::Send {LCtrl down}4{Ctrl up} ; Default
; #5::Send {LCtrl down}5{Ctrl up} ; Default
; #6::Send {LCtrl down}6{Ctrl up} ; Default
; #7::Send {LCtrl down}7{Ctrl up} ; Default
; #8::Send {LCtrl down}8{Ctrl up} ; Default
; #9::Send {LCtrl down}9{Ctrl up} ; Default
; #-::Send {LCtrl down}-{Ctrl up} ; Default
; #=::Send {LCtrl down}={Ctrl up} ; Default
; #`::Send {LCtrl down}`{Ctrl up} ; Default
; #a::Send {LCtrl down}a{Ctrl up} ; Default
; #b::Send {LCtrl down}b{Ctrl up} ; Default
; #c::Send {LCtrl down}c{Ctrl up} ; Default
; #d::Send {LCtrl down}d{Ctrl up} ; Default
; #e::Send {LCtrl down}e{Ctrl up} ; Default
; #f::Send {LCtrl down}f{Ctrl up} ; Default
; #g::Send {LCtrl down}g{Ctrl up} ; Default
; #h::Send {LCtrl down}h{Ctrl up} ; Default
; #i::Send {LCtrl down}i{Ctrl up} ; Default
; #j::Send {LCtrl down}j{Ctrl up} ; Default
; #k::Send {LCtrl down}k{Ctrl up} ; Default
; #l::Send {LCtrl down}l{Ctrl up} ; Default
; #m::Send {LCtrl down}m{Ctrl up} ; Default
; #n::Send {LCtrl down}n{Ctrl up} ; Default
; #o::Send {LCtrl down}o{Ctrl up} ; Default
; #p::Send {LCtrl down}p{Ctrl up} ; Default
; #q::Send {LCtrl down}q{Ctrl up} ; Default
; #r::Send {LCtrl down}r{Ctrl up} ; Default
; #s::Send {LCtrl down}s{Ctrl up} ; Default
; #t::Send {LCtrl down}t{Ctrl up} ; Default
; #u::Send {LCtrl down}u{Ctrl up} ; Default
; #v::Send {LCtrl down}v{Ctrl up} ; Default
; #w::Send {LCtrl down}w{Ctrl up} ; Default
; #x::Send {LCtrl down}x{Ctrl up} ; Default
; #y::Send {LCtrl down}y{Ctrl up} ; Default
; #z::Send {LCtrl down}z{Ctrl up} ; Default
; !0::Send {LCtrl down}0{Ctrl up} ; CB/IBM
; !1::Send {LCtrl down}1{Ctrl up} ; CB/IBM
; !2::Send {LCtrl down}2{Ctrl up} ; CB/IBM
; !3::Send {LCtrl down}3{Ctrl up} ; CB/IBM
; !4::Send {LCtrl down}4{Ctrl up} ; CB/IBM
; !5::Send {LCtrl down}5{Ctrl up} ; CB/IBM
; !6::Send {LCtrl down}6{Ctrl up} ; CB/IBM
; !7::Send {LCtrl down}7{Ctrl up} ; CB/IBM
; !8::Send {LCtrl down}8{Ctrl up} ; CB/IBM
; !9::Send {LCtrl down}9{Ctrl up} ; CB/IBM
; !-::Send {LCtrl down}-{Ctrl up} ; CB/IBM
; !=::Send {LCtrl down}={Ctrl up} ; CB/IBM
; !`::Send {LCtrl down}`{Ctrl up} ; CB/IBM
; !a::Send {LCtrl down}a{Ctrl up} ; CB/IBM
; !b::Send {LCtrl down}b{Ctrl up} ; CB/IBM
; !c::Send {LCtrl down}c{Ctrl up} ; CB/IBM
; !d::Send {LCtrl down}d{Ctrl up} ; CB/IBM
; !e::Send {LCtrl down}e{Ctrl up} ; CB/IBM
; !f::Send {LCtrl down}f{Ctrl up} ; CB/IBM
; !g::Send {LCtrl down}g{Ctrl up} ; CB/IBM
; !h::Send {LCtrl down}h{Ctrl up} ; CB/IBM
; !i::Send {LCtrl down}i{Ctrl up} ; CB/IBM
; !j::Send {LCtrl down}j{Ctrl up} ; CB/IBM
; !k::Send {LCtrl down}k{Ctrl up} ; CB/IBM
; !l::Send {LCtrl down}l{Ctrl up} ; CB/IBM
; !m::Send {LCtrl down}m{Ctrl up} ; CB/IBM
; !n::Send {LCtrl down}n{Ctrl up} ; CB/IBM
; !o::Send {LCtrl down}o{Ctrl up} ; CB/IBM
; !p::Send {LCtrl down}p{Ctrl up} ; CB/IBM
; !q::Send {LCtrl down}q{Ctrl up} ; CB/IBM
; !r::Send {LCtrl down}r{Ctrl up} ; CB/IBM
; !s::Send {LCtrl down}s{Ctrl up} ; CB/IBM
; !t::Send {LCtrl down}t{Ctrl up} ; CB/IBM
; !u::Send {LCtrl down}u{Ctrl up} ; CB/IBM
; !v::Send {LCtrl down}v{Ctrl up} ; CB/IBM
; !w::Send {LCtrl down}w{Ctrl up} ; CB/IBM
; !x::Send {LCtrl down}x{Ctrl up} ; CB/IBM
; !y::Send {LCtrl down}y{Ctrl up} ; CB/IBM
; !z::Send {LCtrl down}z{Ctrl up} ; CB/IBM
#If
#If
ReleaseModifiers:
Send {RCtrl up}
Send {LCtrl up}
Send {RAlt up}
Send {LAlt up}
Send {RWin up}
Send {LWin up}
Send {RShift up}
Send {LShift up}
return
; ###############################################################################################################
; ### Special character insertion like Apple/macOS Option key methods, mapping to Unicode input method
; ### Common symbols available with Option+key or Shift+Option+key, accented keys with Option+Key1, then Key2
; ###############################################################################################################
; Shortcut to activate Option key special character scheme
^+!o::Gosub, toggle_optspecialchars
; Function (subroutine?) for activation by tray menu item or keyboard shortcut
toggle_optspecialchars:
optspecialchars:=!optspecialchars ; Toggle value of optspecialchars variable on/off
if (optspecialchars = 1) {
Menu, Tray, Check, OptSpecialChars Shift+Opt+Cmd+O
MsgBox, 0, ALERT, % "Option key special character entry scheme is now ENABLED.`n`n"
. "WARNING: This will interfere with many Alt and Alt-Shift shortcuts.`n`n"
. "Disable from tray menu or with Shift+Opt+Cmd+O."
return
}
if (optspecialchars = 0) {
Menu, Tray, Uncheck, OptSpecialChars Shift+Opt+Cmd+O
MsgBox, 0, ALERT, Option key special character entry scheme is now DISABLED.
return
}
return
; #IfWinNotActive ahk_group remotes
#If !WinActive("ahk_group remotes") && optspecialchars = 1
; ###### NUMBER KEYS ROW ######
; Dead_Keys_Accent_Grave
; ### SC029 is ` (Grave key above Tab)
; Grave accent: Option+`, then key to accent
$!SC029::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Grave accent activated by Option+` (Alt plus scan code SC029, or !SC029)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E0} ; à {U+00E0} (Alt+0224)
Case "e": Send, {U+00E8} ; è {U+00E8} (Alt+0232)
Case "i": Send, {U+00EC} ; ì {U+00EC} (Alt+0236)
Case "o": Send, {U+00F2} ; ò {U+00F2} (Alt+0242)
Case "u": Send, {U+00F9} ; ù {U+00F9} (Alt+0249)
Case "A": Send, {U+00C0} ; À {U+00C0} (Alt+0192)
Case "E": Send, {U+00C8} ; È {U+00C8} (Alt+0200)
Case "I": Send, {U+00CC} ; Ì {U+00CC} (Alt+0204)
Case "O": Send, {U+00D2} ; Ò {U+00D2} (Alt+0210)
Case "U": Send, {U+00D9} ; Ù {U+00D9} (Alt+0217)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
; ### SC029 is ` (Grave key above Tab)
$!+SC029::Send, {U+0060} ; Grave Accent diacritic (non-combining) {U+0060}: ` (Alt+96)
$!1::Send, {U+00A1} ; Inverted Exclamation Mark {U+00A1}: ¡ (Alt+0161)
$!+1::Send, {U+2044} ; Fraction Slash, solidus (U+2044): (Alt+8260) [Needs Unicode]
$!2::Send, {U+2122} ; Trade Mark Sign Emoji {U+2122}: ™ (Alt+0153)
$!+2::Send, {U+20AC} ; Euro currency symbol {U+20AC}: € (Alt+0128)
$!3::Send, {U+00A3} ; British Pound currency symbol {U+00A3}: £ (Alt+0163)
$!+3::Send, {U+2039} ; Single Left-Pointing Angle Quotation mark {U+2039}: (Alt+0139)
$!4::Send, {U+00A2} ; Cent currency symbol {U+00A2}: ¢ (Alt+0162)
$!+4::Send, {U+203A} ; Single Right-Pointing Angle Quotation mark (U+203A): (Alt+0155)
$!5::Send, {U+221E} ; Infinity mathematical symbol {U+221E}: ∞ (Alt+236)
$!+5::Send, {U+FB01} ; fi latin small ligature: fi (U+FB01) (Alt+64257) [Needs Unicode]
$!6::Send, {U+00A7} ; Section symbol {U+00A7}: § (Alt+0167)
$!+6::Send, {U+FB02} ; fl small ligature: (U+FB02) (Alt+64258) [Needs Unicode.]
$!7::Send, {U+00B6} ; Paragraph mark (Pilcrow) symbol {U+00B6}: ¶ (Alt+0182)
$!+7::Send, {U+2021} ; Double dagger (cross) symbol {U+2021}: ‡ (Alt+0135)
$!8::Send, {U+2022} ; Bullet point symbol {U+2022}: • (Alt+0149)
$!+8::Send, {U+00B0} ; Degree symbol {U+00B0}: ° (Alt+0176)
$!9::Send, {U+00AA} ; Feminine Ordinal Indicator symbol {U+00AA}: ª (Alt+0170)
$!+9::Send, {U+00B7} ; Middle Dot (interpunct/middot) symbol {U+00B7}: · (Alt+0183)
$!0::Send, {U+00BA} ; Masculine Ordinal Indicator symbol {U+00BA}: º (Alt+0186)
$!+0::Send, {U+201A} ; Single low-9 quotation mark {U+201A}: (Alt+0130)
$!-::Send, {U+2013} ; En Dash symbol {U+2013}: (Alt+0150)
$!+-::Send, {U+2014} ; Em Dash symbol {U+2014}: — (Alt+0151)
$!=::Send, {U+2260} ; Not Equal To symbol (U+2260): ≠ (Alt+8800) [Needs Unicode]
$!+=::Send, {U+00B1} ; Plus Minus symbol {U+00B1}: ± (Alt+0177)
; ###### LETTER AND PUNCTUATION KEYS ###### [ in QWERTY order ]
; ##############
; ### 1st row: Tab-key row [ qwertyuiop[]\ ] [ QWERTYUIOP{}| ]
$!q::Send, {U+0153} ; Small oe (oethel) ligature {U+0153}: œ (Alt+0156)
$!+q::Send, {U+0152} ; Capital OE (Oethel) ligature {U+0152}: Œ (Alt+0140)
$!w::Send, {U+2211} ; N-Ary Summation (sigma) notation (U+2211}: ∑ [Needs Unicode]
$!+w::Send, {U+201E} ; Double Low-9 Quotation mark {U+201E}: „ (Alt+0132)
; Dead_Keys_Accent_Acute
; Acute accent: Option+e, then key to accent
$!e::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Acute accent activated by Option+e (logical Alt+e)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E1} ; á {U+00E1} (Alt+0225)
Case "e": Send, {U+00E9} ; é {U+00E9} (Alt+0233)
Case "i": Send, {U+00ED} ; í {U+00ED} (Alt+0237)
Case "o": Send, {U+00F3} ; ó {U+00F3} (Alt+0243)
Case "u": Send, {U+00FA} ; ú {U+00FA} (Alt+0250)
Case "A": Send, {U+00C1} ; Á {U+00C1} (Alt+0193)
Case "E": Send, {U+00C9} ; É {U+00C9} (Alt+0201)
Case "I": Send, {U+00CD} ; Í {U+00CD} (Alt+0205)
Case "O": Send, {U+00D3} ; Ó {U+00D3} (Alt+0211)
Case "U": Send, {U+00DA} ; Ú {U+00DA} (Alt+0218)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+e::Send, {U+00B4} ; Acute accent diacritic (non-combining) {U+00B4}: ´ (Alt+0180)
$!r::Send, {U+00AE} ; Registered Trade Mark Sign {U+00AE}: ® (Alt+0174)
$!+r::Send, {U+2030} ; Per mille symbol {U+2030}: ‰ (Alt+0137)
$!t::Send, {U+2020} ; Simple dagger (cross) symbol {U+2020}: † (Alt+0134)
$!+t::Send, {U+02C7} ; Caron/hacek diacritic (non-combining) (U+02C7): ˇ (Alt+0134)
$!y::Send, {U+00A5} ; Yen currency symbol {U+00A5}: ¥ (Alt+0165)
$!+y::Send, {U+00C1} ; Latin Capital Letter a with Acute (U+00C1): Á (Alt+0193)
; Dead_Keys_Accent_Umlaut
; Umlaut/Diaeresis accent: Option+u, then key to accent
$!u::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Umlaut/Diaeresis accent activated by Option+u (logical Alt+u)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E4} ; ä {U+00E4} (Alt+0228)
Case "e": Send, {U+00EB} ; ë {U+00EB} (Alt+0235)
Case "i": Send, {U+00EF} ; ï {U+00EF} (Alt+0239)
Case "o": Send, {U+00F6} ; ö {U+00F6} (Alt+0246)
Case "u": Send, {U+00FC} ; ü {U+00FC} (Alt+0252)
Case "y": Send, {U+00FF} ; ÿ {U+00FF} (Alt+0255)
Case "A": Send, {U+00C4} ; Ä {U+00C4} (Alt+0196)
Case "E": Send, {U+00CB} ; Ë {U+00CB} (Alt+0203)
Case "I": Send, {U+00CF} ; Ï {U+00CF} (Alt+0207)
Case "O": Send, {U+00D6} ; Ö {U+00D6} (Alt+0214)
Case "U": Send, {U+00DC} ; Ü {U+00DC} (Alt+0220)
Case "Y": Send, {U+0178} ; Ÿ {U+0178} (Alt+0159)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+u::Send, {U+00A8} ; Umlaut/Diaeresis diacritic (non-combining) {U+00A8}: (Alt+0168)
; Dead_Keys_Accent_Circumflex
; Circumflex accent: Option+i, then key to accent
$!i::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Circumflex accent activated by Option+i (logical Alt+i)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E2} ; â {U+00E2} (Alt+0226)
Case "e": Send, {U+00EA} ; ê {U+00EA} (Alt+0234)
Case "i": Send, {U+00EE} ; î {U+00EE} (Alt+0238)
Case "o": Send, {U+00F4} ; ô {U+00F4} (Alt+0244)
Case "u": Send, {U+00FB} ; û {U+00FB} (Alt+0251)
Case "A": Send, {U+00C2} ; Â {U+00C2} (Alt+0194)
Case "E": Send, {U+00CA} ; Ê {U+00CA} (Alt+0202)
Case "I": Send, {U+00CE} ; Î {U+00CE} (Alt+0206)
Case "O": Send, {U+00D4} ; Ô {U+00D4} (Alt+0212)
Case "U": Send, {U+00DB} ; Û {U+00DB} (Alt+0219)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+i::Send, {U+02C6} ; Modifier Letter Circumflex Accent (U+02C6): ˆ (Alt+0137)
$!o::Send, {U+00F8} ; Latin Small Letter o with Stroke {U+00F8}: ø (Alt+0248)
$!+o::Send, {U+00D8} ; Latin Capital Letter O with Stroke {U+00D8}: Ø (Alt+0216)
$!p::Send, {U+03C0} ; Greek Small Letter Pi {U+03C0}: π (Alt+227)
$!+p::Send, {U+220F} ; N-Ary Product mathematical symbol (U+220F): ∏ [Needs Unicode]
$![::Send, {U+201C} ; Left Double Quotation Mark {U+201C}: “ (Alt+0147)
$!+[::Send, {U+201D} ; Right Double Quotation Mark {U+201D}: ” (Alt+8)
$!]::Send, {U+2018} ; Left Single Quotation Mark {U+2018}: (Alt+0145)
$+!]::Send, {U+2019} ; Right Single Quotation Mark {U+2019}: (Alt+0146)
$!\::Send, {U+00AB} ; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00AB}: « (Alt+0171)
$!+\::Send, {U+00BB} ; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00BB}: » (Alt+0187)
; ##############
; ### 2nd row: Caps Lock row [ asdfghjkl;' ] [ ASDFGHJKL:" ]
$!a::Send, {U+00E5} ; Small Letter a with Ring Above {U+00E5}: å (Alt+0229)
$!+a::Send, {U+00C5} ; Capital Letter A with Ring Above {U+00C5}: Å (Alt+0197)
$!s::Send, {U+00DF} ; German Eszett/beta (Sharfes/Sharp S) {U+00DF}: ß (Alt+0223)
$!+s::Send, {U+00CD} ; Latin Capital Letter I with Acute {U+00CD}: Í (Alt+0205)
$!d::Send, {U+2202} ; Partial Differential mathematical symbol {U+2202}: ∂ (Alt+2202) [Needs Unicode]
$!+d::Send, {U+00CE} ; Latin Capital Letter I with Circumflex {U+00CE}: Î (Alt+0206)
$!f::Send, {U+0192} ; Function/florin currency symbol {U+0192}: ƒ (Alt+159)
$!+f::Send, {U+00CF} ; Latin Capital Letter I with Diaeresis {U+00CF}: Ï (Alt+0207)
; #######################################################################
; ## Problem: Option+g (Win+g) brings up Windows XBox Game Bar!
; ## To remove/disable paste this text in PowerShell (without quotes):
; ## "Get-AppxPackage Microsoft.XboxGamingOverlay | Remove-AppxPackage"
; #######################################################################
$!g::Send, {U+00A9} ; Copyright Sign {U+00A9}: © (Alt+0169)
$!+g::Send, {U+02DD} ; Double Acute Accent diacritic (non-combining) {U+02DD}: ˝ [Needs Unicode]
$!h::Send, {U+02D9} ; Dot Above diacritic (non-combining) {U+02D9}: ˙ [Needs Unicode]
$!+h::Send, {U+00D3} ; Latin Capital Letter O with Acute {U+00D3}: Ó (Alt+0211)
$!j::Send, {U+2206} ; Increment, laplace operator symbol {U+2206}: ∆ [Needs Unicode]
$!+j::Send, {U+00D4} ; Latin Capital Letter O with Circumflex {U+00D4}: Ô (Alt+0212)
$!k::Send, {U+02DA} ; Ring Above diacritic (non-combining) {U+02DA}: ˚ [Needs Unicode] (NOT degree sign/symbol)
; Apple logo {U+F8FF}:  [Unicode Private Use Area, req's Baskerville Old Face font]
; $!+k::Send, {U+F8FF} ; This Unicode address only works with Mac fonts
$!+k::
Send, {U+F000} ; Change font of inserted character (may be invisible) to Baskerville Old Face
apple_logo_alert:=1 ; Set to zero to disable, one to enable (default is enabled)
if (apple_logo_alert=1) {
MsgBox, 0, ALERT, % "ALERT: Change the font of the inserted character!`n`n"
. "Apple logo character requires the Baskerville Old Face font.`n`n`n"
. "Note 1: The character has been inserted but may be INVISIBLE`n"
. " (i.e., non-printing) in its current font.`n`n`n"
. "Note 2: The inserted character will probably NOT be portable`n"
. " to a Mac document/font. Use only for print/PDF `n"
. " purposes on PC.`n`n`n"
. "Note 3: Search for apple_logo_alert in kinto.ahk config and `n"
. " set it to zero to disable this MsgBox.`n`n`n"
}
return
; #######################################################################
; ## Option+L works, but will also trigger the Win+L screen locking.
; ## The screen locking shortcut can only be disabled in the registry.
; #######################################################################
$!l::Send, {U+00AC} ; Not Sign angled dash symbol {U+00AC}: ¬ (Alt+170)
$!+l::Send, {U+00D2} ; Latin Capital Letter O with Grave {U+00D2}: Ò (Alt+0210)
$!;::Send, {U+2026} ; Horizontal elipsis {U+2026}: … (Alt+0133)
$!+;::Send, {U+00DA} ; Latin Capital Letter U with Acute {U+00DA}: Ú (Alt+0218)
; #######################################################################
; ## SC028 is single-quote key scan code
; #######################################################################
$!SC028::Send, {U+00E6} ; Small ae ligature {U+00E6}: æ (Alt+0230)
$!+SC028::Send, {U+00C6} ; Capital AE ligature {U+00C6}: Æ (Alt+0198)
; ##############
; ### 3rd row: Shift-Keys row [ zxcvbnm,./ ] [ ZXCVBNM<>? ]
$!z::Send, {U+03A9} ; Greek Capital Letter Omega symbol {U+03A9} Ω (Alt+234)
$!+z::Send, {U+00B8} ; Spacing Cedilla diacritic symbol (non-combining) {U+00B8}: ¸ (Alt+0184)
$!x::Send, {U+2248} ; Almost Equal To symbol (U+2248): ≈ (Alt+247)
$!+x::Send, {U+02DB} ; Ogonek diacritic (non-combining) (U+02DB): ˛ [Needs Unicode]
$!c::Send, {U+00E7} ; Small Letter c with Cedilla {U+00E7}: ç (Alt+0231)
$!+c::Send, {U+00C7} ; Capital Letter C with Cedilla {U+00C7}: Ç (Alt+0199)
$!v::Send, {U+221A} ; Square Root radical sign (U+221A): √ (Alt+251)
$!+v::Send, {U+25CA} ; Lozenge (diamond) shape symbol (U+25CA): ◊ [Needs Unicode]
$!b::Send, {U+222B} ; Integral mathematical symbol (U+222B): ∫ [Needs Unicode]
$!+b::Send, {U+0131} ; Latin Small Letter Dotless i (U+0131): ı [Needs Unicode]
; Dead_Keys_Accent_Tilde
; Tilde accent: Option+n, then key to accent
$!n::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Tilde accent activated by Option+n (logical Alt+n)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E3} ; ã {U+00E3} (Alt+0227)
Case "n": Send, {U+00F1} ; ñ {U+00F1} (Alt+0241)
Case "o": Send, {U+00F5} ; õ {U+00F5} (Alt+0245)
Case "A": Send, {U+00C3} ; Ã {U+00C3} (Alt+0195)
Case "N": Send, {U+00D1} ; Ñ {U+00D1} (Alt+0209)
Case "O": Send, {U+00D5} ; Õ {U+00D5} (Alt+0213)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+n::Send, {U+02DC} ; Small Tilde character (U+02DC): ˜ (Alt+0152)
$!m::Send, {U+00B5} ; Micro (mu) symbol {U+00B5}: µ (Alt+0181)
$!+m::Send, {U+00C2} ; Latin Capital Letter a with Circumflex (U+00C2): Â (Alt+0194)
$!,::Send, {U+2264} ; Less than or equal to symbol {U+2264}: ≤ (Alt+243)
$!+,::Send, {U+00AF} ; Macron/overline/apl overbar (non-combining) (U+00AF): ¯ (Alt+0175)
$!.::Send, {U+2265} ; Greater than or equal to symbol {U+2265}: ≥ (Alt+242)
$!+.::Send, {U+02D8} ; Breve diacritic (non-combining) {U+02D8}: ˘ [Needs Unicode]
$!/::Send, {U+00F7} ; Obelus/Division symbol {U+00F7}: ÷ (Alt+0247)
$!+/::Send, {U+00BF} ; Inverted Question Mark {U+00BF}: ¿ (Alt+0191)
#If ; ### END of special character insertion with Option(Alt) key