Merge branch 'master' into dev

This commit is contained in:
Ben Reaves
2022-09-03 01:39:39 -05:00
6 changed files with 616 additions and 166 deletions

34
.github/workflows/01-ubuntu-budgie.yml vendored Normal file
View File

@@ -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.

View File

@@ -11,11 +11,11 @@ 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. 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. 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).
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. ~~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.~~
### [Table of Contents ](#Table-of-Contents) ### [Table of Contents ](#Table-of-Contents)
@@ -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)| |**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. 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.
@@ -149,14 +149,21 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had
|Program|Src/Remote Client ⇒|Dst/Remote Server|Works? |Notes| |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| Note: Make sure to set all keyboard input to go to remote. |
|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| 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+. |
|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| |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"| |Remmina| 🐧Linux*/ChromeOS 87+⇒| ❖Windows | ✅ Yes|*Use hover menu to enable "Grab all keyboard events"|
|FreeRDP| 🐧Linux/ChromeOS 87+⇒| ❖Windows | ✅ Yes | | |FreeRDP| 🐧Linux/ChromeOS 87+⇒| ❖Windows | ✅ Yes | |
|FreeRDP| 🍎macOS⇒| ❖Windows | ✅ Yes| [FreeRDP for macOS](#FreeRDP-for-macOS)| |FreeRDP| 🍎macOS⇒| ❖Windows | ✅ Yes| [FreeRDP for macOS](#FreeRDP-for-macOS)|
|Remote Desktop Manager Free|🍎iOS⇒| ❖Windows | ✅ Yes| | |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*/iOS ⇒| ❖Windows | ✅ Yes|*Preferences -> Keyboard -> Disable "Key Conversions", Enabled "Send macOS Shortcuts" under Keyboard shortcuts|
|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| |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| |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| |Royal TSX Client| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed|
@@ -322,7 +329,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. 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 systemd
``` ```

View File

@@ -18,9 +18,11 @@ terminals = [
"io.elementary.terminal", "io.elementary.terminal",
"kinto-gui.py", "kinto-gui.py",
"kitty", "kitty",
"Kgx", # GNOME Console terminal app
"konsole", "konsole",
"lxterminal", "lxterminal",
"mate-terminal", "mate-terminal",
"org.gnome.Console",
"qterminal", "qterminal",
"st", "st",
"sakura", "sakura",
@@ -40,6 +42,9 @@ termStr = "|".join(str('^'+x+'$') for x in terminals)
mscodes = ["code","vscodium"] mscodes = ["code","vscodium"]
codeStr = "|".join(str('^'+x+'$') for x in mscodes) 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 # Add remote desktop clients & VM software here
# Ideally we'd only exclude the client window, # Ideally we'd only exclude the client window,
# but that may not be easily done. # but that may not be easily done.
@@ -54,8 +59,10 @@ remotes = [
"VirtualBox", "VirtualBox",
"VirtualBox Machine", "VirtualBox Machine",
"xfreerdp", "xfreerdp",
"Wfica",
] ]
remotes = [client.casefold() for client in remotes] remotes = [client.casefold() for client in remotes]
remotesStr = "|".join(str('^'+x+'$') for x in remotes)
# Add remote desktop clients & VMs for no remapping # Add remote desktop clients & VMs for no remapping
terminals.extend(remotes) terminals.extend(remotes)
@@ -69,10 +76,13 @@ browsers = [
"Epiphany", "Epiphany",
"Firefox", "Firefox",
"Firefox Developer Edition", "Firefox Developer Edition",
"Navigator",
"firefoxdeveloperedition",
"Waterfox", "Waterfox",
"Google-chrome", "Google-chrome",
"microsoft-edge", "microsoft-edge",
"microsoft-edge-dev", "microsoft-edge-dev",
"org.deepin.browser",
] ]
browsers = [browser.casefold() for browser in browsers] browsers = [browser.casefold() for browser in browsers]
browserStr = "|".join(str('^'+x+'$') for x in browsers) browserStr = "|".join(str('^'+x+'$') for x in browsers)
@@ -83,6 +93,7 @@ chromes = [
"Google-chrome", "Google-chrome",
"microsoft-edge", "microsoft-edge",
"microsoft-edge-dev", "microsoft-edge-dev",
"org.deepin.browser",
] ]
chromes = [chrome.casefold() for chrome in chromes] chromes = [chrome.casefold() for chrome in chromes]
chromeStr = "|".join(str('^'+x+'$') for x in chromes) chromeStr = "|".join(str('^'+x+'$') for x in chromes)
@@ -179,16 +190,16 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), {
# Keybindings for IntelliJ # Keybindings for IntelliJ
define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
# General # General
K("C-Key_0"): K("M-Key_0"), # Open corresponding tool window K("C-Key_0"): K("Alt-Key_0"), # Open corresponding tool window
K("C-Key_1"): K("M-Key_1"), # Open corresponding tool window K("C-Key_1"): K("Alt-Key_1"), # Open corresponding tool window
K("C-Key_2"): K("M-Key_2"), # Open corresponding tool window K("C-Key_2"): K("Alt-Key_2"), # Open corresponding tool window
K("C-Key_3"): K("M-Key_3"), # Open corresponding tool window K("C-Key_3"): K("Alt-Key_3"), # Open corresponding tool window
K("C-Key_4"): K("M-Key_4"), # Open corresponding tool window K("C-Key_4"): K("Alt-Key_4"), # Open corresponding tool window
K("C-Key_5"): K("M-Key_5"), # Open corresponding tool window K("C-Key_5"): K("Alt-Key_5"), # Open corresponding tool window
K("C-Key_6"): K("M-Key_6"), # Open corresponding tool window K("C-Key_6"): K("Alt-Key_6"), # Open corresponding tool window
K("C-Key_7"): K("M-Key_7"), # Open corresponding tool window K("C-Key_7"): K("Alt-Key_7"), # Open corresponding tool window
K("C-Key_8"): K("M-Key_8"), # Open corresponding tool window K("C-Key_8"): K("Alt-Key_8"), # Open corresponding tool window
K("C-Key_9"): K("M-Key_9"), # 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("Super-Grave"): K("C-Grave"), # Quick switch current scheme
K("C-Comma"): K("C-M-s"), # Open Settings dialog K("C-Comma"): K("C-M-s"), # Open Settings dialog
K("C-Semicolon"): K("C-M-Shift-s"), # Open Project Structure dialog K("C-Semicolon"): K("C-M-Shift-s"), # Open Project Structure dialog
@@ -197,49 +208,49 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
# Search/Replace # Search/Replace
K("C-g"): K("F3"), # Find next K("C-g"): K("F3"), # Find next
K("C-Shift-F3"): K("Shift-F3"), # Find previous 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("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 # Editing
K("Super-Space"): K("LC-Space"), # Basic code completion K("Super-Space"): K("LC-Space"), # Basic code completion
K("Super-Shift-Space"): K("LC-Shift-Space"),# Smart code completion K("Super-Shift-Space"): K("LC-Shift-Space"),# Smart code completion
K("Super-j"): K("C-q"), # Quick documentation lookup 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-o"): K("C-o"), # Override methods
K("Super-i"): K("C-i"), # Implement methods K("Super-i"): K("C-i"), # Implement methods
K("M-Up"): K("C-w"), # Extend selection K("Alt-Up"): K("C-w"), # Extend selection
K("M-Down"): K("C-Shift-w"), # Shrink selection K("Alt-Down"): K("C-Shift-w"), # Shrink selection
K("Super-Shift-q"): K("M-q"), # Context info K("Super-Shift-q"): K("Alt-q"), # Context info
K("Super-M-o"): K("C-M-o"), # Optimize imports K("Super-M-o"): K("C-M-o"), # Optimize imports
K("Super-M-i"): K("C-M-i"), # Auto-indent line(s) K("Super-M-i"): K("C-M-i"), # Auto-indent line(s)
K("C-Backspace"): K("C-y"), # Delete line at caret K("C-Backspace"): K("C-y"), # Delete line at caret
K("Super-Shift-j"): K("C-Shift-j"), # Smart line join K("Super-Shift-j"): K("C-Shift-j"), # Smart line join
K("M-Delete"): K("C-Delete"), # Delete to word end K("Alt-Delete"): K("C-Delete"), # Delete to word end
K("M-Backspace"): K("C-Backspace"), # Delete to word start K("Alt-Backspace"): K("C-Backspace"), # Delete to word start
K("C-Shift-Equal"): K("C-KPPLUS"), # Expand code block K("C-Shift-Equal"): K("C-KPPLUS"), # Expand code block
K("C-Minus"): K("C-KPMINUS"), # Collapse code block K("C-Minus"): K("C-KPMINUS"), # Collapse code block
K("C-Shift-Equal"): K("C-Shift-KPPLUS"), # Expand all K("C-Shift-Equal"): K("C-Shift-KPPLUS"), # Expand all
K("C-Shift-Minus"): K("C-Shift-KPMINUS"), # Collapse all K("C-Shift-Minus"): K("C-Shift-KPMINUS"), # Collapse all
K("C-w"): K("C-F4"), # Close active editor tab K("C-w"): K("C-F4"), # Close active editor tab
# Refactoring # 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 K("C-T"): K("C-M-Shift-t"), # Refactor this
# Navigation # Navigation
K("C-o"): K("C-n"), # Go to class K("C-o"): K("C-n"), # Go to class
K("C-Shift-o"): K("C-Shift-n"), # Go to file K("C-Shift-o"): K("C-Shift-n"), # Go to file
K("C-M-o"): K("C-M-Shift-n"), # Go to symbol 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-Right"): K("Alt-Right"), # Go to next editor tab
K("Super-Left"): K("M-Left"), # Go to previous editor tab K("Super-Left"): K("Alt-Left"), # Go to previous editor tab
K("C-l"): K("C-g"), # Go to line 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("C-Y"): K("C-Shift-i"), # Open quick definition lookup
K("Super-Shift-b"): K("C-Shift-b"), # Go to type declaration K("Super-Shift-b"): K("C-Shift-b"), # Go to type declaration
K("Super-Up"): K("M-Up"), # Go to previous K("Super-Up"): K("Alt-Up"), # Go to previous
K("Super-Down"): K("M-Down"), # Go to next method K("Super-Down"): K("Alt-Down"), # Go to next method
K("Super-h"): K("C-h"), # Type hierarchy K("Super-h"): K("C-h"), # Type hierarchy
K("Super-M-h"): K("C-M-h"), # Call hierarchy K("Super-M-h"): K("C-M-h"), # Call hierarchy
K("C-Down"): K("C-Enter"), # Edit source/View source 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("F2"): K("F11"), # Toggle bookmark
K("Super-F3"): K("C-F11"), # Toggle bookmark with mnemonic K("Super-F3"): K("C-F11"), # Toggle bookmark with mnemonic
K("Super-Key_0"): K("C-Key_0"), # Go to numbered bookmark K("Super-Key_0"): K("C-Key_0"), # Go to numbered bookmark
@@ -254,14 +265,14 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
K("Super-Key_9"): K("C-Key_9"), # Go to numbered bookmark K("Super-Key_9"): K("C-Key_9"), # Go to numbered bookmark
K("C-F3"): K("Shift-F11"), # Show bookmarks K("C-F3"): K("Shift-F11"), # Show bookmarks
# Compile and Run # Compile and Run
K("Super-M-r"): K("M-Shift-F10"), # Select configuration and run K("Super-M-r"): K("Alt-Shift-F10"), # Select configuration and run
K("Super-M-d"): K("M-Shift-F9"), # Select configuration and debug K("Super-M-d"): K("Alt-Shift-F9"), # Select configuration and debug
K("Super-r"): K("Shift-F10"), # Run K("Super-r"): K("Shift-F10"), # Run
K("Super-d"): K("Shift-F9"), # Debug K("Super-d"): K("Shift-F9"), # Debug
K("Super-Shift-r"): K("C-Shift-F10"), # Run context configuration from editor 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 K("Super-Shift-d"): K("C-Shift-F9"), # Debug context configuration from editor
# VCS/Local History # 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 K("Super-c"): K("LC-c"), # Sigints - interrupt
},"Jetbrains") },"Jetbrains")
@@ -271,14 +282,14 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
# Keybindings overrides for Caja # Keybindings overrides for Caja
# (overrides some bindings from general file manager code block below) # (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-Enter"), # Open in new tab
K("RC-Super-o"): K("RC-Shift-W"), # Open in new window K("RC-Super-o"): K("RC-Shift-W"), # Open in new window
},"Overrides for Caja - Finder Mods") },"Overrides for Caja - Finder Mods")
# Keybindings overrides for DDE (Deepin) File Manager # Keybindings overrides for DDE (Deepin) File Manager
# (overrides some bindings from general file manager code block below) # (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-i"): K("RC-i"), # File properties dialog (Get Info)
K("RC-comma"): None, # Disable preferences shortcut (no shortcut available) K("RC-comma"): None, # Disable preferences shortcut (no shortcut available)
K("RC-Up"): K("RC-Up"), # Go Up dir K("RC-Up"): K("RC-Up"), # Go Up dir
@@ -290,7 +301,7 @@ define_keymap(re.compile("dde-file-manager", re.IGNORECASE),{
# Keybindings overrides for Dolphin # Keybindings overrides for Dolphin
# (overrides some bindings from general file manager code block below) # (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_2"): K("C-KEY_3"), # View as List (Detailed)
K("RC-KEY_3"): K("C-KEY_2"), # View as List (Compact) K("RC-KEY_3"): K("C-KEY_2"), # View as List (Compact)
########################################################################################## ##########################################################################################
@@ -307,14 +318,14 @@ define_keymap(re.compile("dolphin", re.IGNORECASE),{
# Keybindings overrides for elementary OS Files (Pantheon) # Keybindings overrides for elementary OS Files (Pantheon)
# (overrides some bindings from general file manager code block below) # (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-Super-o"): K("Shift-Enter"), # Open folder in new tab
K("RC-comma"): None, # Disable preferences shortcut since none available K("RC-comma"): None, # Disable preferences shortcut since none available
},"Overrides for Pantheon - Finder Mods") },"Overrides for Pantheon - Finder Mods")
# Keybindings overrides for Nautilus # Keybindings overrides for Nautilus
# (overrides some bindings from general file manager code block below) # (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 # 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 # 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" ] # to run command: "nautilus --new-window /home/USER" [ replace "USER" ]
@@ -327,14 +338,14 @@ define_keymap(re.compile("org.gnome.nautilus|nautilus", re.IGNORECASE),{
# Keybindings overrides for PCManFM and PCManFM-Qt # Keybindings overrides for PCManFM and PCManFM-Qt
# (overrides some bindings from general file manager code block below) # (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-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) K("RC-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog)
},"Overrides for PCManFM - Finder Mods") },"Overrides for PCManFM - Finder Mods")
# Keybindings overrides for SpaceFM # Keybindings overrides for SpaceFM
# (overrides some bindings from general file manager code block below) # (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_Up"): K("C-Shift-Tab"), # Go to prior tab
K("RC-Page_Down"): K("C-Tab"), # Go to next 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 K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Go to prior tab
@@ -343,16 +354,16 @@ define_keymap(re.compile("spacefm", re.IGNORECASE),{
K("RC-Shift-Right"): K("C-Tab"), # Go to next tab 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-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-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. # 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. # SpaceFM seems to be doing some nasty binding that blocks things like Alt+Tab while the menu is open.
},"Overrides for SpaceFM - Finder Mods") },"Overrides for SpaceFM - Finder Mods")
# Keybindings overrides for Thunar # Keybindings overrides for Thunar
# (overrides some bindings from general file manager code block below) # (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-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") },"Overrides for Thunar - Finder Mods")
filemanagers = [ filemanagers = [
@@ -390,18 +401,18 @@ define_keymap(re.compile(filemanagerStr, re.IGNORECASE),{
########################################################################################################### ###########################################################################################################
### Show Properties (Get Info) | Open Settings/Preferences | Show/Hide hidden files ### ### Show Properties (Get Info) | Open Settings/Preferences | Show/Hide hidden files ###
########################################################################################################### ###########################################################################################################
K("RC-i"): K("M-Enter"), # File properties dialog (Get Info) K("RC-i"): K("Alt-Enter"), # File properties dialog (Get Info)
K("RC-comma"): [K("M-E"),K("N")], # Open preferences dialog K("RC-comma"): [K("Alt-E"),K("N")], # Open preferences dialog
K("RC-Shift-dot"): K("RC-H"), # Show/hide hidden files ("dot" files) K("RC-Shift-dot"): K("RC-H"), # Show/hide hidden files ("dot" files)
########################################################################################################### ###########################################################################################################
### Navigation ### ### Navigation ###
########################################################################################################### ###########################################################################################################
K("RC-Left_Brace"): K("M-Left"), # Go Back K("RC-Left_Brace"): K("Alt-Left"), # Go Back
K("RC-Right_Brace"): K("M-Right"), # Go Forward K("RC-Right_Brace"): K("Alt-Right"), # Go Forward
K("RC-Left"): K("M-Left"), # Go Back K("RC-Left"): K("Alt-Left"), # Go Back
K("RC-Right"): K("M-Right"), # Go Forward K("RC-Right"): K("Alt-Right"), # Go Forward
K("RC-Up"): K("M-Up"), # Go Up dir K("RC-Up"): K("Alt-Up"), # Go Up dir
# K("RC-Down"): K("M-Down"), # Go Down dir (only works on folders) [not universal] # 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("RC-O"), # Go Down dir (open folder/file) [not universal]
K("RC-Down"): K("Enter"), # Go Down dir (open folder/file) [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 K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab
@@ -428,7 +439,7 @@ define_keymap(re.compile(filemanagerStr, re.IGNORECASE),{
############################################ ############################################
# Open preferences in browsers # Open preferences in browsers
define_keymap(re.compile("Firefox", re.IGNORECASE),{ define_keymap(re.compile("^Firefox$", re.IGNORECASE),{
K("C-comma"): [ K("C-comma"): [
K("C-T"),K("a"),K("b"),K("o"),K("u"),K("t"), K("C-T"),K("a"),K("b"),K("o"),K("u"),K("t"),
K("Shift-SEMICOLON"),K("p"),K("r"),K("e"),K("f"), K("Shift-SEMICOLON"),K("p"),K("r"),K("e"),K("f"),
@@ -436,25 +447,31 @@ 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 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),{ define_keymap(re.compile(chromeStr, re.IGNORECASE),{
K("C-comma"): [K("M-e"), K("s"),K("Enter")], K("C-comma"): [K("Alt-e"), K("s"),K("Enter")], # Open preferences
}, "Browsers") 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 # Opera C-F12
# Keybindings for General Web Browsers # Keybindings for General Web Browsers
define_keymap(re.compile(browserStr, re.IGNORECASE),{ define_keymap(re.compile(browserStr, re.IGNORECASE),{
K("RC-Q"): K("RC-Q"), # Close all browsers Instances K("RC-Q"): K("RC-Q"), # Close all browsers Instances
K("M-RC-I"): K("RC-Shift-I"), # Dev tools K("Alt-RC-I"): K("RC-Shift-I"), # Dev tools
K("M-RC-J"): K("RC-Shift-J"), # Dev tools K("Alt-RC-J"): K("RC-Shift-J"), # Dev tools
K("RC-Key_1"): K("M-Key_1"), # Jump to Tab #1-#8 K("RC-Key_1"): K("Alt-Key_1"), # Jump to Tab #1-#8
K("RC-Key_2"): K("M-Key_2"), K("RC-Key_2"): K("Alt-Key_2"),
K("RC-Key_3"): K("M-Key_3"), K("RC-Key_3"): K("Alt-Key_3"),
K("RC-Key_4"): K("M-Key_4"), K("RC-Key_4"): K("Alt-Key_4"),
K("RC-Key_5"): K("M-Key_5"), K("RC-Key_5"): K("Alt-Key_5"),
K("RC-Key_6"): K("M-Key_6"), K("RC-Key_6"): K("Alt-Key_6"),
K("RC-Key_7"): K("M-Key_7"), K("RC-Key_7"): K("Alt-Key_7"),
K("RC-Key_8"): K("M-Key_8"), K("RC-Key_8"): K("Alt-Key_8"),
K("RC-Key_9"): K("M-Key_9"), # Jump to last tab K("RC-Key_9"): K("Alt-Key_9"), # Jump to last tab
# Enable Cmd+Shift+Braces for tab navigation # Enable Cmd+Shift+Braces for tab navigation
K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab 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 K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab
@@ -469,25 +486,25 @@ define_keymap(re.compile(browserStr, re.IGNORECASE),{
# K("C-Right_Brace"): K("C-Page_Down"), # K("C-Right_Brace"): K("C-Page_Down"),
}, "General Web Browsers") }, "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_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("M-Key_2"), K("RC-Key_2"): K("Alt-Key_2"),
K("RC-Key_3"): K("M-Key_3"), K("RC-Key_3"): K("Alt-Key_3"),
K("RC-Key_4"): K("M-Key_4"), K("RC-Key_4"): K("Alt-Key_4"),
K("RC-Key_5"): K("M-Key_5"), K("RC-Key_5"): K("Alt-Key_5"),
K("RC-Key_6"): K("M-Key_6"), K("RC-Key_6"): K("Alt-Key_6"),
K("RC-Key_7"): K("M-Key_7"), K("RC-Key_7"): K("Alt-Key_7"),
K("RC-Key_8"): K("M-Key_8"), K("RC-Key_8"): K("Alt-Key_8"),
K("RC-Key_9"): K("M-Key_9"), K("RC-Key_9"): K("Alt-Key_9"),
K("RC-Key_0"): K("M-Key_0"), K("RC-Key_0"): K("Alt-Key_0"),
# K("RC-a"): K("M-a"), # K("RC-a"): K("Alt-a"),
K("RC-b"): K("M-b"), K("RC-b"): K("Alt-b"),
# K("RC-c"): K("M-c"), # K("RC-c"): K("Alt-c"),
K("RC-d"): K("M-d"), K("RC-d"): K("Alt-d"),
K("RC-e"): K("M-e"), K("RC-e"): K("Alt-e"),
K("RC-f"): K("M-f"), K("RC-f"): K("Alt-f"),
K("RC-g"): K("M-g"), K("RC-g"): K("Alt-g"),
K("RC-h"): K("M-h"), K("RC-h"): K("Alt-h"),
}, "Ulauncher") }, "Ulauncher")
# Note: terminals extends to remotes as well # Note: terminals extends to remotes as well
@@ -495,23 +512,45 @@ 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) 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("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
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 # None referenced here originally
# - but remote clients and VM software ought to be set here # - but remote clients and VM software ought to be set here
# These are the typical remaps for ALL GUI based apps # These are the typical remaps for ALL GUI based apps
define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{ 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-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-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("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-Right"):K("C-M-Right"), # Default SL - Change workspace (budgie)
# K("Super-Left"):K("C-M-Left"), # 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("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("Alt-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default
K("RC-Tab"): K("M-Tab"), # Default - Cmd Tab - App Switching Default K("RC-Tab"): K("Alt-Tab"), # Default - Cmd Tab - App Switching Default
K("RC-Shift-Tab"): K("M-Shift-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("M-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching K("RC-Grave"): K("Alt-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching
K("RC-Shift-Grave"): K("M-Shift-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-Grave"): K("Super-Tab"), # xfce4 Switch within app group
# K("RC-Shift-Grave"): K("Super-Shift-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) # K("Super-Right"):K("Super-Page_Up"), # SL - Change workspace (ubuntu/fedora)
@@ -527,17 +566,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-Up"), # SL- Maximize app eos
# K("RC-LC-f"):K("Super-PAGE_UP"), # SL- Maximize app manjaro # K("RC-LC-f"):K("Super-PAGE_UP"), # SL- Maximize app manjaro
# Basic App hotkey functions # 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 # K("RC-LC-f"):K("Super-PAGE_DOWN"), # SL - Minimize app manjaro
# In-App Tab switching # In-App Tab switching
# K("M-Tab"): K("C-Tab"), # Chromebook/IBM - In-App Tab switching # K("Alt-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("Alt-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-Grave") : K("C-Shift-Tab"), # Chromebook/IBM - In-App Tab switching
K("Super-Tab"): K("LC-Tab"), # Default not-chromebook K("Super-Tab"): K("LC-Tab"), # Default not-chromebook
K("Super-Shift-Tab"): K("LC-Shift-Tab"), # Default not-chromebook K("Super-Shift-Tab"): K("LC-Shift-Tab"), # Default not-chromebook
# Fn to Alt style remaps # Fn to Alt style remaps
K("RM-Enter"): K("insert"), # Insert K("RAlt-Enter"): K("insert"), # Insert
# emacs style # emacs style
K("Super-a"): K("Home"), # Beginning of Line K("Super-a"): K("Home"), # Beginning of Line
@@ -549,7 +588,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
K("Super-k"): [K("Shift-End"), K("Backspace")], K("Super-k"): [K("Shift-End"), K("Backspace")],
K("Super-d"): K("Delete"), K("Super-d"): K("Delete"),
# K("M-RC-Space"): K(""), # Open Finder - Placeholder # K("Alt-RC-Space"): K(""), # Open Finder - Placeholder
# Wordwise # Wordwise
K("RC-Left"): K("Home"), # Beginning of Line K("RC-Left"): K("Home"), # Beginning of Line
@@ -558,17 +597,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-Shift-Right"): K("Shift-End"), # Select all to End of Line
# K("RC-Left"): K("C-LEFT_BRACE"), # Firefox-nw - Back # K("RC-Left"): K("C-LEFT_BRACE"), # Firefox-nw - Back
# K("RC-Right"): K("C-RIGHT_BRACE"), # Firefox-nw - Forward # K("RC-Right"): K("C-RIGHT_BRACE"), # Firefox-nw - Forward
# K("RC-Left"): K("M-LEFT"), # Chrome-nw - Back # K("RC-Left"): K("Alt-LEFT"), # Chrome-nw - Back
# K("RC-Right"): K("M-RIGHT"), # Chrome-nw - Forward # K("RC-Right"): K("Alt-RIGHT"), # Chrome-nw - Forward
K("RC-Up"): K("C-Home"), # Beginning of File 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-Shift-Up"): K("C-Shift-Home"), # Select all to Beginning of File
K("RC-Down"): K("C-End"), # End 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("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-Backspace"): K("C-Backspace"), # Delete Left Word of Cursor
K("Super-Delete"): K("C-Delete"), # Delete Right 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("LAlt-Backspace"): K("C-Backspace"), # Chromebook/IBM - Delete Left Word of Cursor
K("M-Backspace"): K("C-Backspace"), # Default not-chromebook K("Alt-Backspace"): K("C-Backspace"), # Default not-chromebook
K("RC-Backspace"): K("C-Shift-Backspace"), # Delete Entire Line Left of Cursor 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("Alt-Delete"): K("C-Delete"), # Delete Right Word of Cursor
# K(""): pass_through_key, # cancel # K(""): pass_through_key, # cancel
@@ -577,11 +616,11 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{ define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{
# Wordwise remaining - for Everything but VS Code # Wordwise remaining - for Everything but VS Code
K("M-Left"): K("C-Left"), # Left of Word K("Alt-Left"): K("C-Left"), # Left of Word
K("M-Shift-Left"): K("C-Shift-Left"), # Select Left of Word K("Alt-Shift-Left"): K("C-Shift-Left"), # Select Left of Word
K("M-Right"): K("C-Right"), # Right of Word K("Alt-Right"): K("C-Right"), # Right of Word
K("M-Shift-Right"): K("C-Shift-Right"), # Select Right of Word K("Alt-Shift-Right"): K("C-Shift-Right"), # Select Right of Word
K("M-Shift-g"): K("C-Shift-g"), # View source control K("Alt-Shift-g"): K("C-Shift-g"), # View source control
# ** VS Code fix ** # ** VS Code fix **
# Electron issue precludes normal keybinding fix. # Electron issue precludes normal keybinding fix.
# Alt menu auto-focus/toggle gets in the way. # Alt menu auto-focus/toggle gets in the way.
@@ -603,10 +642,10 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{
K("Super-Space"): K("LC-Space"), # Basic code completion K("Super-Space"): K("LC-Space"), # Basic code completion
# Wordwise remaining - for VS Code # Wordwise remaining - for VS Code
# Alt-F19 hack fixes Alt menu activation # Alt-F19 hack fixes Alt menu activation
K("M-Left"): [K("M-F19"),K("C-Left")], # Left of Word K("Alt-Left"): [K("Alt-F19"),K("C-Left")], # Left of Word
K("M-Right"): [K("M-F19"),K("C-Right")], # Right of Word K("Alt-Right"): [K("Alt-F19"),K("C-Right")], # Right of Word
K("M-Shift-Left"): [K("M-F19"),K("C-Shift-Left")], # Select Left of Word K("Alt-Shift-Left"): [K("Alt-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-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_DOWN"): pass_through_key, # cancel next_view
# K("C-PAGE_UP"): pass_through_key, # cancel prev_view # K("C-PAGE_UP"): pass_through_key, # cancel prev_view
@@ -629,32 +668,32 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{
K("C-Shift-g"): K("Shift-f3"), # find_prev K("C-Shift-g"): K("Shift-f3"), # find_prev
# K("Super-c"): K("LC-c"), # Default - Terminal - Sigint # K("Super-c"): K("LC-c"), # Default - Terminal - Sigint
# K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano # K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano
# K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint # K("Alt-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint
# K("M-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano # K("Alt-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano
# K("Super-C-g"): K("C-f2"), # Default - Sublime - find_all_under # 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("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-up"): K("Alt-Shift-up"), # multi-cursor up - Sublime
# K("Super-Shift-down"): K("M-Shift-down"), # multi-cursor down - Sublime # K("Super-Shift-down"): K("Alt-Shift-down"), # multi-cursor down - Sublime
# K(""): pass_through_key, # cancel # K(""): pass_through_key, # cancel
# K(""): K(""), # # K(""): K(""), #
}, "Code") }, "Code")
# Keybindings for Sublime Text # 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-c"): K("LC-c"), # Default - Terminal - Sigint
# K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano # K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano
# K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint # K("Alt-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint
# K("M-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano # K("Alt-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano
K("Super-Space"): K("C-Space"), # Basic code completion 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("Super-RC-f"): K("f11"), # toggle_full_screen
K("C-M-v"): [K("C-k"), K("C-v")], # paste_from_history 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-up"): pass_through_key, # cancel scroll_lines up
K("C-M-up"): K("C-up"), # 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-down"): pass_through_key, # cancel scroll_lines down
K("C-M-down"): K("C-down"), # 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-up"): K("Alt-Shift-up"), # multi-cursor up
K("Super-Shift-down"): K("M-Shift-down"), # multi-cursor down K("Super-Shift-down"): K("Alt-Shift-down"), # multi-cursor down
K("C-PAGE_DOWN"): pass_through_key, # cancel next_view K("C-PAGE_DOWN"): pass_through_key, # cancel next_view
K("C-PAGE_UP"): pass_through_key, # cancel prev_view K("C-PAGE_UP"): pass_through_key, # cancel prev_view
K("C-Shift-left_brace"): K("C-PAGE_DOWN"), # next_view K("C-Shift-left_brace"): K("C-PAGE_DOWN"), # next_view
@@ -663,8 +702,8 @@ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{
K("C-M-left"): K("C-PAGE_UP"), # prev_view K("C-M-left"): K("C-PAGE_UP"), # prev_view
K("insert"): pass_through_key, # cancel toggle_overwrite K("insert"): pass_through_key, # cancel toggle_overwrite
K("C-M-o"): K("insert"), # toggle_overwrite K("C-M-o"): K("insert"), # toggle_overwrite
K("M-c"): pass_through_key, # cancel toggle_case_sensitive K("Alt-c"): pass_through_key, # cancel toggle_case_sensitive
K("C-M-c"): K("M-c"), # toggle_case_sensitive K("C-M-c"): K("Alt-c"), # toggle_case_sensitive
K("C-h"): pass_through_key, # cancel replace K("C-h"): pass_through_key, # cancel replace
K("C-M-f"): K("C-h"), # replace K("C-M-f"): K("C-h"), # replace
K("C-Shift-h"): pass_through_key, # cancel replace_next K("C-Shift-h"): pass_through_key, # cancel replace_next
@@ -677,10 +716,10 @@ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{
K("Super-M-g"): K("C-f3"), # find_under K("Super-M-g"): K("C-f3"), # find_under
K("C-Shift-f3"): pass_through_key, # cancel find_under_prev K("C-Shift-f3"): pass_through_key, # cancel find_under_prev
K("Super-M-Shift-g"): K("C-Shift-f3"), # 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("Alt-f3"): pass_through_key, # Default - cancel find_all_under
# K("M-Refresh"): pass_through_key, # Chromebook/IBM - cancel find_all_under # K("Alt-Refresh"): pass_through_key, # Chromebook/IBM - cancel find_all_under
# K("M-C-g"): K("M-Refresh"), # Chromebook/IBM - find_all_under # K("Alt-C-g"): K("Alt-Refresh"), # Chromebook/IBM - find_all_under
K("Super-C-g"): K("M-f3"), # Default - 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("C-Shift-up"): pass_through_key, # cancel swap_line_up
K("Super-M-up"): K("C-Shift-up"), # 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 K("C-Shift-down"): pass_through_key, # cancel swap_line_down
@@ -691,25 +730,25 @@ define_keymap(re.compile("Sublime_text", re.IGNORECASE),{
K("f5"): K("f9"), # sort_lines case_s false K("f5"): K("f9"), # sort_lines case_s false
K("Super-f9"): pass_through_key, # cancel sort_lines case_s true K("Super-f9"): pass_through_key, # cancel sort_lines case_s true
K("Super-f5"): K("Super-f9"), # 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("Alt-Shift-Key_1"): pass_through_key, # cancel set_layout
K("C-M-Key_1"): K("M-Shift-Key_1"), # set_layout K("C-M-Key_1"): K("Alt-Shift-Key_1"), # set_layout
K("M-Shift-Key_2"): pass_through_key, # cancel set_layout K("Alt-Shift-Key_2"): pass_through_key, # cancel set_layout
K("C-M-Key_2"): K("M-Shift-Key_2"), # set_layout K("C-M-Key_2"): K("Alt-Shift-Key_2"), # set_layout
K("M-Shift-Key_3"): pass_through_key, # cancel set_layout K("Alt-Shift-Key_3"): pass_through_key, # cancel set_layout
K("C-M-Key_3"): K("M-Shift-Key_3"), # set_layout K("C-M-Key_3"): K("Alt-Shift-Key_3"), # set_layout
K("M-Shift-Key_4"): pass_through_key, # cancel set_layout K("Alt-Shift-Key_4"): pass_through_key, # cancel set_layout
K("C-M-Key_4"): K("M-Shift-Key_4"), # set_layout K("C-M-Key_4"): K("Alt-Shift-Key_4"), # set_layout
K("M-Shift-Key_8"): pass_through_key, # cancel set_layout K("Alt-Shift-Key_8"): pass_through_key, # cancel set_layout
K("C-M-Shift-Key_2"): K("M-Shift-Key_8"), # set_layout K("C-M-Shift-Key_2"): K("Alt-Shift-Key_8"), # set_layout
K("M-Shift-Key_9"): pass_through_key, # cancel set_layout K("Alt-Shift-Key_9"): pass_through_key, # cancel set_layout
K("C-M-Shift-Key_3"): K("M-Shift-Key_9"), # set_layout K("C-M-Shift-Key_3"): K("Alt-Shift-Key_9"), # set_layout
K("M-Shift-Key_5"): pass_through_key, # cancel set_layout K("Alt-Shift-Key_5"): pass_through_key, # cancel set_layout
K("C-M-Shift-Key_5"): K("M-Shift-Key_5"), # set_layout K("C-M-Shift-Key_5"): K("Alt-Shift-Key_5"), # set_layout
# K(""): pass_through_key, # cancel # K(""): pass_through_key, # cancel
# K(""): K(""), # # K(""): K(""), #
}, "Sublime Text") }, "Sublime Text")
define_keymap(re.compile("konsole", re.IGNORECASE),{ define_keymap(re.compile("^konsole$", re.IGNORECASE),{
# Ctrl Tab - In App Tab Switching # Ctrl Tab - In App Tab Switching
K("LC-Tab") : K("Shift-Right"), K("LC-Tab") : K("Shift-Right"),
K("LC-Shift-Tab") : K("Shift-Left"), K("LC-Shift-Tab") : K("Shift-Left"),
@@ -717,7 +756,7 @@ define_keymap(re.compile("konsole", re.IGNORECASE),{
}, "Konsole tab switching") }, "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 # Ctrl Tab - In App Tab Switching
K("LC-Tab") : K("LC-Shift-Right"), K("LC-Tab") : K("LC-Shift-Right"),
K("LC-Shift-Tab") : K("LC-Shift-Left"), K("LC-Shift-Tab") : K("LC-Shift-Left"),
@@ -725,8 +764,19 @@ define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{
}, "Elementary Terminal tab switching") }, "Elementary Terminal tab switching")
define_keymap(re.compile("^deepin-terminal$", re.IGNORECASE),{
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("alacritty", re.IGNORECASE),{
K("RC-K"): K("C-L"), # clear log
})
define_keymap(re.compile(termStr, re.IGNORECASE),{ 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-Grave"): K("Super-Tab"), # xfce4 Switch within app group
# K("RC-Shift-Grave"): K("Super-Shift-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) # K("LC-Right"):K("C-M-Right"), # Default SL - Change workspace (budgie)
@@ -743,9 +793,9 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{
K("LC-Tab") : K("LC-PAGE_DOWN"), K("LC-Tab") : K("LC-PAGE_DOWN"),
K("LC-Shift-Tab") : K("LC-PAGE_UP"), K("LC-Shift-Tab") : K("LC-PAGE_UP"),
K("LC-Grave") : K("LC-PAGE_UP"), K("LC-Grave") : K("LC-PAGE_UP"),
# K("M-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default # K("Alt-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default
# K("RC-Tab"): K("M-Tab"), # Default - Cmd Tab - App Switching Default # K("RC-Tab"): K("Alt-Tab"), # Default - Cmd Tab - App Switching Default
# K("RC-Shift-Tab"): K("M-Shift-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 # Converts Cmd to use Ctrl-Shift
K("RC-MINUS"): K("C-MINUS"), K("RC-MINUS"): K("C-MINUS"),
K("RC-EQUAL"): K("C-Shift-EQUAL"), K("RC-EQUAL"): K("C-Shift-EQUAL"),

View File

@@ -3,15 +3,19 @@
import gi import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
gi.require_version('Notify', '0.7') gi.require_version('Notify', '0.7')
import signal,time,os,fcntl,datetime,re import signal,time,os,fcntl,datetime,re
from subprocess import Popen, PIPE, CalledProcessError from subprocess import Popen, PIPE, CalledProcessError
from shutil import which from shutil import which
from gi.repository import Gtk,GLib,GdkPixbuf from gi.repository import Gtk,GLib,GdkPixbuf
from gi.repository import AppIndicator3 as appindicator
from gi.repository import Notify as notify 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 import signal

View File

@@ -62,6 +62,8 @@ Menu, Tray, Add, Autodetect Keyboards, autodetect
; Menu, Tray, check, Autodetect Keyboards ; Autodetect ; Menu, Tray, check, Autodetect Keyboards ; Autodetect
; Menu, Tray, disable, Autodetect Keyboards ; CB/IBM ; Menu, Tray, disable, Autodetect Keyboards ; CB/IBM
Menu, Tray, Add, Suspend Kinto, tray_suspend 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, Returns to Desktop, min
Menu, Tray, Add Menu, Tray, Add
Menu, Tray, Add, Close, Exit Menu, Tray, Add, Close, Exit
@@ -177,6 +179,9 @@ GroupAdd, remotes, ahk_exe mstsc.exe
GroupAdd, remotes, ahk_exe msrdc.exe GroupAdd, remotes, ahk_exe msrdc.exe
GroupAdd, remotes, ahk_exe nxplayer.bin GroupAdd, remotes, ahk_exe nxplayer.bin
GroupAdd, remotes, ahk_exe vmconnect.exe 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 ; Disabled Edge for now - no ability to close all instances
; GroupAdd, browsers, Microsoft Edge ahk_class ApplicationFrameWindow ; GroupAdd, browsers, Microsoft Edge ahk_class ApplicationFrameWindow
@@ -214,6 +219,57 @@ GroupAdd, intellij, ahk_exe idea64.exe
; +F8::Send {LCtrl down}{LWin down}{left}{LCtrl up}{LWin up} ; Comment out on host machine ; +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 ; +F6::Send {LCtrl down}{LWin down}{right}{LCtrl up}{LWin up} ; Comment out on host machine
; #########################################################################
; ############# START OF FINDER MODS FOR FILE MANAGERS ################
; #########################################################################
; Finder Mods for Windows File Explorer (explore.exe)
#IfWinActive ahk_class CabinetWClass ahk_exe explorer.exe
^i::Send !{Enter} ; Cmd+i: Get Info / Properties
^r::Send {F5} ; Cmd+R: Refresh view (Not actually a Finder shortcut? But works in Linux file browsers too.)
^1::Send ^+2 ; Cmd+1: View as Icons
^2::Send ^+6 ; Cmd+2: View as List (Detailed)
^3::Send ^+5 ; Cmd+3: View as List (Compact)
^4::Send ^+1 ; Cmd+4: View as Gallery
^Up::Send !{Up} ; Cmd+Up: Up to parent folder
^Left::Send !{Left} ; Cmd+Left: Go to prior location in history
^Right::Send !{Right} ; Cmd+Right: Go to next location in history
^Down:: ; Cmd-Down: Navigate into the selected directory
For window in ComObjCreate("Shell.Application").Windows
If WinActive() = window.hwnd
For item in window.document.SelectedItems {
window.Navigate(item.Path)
Return
}
Return
^[::Send !{Left} ; Cmd+Left_Brace: Go to prior location in history
^]::Send !{Right} ; Cmd+Right_Brace: Go to next location in history
^+o::Send ^{Enter} ; Cmd+Shift+o: Open in new window (tabs not available)
^Delete::Send {Delete} ; Cmd+Delete: Delete / Send to Trash
^BackSpace::Send {Delete} ; Cmd+Delete: Delete / Send to Trash
^d::return, ; Block the unusual Explorer "delete" shortcut of Ctrl+D, used for "bookmark" in similar apps
$Enter:: ; Use Enter key to rename (F2), unless focus is inside a text input field.
ControlGetFocus, fc, A
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1,SysTreeView321
Send {Enter}
Else Send {F2}
Return
$BackSpace:: ; Backspace (without Cmd): Block Backspace key with error beep, unless inside text input field
ControlGetFocus, fc, A
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1
Send {BackSpace}
Else SoundBeep, 600, 300
Return
$Delete:: ; Delete (without Cmd): Block Delete key with error beep, unless inside text input field
ControlGetFocus, fc, A
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1
Send {Delete}
Else SoundBeep, 600, 300
Return
#IfWinActive
; #########################################################################
; ############## END OF FINDER MODS FOR FILE MANAGERS #################
; #########################################################################
#IfWinNotActive ahk_group remotes #IfWinNotActive ahk_group remotes
; Lock Workstation ; Lock Workstation
#^q::DllCall("LockWorkStation") #^q::DllCall("LockWorkStation")
@@ -451,7 +507,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
; z::Send #z ; Chromebook ; z::Send #z ; Chromebook
; #If ; Chromebook ; #If ; Chromebook
#IfWinNotActive ahk_group terminals #If Not WinActive("ahk_group terminals") and Not WinActive("ahk_group remotes")
^.::Send {Esc} ^.::Send {Esc}
; emacs style ; emacs style
#n::Send {Down} #n::Send {Down}
@@ -561,13 +617,16 @@ GroupAdd, intellij, ahk_exe idea64.exe
; Close all browsers ; Close all browsers
#IfWinActive ahk_group browsers #IfWinActive ahk_group browsers
;Tab Navigation ; Page Navigation
^+[::send ^{PgUp} ^[::send !{Left} ; Go to prior page
^+]::send ^{PgDn} ^]::send !{Right} ; Go to next page
^!Left::send ^{PgUp} ;Tab Navigation
^!Right::send ^{PgDn} ^+[::send ^{PgUp} ; Go to prior tab (left)
#Left::send ^{PgUp} ^+]::send ^{PgDn} ; Go to next tab (right)
#Right::send ^{PgDn} ^!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 ^q::send {Alt Down}f{Alt Up}x ; exit all windows
; Dev Tools ; Dev Tools
!^i::send {Ctrl Down}{Shift Down}i{Shift Up}{Ctrl Up} !^i::send {Ctrl Down}{Shift Down}i{Shift Up}{Ctrl Up}
@@ -867,3 +926,298 @@ Send {LWin up}
Send {RShift up} Send {RShift up}
Send {LShift up} Send {LShift up}
return return
; ###############################################################################################################
; ### Special character insertion like Apple/macOS Option key methods, mapping to Unicode input method
; ### Common symbols available with Option+key or Shift+Option+key, accented keys with Option+Key1, then Key2
; ###############################################################################################################
; Shortcut to activate Option key special character scheme
^+!o::Gosub, toggle_optspecialchars
; Function (subroutine?) for activation by tray menu item or keyboard shortcut
toggle_optspecialchars:
optspecialchars:=!optspecialchars ; Toggle value of optspecialchars variable on/off
if (optspecialchars = 1) {
Menu, Tray, Check, OptSpecialChars Shift+Opt+Cmd+O
MsgBox, 0, ALERT, % "Option key special character entry scheme is now ENABLED.`n`n"
. "WARNING: This will interfere with many Alt and Alt-Shift shortcuts.`n`n"
. "Disable from tray menu or with Shift+Opt+Cmd+O."
return
}
if (optspecialchars = 0) {
Menu, Tray, Uncheck, OptSpecialChars Shift+Opt+Cmd+O
MsgBox, 0, ALERT, Option key special character entry scheme is now DISABLED.
return
}
return
; #IfWinNotActive ahk_group remotes
#If !WinActive("ahk_group remotes") && optspecialchars = 1
; ###### NUMBER KEYS ROW ######
; Dead_Keys_Accent_Grave
; ### SC029 is ` (Grave key above Tab)
; Grave accent: Option+`, then key to accent
$!SC029::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Grave accent activated by Option+` (Alt plus scan code SC029, or !SC029)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E0} ; à {U+00E0} (Alt+0224)
Case "e": Send, {U+00E8} ; è {U+00E8} (Alt+0232)
Case "i": Send, {U+00EC} ; ì {U+00EC} (Alt+0236)
Case "o": Send, {U+00F2} ; ò {U+00F2} (Alt+0242)
Case "u": Send, {U+00F9} ; ù {U+00F9} (Alt+0249)
Case "A": Send, {U+00C0} ; À {U+00C0} (Alt+0192)
Case "E": Send, {U+00C8} ; È {U+00C8} (Alt+0200)
Case "I": Send, {U+00CC} ; Ì {U+00CC} (Alt+0204)
Case "O": Send, {U+00D2} ; Ò {U+00D2} (Alt+0210)
Case "U": Send, {U+00D9} ; Ù {U+00D9} (Alt+0217)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
; ### SC029 is ` (Grave key above Tab)
$!+SC029::Send, {U+0060} ; Grave Accent diacritic (non-combining) {U+0060}: ` (Alt+96)
$!1::Send, {U+00A1} ; Inverted Exclamation Mark {U+00A1}: ¡ (Alt+0161)
$!+1::Send, {U+2044} ; Fraction Slash, solidus (U+2044): (Alt+8260) [Needs Unicode]
$!2::Send, {U+2122} ; Trade Mark Sign Emoji {U+2122}: ™ (Alt+0153)
$!+2::Send, {U+20AC} ; Euro currency symbol {U+20AC}: € (Alt+0128)
$!3::Send, {U+00A3} ; British Pound currency symbol {U+00A3}: £ (Alt+0163)
$!+3::Send, {U+2039} ; Single Left-Pointing Angle Quotation mark {U+2039}: (Alt+0139)
$!4::Send, {U+00A2} ; Cent currency symbol {U+00A2}: ¢ (Alt+0162)
$!+4::Send, {U+203A} ; Single Right-Pointing Angle Quotation mark (U+203A): (Alt+0155)
$!5::Send, {U+221E} ; Infinity mathematical symbol {U+221E}: ∞ (Alt+236)
$!+5::Send, {U+FB01} ; fi latin small ligature: fi (U+FB01) (Alt+64257) [Needs Unicode]
$!6::Send, {U+00A7} ; Section symbol {U+00A7}: § (Alt+0167)
$!+6::Send, {U+FB02} ; fl small ligature: (U+FB02) (Alt+64258) [Needs Unicode.]
$!7::Send, {U+00B6} ; Paragraph mark (Pilcrow) symbol {U+00B6}: ¶ (Alt+0182)
$!+7::Send, {U+2021} ; Double dagger (cross) symbol {U+2021}: ‡ (Alt+0135)
$!8::Send, {U+2022} ; Bullet point symbol {U+2022}: • (Alt+0149)
$!+8::Send, {U+00B0} ; Degree symbol {U+00B0}: ° (Alt+0176)
$!9::Send, {U+00AA} ; Feminine Ordinal Indicator symbol {U+00AA}: ª (Alt+0170)
$!+9::Send, {U+00B7} ; Middle Dot (interpunct/middot) symbol {U+00B7}: · (Alt+0183)
$!0::Send, {U+00BA} ; Masculine Ordinal Indicator symbol {U+00BA}: º (Alt+0186)
$!+0::Send, {U+201A} ; Single low-9 quotation mark {U+201A}: (Alt+0130)
$!-::Send, {U+2013} ; En Dash symbol {U+2013}: (Alt+0150)
$!+-::Send, {U+2014} ; Em Dash symbol {U+2014}: — (Alt+0151)
$!=::Send, {U+2260} ; Not Equal To symbol (U+2260): ≠ (Alt+8800) [Needs Unicode]
$!+=::Send, {U+00B1} ; Plus Minus symbol {U+00B1}: ± (Alt+0177)
; ###### LETTER AND PUNCTUATION KEYS ###### [ in QWERTY order ]
; ##############
; ### 1st row: Tab-key row [ qwertyuiop[]\ ] [ QWERTYUIOP{}| ]
$!q::Send, {U+0153} ; Small oe (oethel) ligature {U+0153}: œ (Alt+0156)
$!+q::Send, {U+0152} ; Capital OE (Oethel) ligature {U+0152}: Œ (Alt+0140)
$!w::Send, {U+2211} ; N-Ary Summation (sigma) notation (U+2211}: ∑ [Needs Unicode]
$!+w::Send, {U+201E} ; Double Low-9 Quotation mark {U+201E}: „ (Alt+0132)
; Dead_Keys_Accent_Acute
; Acute accent: Option+e, then key to accent
$!e::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Acute accent activated by Option+e (logical Alt+e)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E1} ; á {U+00E1} (Alt+0225)
Case "e": Send, {U+00E9} ; é {U+00E9} (Alt+0233)
Case "i": Send, {U+00ED} ; í {U+00ED} (Alt+0237)
Case "o": Send, {U+00F3} ; ó {U+00F3} (Alt+0243)
Case "u": Send, {U+00FA} ; ú {U+00FA} (Alt+0250)
Case "A": Send, {U+00C1} ; Á {U+00C1} (Alt+0193)
Case "E": Send, {U+00C9} ; É {U+00C9} (Alt+0201)
Case "I": Send, {U+00CD} ; Í {U+00CD} (Alt+0205)
Case "O": Send, {U+00D3} ; Ó {U+00D3} (Alt+0211)
Case "U": Send, {U+00DA} ; Ú {U+00DA} (Alt+0218)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+e::Send, {U+00B4} ; Acute accent diacritic (non-combining) {U+00B4}: ´ (Alt+0180)
$!r::Send, {U+00AE} ; Registered Trade Mark Sign {U+00AE}: ® (Alt+0174)
$!+r::Send, {U+2030} ; Per mille symbol {U+2030}: ‰ (Alt+0137)
$!t::Send, {U+2020} ; Simple dagger (cross) symbol {U+2020}: † (Alt+0134)
$!+t::Send, {U+02C7} ; Caron/hacek diacritic (non-combining) (U+02C7): ˇ (Alt+0134)
$!y::Send, {U+00A5} ; Yen currency symbol {U+00A5}: ¥ (Alt+0165)
$!+y::Send, {U+00C1} ; Latin Capital Letter a with Acute (U+00C1): Á (Alt+0193)
; Dead_Keys_Accent_Umlaut
; Umlaut/Diaeresis accent: Option+u, then key to accent
$!u::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Umlaut/Diaeresis accent activated by Option+u (logical Alt+u)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E4} ; ä {U+00E4} (Alt+0228)
Case "e": Send, {U+00EB} ; ë {U+00EB} (Alt+0235)
Case "i": Send, {U+00EF} ; ï {U+00EF} (Alt+0239)
Case "o": Send, {U+00F6} ; ö {U+00F6} (Alt+0246)
Case "u": Send, {U+00FC} ; ü {U+00FC} (Alt+0252)
Case "y": Send, {U+00FF} ; ÿ {U+00FF} (Alt+0255)
Case "A": Send, {U+00C4} ; Ä {U+00C4} (Alt+0196)
Case "E": Send, {U+00CB} ; Ë {U+00CB} (Alt+0203)
Case "I": Send, {U+00CF} ; Ï {U+00CF} (Alt+0207)
Case "O": Send, {U+00D6} ; Ö {U+00D6} (Alt+0214)
Case "U": Send, {U+00DC} ; Ü {U+00DC} (Alt+0220)
Case "Y": Send, {U+0178} ; Ÿ {U+0178} (Alt+0159)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+u::Send, {U+00A8} ; Umlaut/Diaeresis diacritic (non-combining) {U+00A8}: (Alt+0168)
; Dead_Keys_Accent_Circumflex
; Circumflex accent: Option+i, then key to accent
$!i::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Circumflex accent activated by Option+i (logical Alt+i)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E2} ; â {U+00E2} (Alt+0226)
Case "e": Send, {U+00EA} ; ê {U+00EA} (Alt+0234)
Case "i": Send, {U+00EE} ; î {U+00EE} (Alt+0238)
Case "o": Send, {U+00F4} ; ô {U+00F4} (Alt+0244)
Case "u": Send, {U+00FB} ; û {U+00FB} (Alt+0251)
Case "A": Send, {U+00C2} ; Â {U+00C2} (Alt+0194)
Case "E": Send, {U+00CA} ; Ê {U+00CA} (Alt+0202)
Case "I": Send, {U+00CE} ; Î {U+00CE} (Alt+0206)
Case "O": Send, {U+00D4} ; Ô {U+00D4} (Alt+0212)
Case "U": Send, {U+00DB} ; Û {U+00DB} (Alt+0219)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+i::Send, {U+02C6} ; Modifier Letter Circumflex Accent (U+02C6): ˆ (Alt+0137)
$!o::Send, {U+00F8} ; Latin Small Letter o with Stroke {U+00F8}: ø (Alt+0248)
$!+o::Send, {U+00D8} ; Latin Capital Letter O with Stroke {U+00D8}: Ø (Alt+0216)
$!p::Send, {U+03C0} ; Greek Small Letter Pi {U+03C0}: π (Alt+227)
$!+p::Send, {U+220F} ; N-Ary Product mathematical symbol (U+220F): ∏ [Needs Unicode]
$![::Send, {U+201C} ; Left Double Quotation Mark {U+201C}: “ (Alt+0147)
$!+[::Send, {U+201D} ; Right Double Quotation Mark {U+201D}: ” (Alt+8)
$!]::Send, {U+2018} ; Left Single Quotation Mark {U+2018}: (Alt+0145)
$+!]::Send, {U+2019} ; Right Single Quotation Mark {U+2019}: (Alt+0146)
$!\::Send, {U+00AB} ; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00AB}: « (Alt+0171)
$!+\::Send, {U+00BB} ; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00BB}: » (Alt+0187)
; ##############
; ### 2nd row: Caps Lock row [ asdfghjkl;' ] [ ASDFGHJKL:" ]
$!a::Send, {U+00E5} ; Small Letter a with Ring Above {U+00E5}: å (Alt+0229)
$!+a::Send, {U+00C5} ; Capital Letter A with Ring Above {U+00C5}: Å (Alt+0197)
$!s::Send, {U+00DF} ; German Eszett/beta (Sharfes/Sharp S) {U+00DF}: ß (Alt+0223)
$!+s::Send, {U+00CD} ; Latin Capital Letter I with Acute {U+00CD}: Í (Alt+0205)
$!d::Send, {U+2202} ; Partial Differential mathematical symbol {U+2202}: ∂ (Alt+2202) [Needs Unicode]
$!+d::Send, {U+00CE} ; Latin Capital Letter I with Circumflex {U+00CE}: Î (Alt+0206)
$!f::Send, {U+0192} ; Function/florin currency symbol {U+0192}: ƒ (Alt+159)
$!+f::Send, {U+00CF} ; Latin Capital Letter I with Diaeresis {U+00CF}: Ï (Alt+0207)
; #######################################################################
; ## Problem: Option+g (Win+g) brings up Windows XBox Game Bar!
; ## To remove/disable paste this text in PowerShell (without quotes):
; ## "Get-AppxPackage Microsoft.XboxGamingOverlay | Remove-AppxPackage"
; #######################################################################
$!g::Send, {U+00A9} ; Copyright Sign {U+00A9}: © (Alt+0169)
$!+g::Send, {U+02DD} ; Double Acute Accent diacritic (non-combining) {U+02DD}: ˝ [Needs Unicode]
$!h::Send, {U+02D9} ; Dot Above diacritic (non-combining) {U+02D9}: ˙ [Needs Unicode]
$!+h::Send, {U+00D3} ; Latin Capital Letter O with Acute {U+00D3}: Ó (Alt+0211)
$!j::Send, {U+2206} ; Increment, laplace operator symbol {U+2206}: ∆ [Needs Unicode]
$!+j::Send, {U+00D4} ; Latin Capital Letter O with Circumflex {U+00D4}: Ô (Alt+0212)
$!k::Send, {U+02DA} ; Ring Above diacritic (non-combining) {U+02DA}: ˚ [Needs Unicode] (NOT degree sign/symbol)
; Apple logo {U+F8FF}:  [Unicode Private Use Area, req's Baskerville Old Face font]
; $!+k::Send, {U+F8FF} ; This Unicode address only works with Mac fonts
$!+k::
Send, {U+F000} ; Change font of inserted character (may be invisible) to Baskerville Old Face
apple_logo_alert:=1 ; Set to zero to disable, one to enable (default is enabled)
if (apple_logo_alert=1) {
MsgBox, 0, ALERT, % "ALERT: Change the font of the inserted character!`n`n"
. "Apple logo character requires the Baskerville Old Face font.`n`n`n"
. "Note 1: The character has been inserted but may be INVISIBLE`n"
. " (i.e., non-printing) in its current font.`n`n`n"
. "Note 2: The inserted character will probably NOT be portable`n"
. " to a Mac document/font. Use only for print/PDF `n"
. " purposes on PC.`n`n`n"
. "Note 3: Search for apple_logo_alert in kinto.ahk config and `n"
. " set it to zero to disable this MsgBox.`n`n`n"
}
return
; #######################################################################
; ## Option+L works, but will also trigger the Win+L screen locking.
; ## The screen locking shortcut can only be disabled in the registry.
; #######################################################################
$!l::Send, {U+00AC} ; Not Sign angled dash symbol {U+00AC}: ¬ (Alt+170)
$!+l::Send, {U+00D2} ; Latin Capital Letter O with Grave {U+00D2}: Ò (Alt+0210)
$!;::Send, {U+2026} ; Horizontal elipsis {U+2026}: … (Alt+0133)
$!+;::Send, {U+00DA} ; Latin Capital Letter U with Acute {U+00DA}: Ú (Alt+0218)
; #######################################################################
; ## SC028 is single-quote key scan code
; #######################################################################
$!SC028::Send, {U+00E6} ; Small ae ligature {U+00E6}: æ (Alt+0230)
$!+SC028::Send, {U+00C6} ; Capital AE ligature {U+00C6}: Æ (Alt+0198)
; ##############
; ### 3rd row: Shift-Keys row [ zxcvbnm,./ ] [ ZXCVBNM<>? ]
$!z::Send, {U+03A9} ; Greek Capital Letter Omega symbol {U+03A9} Ω (Alt+234)
$!+z::Send, {U+00B8} ; Spacing Cedilla diacritic symbol (non-combining) {U+00B8}: ¸ (Alt+0184)
$!x::Send, {U+2248} ; Almost Equal To symbol (U+2248): ≈ (Alt+247)
$!+x::Send, {U+02DB} ; Ogonek diacritic (non-combining) (U+02DB): ˛ [Needs Unicode]
$!c::Send, {U+00E7} ; Small Letter c with Cedilla {U+00E7}: ç (Alt+0231)
$!+c::Send, {U+00C7} ; Capital Letter C with Cedilla {U+00C7}: Ç (Alt+0199)
$!v::Send, {U+221A} ; Square Root radical sign (U+221A): √ (Alt+251)
$!+v::Send, {U+25CA} ; Lozenge (diamond) shape symbol (U+25CA): ◊ [Needs Unicode]
$!b::Send, {U+222B} ; Integral mathematical symbol (U+222B): ∫ [Needs Unicode]
$!+b::Send, {U+0131} ; Latin Small Letter Dotless i (U+0131): ı [Needs Unicode]
; Dead_Keys_Accent_Tilde
; Tilde accent: Option+n, then key to accent
$!n::
; Use Apple "dead keys" Option key method to attach accents to next character typed
; Tilde accent activated by Option+n (logical Alt+n)
StringCaseSense, On
; watch next input string
Input, UserInput, L1
Switch UserInput {
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
Case "a": Send, {U+00E3} ; ã {U+00E3} (Alt+0227)
Case "n": Send, {U+00F1} ; ñ {U+00F1} (Alt+0241)
Case "o": Send, {U+00F5} ; õ {U+00F5} (Alt+0245)
Case "A": Send, {U+00C3} ; Ã {U+00C3} (Alt+0195)
Case "N": Send, {U+00D1} ; Ñ {U+00D1} (Alt+0209)
Case "O": Send, {U+00D5} ; Õ {U+00D5} (Alt+0213)
Default: Send, %UserInput% ; No match? Send input through.
}
Return
$!+n::Send, {U+02DC} ; Small Tilde character (U+02DC): ˜ (Alt+0152)
$!m::Send, {U+00B5} ; Micro (mu) symbol {U+00B5}: µ (Alt+0181)
$!+m::Send, {U+00C2} ; Latin Capital Letter a with Circumflex (U+00C2): Â (Alt+0194)
$!,::Send, {U+2264} ; Less than or equal to symbol {U+2264}: ≤ (Alt+243)
$!+,::Send, {U+00AF} ; Macron/overline/apl overbar (non-combining) (U+00AF): ¯ (Alt+0175)
$!.::Send, {U+2265} ; Greater than or equal to symbol {U+2265}: ≥ (Alt+242)
$!+.::Send, {U+02D8} ; Breve diacritic (non-combining) {U+02D8}: ˘ [Needs Unicode]
$!/::Send, {U+00F7} ; Obelus/Division symbol {U+00F7}: ÷ (Alt+0247)
$!+/::Send, {U+00BF} ; Inverted Question Mark {U+00BF}: ¿ (Alt+0191)
#If ; ### END of special character insertion with Option(Alt) key

View File

@@ -315,8 +315,9 @@ if ! [ -x "$(command -v xhost)" ] || ! [ -x "$(command -v gcc)" ]; then
fi fi
if [[ $dename == "kde" ]]; then 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 vte3
sudo ./linux/system-config/unipkg.sh python-pip
else else
sudo ./linux/system-config/unipkg.sh libvte-2.91-dev sudo ./linux/system-config/unipkg.sh libvte-2.91-dev
fi fi
@@ -329,7 +330,7 @@ if [[ $distro == 'kdeneon' ]]; then
kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 & kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 &
fi 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 if [[ $(gsettings get org.gnome.desktop.wm.keybindings show-desktop | grep "\[\]" | wc -l) == 1 ]];then
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d']" gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d']"
else else
@@ -385,10 +386,10 @@ fi
if ! [ -x "$(command -v python3-config)" ]; then if ! [ -x "$(command -v python3-config)" ]; then
if [ "$distro" == "ubuntu" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ]; then if [ "$distro" == "ubuntu" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ]; then
pydev="python3-dev" pydev="python3-dev"
elif [ "$distro" == "fedora" ]; then elif [ "$distro" == "fedora" ] || [ "$distro" == "fedoralinux" ]; then
pydev="python3-devel" pydev="python3-devel"
fi 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..." echo "Will need to install $pydev..."
sudo ./linux/system-config/unipkg.sh "$pydev" sudo ./linux/system-config/unipkg.sh "$pydev"
fi fi
@@ -500,7 +501,7 @@ if [[ $distro == "popos" ]]; then
perl -pi -e "\s{4}(# )(K.*)(# SL - .*popos.*)/ \$2\$3/g" ./linux/kinto.py.new >/dev/null 2>&1 perl -pi -e "\s{4}(# )(K.*)(# SL - .*popos.*)/ \$2\$3/g" ./linux/kinto.py.new >/dev/null 2>&1
fi 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 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 sed -i "s#{sudo}##g" ./linux/xkeysnail.service.new
selinuxuser=system_u selinuxuser=system_u
@@ -575,7 +576,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
exit 0 exit 0
fi fi
sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/limitedadmins.new sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/limitedadmins.new
if [[ $distro == "fedora" ]]; then if [[ $distro == 'fedora' ]] || [[ $distro == 'fedoralinux' ]]; then
echo "Changing SELinux context" echo "Changing SELinux context"
sudo chcon -v --user=$selinuxuser --type=$selinuxtype "$xkeypath"xkeysnail.service sudo chcon -v --user=$selinuxuser --type=$selinuxtype "$xkeypath"xkeysnail.service
fi fi
@@ -587,7 +588,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/xkeysnail.service.new 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" 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/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 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..." sudo chown -R root:root /etc/systemd/system/xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."