From 14ac2c834912935b66a1b2049c2f0b78ccbc315c Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 20 Mar 2022 02:11:51 -0500 Subject: [PATCH 01/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index df6d010..df75aff 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ If you like or appreciate this project then please consider donating. |**Wishlists**|[Amazon](https://smile.amazon.com/hz/wishlist/ls/3EVXR21VFKD9Z?ref_=wl_share)|[Adafruit](https://www.adafruit.com/wishlists/515932)|[eBay](https://www.ebay.com/mye/myebay/WatchList?custom_list_id=636668138019)| |---|---|---|---| -I have received some really great letters with donations & email, so I plan to make some of them public while redacting last names or anything I feel should remain private, and will be posting them on the frontpage of kinto.sh as I really do appreciate all of the support! +I have received some really great letters with donations & email. I've also posted some of them with redacted first names to kinto.sh. Also if you would like to send me a keyboard directly then please reach out to me over [twitter](https://twitter.com/gbit86) and send me a DM. From bd9ecd123fca1cc4fe51f16d0fe823e5610c1a11 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Fri, 1 Apr 2022 23:58:25 -0500 Subject: [PATCH 02/35] Create 01-ubuntu-budgie.yml --- .github/workflows/01-ubuntu-budgie.yml | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/01-ubuntu-budgie.yml diff --git a/.github/workflows/01-ubuntu-budgie.yml b/.github/workflows/01-ubuntu-budgie.yml new file mode 100644 index 0000000..37c2c37 --- /dev/null +++ b/.github/workflows/01-ubuntu-budgie.yml @@ -0,0 +1,34 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the master branch + push: + branches: [ staging ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + + # Runs a single command using the runners shell + - name: Run a one-line script + run: echo Hello, world! + + # Runs a set of commands using the runners shell + - name: Run a multi-line script + run: | + echo Add other actions to build, + echo test, and deploy your project. From 274833af95b889eae46220fb6997e90bea9387a1 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 2 Apr 2022 01:36:16 -0500 Subject: [PATCH 03/35] Added additional Firefox wm_class names. Closes #642 --- linux/kinto.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux/kinto.py b/linux/kinto.py index 564c7a9..e7b5b0b 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -69,6 +69,8 @@ browsers = [ "Epiphany", "Firefox", "Firefox Developer Edition", + "Navigator", + "firefoxdeveloperedition", "Waterfox", "Google-chrome", "microsoft-edge", From ddc7442e55f4bf2b2573a84a8e5df99261ae4224 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 4 Apr 2022 21:00:25 -0500 Subject: [PATCH 04/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index df75aff..5c53003 100644 --- a/README.md +++ b/README.md @@ -322,7 +322,7 @@ define_keymap(re.compile("Sublime_text"),{ In the above example I am also showing that you can define a single shortcut to enact multiple shortcut keys if needed by defining an array of shortcuts to trigger. -You can also make changes to the file in your /tmp/kinto/xkeysnail/kinto.py location and see them take affect in real time, but for your changes to be permanent you will need to make your changes in the ~/.config/kinto/kinto.py location & restart the xkeysnail service. +To make changes you can edit ~/.config/kinto/kinto.py under linux & restart the xkeysnail service via the system tray, app or CLI. systemd ``` From e4a649fc8c21f3e1854c934c961698eca53873cb Mon Sep 17 00:00:00 2001 From: Marcel Kirsche <29892807+kirschem@users.noreply.github.com> Date: Fri, 15 Apr 2022 17:34:53 +0200 Subject: [PATCH 05/35] #622: Mirror umlaut behavior from macos with ahk --- windows/kinto.ahk | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 2f99d04..4680403 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -858,3 +858,28 @@ Send {LWin up} Send {RShift up} Send {LShift up} return + +#IfWinNotActive ahk_group remotes + $!u::Goto, ActivateUmlautModifier + $!s::Send, ß + + ActivateUmlautModifier: + StringCaseSense, On + ; watch next input string + Input, UserInput, L1 B + if UserInput = o + Send, ö + else if UserInput = O + Send, Ö + else if UserInput = a + Send, ä + else if UserInput = A + Send, Ä + else if UserInput = u + Send, ü + else if UserInput = U + Send, Ü + else + Send, %UserInput% + return +#If \ No newline at end of file From bed5f37ce3a3dfa769b90eda03abe55affb57a1b Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Sat, 16 Apr 2022 16:22:55 -0800 Subject: [PATCH 06/35] [Win] Enable browser page navigation with Cmd+Braces/Brackets This just enables the Cmd+Braces (brackets?) page navigation for Windows web browsers. And adds some comments on the tab navigation lines. Only the page navigation lines are actually new. --- windows/kinto.ahk | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 4680403..e4b9d02 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -552,13 +552,16 @@ GroupAdd, intellij, ahk_exe idea64.exe ; Close all browsers #IfWinActive ahk_group browsers - ;Tab Navigation - ^+[::send ^{PgUp} - ^+]::send ^{PgDn} - ^!Left::send ^{PgUp} - ^!Right::send ^{PgDn} - #Left::send ^{PgUp} - #Right::send ^{PgDn} + ; 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} @@ -882,4 +885,4 @@ return else Send, %UserInput% return -#If \ No newline at end of file +#If From a69b11884b29aa48f154cb33766eaa17e3991fef Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Mon, 18 Apr 2022 01:20:47 -0800 Subject: [PATCH 07/35] Finder Mods for Windows File Explorer file manager As mentioned in issue #651, this works for me, but if it isn't in the best location in the file just move it or do your own commit and then close this, or let me know if you've merged the code separately so I can close this. Working shortcuts in this PR to get Windows File Explorer (explorer.exe) to behave more like macOS Finder: - Get Info (Cmd+i) - View mode shortcuts (Cmd+1/2/3/4) - Nav with arrows, including code that stops Explorer opening new windows for Cmd+Down on folders - Nav with braces (prior/next in history) - Open in New Window (Cmd+Shift+o) - Safer delete shortcuts, with error beeps for Backspace or Delete used without Cmd key - Enter key to rename like Finder (without blocking other usage of Enter key) Code passes Enter, Backspace and Delete keys when focus is in editable text input fields (and passes Enter key in sidebar for navigation). --- windows/kinto.ahk | 54 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 4680403..208991d 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -214,6 +214,58 @@ GroupAdd, intellij, ahk_exe idea64.exe ; +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_exe explorer.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 + ^[::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" elsewhere + ^Down:: ; CTRL-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 + $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, + 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, + Return +#IfWinActive +; ######################################################################### +; ############## END OF FINDER MODS FOR FILE MANAGERS ################# +; ######################################################################### + #IfWinNotActive ahk_group remotes ; wordwise support ^Up::Send ^{Home} @@ -882,4 +934,4 @@ return else Send, %UserInput% return -#If \ No newline at end of file +#If From be898ab3c5d7cb550fc9f352c1064dbe2854ffe1 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 24 Apr 2022 15:46:47 -0500 Subject: [PATCH 08/35] Fix for Ayatana systray indicators w/ appindicator fallback --- linux/trayapps/appindicator/kintotray.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/linux/trayapps/appindicator/kintotray.py b/linux/trayapps/appindicator/kintotray.py index 5255a5d..65b5c94 100755 --- a/linux/trayapps/appindicator/kintotray.py +++ b/linux/trayapps/appindicator/kintotray.py @@ -3,15 +3,19 @@ import gi gi.require_version('Gtk', '3.0') -gi.require_version('AppIndicator3', '0.1') gi.require_version('Notify', '0.7') import signal,time,os,fcntl,datetime,re from subprocess import Popen, PIPE, CalledProcessError from shutil import which from gi.repository import Gtk,GLib,GdkPixbuf -from gi.repository import AppIndicator3 as appindicator from gi.repository import Notify as notify +try: + gi.require_version('AyatanaAppIndicator3', '0.1') + from gi.repository import AyatanaAppIndicator3 as appindicator +except ValueError: + gi.require_version('AppIndicator3', '0.1') + from gi.repository import AppIndicator3 as appindicator import signal From 3d57409b3e62edf2d6e041274718d0fd2a233c9d Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Tue, 26 Apr 2022 14:27:52 -0800 Subject: [PATCH 09/35] Update kinto.ahk Reformatting of comments --- windows/kinto.ahk | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 208991d..5455579 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -218,7 +218,6 @@ GroupAdd, intellij, ahk_exe idea64.exe ; ############# START OF FINDER MODS FOR FILE MANAGERS ################ ; ######################################################################### ; Finder Mods for Windows File Explorer (explore.exe) -; #IfWinActive ahk_exe explorer.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.) @@ -229,13 +228,7 @@ GroupAdd, intellij, ahk_exe idea64.exe ^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 - ^[::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" elsewhere - ^Down:: ; CTRL-DOWN = Navigate into the selected directory + ^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 { @@ -243,19 +236,25 @@ GroupAdd, intellij, ahk_exe idea64.exe Return } Return - $Enter:: ; Use Enter key to rename (F2), unless focus is inside a text input field. + ^[::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 + $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, Return - $Delete:: ; Delete (without Cmd): Block Delete key with error beep, unless inside text input field + $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} From fcb5c75180a9b6f326300eddf7d65d4b2f2550c6 Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Tue, 26 Apr 2022 14:39:53 -0800 Subject: [PATCH 10/35] Change SoundBeep tuning. --- windows/kinto.ahk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 5455579..234f6ea 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -252,13 +252,13 @@ GroupAdd, intellij, ahk_exe idea64.exe ControlGetFocus, fc, A If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1 Send {BackSpace} - Else SoundBeep, + 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, + Else SoundBeep, 600, 300 Return #IfWinActive ; ######################################################################### From 11b2f30169c9760107ca4fd4dc39c6b6cbea7bdf Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Wed, 4 May 2022 18:10:45 -0800 Subject: [PATCH 11/35] Enable Cmd+Braces page nav in Chrome(s) This should enable page nav (back/forward in page history) with Cmd+Braces in Chrome-based web browsers. Also fixes the inability to quit Chrome-based browsers with Cmd+Q. --- linux/kinto.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/linux/kinto.py b/linux/kinto.py index e7b5b0b..dbb1acc 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -438,9 +438,15 @@ define_keymap(re.compile("Firefox", re.IGNORECASE),{ ], K("RC-Shift-N"): K("RC-Shift-P"), # Open private window with Ctrl+Shift+N like other browsers }) + define_keymap(re.compile(chromeStr, re.IGNORECASE),{ - K("C-comma"): [K("M-e"), K("s"),K("Enter")], -}, "Browsers") + K("C-comma"): [K("M-e"), K("s"),K("Enter")], # Open preferences + K("RC-q"): K("M-F4"), # Quit Chrome(s) browsers with Cmd+Q + # K("RC-Left"): K("M-Left"), # Page nav: Back to prior page in history (conflict with wordwise) + # K("RC-Right"): K("M-Right"), # Page nav: Forward to next page in history (conflict with wordwise) + K("RC-Left_Brace"): K("M-Left"), # Page nav: Back to prior page in history + K("RC-Right_Brace"): K("M-Right"), # Page nav: Forward to next page in history +}, "Chrome Browsers") # Opera C-F12 # Keybindings for General Web Browsers From 346c79ca42066a9867f9d44ff7de8c34597f6ca2 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Fri, 13 May 2022 23:33:09 -0400 Subject: [PATCH 12/35] Closes #660, fixes incompatibility w/ Fedora 35 & 36 --- xkeysnail_service.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xkeysnail_service.sh b/xkeysnail_service.sh index 9003b75..ad72971 100755 --- a/xkeysnail_service.sh +++ b/xkeysnail_service.sh @@ -329,7 +329,7 @@ if [[ $distro == 'kdeneon' ]]; then kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 & fi -if [[ $distro == 'fedora' ]]; then +if [[ $distro == 'fedora' ]] || [[ $distro == 'fedoralinux' ]]; then if [[ $(gsettings get org.gnome.desktop.wm.keybindings show-desktop | grep "\[\]" | wc -l) == 1 ]];then gsettings set org.gnome.desktop.wm.keybindings show-desktop "['d']" else @@ -500,7 +500,7 @@ if [[ $distro == "popos" ]]; then perl -pi -e "\s{4}(# )(K.*)(# SL - .*popos.*)/ \$2\$3/g" ./linux/kinto.py.new >/dev/null 2>&1 fi -if [[ $distro == "fedora" ]]; then +if [[ $distro == 'fedora' ]] || [[ $distro == 'fedoralinux' ]]; then perl -pi -e "\s{4}(# )(K.*)(# SL - .*fedora.*)/ \$2\$3/g" ./linux/kinto.py.new >/dev/null 2>&1 sed -i "s#{sudo}##g" ./linux/xkeysnail.service.new selinuxuser=system_u @@ -575,7 +575,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then exit 0 fi sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/limitedadmins.new - if [[ $distro == "fedora" ]]; then + if [[ $distro == 'fedora' ]] || [[ $distro == 'fedoralinux' ]]; then echo "Changing SELinux context" sudo chcon -v --user=$selinuxuser --type=$selinuxtype "$xkeypath"xkeysnail.service fi @@ -587,7 +587,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/xkeysnail.service.new sudo mv ./linux/xkeysnail.service.new "$xkeypath"xkeysnail.service && echo "Service file added to "$xkeypath"xkeysnail.service" - if [[ $distro == "fedora" ]]; then + if [[ $distro == 'fedora' ]] || [[ $distro == 'fedoralinux' ]]; then sudo cp "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Copied service file to system..." || echo "Failed to create copy..." sudo cp "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Copied service file to system for graphical target..." || echo "Failed to create copy for graphical target..." sudo chown -R root:root /etc/systemd/system/xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..." From 35981fc77f71e4f6a0701cc2b5ea789f558e1a1f Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 14 May 2022 01:09:00 -0400 Subject: [PATCH 13/35] Added Fedora 35/36 dependency --- xkeysnail_service.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xkeysnail_service.sh b/xkeysnail_service.sh index ad72971..6855fa6 100755 --- a/xkeysnail_service.sh +++ b/xkeysnail_service.sh @@ -385,10 +385,10 @@ fi if ! [ -x "$(command -v python3-config)" ]; then if [ "$distro" == "ubuntu" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ]; then pydev="python3-dev" - elif [ "$distro" == "fedora" ]; then + elif [ "$distro" == "fedora" ] || [ "$distro" == "fedoralinux" ]; then pydev="python3-devel" fi - if [ "$distro" == "gnome" ] || [ "$distro" == "fedora" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ]; then + if [ "$distro" == "gnome" ] || [ "$distro" == "fedora" ] || [ "$distro" == "fedoralinux" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ] ; then echo "Will need to install $pydev..." sudo ./linux/system-config/unipkg.sh "$pydev" fi From d9817d406e227aa33d1c29bab1960b28bf964276 Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Thu, 19 May 2022 03:22:23 -0800 Subject: [PATCH 14/35] Add Deepin Browser to browsers and chromes WM_CLASS lists Adding the WM_CLASS for Deepin Browser (org.deepin.browser) to the general browsers and the Chromes WM_CLASS lists. Browser is based on Chromium. --- linux/kinto.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux/kinto.py b/linux/kinto.py index dbb1acc..6ed0558 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -75,6 +75,7 @@ browsers = [ "Google-chrome", "microsoft-edge", "microsoft-edge-dev", + "org.deepin.browser", ] browsers = [browser.casefold() for browser in browsers] browserStr = "|".join(str('^'+x+'$') for x in browsers) @@ -85,6 +86,7 @@ chromes = [ "Google-chrome", "microsoft-edge", "microsoft-edge-dev", + "org.deepin.browser", ] chromes = [chrome.casefold() for chrome in chromes] chromeStr = "|".join(str('^'+x+'$') for x in chromes) From e82de02e00874d85602b3c8a558a61e07abe1d1d Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Thu, 19 May 2022 04:03:30 -0800 Subject: [PATCH 15/35] Overrides for Deepin Terminal Some overrides necessary for Deepin Terminal. - Tab nav - Zoom/font size controls - Tab close shortcut remap to avoid closing all other tabs instead of current tab --- linux/kinto.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/linux/kinto.py b/linux/kinto.py index dbb1acc..7485561 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -733,6 +733,15 @@ define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{ }, "Elementary Terminal tab switching") +define_keymap(re.compile("deepin-terminal", re.IGNORECASE),{ + K("RC-w"): K("M-w"), # Close only current tab, instead of all other tabs + K("RC-j"): None, # Block Cmd+J from remapping to vertical split (Ctrl+Shift+J) + K("RC-Shift-Left_Brace"): K("C-Tab"), # Tab nav: Go to prior tab (left) + K("RC-Shift-Right_Brace"): K("C-Shift-Tab"), # Tab nav: Go to next tab (right) + K("RC-minus"): K("C-minus"), # Decrease font size/zoom out + K("RC-equal"): K("C-equal"), # Increase font size/zoom in +},"Deepin Terminal fixes") + define_keymap(re.compile(termStr, re.IGNORECASE),{ K("LC-RC-f"): K("M-F10"), # Toggle window maximized state # K("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group From 2c28ec5022b32eea4bed933e7a2e91008b4c2720 Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Thu, 19 May 2022 20:07:45 -0800 Subject: [PATCH 16/35] Add GNOME Console to terminals WM_CLASS list --- linux/kinto.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux/kinto.py b/linux/kinto.py index dbb1acc..3cba812 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -18,9 +18,11 @@ terminals = [ "io.elementary.terminal", "kinto-gui.py", "kitty", + "Kgx", # GNOME Console terminal app "konsole", "lxterminal", "mate-terminal", + "org.gnome.Console", "qterminal", "st", "sakura", From cdaaefaa0b5b7882504811d9239b8bc8d45279cf Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Thu, 19 May 2022 21:10:26 -0800 Subject: [PATCH 17/35] Tab nav and wordwise (terminals) fixes Changes implemented here: - Tab navigation shortcut (Cmd+Shift+Braces) that has worked in multiple macOS applications with tabbed interfaces. - Tab navigation shortcut (Cmd+Shift+Arrows) that also works in Apple's Terminal.app. - Wordwise delete word/line shortcuts, to override a conflict with GUI app wordwise shortcuts. - Move tab nav for Deepin Terminal into a more general override block that also supports GNOME Console and other apps that use Ctrl+Shift+Tab/Ctrl+Tab instead of Ctrl+PgUp/PgDn. --- linux/kinto.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/linux/kinto.py b/linux/kinto.py index 47b3143..8180fff 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -507,10 +507,32 @@ define_keymap(lambda wm_class: wm_class.casefold() not in terminals,{ K("RC-Dot"): K("Esc"), # Mimic macOS Cmd+dot = Escape key (not in terminals) }) +# Tab navigation overrides for apps that use Ctrl+Shift+Tab/Ctrl+Tab instead of Ctrl+PgUp/PgDn +define_keymap(re.compile("org.gnome.Console|Kgx|deepin-terminal|Angry*IP*Scanner|jDownloader", re.IGNORECASE),{ + ### Tab navigation + K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Tab nav: Go to prior tab (left) + K("RC-Shift-Right_Brace"): K("C-Tab"), # Tab nav: Go to next tab (right) + K("RC-Shift-Left"): K("C-Shift-Tab"), # Tab nav: Go to prior tab (left) + K("RC-Shift-Right"): K("C-Tab"), # Tab nav: Go to next tab (right) +},"Tab Navigation for apps that want Ctrl+Shift+Tab/Ctrl+Tab") + +# Special overrides for terminals for shortcuts that conflict with General GUI block below. +define_keymap(re.compile(termStr, re.IGNORECASE),{ + K("M-Backspace"): K("M-Shift-Backspace"), # Wordwise delete word left of cursor in terminals + K("M-Delete"): [K("Esc"),K("d")], # Wordwise delete word right of cursor in terminals + K("RC-Backspace"): K("C-u"), # Wordwise delete line left of cursor in terminals + K("RC-Delete"): K("C-k"), # Wordwise delete line right of cursor in terminals + ### Tab navigation + K("RC-Shift-Left"): K("C-Page_Up"), # Tab nav: Go to prior tab (Left) + K("RC-Shift-Right"): K("C-Page_Down"), # Tab nav: Go to next tab (Right) +},"Special overrides for terminals") + # None referenced here originally # - but remote clients and VM software ought to be set here # These are the typical remaps for ALL GUI based apps define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ + K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Tab nav: Go to prior (left) tab + K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Tab nav: Go to next (right) tab K("RC-Space"): K("Alt-F1"), # Default SL - Launch Application Menu (gnome/kde) K("RC-F3"):K("Super-d"), # Default SL - Show Desktop (gnome/kde,eos) K("RC-Super-f"):K("M-F10"), # Default SL - Maximize app (gnome/kde) @@ -740,8 +762,6 @@ define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{ define_keymap(re.compile("deepin-terminal", re.IGNORECASE),{ K("RC-w"): K("M-w"), # Close only current tab, instead of all other tabs K("RC-j"): None, # Block Cmd+J from remapping to vertical split (Ctrl+Shift+J) - K("RC-Shift-Left_Brace"): K("C-Tab"), # Tab nav: Go to prior tab (left) - K("RC-Shift-Right_Brace"): K("C-Shift-Tab"), # Tab nav: Go to next tab (right) K("RC-minus"): K("C-minus"), # Decrease font size/zoom out K("RC-equal"): K("C-equal"), # Increase font size/zoom in },"Deepin Terminal fixes") From b38c1a15b71c2a0e2c0bcae89ac7e3b5f95ea048 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 4 Jun 2022 13:48:56 -0500 Subject: [PATCH 18/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c53003..c689351 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Seamless copy and paste with all apps and terminals. The zero effort solution. v1.2 Release - Kinto now includes a system tray and simple wizard to setup the install with minimal effort. -Kinto is powered by [xkeysnail](https://github.com/mooz/xkeysnail) for Linux & by [Autohotkey](https://github.com/Lexikos/AutoHotkey_L) for Windows 10. +Kinto is powered by [xkeysnail](https://github.com/mooz/xkeysnail) for Linux & by [Autohotkey](https://github.com/Lexikos/AutoHotkey_L) for Windows 10 & 11. Note: If you plan to remote into Linux via VNC, xRDP, Synergy or other remote desktop solutions then remove the current release & try an earlier [v1.0.7-3](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3) release. It uses xkb so it'll work with virtual xinput devices. Some v1.1-x releases may offer both, but all v1.2.x releases ended support for xkb. I do plan to bring offical support back for virtual input devices. From f5867a3d9108485391cac90cf67c5f308b1125f6 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 9 Jun 2022 08:56:20 -0400 Subject: [PATCH 19/35] Replace M, LM, RM with Alt, LAlt, RAlt Removes any ambiguity because Key.*META is NOT Alt, it's (according to our own mapping!) Super. Long-term `M` should probably go away (to further remove ambiguity or be replaced with META. Context: https://github.com/mooz/xkeysnail/issues/158 --- linux/kinto.py | 272 ++++++++++++++++++++++++------------------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/linux/kinto.py b/linux/kinto.py index 8180fff..02d547c 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -185,16 +185,16 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), { # Keybindings for IntelliJ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{ # General - K("C-Key_0"): K("M-Key_0"), # Open corresponding tool window - K("C-Key_1"): K("M-Key_1"), # Open corresponding tool window - K("C-Key_2"): K("M-Key_2"), # Open corresponding tool window - K("C-Key_3"): K("M-Key_3"), # Open corresponding tool window - K("C-Key_4"): K("M-Key_4"), # Open corresponding tool window - K("C-Key_5"): K("M-Key_5"), # Open corresponding tool window - K("C-Key_6"): K("M-Key_6"), # Open corresponding tool window - K("C-Key_7"): K("M-Key_7"), # Open corresponding tool window - K("C-Key_8"): K("M-Key_8"), # Open corresponding tool window - K("C-Key_9"): K("M-Key_9"), # Open corresponding tool window + K("C-Key_0"): K("Alt-Key_0"), # Open corresponding tool window + K("C-Key_1"): K("Alt-Key_1"), # Open corresponding tool window + K("C-Key_2"): K("Alt-Key_2"), # Open corresponding tool window + K("C-Key_3"): K("Alt-Key_3"), # Open corresponding tool window + K("C-Key_4"): K("Alt-Key_4"), # Open corresponding tool window + K("C-Key_5"): K("Alt-Key_5"), # Open corresponding tool window + K("C-Key_6"): K("Alt-Key_6"), # Open corresponding tool window + K("C-Key_7"): K("Alt-Key_7"), # Open corresponding tool window + K("C-Key_8"): K("Alt-Key_8"), # Open corresponding tool window + K("C-Key_9"): K("Alt-Key_9"), # Open corresponding tool window K("Super-Grave"): K("C-Grave"), # Quick switch current scheme K("C-Comma"): K("C-M-s"), # Open Settings dialog K("C-Semicolon"): K("C-M-Shift-s"), # Open Project Structure dialog @@ -203,49 +203,49 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{ # Search/Replace K("C-g"): K("F3"), # Find next K("C-Shift-F3"): K("Shift-F3"), # Find previous - K("Super-g"): K("M-j"), # Select next occurrence + K("Super-g"): K("Alt-j"), # Select next occurrence K("C-Super-g"): K("C-M-Shift-j"), # Select all occurrences - K("Super-Shift-g"): K("M-Shift-j"), # Unselect occurrence + K("Super-Shift-g"): K("Alt-Shift-j"), # Unselect occurrence # Editing K("Super-Space"): K("LC-Space"), # Basic code completion K("Super-Shift-Space"): K("LC-Shift-Space"),# Smart code completion K("Super-j"): K("C-q"), # Quick documentation lookup - K("C-n"): K("M-Insert"), # Generate code... + K("C-n"): K("Alt-Insert"), # Generate code... K("Super-o"): K("C-o"), # Override methods K("Super-i"): K("C-i"), # Implement methods - K("M-Up"): K("C-w"), # Extend selection - K("M-Down"): K("C-Shift-w"), # Shrink selection - K("Super-Shift-q"): K("M-q"), # Context info + K("Alt-Up"): K("C-w"), # Extend selection + K("Alt-Down"): K("C-Shift-w"), # Shrink selection + K("Super-Shift-q"): K("Alt-q"), # Context info K("Super-M-o"): K("C-M-o"), # Optimize imports K("Super-M-i"): K("C-M-i"), # Auto-indent line(s) K("C-Backspace"): K("C-y"), # Delete line at caret K("Super-Shift-j"): K("C-Shift-j"), # Smart line join - K("M-Delete"): K("C-Delete"), # Delete to word end - K("M-Backspace"): K("C-Backspace"), # Delete to word start + K("Alt-Delete"): K("C-Delete"), # Delete to word end + K("Alt-Backspace"): K("C-Backspace"), # Delete to word start K("C-Shift-Equal"): K("C-KPPLUS"), # Expand code block K("C-Minus"): K("C-KPMINUS"), # Collapse code block K("C-Shift-Equal"): K("C-Shift-KPPLUS"), # Expand all K("C-Shift-Minus"): K("C-Shift-KPMINUS"), # Collapse all K("C-w"): K("C-F4"), # Close active editor tab # Refactoring - K("C-Delete"): K("M-Delete"), # Safe Delete + K("C-Delete"): K("Alt-Delete"), # Safe Delete K("C-T"): K("C-M-Shift-t"), # Refactor this # Navigation K("C-o"): K("C-n"), # Go to class K("C-Shift-o"): K("C-Shift-n"), # Go to file K("C-M-o"): K("C-M-Shift-n"), # Go to symbol - K("Super-Right"): K("M-Right"), # Go to next editor tab - K("Super-Left"): K("M-Left"), # Go to previous editor tab + K("Super-Right"): K("Alt-Right"), # Go to next editor tab + K("Super-Left"): K("Alt-Left"), # Go to previous editor tab K("C-l"): K("C-g"), # Go to line - K("M-Space"): K("C-Shift-i"), # Open quick definition lookup + K("Alt-Space"): K("C-Shift-i"), # Open quick definition lookup K("C-Y"): K("C-Shift-i"), # Open quick definition lookup K("Super-Shift-b"): K("C-Shift-b"), # Go to type declaration - K("Super-Up"): K("M-Up"), # Go to previous - K("Super-Down"): K("M-Down"), # Go to next method + K("Super-Up"): K("Alt-Up"), # Go to previous + K("Super-Down"): K("Alt-Down"), # Go to next method K("Super-h"): K("C-h"), # Type hierarchy K("Super-M-h"): K("C-M-h"), # Call hierarchy K("C-Down"): K("C-Enter"), # Edit source/View source - K("M-Home"): K("M-Home"), # Show navigation bar + K("Alt-Home"): K("Alt-Home"), # Show navigation bar K("F2"): K("F11"), # Toggle bookmark K("Super-F3"): K("C-F11"), # Toggle bookmark with mnemonic K("Super-Key_0"): K("C-Key_0"), # Go to numbered bookmark @@ -260,14 +260,14 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{ K("Super-Key_9"): K("C-Key_9"), # Go to numbered bookmark K("C-F3"): K("Shift-F11"), # Show bookmarks # Compile and Run - K("Super-M-r"): K("M-Shift-F10"), # Select configuration and run - K("Super-M-d"): K("M-Shift-F9"), # Select configuration and debug + K("Super-M-r"): K("Alt-Shift-F10"), # Select configuration and run + K("Super-M-d"): K("Alt-Shift-F9"), # Select configuration and debug K("Super-r"): K("Shift-F10"), # Run K("Super-d"): K("Shift-F9"), # Debug K("Super-Shift-r"): K("C-Shift-F10"), # Run context configuration from editor K("Super-Shift-d"): K("C-Shift-F9"), # Debug context configuration from editor # VCS/Local History - K("Super-v"): K("M-Grave"), # VCS quick popup + K("Super-v"): K("Alt-Grave"), # VCS quick popup K("Super-c"): K("LC-c"), # Sigints - interrupt },"Jetbrains") @@ -349,7 +349,7 @@ define_keymap(re.compile("spacefm", re.IGNORECASE),{ K("RC-Shift-Right"): K("C-Tab"), # Go to next tab K("RC-Shift-N"): K("RC-F"), # Create new folder is Ctrl+F by default K("RC-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog) - K("RC-comma"): [K("M-V"),K("p")], # Overrides "Open preferences dialog" shortcut below + K("RC-comma"): [K("Alt-V"),K("p")], # Overrides "Open preferences dialog" shortcut below # This shortcut ^^^^^^^^^^^^^^^ is not fully working in SpaceFM. Opens "View" menu but not Preferences. # SpaceFM seems to be doing some nasty binding that blocks things like Alt+Tab while the menu is open. },"Overrides for SpaceFM - Finder Mods") @@ -358,7 +358,7 @@ define_keymap(re.compile("spacefm", re.IGNORECASE),{ # (overrides some bindings from general file manager code block below) define_keymap(re.compile("thunar", re.IGNORECASE),{ K("RC-Super-o"): K("RC-Shift-P"), # Open in new tab - K("RC-comma"): [K("M-E"),K("E")], # Overrides "Open preferences dialog" shortcut below + K("RC-comma"): [K("Alt-E"),K("E")], # Overrides "Open preferences dialog" shortcut below },"Overrides for Thunar - Finder Mods") filemanagers = [ @@ -396,18 +396,18 @@ define_keymap(re.compile(filemanagerStr, re.IGNORECASE),{ ########################################################################################################### ### Show Properties (Get Info) | Open Settings/Preferences | Show/Hide hidden files ### ########################################################################################################### - K("RC-i"): K("M-Enter"), # File properties dialog (Get Info) - K("RC-comma"): [K("M-E"),K("N")], # Open preferences dialog + K("RC-i"): K("Alt-Enter"), # File properties dialog (Get Info) + K("RC-comma"): [K("Alt-E"),K("N")], # Open preferences dialog K("RC-Shift-dot"): K("RC-H"), # Show/hide hidden files ("dot" files) ########################################################################################################### ### Navigation ### ########################################################################################################### - K("RC-Left_Brace"): K("M-Left"), # Go Back - K("RC-Right_Brace"): K("M-Right"), # Go Forward - K("RC-Left"): K("M-Left"), # Go Back - K("RC-Right"): K("M-Right"), # Go Forward - K("RC-Up"): K("M-Up"), # Go Up dir - # K("RC-Down"): K("M-Down"), # Go Down dir (only works on folders) [not universal] + K("RC-Left_Brace"): K("Alt-Left"), # Go Back + K("RC-Right_Brace"): K("Alt-Right"), # Go Forward + K("RC-Left"): K("Alt-Left"), # Go Back + K("RC-Right"): K("Alt-Right"), # Go Forward + K("RC-Up"): K("Alt-Up"), # Go Up dir + # K("RC-Down"): K("Alt-Down"), # Go Down dir (only works on folders) [not universal] # K("RC-Down"): K("RC-O"), # Go Down dir (open folder/file) [not universal] K("RC-Down"): K("Enter"), # Go Down dir (open folder/file) [universal] K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab @@ -444,29 +444,29 @@ define_keymap(re.compile("Firefox", re.IGNORECASE),{ }) define_keymap(re.compile(chromeStr, re.IGNORECASE),{ - K("C-comma"): [K("M-e"), K("s"),K("Enter")], # Open preferences - K("RC-q"): K("M-F4"), # Quit Chrome(s) browsers with Cmd+Q - # K("RC-Left"): K("M-Left"), # Page nav: Back to prior page in history (conflict with wordwise) - # K("RC-Right"): K("M-Right"), # Page nav: Forward to next page in history (conflict with wordwise) - K("RC-Left_Brace"): K("M-Left"), # Page nav: Back to prior page in history - K("RC-Right_Brace"): K("M-Right"), # Page nav: Forward to next page in history + K("C-comma"): [K("Alt-e"), K("s"),K("Enter")], # Open preferences + K("RC-q"): K("Alt-F4"), # Quit Chrome(s) browsers with Cmd+Q + # K("RC-Left"): K("Alt-Left"), # Page nav: Back to prior page in history (conflict with wordwise) + # K("RC-Right"): K("Alt-Right"), # Page nav: Forward to next page in history (conflict with wordwise) + K("RC-Left_Brace"): K("Alt-Left"), # Page nav: Back to prior page in history + K("RC-Right_Brace"): K("Alt-Right"), # Page nav: Forward to next page in history }, "Chrome Browsers") # Opera C-F12 # Keybindings for General Web Browsers define_keymap(re.compile(browserStr, re.IGNORECASE),{ K("RC-Q"): K("RC-Q"), # Close all browsers Instances - K("M-RC-I"): K("RC-Shift-I"), # Dev tools - K("M-RC-J"): K("RC-Shift-J"), # Dev tools - K("RC-Key_1"): K("M-Key_1"), # Jump to Tab #1-#8 - K("RC-Key_2"): K("M-Key_2"), - K("RC-Key_3"): K("M-Key_3"), - K("RC-Key_4"): K("M-Key_4"), - K("RC-Key_5"): K("M-Key_5"), - K("RC-Key_6"): K("M-Key_6"), - K("RC-Key_7"): K("M-Key_7"), - K("RC-Key_8"): K("M-Key_8"), - K("RC-Key_9"): K("M-Key_9"), # Jump to last tab + K("Alt-RC-I"): K("RC-Shift-I"), # Dev tools + K("Alt-RC-J"): K("RC-Shift-J"), # Dev tools + K("RC-Key_1"): K("Alt-Key_1"), # Jump to Tab #1-#8 + K("RC-Key_2"): K("Alt-Key_2"), + K("RC-Key_3"): K("Alt-Key_3"), + K("RC-Key_4"): K("Alt-Key_4"), + K("RC-Key_5"): K("Alt-Key_5"), + K("RC-Key_6"): K("Alt-Key_6"), + K("RC-Key_7"): K("Alt-Key_7"), + K("RC-Key_8"): K("Alt-Key_8"), + K("RC-Key_9"): K("Alt-Key_9"), # Jump to last tab # Enable Cmd+Shift+Braces for tab navigation K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab @@ -482,24 +482,24 @@ define_keymap(re.compile(browserStr, re.IGNORECASE),{ }, "General Web Browsers") define_keymap(re.compile("ulauncher", re.IGNORECASE),{ - K("RC-Key_1"): K("M-Key_1"), # Remap Ctrl+[1-9] and Ctrl+[a-z] to Alt+[1-9] and Alt+[a-z] - K("RC-Key_2"): K("M-Key_2"), - K("RC-Key_3"): K("M-Key_3"), - K("RC-Key_4"): K("M-Key_4"), - K("RC-Key_5"): K("M-Key_5"), - K("RC-Key_6"): K("M-Key_6"), - K("RC-Key_7"): K("M-Key_7"), - K("RC-Key_8"): K("M-Key_8"), - K("RC-Key_9"): K("M-Key_9"), - K("RC-Key_0"): K("M-Key_0"), - # K("RC-a"): K("M-a"), - K("RC-b"): K("M-b"), - # K("RC-c"): K("M-c"), - K("RC-d"): K("M-d"), - K("RC-e"): K("M-e"), - K("RC-f"): K("M-f"), - K("RC-g"): K("M-g"), - K("RC-h"): K("M-h"), + K("RC-Key_1"): K("Alt-Key_1"), # Remap Ctrl+[1-9] and Ctrl+[a-z] to Alt+[1-9] and Alt+[a-z] + K("RC-Key_2"): K("Alt-Key_2"), + K("RC-Key_3"): K("Alt-Key_3"), + K("RC-Key_4"): K("Alt-Key_4"), + K("RC-Key_5"): K("Alt-Key_5"), + K("RC-Key_6"): K("Alt-Key_6"), + K("RC-Key_7"): K("Alt-Key_7"), + K("RC-Key_8"): K("Alt-Key_8"), + K("RC-Key_9"): K("Alt-Key_9"), + K("RC-Key_0"): K("Alt-Key_0"), + # K("RC-a"): K("Alt-a"), + K("RC-b"): K("Alt-b"), + # K("RC-c"): K("Alt-c"), + K("RC-d"): K("Alt-d"), + K("RC-e"): K("Alt-e"), + K("RC-f"): K("Alt-f"), + K("RC-g"): K("Alt-g"), + K("RC-h"): K("Alt-h"), }, "Ulauncher") # Note: terminals extends to remotes as well @@ -518,8 +518,8 @@ define_keymap(re.compile("org.gnome.Console|Kgx|deepin-terminal|Angry*IP*Scanner # Special overrides for terminals for shortcuts that conflict with General GUI block below. define_keymap(re.compile(termStr, re.IGNORECASE),{ - K("M-Backspace"): K("M-Shift-Backspace"), # Wordwise delete word left of cursor in terminals - K("M-Delete"): [K("Esc"),K("d")], # Wordwise delete word right of cursor in terminals + K("Alt-Backspace"): K("Alt-Shift-Backspace"), # Wordwise delete word left of cursor in terminals + K("Alt-Delete"): [K("Esc"),K("d")], # Wordwise delete word right of cursor in terminals K("RC-Backspace"): K("C-u"), # Wordwise delete line left of cursor in terminals K("RC-Delete"): K("C-k"), # Wordwise delete line right of cursor in terminals ### Tab navigation @@ -535,17 +535,17 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Tab nav: Go to next (right) tab K("RC-Space"): K("Alt-F1"), # Default SL - Launch Application Menu (gnome/kde) K("RC-F3"):K("Super-d"), # Default SL - Show Desktop (gnome/kde,eos) - K("RC-Super-f"):K("M-F10"), # Default SL - Maximize app (gnome/kde) + K("RC-Super-f"):K("Alt-F10"), # Default SL - Maximize app (gnome/kde) # K("RC-Super-f"): K("Super-Page_Up"), # SL - Toggle maximized window state (kde_neon) # K("Super-Right"):K("C-M-Right"), # Default SL - Change workspace (budgie) # K("Super-Left"):K("C-M-Left"), # Default SL - Change workspace (budgie) - K("RC-Q"): K("M-F4"), # Default SL - not-popos + K("RC-Q"): K("Alt-F4"), # Default SL - not-popos K("RC-H"):K("Super-h"), # Default SL - Minimize app (gnome/budgie/popos/fedora) - K("M-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default - K("RC-Tab"): K("M-Tab"), # Default - Cmd Tab - App Switching Default - K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default - Cmd Tab - App Switching Default - K("RC-Grave"): K("M-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching - K("RC-Shift-Grave"): K("M-Shift-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching + K("Alt-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default + K("RC-Tab"): K("Alt-Tab"), # Default - Cmd Tab - App Switching Default + K("RC-Shift-Tab"): K("Alt-Shift-Tab"), # Default - Cmd Tab - App Switching Default + K("RC-Grave"): K("Alt-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching + K("RC-Shift-Grave"): K("Alt-Shift-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching # K("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group # K("RC-Shift-Grave"): K("Super-Shift-Tab"), # xfce4 Switch within app group # K("Super-Right"):K("Super-Page_Up"), # SL - Change workspace (ubuntu/fedora) @@ -561,17 +561,17 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ # K("RC-LC-f"):K("Super-Up"), # SL- Maximize app eos # K("RC-LC-f"):K("Super-PAGE_UP"), # SL- Maximize app manjaro # Basic App hotkey functions - # K("RC-H"):K("M-F9"), # SL - Minimize app xfce4 + # K("RC-H"):K("Alt-F9"), # SL - Minimize app xfce4 # K("RC-LC-f"):K("Super-PAGE_DOWN"), # SL - Minimize app manjaro # In-App Tab switching - # K("M-Tab"): K("C-Tab"), # Chromebook/IBM - In-App Tab switching - # K("M-Shift-Tab"): K("C-Shift-Tab"), # Chromebook/IBM - In-App Tab switching - # K("M-Grave") : K("C-Shift-Tab"), # Chromebook/IBM - In-App Tab switching + # K("Alt-Tab"): K("C-Tab"), # Chromebook/IBM - In-App Tab switching + # K("Alt-Shift-Tab"): K("C-Shift-Tab"), # Chromebook/IBM - In-App Tab switching + # K("Alt-Grave") : K("C-Shift-Tab"), # Chromebook/IBM - In-App Tab switching K("Super-Tab"): K("LC-Tab"), # Default not-chromebook K("Super-Shift-Tab"): K("LC-Shift-Tab"), # Default not-chromebook # Fn to Alt style remaps - K("RM-Enter"): K("insert"), # Insert + K("RAlt-Enter"): K("insert"), # Insert # emacs style K("Super-a"): K("Home"), # Beginning of Line @@ -583,7 +583,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ K("Super-k"): [K("Shift-End"), K("Backspace")], K("Super-d"): K("Delete"), - # K("M-RC-Space"): K(""), # Open Finder - Placeholder + # K("Alt-RC-Space"): K(""), # Open Finder - Placeholder # Wordwise K("RC-Left"): K("Home"), # Beginning of Line @@ -592,17 +592,17 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ K("RC-Shift-Right"): K("Shift-End"), # Select all to End of Line # K("RC-Left"): K("C-LEFT_BRACE"), # Firefox-nw - Back # K("RC-Right"): K("C-RIGHT_BRACE"), # Firefox-nw - Forward - # K("RC-Left"): K("M-LEFT"), # Chrome-nw - Back - # K("RC-Right"): K("M-RIGHT"), # Chrome-nw - Forward + # K("RC-Left"): K("Alt-LEFT"), # Chrome-nw - Back + # K("RC-Right"): K("Alt-RIGHT"), # Chrome-nw - Forward K("RC-Up"): K("C-Home"), # Beginning of File K("RC-Shift-Up"): K("C-Shift-Home"), # Select all to Beginning of File K("RC-Down"): K("C-End"), # End of File K("RC-Shift-Down"): K("C-Shift-End"), # Select all to End of File - # K("RM-Backspace"): K("Delete"), # Chromebook/IBM - Delete + # K("RAlt-Backspace"): K("Delete"), # Chromebook/IBM - Delete K("Super-Backspace"): K("C-Backspace"), # Delete Left Word of Cursor K("Super-Delete"): K("C-Delete"), # Delete Right Word of Cursor - # K("LM-Backspace"): K("C-Backspace"), # Chromebook/IBM - Delete Left Word of Cursor - K("M-Backspace"): K("C-Backspace"), # Default not-chromebook + # K("LAlt-Backspace"): K("C-Backspace"), # Chromebook/IBM - Delete Left Word of Cursor + K("Alt-Backspace"): K("C-Backspace"), # Default not-chromebook K("RC-Backspace"): K("C-Shift-Backspace"), # Delete Entire Line Left of Cursor K("Alt-Delete"): K("C-Delete"), # Delete Right Word of Cursor # K(""): pass_through_key, # cancel @@ -611,11 +611,11 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{ # Wordwise remaining - for Everything but VS Code - K("M-Left"): K("C-Left"), # Left of Word - K("M-Shift-Left"): K("C-Shift-Left"), # Select Left of Word - K("M-Right"): K("C-Right"), # Right of Word - K("M-Shift-Right"): K("C-Shift-Right"), # Select Right of Word - K("M-Shift-g"): K("C-Shift-g"), # View source control + K("Alt-Left"): K("C-Left"), # Left of Word + K("Alt-Shift-Left"): K("C-Shift-Left"), # Select Left of Word + K("Alt-Right"): K("C-Right"), # Right of Word + K("Alt-Shift-Right"): K("C-Shift-Right"), # Select Right of Word + K("Alt-Shift-g"): K("C-Shift-g"), # View source control # ** VS Code fix ** # Electron issue precludes normal keybinding fix. # Alt menu auto-focus/toggle gets in the way. @@ -637,10 +637,10 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{ K("Super-Space"): K("LC-Space"), # Basic code completion # Wordwise remaining - for VS Code # Alt-F19 hack fixes Alt menu activation - K("M-Left"): [K("M-F19"),K("C-Left")], # Left of Word - K("M-Right"): [K("M-F19"),K("C-Right")], # Right of Word - K("M-Shift-Left"): [K("M-F19"),K("C-Shift-Left")], # Select Left of Word - K("M-Shift-Right"): [K("M-F19"),K("C-Shift-Right")], # Select Right of Word + K("Alt-Left"): [K("Alt-F19"),K("C-Left")], # Left of Word + K("Alt-Right"): [K("Alt-F19"),K("C-Right")], # Right of Word + K("Alt-Shift-Left"): [K("Alt-F19"),K("C-Shift-Left")], # Select Left of Word + K("Alt-Shift-Right"): [K("Alt-F19"),K("C-Shift-Right")], # Select Right of Word # K("C-PAGE_DOWN"): pass_through_key, # cancel next_view # K("C-PAGE_UP"): pass_through_key, # cancel prev_view @@ -663,12 +663,12 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{ K("C-Shift-g"): K("Shift-f3"), # find_prev # K("Super-c"): K("LC-c"), # Default - Terminal - Sigint # K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano - # K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint - # K("M-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano + # K("Alt-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint + # K("Alt-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano # K("Super-C-g"): K("C-f2"), # Default - Sublime - find_all_under # K("C-M-g"): K("C-f2"), # Chromebook/IBM - Sublime - find_all_under - # K("Super-Shift-up"): K("M-Shift-up"), # multi-cursor up - Sublime - # K("Super-Shift-down"): K("M-Shift-down"), # multi-cursor down - Sublime + # K("Super-Shift-up"): K("Alt-Shift-up"), # multi-cursor up - Sublime + # K("Super-Shift-down"): K("Alt-Shift-down"), # multi-cursor down - Sublime # K(""): pass_through_key, # cancel # K(""): K(""), # }, "Code") @@ -677,18 +677,18 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{ # K("Super-c"): K("LC-c"), # Default - Terminal - Sigint # K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano - # K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint - # K("M-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano + # K("Alt-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint + # K("Alt-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano K("Super-Space"): K("C-Space"), # Basic code completion - K("C-Super-up"): K("M-o"), # Switch file + K("C-Super-up"): K("Alt-o"), # Switch file K("Super-RC-f"): K("f11"), # toggle_full_screen K("C-M-v"): [K("C-k"), K("C-v")], # paste_from_history K("C-up"): pass_through_key, # cancel scroll_lines up K("C-M-up"): K("C-up"), # scroll_lines up K("C-down"): pass_through_key, # cancel scroll_lines down K("C-M-down"): K("C-down"), # scroll_lines down - K("Super-Shift-up"): K("M-Shift-up"), # multi-cursor up - K("Super-Shift-down"): K("M-Shift-down"), # multi-cursor down + K("Super-Shift-up"): K("Alt-Shift-up"), # multi-cursor up + K("Super-Shift-down"): K("Alt-Shift-down"), # multi-cursor down K("C-PAGE_DOWN"): pass_through_key, # cancel next_view K("C-PAGE_UP"): pass_through_key, # cancel prev_view K("C-Shift-left_brace"): K("C-PAGE_DOWN"), # next_view @@ -697,8 +697,8 @@ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{ K("C-M-left"): K("C-PAGE_UP"), # prev_view K("insert"): pass_through_key, # cancel toggle_overwrite K("C-M-o"): K("insert"), # toggle_overwrite - K("M-c"): pass_through_key, # cancel toggle_case_sensitive - K("C-M-c"): K("M-c"), # toggle_case_sensitive + K("Alt-c"): pass_through_key, # cancel toggle_case_sensitive + K("C-M-c"): K("Alt-c"), # toggle_case_sensitive K("C-h"): pass_through_key, # cancel replace K("C-M-f"): K("C-h"), # replace K("C-Shift-h"): pass_through_key, # cancel replace_next @@ -711,10 +711,10 @@ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{ K("Super-M-g"): K("C-f3"), # find_under K("C-Shift-f3"): pass_through_key, # cancel find_under_prev K("Super-M-Shift-g"): K("C-Shift-f3"), # find_under_prev - K("M-f3"): pass_through_key, # Default - cancel find_all_under - # K("M-Refresh"): pass_through_key, # Chromebook/IBM - cancel find_all_under - # K("M-C-g"): K("M-Refresh"), # Chromebook/IBM - find_all_under - K("Super-C-g"): K("M-f3"), # Default - find_all_under + K("Alt-f3"): pass_through_key, # Default - cancel find_all_under + # K("Alt-Refresh"): pass_through_key, # Chromebook/IBM - cancel find_all_under + # K("Alt-C-g"): K("Alt-Refresh"), # Chromebook/IBM - find_all_under + K("Super-C-g"): K("Alt-f3"), # Default - find_all_under K("C-Shift-up"): pass_through_key, # cancel swap_line_up K("Super-M-up"): K("C-Shift-up"), # swap_line_up K("C-Shift-down"): pass_through_key, # cancel swap_line_down @@ -725,20 +725,20 @@ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{ K("f5"): K("f9"), # sort_lines case_s false K("Super-f9"): pass_through_key, # cancel sort_lines case_s true K("Super-f5"): K("Super-f9"), # sort_lines case_s true - K("M-Shift-Key_1"): pass_through_key, # cancel set_layout - K("C-M-Key_1"): K("M-Shift-Key_1"), # set_layout - K("M-Shift-Key_2"): pass_through_key, # cancel set_layout - K("C-M-Key_2"): K("M-Shift-Key_2"), # set_layout - K("M-Shift-Key_3"): pass_through_key, # cancel set_layout - K("C-M-Key_3"): K("M-Shift-Key_3"), # set_layout - K("M-Shift-Key_4"): pass_through_key, # cancel set_layout - K("C-M-Key_4"): K("M-Shift-Key_4"), # set_layout - K("M-Shift-Key_8"): pass_through_key, # cancel set_layout - K("C-M-Shift-Key_2"): K("M-Shift-Key_8"), # set_layout - K("M-Shift-Key_9"): pass_through_key, # cancel set_layout - K("C-M-Shift-Key_3"): K("M-Shift-Key_9"), # set_layout - K("M-Shift-Key_5"): pass_through_key, # cancel set_layout - K("C-M-Shift-Key_5"): K("M-Shift-Key_5"), # set_layout + K("Alt-Shift-Key_1"): pass_through_key, # cancel set_layout + K("C-M-Key_1"): K("Alt-Shift-Key_1"), # set_layout + K("Alt-Shift-Key_2"): pass_through_key, # cancel set_layout + K("C-M-Key_2"): K("Alt-Shift-Key_2"), # set_layout + K("Alt-Shift-Key_3"): pass_through_key, # cancel set_layout + K("C-M-Key_3"): K("Alt-Shift-Key_3"), # set_layout + K("Alt-Shift-Key_4"): pass_through_key, # cancel set_layout + K("C-M-Key_4"): K("Alt-Shift-Key_4"), # set_layout + K("Alt-Shift-Key_8"): pass_through_key, # cancel set_layout + K("C-M-Shift-Key_2"): K("Alt-Shift-Key_8"), # set_layout + K("Alt-Shift-Key_9"): pass_through_key, # cancel set_layout + K("C-M-Shift-Key_3"): K("Alt-Shift-Key_9"), # set_layout + K("Alt-Shift-Key_5"): pass_through_key, # cancel set_layout + K("C-M-Shift-Key_5"): K("Alt-Shift-Key_5"), # set_layout # K(""): pass_through_key, # cancel # K(""): K(""), # }, "Sublime Text") @@ -760,14 +760,14 @@ define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{ }, "Elementary Terminal tab switching") define_keymap(re.compile("deepin-terminal", re.IGNORECASE),{ - K("RC-w"): K("M-w"), # Close only current tab, instead of all other tabs + K("RC-w"): K("Alt-w"), # Close only current tab, instead of all other tabs K("RC-j"): None, # Block Cmd+J from remapping to vertical split (Ctrl+Shift+J) K("RC-minus"): K("C-minus"), # Decrease font size/zoom out K("RC-equal"): K("C-equal"), # Increase font size/zoom in },"Deepin Terminal fixes") define_keymap(re.compile(termStr, re.IGNORECASE),{ - K("LC-RC-f"): K("M-F10"), # Toggle window maximized state + K("LC-RC-f"): K("Alt-F10"), # Toggle window maximized state # K("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group # K("RC-Shift-Grave"): K("Super-Shift-Tab"), # xfce4 Switch within app group # K("LC-Right"):K("C-M-Right"), # Default SL - Change workspace (budgie) @@ -784,9 +784,9 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{ K("LC-Tab") : K("LC-PAGE_DOWN"), K("LC-Shift-Tab") : K("LC-PAGE_UP"), K("LC-Grave") : K("LC-PAGE_UP"), - # K("M-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default - # K("RC-Tab"): K("M-Tab"), # Default - Cmd Tab - App Switching Default - # K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default - Cmd Tab - App Switching Default + # K("Alt-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default + # K("RC-Tab"): K("Alt-Tab"), # Default - Cmd Tab - App Switching Default + # K("RC-Shift-Tab"): K("Alt-Shift-Tab"), # Default - Cmd Tab - App Switching Default # Converts Cmd to use Ctrl-Shift K("RC-MINUS"): K("C-MINUS"), K("RC-EQUAL"): K("C-Shift-EQUAL"), From 7690af09fc89393dd345e9ad6d0ec15013cf2b49 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Fri, 10 Jun 2022 23:26:55 -0500 Subject: [PATCH 20/35] Adds Subl for Sublime Text Arch package. closes #696 --- linux/kinto.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/linux/kinto.py b/linux/kinto.py index 8180fff..381da10 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -42,6 +42,9 @@ termStr = "|".join(str('^'+x+'$') for x in terminals) mscodes = ["code","vscodium"] codeStr = "|".join(str('^'+x+'$') for x in mscodes) +sublimes = ["Sublime_text","subl"] +sublimeStr = "|".join(str('^'+x+'$') for x in sublimes) + # Add remote desktop clients & VM software here # Ideally we'd only exclude the client window, # but that may not be easily done. @@ -674,7 +677,7 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{ }, "Code") # Keybindings for Sublime Text -define_keymap(re.compile("Sublime_text", re.IGNORECASE),{ +define_keymap(re.compile(sublimeStr, re.IGNORECASE),{ # K("Super-c"): K("LC-c"), # Default - Terminal - Sigint # K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano # K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint From aadfafac4ac51f3213795fb5afe688be3c83d518 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Sat, 11 Jun 2022 07:22:44 -0400 Subject: [PATCH 21/35] (enh) Map clear log for alacritty terminal --- linux/kinto.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/linux/kinto.py b/linux/kinto.py index 381da10..e825fb7 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -769,6 +769,10 @@ define_keymap(re.compile("deepin-terminal", re.IGNORECASE),{ K("RC-equal"): K("C-equal"), # Increase font size/zoom in },"Deepin Terminal fixes") +define_keymap(re.compile("alacritty", re.IGNORECASE),{ + K("RC-K"): K("C-L"), # clear log +}) + define_keymap(re.compile(termStr, re.IGNORECASE),{ K("LC-RC-f"): K("M-F10"), # Toggle window maximized state # K("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group From f310919cf98da1ce93a4bc6d853ac33607f4e069 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 11 Jun 2022 22:03:17 -0500 Subject: [PATCH 22/35] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c689351..1e6e0a6 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,9 @@ v1.2 Release - Kinto now includes a system tray and simple wizard to setup the i Kinto is powered by [xkeysnail](https://github.com/mooz/xkeysnail) for Linux & by [Autohotkey](https://github.com/Lexikos/AutoHotkey_L) for Windows 10 & 11. -Note: If you plan to remote into Linux via VNC, xRDP, Synergy or other remote desktop solutions then remove the current release & try an earlier [v1.0.7-3](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3) release. It uses xkb so it'll work with virtual xinput devices. Some v1.1-x releases may offer both, but all v1.2.x releases ended support for xkb. I do plan to bring offical support back for virtual input devices. +Note: VNC is now experimentally supported on Linux w/ the latest releases, but you must compile & install x11vnc. More info can be [found here](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd). + +~~Note: If you plan to remote into Linux via VNC, xRDP, Synergy or other remote desktop solutions then remove the current release & try an earlier [v1.0.7-3](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3) release. It uses xkb so it'll work with virtual xinput devices. Some v1.1-x releases may offer both, but all v1.2.x releases ended support for xkb. I do plan to bring offical support back for virtual input devices.~~ Additionally VMware, Virtualbox, KVM and other virtualization technologies work best with the current release - so *this note only applies to remote desktop into Linux* - not virtualization. From 82018232bf7415996465a6451ebfdf7335767d5a Mon Sep 17 00:00:00 2001 From: Kash Raman Date: Mon, 13 Jun 2022 14:07:45 -0400 Subject: [PATCH 23/35] adding citrix workspace --- linux/kinto.py | 1 + 1 file changed, 1 insertion(+) diff --git a/linux/kinto.py b/linux/kinto.py index 381da10..fde9344 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -59,6 +59,7 @@ remotes = [ "VirtualBox", "VirtualBox Machine", "xfreerdp", + "Wfica", ] remotes = [client.casefold() for client in remotes] From 53c5d96b2c4dc040a296e3e5b2c5d4e4b92c0c70 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 11 Jun 2022 00:19:59 -0500 Subject: [PATCH 24/35] Setting proper regex for app name matches. #696 --- linux/kinto.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/linux/kinto.py b/linux/kinto.py index fde9344..1843550 100755 --- a/linux/kinto.py +++ b/linux/kinto.py @@ -62,6 +62,7 @@ remotes = [ "Wfica", ] remotes = [client.casefold() for client in remotes] +remotesStr = "|".join(str('^'+x+'$') for x in remotes) # Add remote desktop clients & VMs for no remapping terminals.extend(remotes) @@ -281,14 +282,14 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{ # Keybindings overrides for Caja # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("caja", re.IGNORECASE),{ +define_keymap(re.compile("^caja$", re.IGNORECASE),{ # K("RC-Super-o"): K("RC-Shift-Enter"), # Open in new tab K("RC-Super-o"): K("RC-Shift-W"), # Open in new window },"Overrides for Caja - Finder Mods") # Keybindings overrides for DDE (Deepin) File Manager # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("dde-file-manager", re.IGNORECASE),{ +define_keymap(re.compile("^dde-file-manager$", re.IGNORECASE),{ K("RC-i"): K("RC-i"), # File properties dialog (Get Info) K("RC-comma"): None, # Disable preferences shortcut (no shortcut available) K("RC-Up"): K("RC-Up"), # Go Up dir @@ -300,7 +301,7 @@ define_keymap(re.compile("dde-file-manager", re.IGNORECASE),{ # Keybindings overrides for Dolphin # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("dolphin", re.IGNORECASE),{ +define_keymap(re.compile("^dolphin$", re.IGNORECASE),{ K("RC-KEY_2"): K("C-KEY_3"), # View as List (Detailed) K("RC-KEY_3"): K("C-KEY_2"), # View as List (Compact) ########################################################################################## @@ -317,14 +318,14 @@ define_keymap(re.compile("dolphin", re.IGNORECASE),{ # Keybindings overrides for elementary OS Files (Pantheon) # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("io.elementary.files", re.IGNORECASE),{ +define_keymap(re.compile("^io.elementary.files$", re.IGNORECASE),{ # K("RC-Super-o"): K("Shift-Enter"), # Open folder in new tab K("RC-comma"): None, # Disable preferences shortcut since none available },"Overrides for Pantheon - Finder Mods") # Keybindings overrides for Nautilus # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("org.gnome.nautilus|nautilus", re.IGNORECASE),{ +define_keymap(re.compile("^org.gnome.nautilus$|^nautilus$", re.IGNORECASE),{ # K("RC-N"): K("C-M-Space"), # macOS Finder search window shortcut Cmd+Option+Space # For this ^^^^^^^^^^^ to work, a custom shortcut must be set up in the Settings app in GNOME # to run command: "nautilus --new-window /home/USER" [ replace "USER" ] @@ -337,14 +338,14 @@ define_keymap(re.compile("org.gnome.nautilus|nautilus", re.IGNORECASE),{ # Keybindings overrides for PCManFM and PCManFM-Qt # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("pcmanfm|pcmanfm-qt", re.IGNORECASE),{ +define_keymap(re.compile("^pcmanfm$|^pcmanfm-qt$", re.IGNORECASE),{ K("RC-KEY_2"): K("C-KEY_4"), # View as List (Detailed) [Not in PCManFM-Qt] K("RC-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog) },"Overrides for PCManFM - Finder Mods") # Keybindings overrides for SpaceFM # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("spacefm", re.IGNORECASE),{ +define_keymap(re.compile("^spacefm$", re.IGNORECASE),{ K("RC-Page_Up"): K("C-Shift-Tab"), # Go to prior tab K("RC-Page_Down"): K("C-Tab"), # Go to next tab K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Go to prior tab @@ -360,7 +361,7 @@ define_keymap(re.compile("spacefm", re.IGNORECASE),{ # Keybindings overrides for Thunar # (overrides some bindings from general file manager code block below) -define_keymap(re.compile("thunar", re.IGNORECASE),{ +define_keymap(re.compile("^thunar$", re.IGNORECASE),{ K("RC-Super-o"): K("RC-Shift-P"), # Open in new tab K("RC-comma"): [K("M-E"),K("E")], # Overrides "Open preferences dialog" shortcut below },"Overrides for Thunar - Finder Mods") @@ -438,7 +439,7 @@ define_keymap(re.compile(filemanagerStr, re.IGNORECASE),{ ############################################ # Open preferences in browsers -define_keymap(re.compile("Firefox", re.IGNORECASE),{ +define_keymap(re.compile("^Firefox$", re.IGNORECASE),{ K("C-comma"): [ K("C-T"),K("a"),K("b"),K("o"),K("u"),K("t"), K("Shift-SEMICOLON"),K("p"),K("r"),K("e"),K("f"), @@ -485,7 +486,7 @@ define_keymap(re.compile(browserStr, re.IGNORECASE),{ # K("C-Right_Brace"): K("C-Page_Down"), }, "General Web Browsers") -define_keymap(re.compile("ulauncher", re.IGNORECASE),{ +define_keymap(re.compile("^ulauncher$", re.IGNORECASE),{ K("RC-Key_1"): K("M-Key_1"), # Remap Ctrl+[1-9] and Ctrl+[a-z] to Alt+[1-9] and Alt+[a-z] K("RC-Key_2"): K("M-Key_2"), K("RC-Key_3"): K("M-Key_3"), @@ -512,7 +513,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in terminals,{ }) # Tab navigation overrides for apps that use Ctrl+Shift+Tab/Ctrl+Tab instead of Ctrl+PgUp/PgDn -define_keymap(re.compile("org.gnome.Console|Kgx|deepin-terminal|Angry*IP*Scanner|jDownloader", re.IGNORECASE),{ +define_keymap(re.compile("^org.gnome.Console$|^Kgx$|^deepin-terminal$|^Angry*IP*Scanner$|^jDownloader$", re.IGNORECASE),{ ### Tab navigation K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Tab nav: Go to prior tab (left) K("RC-Shift-Right_Brace"): K("C-Tab"), # Tab nav: Go to next tab (right) @@ -747,7 +748,7 @@ define_keymap(re.compile(sublimeStr, re.IGNORECASE),{ # K(""): K(""), # }, "Sublime Text") -define_keymap(re.compile("konsole", re.IGNORECASE),{ +define_keymap(re.compile("^konsole$", re.IGNORECASE),{ # Ctrl Tab - In App Tab Switching K("LC-Tab") : K("Shift-Right"), K("LC-Shift-Tab") : K("Shift-Left"), @@ -755,7 +756,7 @@ define_keymap(re.compile("konsole", re.IGNORECASE),{ }, "Konsole tab switching") -define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{ +define_keymap(re.compile("^Io.elementary.terminal$|^kitty$", re.IGNORECASE),{ # Ctrl Tab - In App Tab Switching K("LC-Tab") : K("LC-Shift-Right"), K("LC-Shift-Tab") : K("LC-Shift-Left"), @@ -763,7 +764,7 @@ define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{ }, "Elementary Terminal tab switching") -define_keymap(re.compile("deepin-terminal", re.IGNORECASE),{ +define_keymap(re.compile("^deepin-terminal$", re.IGNORECASE),{ K("RC-w"): K("M-w"), # Close only current tab, instead of all other tabs K("RC-j"): None, # Block Cmd+J from remapping to vertical split (Ctrl+Shift+J) K("RC-minus"): K("C-minus"), # Decrease font size/zoom out From 79dd20652bb99807898c5f1c5c32402b42d7f043 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Thu, 16 Jun 2022 02:23:45 -0500 Subject: [PATCH 25/35] Adds Devolutions RDP, Latest MS RDC, vmconnect, & vncviewer.exe. Closes #712 --- windows/kinto.ahk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index e4b9d02..caf24e3 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -177,6 +177,9 @@ GroupAdd, remotes, ahk_exe mstsc.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 @@ -442,7 +445,7 @@ GroupAdd, intellij, ahk_exe idea64.exe ; z::Send #z ; Chromebook ; #If ; Chromebook - #IfWinNotActive ahk_group terminals + #If Not WinActive("ahk_group terminals") and Not WinActive("ahk_group remotes") ^.::Send {Esc} ; emacs style #n::Send {Down} From 2c90c09c1be4a72c05aaa35048897eaae36e6481 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Wed, 15 Jun 2022 21:45:30 -0500 Subject: [PATCH 26/35] Update README.md --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e6e0a6..0efb897 100644 --- a/README.md +++ b/README.md @@ -151,14 +151,20 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had |Program|Src/Remote Client ⇒|Dst/Remote Server|Works? |Notes| |---|---|---|---|---| -|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ✅ Yes| Note: [v1.0.7-3 Only](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3). Should work for xRDP/VNC and other remote server protocols. | |Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| | +|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. | +|Official MS RDC from Store| ❖Windows ⇒| ❖Windows | ✅ Yes| | +|Official MS RDC from Store| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. | +|RealVNC| ❖Windows ⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | +|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ☐ Maybe | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | +|Official MS RDC from Store| ❖Windows ⇒| 🐧Linux | ☐ Maybe| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | |Official MS RDP| ChromeOS 87+⇒| ❖Windows | ✅ Yes|May work on earlier versions as well, if they support Android apps| |Remmina| 🐧Linux*/ChromeOS 87+⇒| ❖Windows | ✅ Yes|*Use hover menu to enable "Grab all keyboard events"| |FreeRDP| 🐧Linux/ChromeOS 87+⇒| ❖Windows | ✅ Yes | | |FreeRDP| 🍎macOS⇒| ❖Windows | ✅ Yes| [FreeRDP for macOS](#FreeRDP-for-macOS)| |Remote Desktop Manager Free|🍎iOS⇒| ❖Windows | ✅ Yes| | |Jump Desktop (RDP)| 🍎macOS*/iOS ⇒| ❖Windows | ✅ Yes|*Preferences -> Keyboard -> Disable "Key Conversions", Enabled "Send macOS Shortcuts" under Keyboard shortcuts| +|RealVNC| 🍎macOS⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | |Official MS RDP| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed| |Remote Desktop Manager Free| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed| |Royal TSX Client| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed| From 7c6c56f7c3c6807a146b9212874bd019412d858f Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Wed, 15 Jun 2022 21:46:45 -0500 Subject: [PATCH 27/35] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0efb897..842339c 100644 --- a/README.md +++ b/README.md @@ -156,8 +156,8 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had |Official MS RDC from Store| ❖Windows ⇒| ❖Windows | ✅ Yes| | |Official MS RDC from Store| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. | |RealVNC| ❖Windows ⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | -|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ☐ Maybe | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | -|Official MS RDC from Store| ❖Windows ⇒| 🐧Linux | ☐ Maybe| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | +|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ☐ Maybe | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal. | +|Official MS RDC from Store| ❖Windows ⇒| 🐧Linux | ☐ Maybe| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal. | |Official MS RDP| ChromeOS 87+⇒| ❖Windows | ✅ Yes|May work on earlier versions as well, if they support Android apps| |Remmina| 🐧Linux*/ChromeOS 87+⇒| ❖Windows | ✅ Yes|*Use hover menu to enable "Grab all keyboard events"| |FreeRDP| 🐧Linux/ChromeOS 87+⇒| ❖Windows | ✅ Yes | | From 8e1e59b51f25464766864dad5b5231129c336d46 Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Sat, 18 Jun 2022 03:05:35 -0800 Subject: [PATCH 28/35] (Win/AHK) Option key special character entry scheme This is an AHK implementation of the full selection of special characters, symbols, and dead keys accented characters that are available on the standard US Apple keyboard using Option or Option+Shift. Uses the AHK Unicode method, which works even with applications like Notepad that fail with the Alt Code character entry method. The Option key scheme will interfere with Alt and Alt+Shift shortcuts while active, so it is disabled by default when the AHK script is loaded. It can be enabled and disabled again with Shift+Option+Command+O (the letter "o"), or by using the new tray menu item. The tray menu item will receive a check mark when the scheme is active. Alert messages are presented to the user on enable and disable. The enable MsgBox warns about the conflict and reminds the user how to disable the scheme. Known issues: Typing Option+L will work, but will also lock the screen since the keys are Win+L. This can only be disabled in the registry, which will completely disable the ability to lock the screen. There's no known better solution. The Apple logo (Shift+Option+K) exists only in the Baskerville Old Face font, and the related shortcut will display a MsgBox explaining how to make it display properly. All other characters work without known issues. Documentation of all the included characters (137 different characters, if my math is right) that can be typed when this scheme is enabled is here: https://github.com/RedBearAK/optspecialchars/blob/main/Option-key-characters.md This PR replaces and enhances the Umlaut function submitted by user Kirschem in PR #647. --- windows/kinto.ahk | 572 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 550 insertions(+), 22 deletions(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index caf24e3..0103374 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -62,6 +62,8 @@ 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 @@ -865,27 +867,553 @@ Send {RShift up} Send {LShift up} return -#IfWinNotActive ahk_group remotes - $!u::Goto, ActivateUmlautModifier - $!s::Send, ß +; ############################################################################################################### +; ### 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 +; ############################################################################################################### - ActivateUmlautModifier: - StringCaseSense, On - ; watch next input string - Input, UserInput, L1 B - if UserInput = o - Send, ö - else if UserInput = O - Send, Ö - else if UserInput = a - Send, ä - else if UserInput = A - Send, Ä - else if UserInput = u - Send, ü - else if UserInput = U - Send, Ü - else - Send, %UserInput% +; 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 -#If + +; #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 + ; Watch for Escape key, cancel dead keys sequence + if UserInput = Esc + Return + ; Option/Alt key needed to access menus sometimes + ; If user repeats same shortcut, just send to app unmodified. + ; else if UserInput = !SC029 + ; Send, {Alt down}{SC029}{Alt up} + else if UserInput = a + ; à {U+00E0} (Alt+0224) + Send, {U+00E0} + else if UserInput = e + ; è {U+00E8} (Alt+0232) + Send, {U+00E8} + else if UserInput = i + ; ì {U+00EC} (Alt+0236) + Send, {U+00EC} + else if UserInput = o + ; ò {U+00F2} (Alt+0242) + Send, {U+00F2} + else if UserInput = u + ; ù {U+00F9} (Alt+0249) + Send, {U+00F9} + else if UserInput = A + ; À {U+00C0} (Alt+0192) + Send, {U+00C0} + else if UserInput = E + ; È {U+00C8} (Alt+0200) + Send, {U+00C8} + else if UserInput = I + ; Ì {U+00CC} (Alt+0204) + Send, {U+00CC} + else if UserInput = O + ; Ò {U+00D2} (Alt+0210) + Send, {U+00D2} + else if UserInput = U + ; Ù {U+00D9} (Alt+0217) + Send, {U+00D9} + ; No relevant character to accent? Send input unmodified. + else + Send, %UserInput% + Return + + ; ### SC029 is ` (Grave key above Tab) + ; Grave Accent diacritic (non-combining) {U+0060}: ` (Alt+96) + $!+SC029::Send, {U+0060} + + ; Inverted Exclamation Mark {U+00A1}: ¡ (Alt+0161) + !1::Send, {U+00A1} + ; Fraction Slash, solidus (U+2044): ⁄ (Alt+8260) [Needs Unicode] + !+1::Send, {U+2044} + + ; Trade Mark Sign Emoji {U+2122}: ™ (Alt+0153) + !2::Send, {U+2122} + ; Euro currency symbol {U+20AC}: € (Alt+0128) + !+2::Send, {U+20AC} + + ; British Pound currency symbol {U+00A3}: £ (Alt+0163) + !3::Send, {U+00A3} + ; Single Left-Pointing Angle Quotation mark {U+2039}: (Alt+0139) + !+3::Send, {U+2039} + + ; Cent currency symbol {U+00A2}: ¢ (Alt+0162) + !4::Send, {U+00A2} + ; Single Right-Pointing Angle Quotation mark (U+203A): (Alt+0155) + !+4::Send, {U+203A} + + ; Infinity mathematical symbol {U+221E}: ∞ (Alt+236) + !5::Send, {U+221E} + ; fi latin small ligature: fi (U+FB01) (Alt+64257) [Needs Unicode] + !+5::Send, {U+FB01} + + ; Section symbol {U+00A7}: § (Alt+0167) + !6::Send, {U+00A7} + ; fl small ligature: (U+FB02) (Alt+64258) [Needs Unicode.] + !+6::Send, {U+FB02} + + ; Paragraph mark (Pilcrow) symbol {U+00B6}: ¶ (Alt+0182) + !7::Send, {U+00B6} + ; Double dagger (cross) symbol {U+2021}: ‡ (Alt+0135) [Simple dagger/cross: Alt+0134] + !+7::Send, {U+2021} + + ; Bullet point symbol {U+2022}: • (Alt+0149) + !8::Send, {U+2022} + ; Degree symbol {U+00B0}: ° (Alt+0176) + ; NOT degree symbol: Option+0: Masculine Ordinal Indicator {U+00BA} (Alt+167 or 0186) + ; Also NOT degree symbol: Option+k: Ring Above diacritic {U+02DA} + !+8::Send, {U+00B0} + + ; Feminine Ordinal Indicator symbol {U+00AA}: ª (Alt+0170) + !9::Send, {U+00AA} + ; Middle Dot (interpunct/middot) symbol {U+00B7}: · (Alt+0183) + !+9::Send, {U+00B7} + + ; Masculine Ordinal Indicator symbol {U+00BA}: º (Alt+0186) + !0::Send, {U+00BA} + ; Single low-9 quotation mark {U+201A}: ‚ (Alt+0130) + !+0::Send, {U+201A} + + ; En Dash symbol {U+2013}: – (Alt+0150) + !-::Send, {U+2013} + ; Em Dash symbol {U+2014}: — (Alt+0151) + !+-::Send, {U+2014} + + ; Not Equal To symbol (U+2260): ≠ (Alt+8800) [Needs Unicode] + !=::Send, {U+2260} + ; Plus Minus symbol {U+00B1}: ± (Alt+0177) + !+=::Send, {U+00B1} + + + ; ###### LETTER AND PUNCTUATION KEYS ###### [ in QWERTY order ] + + + ; ############## + ; ### 1st row: Tab-key row [ qwertyuiop[]\ ] [ QWERTYUIOP{}| ] + + ; Small oe (oethel) ligature {U+0153}: œ (Alt+0156) + !q::Send, {U+0153} + ; Capital OE (Oethel) ligature {U+0152}: Œ (Alt+0140) + !+q::Send, {U+0152} + + ; N-Ary Summation (sigma) notation (U+2211}: ∑ [Needs Unicode] + $!w::Send, {U+2211} + ; Double Low-9 Quotation mark {U+201E}: „ (Alt+0132) + $!+w::Send, {U+201E} + + ; 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 + ; Watch for Escape key, cancel dead keys sequence + if UserInput = Esc + Return + ; Option/Alt key needed to access menus sometimes + ; If user repeats same shortcut, just send to app unmodified. + ; else if UserInput = !e + ; Send, {Alt down}e{Alt up} + else if UserInput = a + ; á {U+00E1} (Alt+0225) + Send, {U+00E1} + else if UserInput = e + ; é {U+00E9} (Alt+0233) + Send, {U+00E9} + else if UserInput = i + ; í {U+00ED} (Alt+0237) + Send, {U+00ED} + else if UserInput = o + ; ó {U+00F3} (Alt+0243) + Send, {U+00F3} + else if UserInput = u + ; ú {U+00FA} (Alt+0250) + Send, {U+00FA} + else if UserInput = A + ; Á {U+00C1} (Alt+0193) + Send, {U+00C1} + else if UserInput = E + ; É {U+00C9} (Alt+0201) + Send, {U+00C9} + else if UserInput = I + ; Í {U+00CD} (Alt+0205) + Send, {U+00CD} + else if UserInput = O + ; Ó {U+00D3} (Alt+0211) + Send, {U+00D3} + else if UserInput = U + ; Ú {U+00DA} (Alt+0218) + Send, {U+00DA} + ; No relevant character to accent? Send input unmodified. + else + Send, %UserInput% + Return + + ; Acute accent diacritic (non-combining) {U+00B4}: ´ (Alt+0180) + !+e::Send, {U+00B4} + + ; Registered Trade Mark Sign {U+00AE}: ® (Alt+0174) + $!r::Send, {U+00AE} + ; Per mille symbol {U+2030}: ‰ (Alt+0137) + $!+r::Send, {U+2030} + + ; Simple dagger (cross) symbol {U+2020}: † (Alt+0134) + !t::Send, {U+2020} + ; Caron/hacek diacritic (non-combining) (U+02C7): ˇ (Alt+0134) + !+t::Send, {U+02C7} + + ; Yen currency symbol {U+00A5}: ¥ (Alt+0165) + !y::Send, {U+00A5} + ; Latin Capital Letter a with Acute (U+00C1): Á (Alt+0193) + !+y::Send, {U+00C1} + + ; 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 + ; Watch for Escape key, cancel dead keys sequence + if UserInput = Esc + Return + ; Option/Alt key needed to access menus sometimes + ; If user repeats same shortcut, just send to app unmodified. + ; else if UserInput = !u + ; Send, {Alt down}u{Alt up} + else if UserInput = a + ; ä {U+00E4} (Alt+0228) + Send, {U+00E4} + else if UserInput = e + ; ë {U+00EB} (Alt+0235) + Send, {U+00EB} + else if UserInput = i + ; ï {U+00EF} (Alt+0239) + Send, {U+00EF} + else if UserInput = o + ; ö {U+00F6} (Alt+0246) + Send, {U+00F6} + else if UserInput = u + ; ü {U+00FC} (Alt+0252) + Send, {U+00FC} + else if UserInput = y + ; ÿ {U+00FF} (Alt+0255) + Send, {U+00FF} + else if UserInput = A + ; Ä {U+00C4} (Alt+0196) + Send, {U+00C4} + else if UserInput = E + ; Ë {U+00CB} (Alt+0203) + Send, {U+00CB} + else if UserInput = I + ; Ï {U+00CF} (Alt+0207) + Send, {U+00CF} + else if UserInput = O + ; Ö {U+00D6} (Alt+0214) + Send, {U+00D6} + else if UserInput = U + ; Ü {U+00DC} (Alt+0220) + Send, {U+00DC} + else if UserInput = Y + ; Ÿ {U+0178} (Alt+0159) + Send, {U+0178} + ; No relevant character to accent? Send input unmodified. + else + Send, %UserInput% + Return + + ; Umlaut/Diaeresis diacritic (non-combining) {U+00A8}: (Alt+0168) + !+u::Send, {U+00A8} + + ; 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 + ; Watch for Escape key, cancel dead keys sequence + if UserInput = Esc + Return + ; Option/Alt key needed to access menus sometimes + ; If user repeats same shortcut, just send to app unmodified. + ; else if UserInput = !i + ; Send, {Alt down}i{Alt up} + else if UserInput = a + ; â {U+00E2} (Alt+0226) + Send, {U+00E2} + else if UserInput = e + ; ê {U+00EA} (Alt+0234) + Send, {U+00EA} + else if UserInput = i + ; î {U+00EE} (Alt+0238) + Send, {U+00EE} + else if UserInput = o + ; ô {U+00F4} (Alt+0244) + Send, {U+00F4} + else if UserInput = u + ; û {U+00FB} (Alt+0251) + Send, {U+00FB} + else if UserInput = A + ;  {U+00C2} (Alt+0194) + Send, {U+00C2} + else if UserInput = E + ; Ê {U+00CA} (Alt+0202) + Send, {U+00CA} + else if UserInput = I + ; Î {U+00CE} (Alt+0206) + Send, {U+00CE} + else if UserInput = O + ; Ô {U+00D4} (Alt+0212) + Send, {U+00D4} + else if UserInput = U + ; Û {U+00DB} (Alt+0219) + Send, {U+00DB} + ; No relevant character to accent? Send input unmodified. + else + Send, %UserInput% + Return + + ; Modifier Letter Circumflex Accent (U+02C6): ˆ (Alt+0137) + !+i::Send, {U+02C6} + + ; Latin Small Letter o with Stroke {U+00F8}: ø (Alt+0248) + !o::Send, {U+00F8} + ; Latin Capital Letter O with Stroke {U+00D8}: Ø (Alt+0216) + !+o::Send, {U+00D8} + + ; Greek Small Letter Pi {U+03C0}: π (Alt+227) + $!p::Send, {U+03C0} + ; N-Ary Product mathematical symbol (U+220F): ∏ (No Alt Code) [Needs Unicode] + $!+p::Send, {U+220F} + + ; Left Double Quotation Mark {U+201C}: “ (Alt+0147) + $![::Send, {U+201C} + ; Right Double Quotation Mark {U+201D}: ” (Alt+8) + $!+[::Send, {U+201D} + + ; Left Single Quotation Mark {U+2018}: ‘ (Alt+0145) + $!]::Send, {U+2018} + ; Right Single Quotation Mark {U+2019}: ’ (Alt+0146) + $+!]::Send, {U+2019} + + ; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00AB}: « (Alt+0171) + $!\::Send, {U+00AB} + ; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00BB}: » (Alt+0187) + $!+\::Send, {U+00BB} + + + ; ############## + ; ### 2nd row: Caps Lock row [ asdfghjkl;' ] [ ASDFGHJKL:" ] + + + ; Overring accented "a/A" used by Nordic, Greenlandic, Germanic languages + ; + ; Small Letter a with Ring Above {U+00E5}: å (Alt+0229) + $!a::Send, {U+00E5} + ; Capital Letter A with Ring Above {U+00C5}: Å (Alt+0197) + $!+a::Send, {U+00C5} + + ; German Eszett/beta (Sharfes/Sharp S) {U+00DF}: ß (Alt+0223) + $!s::Send, {U+00DF} + ; Latin Capital Letter I with Acute {U+00CD}: Í (Alt+0205) + $!+s::Send, {U+00CD} + + ; Partial Differential mathematical symbol {U+2202}: ∂ (Alt+2202) [Needs Unicode] + $!d::Send, {U+2202} + ; Latin Capital Letter I with Circumflex {U+00CE}: Î (Alt+0206) + $!+d::Send, {U+00CE} + + ; Function/florin currency symbol {U+0192}: ƒ (Alt+159) + $!f::Send, {U+0192} + ; Latin Capital Letter I with Diaeresis {U+00CF}: Ï (Alt+0207) + $!+f::Send, {U+00CF} + + ; ####################################################################### + ; ## 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" + ; ####################################################################### + ; Copyright Sign {U+00A9}: © (Alt+0169) + !g::Send, {U+00A9} + ; Double Acute Accent diacritic (non-combining) {U+02DD}: ˝ [Needs Unicode] + !+g::Send, {U+02DD} + + ; Dot Above diacritic (non-combining) {U+02D9}: ˙ [Needs Unicode] + $!h::Send, {U+02D9} + ; Latin Capital Letter O with Acute {U+00D3}: Ó (Alt+0211) + $!+h::Send, {U+00D3} + + ; Increment, laplace operator symbol {U+2206}: ∆ [Needs Unicode] + $!j::Send, {U+2206} + ; Latin Capital Letter O with Circumflex {U+00D4}: Ô (Alt+0212) + $!+j::Send, {U+00D4} + + ; Ring Above diacritic (non-combining) {U+02DA}: ˚ [Needs Unicode] (NOT degree sign/symbol) + $!k::Send, {U+02DA} + ; 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. + ; ####################################################################### + ; Not Sign angled dash symbol {U+00AC}: ¬ (Alt+170) [Triggers Win+L screen locking!] + $!l::Send, {U+00AC} + ; Latin Capital Letter O with Grave {U+00D2}: Ò (Alt+0210) + $!+l::Send, {U+00D2} + + ; Horizontal elipsis {U+2026}: … (Alt+0133) + $!;::Send, {U+2026} + ; Latin Capital Letter U with Acute {U+00DA}: Ú (Alt+0218) + $!+;::Send, {U+00DA} + + ; ####################################################################### + ; ## SC028 is single-quote key scan code + ; ####################################################################### + ; Small ae ligature {U+00E6}: æ (Alt+0230) + !SC028::Send, {U+00E6} + ; Capital AE ligature {U+00C6}: Æ (Alt+0198) + !+SC028::Send, {U+00C6} + + + ; ############## + ; ### 3rd row: Shift-Keys row [ zxcvbnm,./ ] [ ZXCVBNM<>? ] + + + ; Greek Capital Letter Omega symbol {U+03A9} Ω (Alt+234) + $!z::Send, {U+03A9} + ; Spacing Cedilla diacritic symbol (non-combining) {U+00B8}: ¸ (Alt+0184) + $!+z::Send, {U+00B8} + + ; Almost Equal To symbol (U+2248): ≈ (Alt+247) + $!x::Send, {U+2248} + ; Ogonek diacritic (non-combining) (U+02DB): ˛ (No Alt Code) + $!+x::Send, {U+02DB} + + ; Small Letter c with Cedilla {U+00E7}: ç (Alt+0231) + $!c::Send, {U+00E7} + ; Capital Letter C with Cedilla {U+00C7}: Ç (Alt+0199) + $!+c::Send, {U+00C7} + + ; Square Root radical sign (U+221A): √ (Alt+251) + !v::Send, {U+221A} + ; Lozenge (diamond) shape symbol (U+25CA): ◊ (No Alt Code) [Needs Unicode] + !+v::Send, {U+25CA} + + ; Integral mathematical symbol (U+222B): ∫ (No Alt Code) [Needs Unicode] + $!b::Send, {U+222B} + ; Latin Small Letter Dotless i (U+0131): ı (No Alt Code) [Needs Unicode] + $!+b::Send, {U+0131} + + ; 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 + ; Watch for Escape key, cancel dead keys sequence + if UserInput = Esc + Return + ; Option/Alt key needed to access menus sometimes + ; If user repeats same shortcut, just send to app unmodified. + else if UserInput = !n + Send, {Alt down}n{Alt up} + else if UserInput = a + ; ã {U+00E3} (Alt+0227) + Send, {U+00E3} + else if UserInput = n + ; ñ {U+00F1} (Alt+0241) + Send, {U+00F1} + else if UserInput = o + ; õ {U+00F5} (Alt+0245) + Send, {U+00F5} + else if UserInput = A + ; à {U+00C3} (Alt+0195) + Send, {U+00C3} + else if UserInput = N + ; Ñ {U+00D1} (Alt+0209) + Send, {U+00D1} + else if UserInput = O + ; Õ {U+00D5} (Alt+0213) + Send, {U+00D5} + ; No relevant character to accent? Send input unmodified. + else + Send, %UserInput% + Return + + ; Small Tilde character (U+02DC): ˜ (Alt+0152) + !+n::Send, {U+02DC} + + ; Micro (mu) symbol {U+00B5}: µ (Alt+0181) + $!m::Send, {U+00B5} + ; Latin Capital Letter a with Circumflex (U+00C2):  (Alt+0194) + $!+m::Send, {U+00C2} + + ; Less than or equal to symbol {U+2264}: ≤ (Alt+243) + $!,::Send, {U+2264} + ; Macron/overline/apl overbar (non-combining) (U+00AF): ¯ (Alt+0175) + $!+,::Send, {U+00AF} + + ; Greater than or equal to symbol {U+2265}: ≥ (Alt+242) + $!.::Send, {U+2265} + ; Breve diacritic (non-combining) {U+02D8}: ˘ (No Alt Code) [Needs Unicode] + $!+.::Send, {U+02D8} + + ; Obelus/Division symbol {U+00F7}: ÷ (Alt+0247) + $!/::Send, {U+00F7} + ; Inverted Question Mark {U+00BF}: ¿ (Alt+0191) + $!+/::Send, {U+00BF} + +#If ; ### END of special character insertion with Option(Alt) key From 60d836d272d3ca21534291def93532e44bb51337 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 19 Jun 2022 00:37:07 -0500 Subject: [PATCH 29/35] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 842339c..d2dbafe 100644 --- a/README.md +++ b/README.md @@ -156,14 +156,15 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had |Official MS RDC from Store| ❖Windows ⇒| ❖Windows | ✅ Yes| | |Official MS RDC from Store| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. | |RealVNC| ❖Windows ⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | -|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ☐ Maybe | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal. | -|Official MS RDC from Store| ❖Windows ⇒| 🐧Linux | ☐ Maybe| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal. | +|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ✅ Yes | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal & use xrdp 0.9.18+. | +|Official MS RDC from Store| ❖Windows ⇒| 🐧Linux | ✅ Yes | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal & use xrdp 0.9.18+. | |Official MS RDP| ChromeOS 87+⇒| ❖Windows | ✅ Yes|May work on earlier versions as well, if they support Android apps| |Remmina| 🐧Linux*/ChromeOS 87+⇒| ❖Windows | ✅ Yes|*Use hover menu to enable "Grab all keyboard events"| |FreeRDP| 🐧Linux/ChromeOS 87+⇒| ❖Windows | ✅ Yes | | |FreeRDP| 🍎macOS⇒| ❖Windows | ✅ Yes| [FreeRDP for macOS](#FreeRDP-for-macOS)| |Remote Desktop Manager Free|🍎iOS⇒| ❖Windows | ✅ Yes| | |Jump Desktop (RDP)| 🍎macOS*/iOS ⇒| ❖Windows | ✅ Yes|*Preferences -> Keyboard -> Disable "Key Conversions", Enabled "Send macOS Shortcuts" under Keyboard shortcuts| +|Jump Desktop (RDP)| 🍎macOS⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility & use xrdp 0.9.18+. | |RealVNC| 🍎macOS⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | |Official MS RDP| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed| |Remote Desktop Manager Free| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed| From f3c0b51481f91004d326370a6ccfdfd430a7c1d6 Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Thu, 23 Jun 2022 00:43:53 -0800 Subject: [PATCH 30/35] Converted if-else dead keys blocks to Switch/Case Saved over a hundred lines and made the dead keys blocks a lot more readable. --- windows/kinto.ahk | 264 ++++++++++++---------------------------------- 1 file changed, 69 insertions(+), 195 deletions(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 0103374..95f4ff8 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -906,46 +906,20 @@ toggle_optspecialchars: StringCaseSense, On ; watch next input string Input, UserInput, L1 - ; Watch for Escape key, cancel dead keys sequence - if UserInput = Esc - Return - ; Option/Alt key needed to access menus sometimes - ; If user repeats same shortcut, just send to app unmodified. - ; else if UserInput = !SC029 - ; Send, {Alt down}{SC029}{Alt up} - else if UserInput = a - ; à {U+00E0} (Alt+0224) - Send, {U+00E0} - else if UserInput = e - ; è {U+00E8} (Alt+0232) - Send, {U+00E8} - else if UserInput = i - ; ì {U+00EC} (Alt+0236) - Send, {U+00EC} - else if UserInput = o - ; ò {U+00F2} (Alt+0242) - Send, {U+00F2} - else if UserInput = u - ; ù {U+00F9} (Alt+0249) - Send, {U+00F9} - else if UserInput = A - ; À {U+00C0} (Alt+0192) - Send, {U+00C0} - else if UserInput = E - ; È {U+00C8} (Alt+0200) - Send, {U+00C8} - else if UserInput = I - ; Ì {U+00CC} (Alt+0204) - Send, {U+00CC} - else if UserInput = O - ; Ò {U+00D2} (Alt+0210) - Send, {U+00D2} - else if UserInput = U - ; Ù {U+00D9} (Alt+0217) - Send, {U+00D9} - ; No relevant character to accent? Send input unmodified. - else - Send, %UserInput% + 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) @@ -1039,46 +1013,20 @@ toggle_optspecialchars: StringCaseSense, On ; watch next input string Input, UserInput, L1 - ; Watch for Escape key, cancel dead keys sequence - if UserInput = Esc - Return - ; Option/Alt key needed to access menus sometimes - ; If user repeats same shortcut, just send to app unmodified. - ; else if UserInput = !e - ; Send, {Alt down}e{Alt up} - else if UserInput = a - ; á {U+00E1} (Alt+0225) - Send, {U+00E1} - else if UserInput = e - ; é {U+00E9} (Alt+0233) - Send, {U+00E9} - else if UserInput = i - ; í {U+00ED} (Alt+0237) - Send, {U+00ED} - else if UserInput = o - ; ó {U+00F3} (Alt+0243) - Send, {U+00F3} - else if UserInput = u - ; ú {U+00FA} (Alt+0250) - Send, {U+00FA} - else if UserInput = A - ; Á {U+00C1} (Alt+0193) - Send, {U+00C1} - else if UserInput = E - ; É {U+00C9} (Alt+0201) - Send, {U+00C9} - else if UserInput = I - ; Í {U+00CD} (Alt+0205) - Send, {U+00CD} - else if UserInput = O - ; Ó {U+00D3} (Alt+0211) - Send, {U+00D3} - else if UserInput = U - ; Ú {U+00DA} (Alt+0218) - Send, {U+00DA} - ; No relevant character to accent? Send input unmodified. - else - Send, %UserInput% + 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 ; Acute accent diacritic (non-combining) {U+00B4}: ´ (Alt+0180) @@ -1107,52 +1055,22 @@ toggle_optspecialchars: StringCaseSense, On ; watch next input string Input, UserInput, L1 - ; Watch for Escape key, cancel dead keys sequence - if UserInput = Esc - Return - ; Option/Alt key needed to access menus sometimes - ; If user repeats same shortcut, just send to app unmodified. - ; else if UserInput = !u - ; Send, {Alt down}u{Alt up} - else if UserInput = a - ; ä {U+00E4} (Alt+0228) - Send, {U+00E4} - else if UserInput = e - ; ë {U+00EB} (Alt+0235) - Send, {U+00EB} - else if UserInput = i - ; ï {U+00EF} (Alt+0239) - Send, {U+00EF} - else if UserInput = o - ; ö {U+00F6} (Alt+0246) - Send, {U+00F6} - else if UserInput = u - ; ü {U+00FC} (Alt+0252) - Send, {U+00FC} - else if UserInput = y - ; ÿ {U+00FF} (Alt+0255) - Send, {U+00FF} - else if UserInput = A - ; Ä {U+00C4} (Alt+0196) - Send, {U+00C4} - else if UserInput = E - ; Ë {U+00CB} (Alt+0203) - Send, {U+00CB} - else if UserInput = I - ; Ï {U+00CF} (Alt+0207) - Send, {U+00CF} - else if UserInput = O - ; Ö {U+00D6} (Alt+0214) - Send, {U+00D6} - else if UserInput = U - ; Ü {U+00DC} (Alt+0220) - Send, {U+00DC} - else if UserInput = Y - ; Ÿ {U+0178} (Alt+0159) - Send, {U+0178} - ; No relevant character to accent? Send input unmodified. - else - Send, %UserInput% + 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 ; Umlaut/Diaeresis diacritic (non-combining) {U+00A8}: (Alt+0168) @@ -1166,46 +1084,20 @@ toggle_optspecialchars: StringCaseSense, On ; watch next input string Input, UserInput, L1 - ; Watch for Escape key, cancel dead keys sequence - if UserInput = Esc - Return - ; Option/Alt key needed to access menus sometimes - ; If user repeats same shortcut, just send to app unmodified. - ; else if UserInput = !i - ; Send, {Alt down}i{Alt up} - else if UserInput = a - ; â {U+00E2} (Alt+0226) - Send, {U+00E2} - else if UserInput = e - ; ê {U+00EA} (Alt+0234) - Send, {U+00EA} - else if UserInput = i - ; î {U+00EE} (Alt+0238) - Send, {U+00EE} - else if UserInput = o - ; ô {U+00F4} (Alt+0244) - Send, {U+00F4} - else if UserInput = u - ; û {U+00FB} (Alt+0251) - Send, {U+00FB} - else if UserInput = A - ;  {U+00C2} (Alt+0194) - Send, {U+00C2} - else if UserInput = E - ; Ê {U+00CA} (Alt+0202) - Send, {U+00CA} - else if UserInput = I - ; Î {U+00CE} (Alt+0206) - Send, {U+00CE} - else if UserInput = O - ; Ô {U+00D4} (Alt+0212) - Send, {U+00D4} - else if UserInput = U - ; Û {U+00DB} (Alt+0219) - Send, {U+00DB} - ; No relevant character to accent? Send input unmodified. - else - Send, %UserInput% + 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 ; Modifier Letter Circumflex Accent (U+02C6): ˆ (Alt+0137) @@ -1265,7 +1157,7 @@ toggle_optspecialchars: ; ####################################################################### ; ## Problem: Option+g (Win+g) brings up Windows XBox Game Bar! - ; ## To remove/disable paste this text in Powershell (without quotes): + ; ## To remove/disable paste this text in PowerShell (without quotes): ; ## "Get-AppxPackage Microsoft.XboxGamingOverlay | Remove-AppxPackage" ; ####################################################################### ; Copyright Sign {U+00A9}: © (Alt+0169) @@ -1363,34 +1255,16 @@ toggle_optspecialchars: StringCaseSense, On ; watch next input string Input, UserInput, L1 - ; Watch for Escape key, cancel dead keys sequence - if UserInput = Esc - Return - ; Option/Alt key needed to access menus sometimes - ; If user repeats same shortcut, just send to app unmodified. - else if UserInput = !n - Send, {Alt down}n{Alt up} - else if UserInput = a - ; ã {U+00E3} (Alt+0227) - Send, {U+00E3} - else if UserInput = n - ; ñ {U+00F1} (Alt+0241) - Send, {U+00F1} - else if UserInput = o - ; õ {U+00F5} (Alt+0245) - Send, {U+00F5} - else if UserInput = A - ; à {U+00C3} (Alt+0195) - Send, {U+00C3} - else if UserInput = N - ; Ñ {U+00D1} (Alt+0209) - Send, {U+00D1} - else if UserInput = O - ; Õ {U+00D5} (Alt+0213) - Send, {U+00D5} - ; No relevant character to accent? Send input unmodified. - else - Send, %UserInput% + 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 ; Small Tilde character (U+02DC): ˜ (Alt+0152) From 66407d6010c8f7b2a79f586de36958b3b9aa144f Mon Sep 17 00:00:00 2001 From: RedBearAK <64876997+RedBearAK@users.noreply.github.com> Date: Thu, 23 Jun 2022 01:32:26 -0800 Subject: [PATCH 31/35] Reformat comments, reduce line count --- windows/kinto.ahk | 306 +++++++++++++--------------------------------- 1 file changed, 88 insertions(+), 218 deletions(-) diff --git a/windows/kinto.ahk b/windows/kinto.ahk index 95f4ff8..37a9a5e 100644 --- a/windows/kinto.ahk +++ b/windows/kinto.ahk @@ -923,87 +923,42 @@ toggle_optspecialchars: Return ; ### SC029 is ` (Grave key above Tab) - ; Grave Accent diacritic (non-combining) {U+0060}: ` (Alt+96) - $!+SC029::Send, {U+0060} - - ; Inverted Exclamation Mark {U+00A1}: ¡ (Alt+0161) - !1::Send, {U+00A1} - ; Fraction Slash, solidus (U+2044): ⁄ (Alt+8260) [Needs Unicode] - !+1::Send, {U+2044} - - ; Trade Mark Sign Emoji {U+2122}: ™ (Alt+0153) - !2::Send, {U+2122} - ; Euro currency symbol {U+20AC}: € (Alt+0128) - !+2::Send, {U+20AC} - - ; British Pound currency symbol {U+00A3}: £ (Alt+0163) - !3::Send, {U+00A3} - ; Single Left-Pointing Angle Quotation mark {U+2039}: (Alt+0139) - !+3::Send, {U+2039} - - ; Cent currency symbol {U+00A2}: ¢ (Alt+0162) - !4::Send, {U+00A2} - ; Single Right-Pointing Angle Quotation mark (U+203A): (Alt+0155) - !+4::Send, {U+203A} - - ; Infinity mathematical symbol {U+221E}: ∞ (Alt+236) - !5::Send, {U+221E} - ; fi latin small ligature: fi (U+FB01) (Alt+64257) [Needs Unicode] - !+5::Send, {U+FB01} - - ; Section symbol {U+00A7}: § (Alt+0167) - !6::Send, {U+00A7} - ; fl small ligature: (U+FB02) (Alt+64258) [Needs Unicode.] - !+6::Send, {U+FB02} - - ; Paragraph mark (Pilcrow) symbol {U+00B6}: ¶ (Alt+0182) - !7::Send, {U+00B6} - ; Double dagger (cross) symbol {U+2021}: ‡ (Alt+0135) [Simple dagger/cross: Alt+0134] - !+7::Send, {U+2021} - - ; Bullet point symbol {U+2022}: • (Alt+0149) - !8::Send, {U+2022} - ; Degree symbol {U+00B0}: ° (Alt+0176) - ; NOT degree symbol: Option+0: Masculine Ordinal Indicator {U+00BA} (Alt+167 or 0186) - ; Also NOT degree symbol: Option+k: Ring Above diacritic {U+02DA} - !+8::Send, {U+00B0} - - ; Feminine Ordinal Indicator symbol {U+00AA}: ª (Alt+0170) - !9::Send, {U+00AA} - ; Middle Dot (interpunct/middot) symbol {U+00B7}: · (Alt+0183) - !+9::Send, {U+00B7} - - ; Masculine Ordinal Indicator symbol {U+00BA}: º (Alt+0186) - !0::Send, {U+00BA} - ; Single low-9 quotation mark {U+201A}: ‚ (Alt+0130) - !+0::Send, {U+201A} - - ; En Dash symbol {U+2013}: – (Alt+0150) - !-::Send, {U+2013} - ; Em Dash symbol {U+2014}: — (Alt+0151) - !+-::Send, {U+2014} - - ; Not Equal To symbol (U+2260): ≠ (Alt+8800) [Needs Unicode] - !=::Send, {U+2260} - ; Plus Minus symbol {U+00B1}: ± (Alt+0177) - !+=::Send, {U+00B1} + $!+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{}| ] - ; Small oe (oethel) ligature {U+0153}: œ (Alt+0156) - !q::Send, {U+0153} - ; Capital OE (Oethel) ligature {U+0152}: Œ (Alt+0140) - !+q::Send, {U+0152} - - ; N-Ary Summation (sigma) notation (U+2211}: ∑ [Needs Unicode] - $!w::Send, {U+2211} - ; Double Low-9 Quotation mark {U+201E}: „ (Alt+0132) - $!+w::Send, {U+201E} + $!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 @@ -1029,23 +984,13 @@ toggle_optspecialchars: } Return - ; Acute accent diacritic (non-combining) {U+00B4}: ´ (Alt+0180) - !+e::Send, {U+00B4} - - ; Registered Trade Mark Sign {U+00AE}: ® (Alt+0174) - $!r::Send, {U+00AE} - ; Per mille symbol {U+2030}: ‰ (Alt+0137) - $!+r::Send, {U+2030} - - ; Simple dagger (cross) symbol {U+2020}: † (Alt+0134) - !t::Send, {U+2020} - ; Caron/hacek diacritic (non-combining) (U+02C7): ˇ (Alt+0134) - !+t::Send, {U+02C7} - - ; Yen currency symbol {U+00A5}: ¥ (Alt+0165) - !y::Send, {U+00A5} - ; Latin Capital Letter a with Acute (U+00C1): Á (Alt+0193) - !+y::Send, {U+00C1} + $!+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 @@ -1073,8 +1018,7 @@ toggle_optspecialchars: } Return - ; Umlaut/Diaeresis diacritic (non-combining) {U+00A8}: (Alt+0168) - !+u::Send, {U+00A8} + $!+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 @@ -1100,83 +1044,44 @@ toggle_optspecialchars: } Return - ; Modifier Letter Circumflex Accent (U+02C6): ˆ (Alt+0137) - !+i::Send, {U+02C6} - - ; Latin Small Letter o with Stroke {U+00F8}: ø (Alt+0248) - !o::Send, {U+00F8} - ; Latin Capital Letter O with Stroke {U+00D8}: Ø (Alt+0216) - !+o::Send, {U+00D8} - - ; Greek Small Letter Pi {U+03C0}: π (Alt+227) - $!p::Send, {U+03C0} - ; N-Ary Product mathematical symbol (U+220F): ∏ (No Alt Code) [Needs Unicode] - $!+p::Send, {U+220F} - - ; Left Double Quotation Mark {U+201C}: “ (Alt+0147) - $![::Send, {U+201C} - ; Right Double Quotation Mark {U+201D}: ” (Alt+8) - $!+[::Send, {U+201D} - - ; Left Single Quotation Mark {U+2018}: ‘ (Alt+0145) - $!]::Send, {U+2018} - ; Right Single Quotation Mark {U+2019}: ’ (Alt+0146) - $+!]::Send, {U+2019} - - ; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00AB}: « (Alt+0171) - $!\::Send, {U+00AB} - ; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00BB}: » (Alt+0187) - $!+\::Send, {U+00BB} + $!+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:" ] - - ; Overring accented "a/A" used by Nordic, Greenlandic, Germanic languages - ; - ; Small Letter a with Ring Above {U+00E5}: å (Alt+0229) - $!a::Send, {U+00E5} - ; Capital Letter A with Ring Above {U+00C5}: Å (Alt+0197) - $!+a::Send, {U+00C5} - - ; German Eszett/beta (Sharfes/Sharp S) {U+00DF}: ß (Alt+0223) - $!s::Send, {U+00DF} - ; Latin Capital Letter I with Acute {U+00CD}: Í (Alt+0205) - $!+s::Send, {U+00CD} - - ; Partial Differential mathematical symbol {U+2202}: ∂ (Alt+2202) [Needs Unicode] - $!d::Send, {U+2202} - ; Latin Capital Letter I with Circumflex {U+00CE}: Î (Alt+0206) - $!+d::Send, {U+00CE} - - ; Function/florin currency symbol {U+0192}: ƒ (Alt+159) - $!f::Send, {U+0192} - ; Latin Capital Letter I with Diaeresis {U+00CF}: Ï (Alt+0207) - $!+f::Send, {U+00CF} + $!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" ; ####################################################################### - ; Copyright Sign {U+00A9}: © (Alt+0169) - !g::Send, {U+00A9} - ; Double Acute Accent diacritic (non-combining) {U+02DD}: ˝ [Needs Unicode] - !+g::Send, {U+02DD} + $!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) - ; Dot Above diacritic (non-combining) {U+02D9}: ˙ [Needs Unicode] - $!h::Send, {U+02D9} - ; Latin Capital Letter O with Acute {U+00D3}: Ó (Alt+0211) - $!+h::Send, {U+00D3} - - ; Increment, laplace operator symbol {U+2206}: ∆ [Needs Unicode] - $!j::Send, {U+2206} - ; Latin Capital Letter O with Circumflex {U+00D4}: Ô (Alt+0212) - $!+j::Send, {U+00D4} - - ; Ring Above diacritic (non-combining) {U+02DA}: ˚ [Needs Unicode] (NOT degree sign/symbol) - $!k::Send, {U+02DA} ; 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:: @@ -1199,53 +1104,31 @@ toggle_optspecialchars: ; ## Option+L works, but will also trigger the Win+L screen locking. ; ## The screen locking shortcut can only be disabled in the registry. ; ####################################################################### - ; Not Sign angled dash symbol {U+00AC}: ¬ (Alt+170) [Triggers Win+L screen locking!] - $!l::Send, {U+00AC} - ; Latin Capital Letter O with Grave {U+00D2}: Ò (Alt+0210) - $!+l::Send, {U+00D2} - - ; Horizontal elipsis {U+2026}: … (Alt+0133) - $!;::Send, {U+2026} - ; Latin Capital Letter U with Acute {U+00DA}: Ú (Alt+0218) - $!+;::Send, {U+00DA} + $!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 ; ####################################################################### - ; Small ae ligature {U+00E6}: æ (Alt+0230) - !SC028::Send, {U+00E6} - ; Capital AE ligature {U+00C6}: Æ (Alt+0198) - !+SC028::Send, {U+00C6} + $!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<>? ] - - ; Greek Capital Letter Omega symbol {U+03A9} Ω (Alt+234) - $!z::Send, {U+03A9} - ; Spacing Cedilla diacritic symbol (non-combining) {U+00B8}: ¸ (Alt+0184) - $!+z::Send, {U+00B8} - - ; Almost Equal To symbol (U+2248): ≈ (Alt+247) - $!x::Send, {U+2248} - ; Ogonek diacritic (non-combining) (U+02DB): ˛ (No Alt Code) - $!+x::Send, {U+02DB} - - ; Small Letter c with Cedilla {U+00E7}: ç (Alt+0231) - $!c::Send, {U+00E7} - ; Capital Letter C with Cedilla {U+00C7}: Ç (Alt+0199) - $!+c::Send, {U+00C7} - - ; Square Root radical sign (U+221A): √ (Alt+251) - !v::Send, {U+221A} - ; Lozenge (diamond) shape symbol (U+25CA): ◊ (No Alt Code) [Needs Unicode] - !+v::Send, {U+25CA} - - ; Integral mathematical symbol (U+222B): ∫ (No Alt Code) [Needs Unicode] - $!b::Send, {U+222B} - ; Latin Small Letter Dotless i (U+0131): ı (No Alt Code) [Needs Unicode] - $!+b::Send, {U+0131} + $!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 @@ -1267,27 +1150,14 @@ toggle_optspecialchars: } Return - ; Small Tilde character (U+02DC): ˜ (Alt+0152) - !+n::Send, {U+02DC} - - ; Micro (mu) symbol {U+00B5}: µ (Alt+0181) - $!m::Send, {U+00B5} - ; Latin Capital Letter a with Circumflex (U+00C2):  (Alt+0194) - $!+m::Send, {U+00C2} - - ; Less than or equal to symbol {U+2264}: ≤ (Alt+243) - $!,::Send, {U+2264} - ; Macron/overline/apl overbar (non-combining) (U+00AF): ¯ (Alt+0175) - $!+,::Send, {U+00AF} - - ; Greater than or equal to symbol {U+2265}: ≥ (Alt+242) - $!.::Send, {U+2265} - ; Breve diacritic (non-combining) {U+02D8}: ˘ (No Alt Code) [Needs Unicode] - $!+.::Send, {U+02D8} - - ; Obelus/Division symbol {U+00F7}: ÷ (Alt+0247) - $!/::Send, {U+00F7} - ; Inverted Question Mark {U+00BF}: ¿ (Alt+0191) - $!+/::Send, {U+00BF} + $!+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 From 64995d4d56592a99ffafd75751527671dd390a79 Mon Sep 17 00:00:00 2001 From: deftdawg Date: Wed, 6 Jul 2022 18:09:39 -0400 Subject: [PATCH 32/35] Fix install on Arch-based systems - Tested on SteamOS 3 / HoloISO --- xkeysnail_service.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xkeysnail_service.sh b/xkeysnail_service.sh index 6855fa6..0d6f9a9 100755 --- a/xkeysnail_service.sh +++ b/xkeysnail_service.sh @@ -315,8 +315,9 @@ if ! [ -x "$(command -v xhost)" ] || ! [ -x "$(command -v gcc)" ]; then fi if [[ $dename == "kde" ]]; then - if [[ $distro == "manjarolinux" ]]; then + if [[ $distro == "manjarolinux" ]] || cat /etc/os-release | grep -E "^ID(_LIKE)?" | grep -q arch; then # Manjario or other arch-like distros: SteamOS3,HoloISO sudo ./linux/system-config/unipkg.sh vte3 + sudo ./linux/system-config/unipkg.sh python-pip else sudo ./linux/system-config/unipkg.sh libvte-2.91-dev fi From 386bfa9c6536b78ecb0fe0e820916ee46c9bd94d Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Tue, 26 Jul 2022 23:16:05 -0500 Subject: [PATCH 33/35] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index d2dbafe..5ea691a 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,6 @@ Note: VNC is now experimentally supported on Linux w/ the latest releases, but y ~~Note: If you plan to remote into Linux via VNC, xRDP, Synergy or other remote desktop solutions then remove the current release & try an earlier [v1.0.7-3](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3) release. It uses xkb so it'll work with virtual xinput devices. Some v1.1-x releases may offer both, but all v1.2.x releases ended support for xkb. I do plan to bring offical support back for virtual input devices.~~ -Additionally VMware, Virtualbox, KVM and other virtualization technologies work best with the current release - so *this note only applies to remote desktop into Linux* - not virtualization. - ### [Table of Contents ](#Table-of-Contents) ## Donations From 8eb26a3f7490f77dbdcdfb3c22fcc6d1fa30bc8a Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Tue, 26 Jul 2022 23:18:56 -0500 Subject: [PATCH 34/35] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5ea691a..11abdde 100644 --- a/README.md +++ b/README.md @@ -149,9 +149,9 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had |Program|Src/Remote Client ⇒|Dst/Remote Server|Works? |Notes| |---|---|---|---|---| -|Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| | +|Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| Note: Make sure to set all keyboard input to go to remote. | |Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. | -|Official MS RDC from Store| ❖Windows ⇒| ❖Windows | ✅ Yes| | +|Official MS RDC from Store| ❖Windows ⇒| ❖Windows | ✅ Yes| Note: Only when maximized, all modifier keys will not pass in otherwise. | |Official MS RDC from Store| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. | |RealVNC| ❖Windows ⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | |Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ✅ Yes | Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility, then setup xrdp like normal & use xrdp 0.9.18+. | From e106710afb32a395b53a081d95b5866db717aea8 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Tue, 26 Jul 2022 23:20:35 -0500 Subject: [PATCH 35/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11abdde..cc47838 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had |FreeRDP| 🍎macOS⇒| ❖Windows | ✅ Yes| [FreeRDP for macOS](#FreeRDP-for-macOS)| |Remote Desktop Manager Free|🍎iOS⇒| ❖Windows | ✅ Yes| | |Jump Desktop (RDP)| 🍎macOS*/iOS ⇒| ❖Windows | ✅ Yes|*Preferences -> Keyboard -> Disable "Key Conversions", Enabled "Send macOS Shortcuts" under Keyboard shortcuts| -|Jump Desktop (RDP)| 🍎macOS⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility & use xrdp 0.9.18+. | +|Jump Desktop (VNC)| 🍎macOS⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility & use xrdp 0.9.18+. | |RealVNC| 🍎macOS⇒| 🐧Linux | ✅ Yes| Note: Compile & install my forked [x11vnc](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd) for compatibility. | |Official MS RDP| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed| |Remote Desktop Manager Free| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed|