mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-02 17:16:39 +02:00
Merge branch 'master' into dev
This commit is contained in:
34
.github/workflows/01-ubuntu-budgie.yml
vendored
Normal file
34
.github/workflows/01-ubuntu-budgie.yml
vendored
Normal 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.
|
21
README.md
21
README.md
@@ -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.
|
||||
|
||||
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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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|
|
||||
|---|---|---|---|---|
|
||||
|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 ⇒| ❖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| 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|
|
||||
|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 (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|
|
||||
|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.
|
||||
|
||||
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
|
||||
```
|
||||
|
334
linux/kinto.py
334
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",
|
||||
@@ -40,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.
|
||||
@@ -54,8 +59,10 @@ remotes = [
|
||||
"VirtualBox",
|
||||
"VirtualBox Machine",
|
||||
"xfreerdp",
|
||||
"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)
|
||||
@@ -69,10 +76,13 @@ browsers = [
|
||||
"Epiphany",
|
||||
"Firefox",
|
||||
"Firefox Developer Edition",
|
||||
"Navigator",
|
||||
"firefoxdeveloperedition",
|
||||
"Waterfox",
|
||||
"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)
|
||||
@@ -83,6 +93,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)
|
||||
@@ -179,16 +190,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
|
||||
@@ -197,49 +208,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
|
||||
@@ -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("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")
|
||||
|
||||
@@ -271,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
|
||||
@@ -290,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)
|
||||
##########################################################################################
|
||||
@@ -307,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" ]
|
||||
@@ -327,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
|
||||
@@ -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-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")
|
||||
|
||||
# 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
|
||||
K("RC-comma"): [K("Alt-E"),K("E")], # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Thunar - Finder Mods")
|
||||
|
||||
filemanagers = [
|
||||
@@ -390,18 +401,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
|
||||
@@ -428,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"),
|
||||
@@ -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
|
||||
})
|
||||
|
||||
define_keymap(re.compile(chromeStr, re.IGNORECASE),{
|
||||
K("C-comma"): [K("M-e"), K("s"),K("Enter")],
|
||||
}, "Browsers")
|
||||
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
|
||||
@@ -469,25 +486,25 @@ 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),{
|
||||
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"),
|
||||
define_keymap(re.compile("^ulauncher$", re.IGNORECASE),{
|
||||
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
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
# 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
|
||||
# - 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)
|
||||
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)
|
||||
@@ -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-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
|
||||
@@ -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-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
|
||||
@@ -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-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
|
||||
@@ -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,{
|
||||
# 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.
|
||||
@@ -603,10 +642,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
|
||||
@@ -629,32 +668,32 @@ 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")
|
||||
|
||||
# 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
|
||||
# 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
|
||||
@@ -663,8 +702,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
|
||||
@@ -677,10 +716,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
|
||||
@@ -691,25 +730,25 @@ 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")
|
||||
|
||||
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"),
|
||||
@@ -717,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"),
|
||||
@@ -725,8 +764,19 @@ 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("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),{
|
||||
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)
|
||||
@@ -743,9 +793,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"),
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
@@ -177,6 +179,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
|
||||
@@ -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
|
||||
; +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
|
||||
; Lock Workstation
|
||||
#^q::DllCall("LockWorkStation")
|
||||
@@ -451,7 +507,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}
|
||||
@@ -561,13 +617,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}
|
||||
@@ -867,3 +926,298 @@ Send {LWin up}
|
||||
Send {RShift up}
|
||||
Send {LShift up}
|
||||
return
|
||||
|
||||
; ###############################################################################################################
|
||||
; ### Special character insertion like Apple/macOS Option key methods, mapping to Unicode input method
|
||||
; ### Common symbols available with Option+key or Shift+Option+key, accented keys with Option+Key1, then Key2
|
||||
; ###############################################################################################################
|
||||
|
||||
; Shortcut to activate Option key special character scheme
|
||||
^+!o::Gosub, toggle_optspecialchars
|
||||
|
||||
; Function (subroutine?) for activation by tray menu item or keyboard shortcut
|
||||
toggle_optspecialchars:
|
||||
optspecialchars:=!optspecialchars ; Toggle value of optspecialchars variable on/off
|
||||
if (optspecialchars = 1) {
|
||||
Menu, Tray, Check, OptSpecialChars Shift+Opt+Cmd+O
|
||||
MsgBox, 0, ALERT, % "Option key special character entry scheme is now ENABLED.`n`n"
|
||||
. "WARNING: This will interfere with many Alt and Alt-Shift shortcuts.`n`n"
|
||||
. "Disable from tray menu or with Shift+Opt+Cmd+O."
|
||||
return
|
||||
}
|
||||
if (optspecialchars = 0) {
|
||||
Menu, Tray, Uncheck, OptSpecialChars Shift+Opt+Cmd+O
|
||||
MsgBox, 0, ALERT, Option key special character entry scheme is now DISABLED.
|
||||
return
|
||||
}
|
||||
return
|
||||
|
||||
; #IfWinNotActive ahk_group remotes
|
||||
#If !WinActive("ahk_group remotes") && optspecialchars = 1
|
||||
|
||||
; ###### NUMBER KEYS ROW ######
|
||||
|
||||
; Dead_Keys_Accent_Grave
|
||||
; ### SC029 is ` (Grave key above Tab)
|
||||
; Grave accent: Option+`, then key to accent
|
||||
$!SC029::
|
||||
; Use Apple "dead keys" Option key method to attach accents to next character typed
|
||||
; Grave accent activated by Option+` (Alt plus scan code SC029, or !SC029)
|
||||
StringCaseSense, On
|
||||
; watch next input string
|
||||
Input, UserInput, L1
|
||||
Switch UserInput {
|
||||
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
|
||||
Case "a": Send, {U+00E0} ; à {U+00E0} (Alt+0224)
|
||||
Case "e": Send, {U+00E8} ; è {U+00E8} (Alt+0232)
|
||||
Case "i": Send, {U+00EC} ; ì {U+00EC} (Alt+0236)
|
||||
Case "o": Send, {U+00F2} ; ò {U+00F2} (Alt+0242)
|
||||
Case "u": Send, {U+00F9} ; ù {U+00F9} (Alt+0249)
|
||||
Case "A": Send, {U+00C0} ; À {U+00C0} (Alt+0192)
|
||||
Case "E": Send, {U+00C8} ; È {U+00C8} (Alt+0200)
|
||||
Case "I": Send, {U+00CC} ; Ì {U+00CC} (Alt+0204)
|
||||
Case "O": Send, {U+00D2} ; Ò {U+00D2} (Alt+0210)
|
||||
Case "U": Send, {U+00D9} ; Ù {U+00D9} (Alt+0217)
|
||||
Default: Send, %UserInput% ; No match? Send input through.
|
||||
}
|
||||
Return
|
||||
|
||||
; ### SC029 is ` (Grave key above Tab)
|
||||
$!+SC029::Send, {U+0060} ; Grave Accent diacritic (non-combining) {U+0060}: ` (Alt+96)
|
||||
$!1::Send, {U+00A1} ; Inverted Exclamation Mark {U+00A1}: ¡ (Alt+0161)
|
||||
$!+1::Send, {U+2044} ; Fraction Slash, solidus (U+2044): ⁄ (Alt+8260) [Needs Unicode]
|
||||
$!2::Send, {U+2122} ; Trade Mark Sign Emoji {U+2122}: ™ (Alt+0153)
|
||||
$!+2::Send, {U+20AC} ; Euro currency symbol {U+20AC}: € (Alt+0128)
|
||||
$!3::Send, {U+00A3} ; British Pound currency symbol {U+00A3}: £ (Alt+0163)
|
||||
$!+3::Send, {U+2039} ; Single Left-Pointing Angle Quotation mark {U+2039}: (Alt+0139)
|
||||
$!4::Send, {U+00A2} ; Cent currency symbol {U+00A2}: ¢ (Alt+0162)
|
||||
$!+4::Send, {U+203A} ; Single Right-Pointing Angle Quotation mark (U+203A): (Alt+0155)
|
||||
$!5::Send, {U+221E} ; Infinity mathematical symbol {U+221E}: ∞ (Alt+236)
|
||||
$!+5::Send, {U+FB01} ; fi latin small ligature: fi (U+FB01) (Alt+64257) [Needs Unicode]
|
||||
$!6::Send, {U+00A7} ; Section symbol {U+00A7}: § (Alt+0167)
|
||||
$!+6::Send, {U+FB02} ; fl small ligature: (U+FB02) (Alt+64258) [Needs Unicode.]
|
||||
$!7::Send, {U+00B6} ; Paragraph mark (Pilcrow) symbol {U+00B6}: ¶ (Alt+0182)
|
||||
$!+7::Send, {U+2021} ; Double dagger (cross) symbol {U+2021}: ‡ (Alt+0135)
|
||||
$!8::Send, {U+2022} ; Bullet point symbol {U+2022}: • (Alt+0149)
|
||||
$!+8::Send, {U+00B0} ; Degree symbol {U+00B0}: ° (Alt+0176)
|
||||
$!9::Send, {U+00AA} ; Feminine Ordinal Indicator symbol {U+00AA}: ª (Alt+0170)
|
||||
$!+9::Send, {U+00B7} ; Middle Dot (interpunct/middot) symbol {U+00B7}: · (Alt+0183)
|
||||
$!0::Send, {U+00BA} ; Masculine Ordinal Indicator symbol {U+00BA}: º (Alt+0186)
|
||||
$!+0::Send, {U+201A} ; Single low-9 quotation mark {U+201A}: ‚ (Alt+0130)
|
||||
$!-::Send, {U+2013} ; En Dash symbol {U+2013}: – (Alt+0150)
|
||||
$!+-::Send, {U+2014} ; Em Dash symbol {U+2014}: — (Alt+0151)
|
||||
$!=::Send, {U+2260} ; Not Equal To symbol (U+2260): ≠ (Alt+8800) [Needs Unicode]
|
||||
$!+=::Send, {U+00B1} ; Plus Minus symbol {U+00B1}: ± (Alt+0177)
|
||||
|
||||
|
||||
; ###### LETTER AND PUNCTUATION KEYS ###### [ in QWERTY order ]
|
||||
|
||||
; ##############
|
||||
; ### 1st row: Tab-key row [ qwertyuiop[]\ ] [ QWERTYUIOP{}| ]
|
||||
|
||||
$!q::Send, {U+0153} ; Small oe (oethel) ligature {U+0153}: œ (Alt+0156)
|
||||
$!+q::Send, {U+0152} ; Capital OE (Oethel) ligature {U+0152}: Œ (Alt+0140)
|
||||
$!w::Send, {U+2211} ; N-Ary Summation (sigma) notation (U+2211}: ∑ [Needs Unicode]
|
||||
$!+w::Send, {U+201E} ; Double Low-9 Quotation mark {U+201E}: „ (Alt+0132)
|
||||
|
||||
; Dead_Keys_Accent_Acute
|
||||
; Acute accent: Option+e, then key to accent
|
||||
$!e::
|
||||
; Use Apple "dead keys" Option key method to attach accents to next character typed
|
||||
; Acute accent activated by Option+e (logical Alt+e)
|
||||
StringCaseSense, On
|
||||
; watch next input string
|
||||
Input, UserInput, L1
|
||||
Switch UserInput {
|
||||
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
|
||||
Case "a": Send, {U+00E1} ; á {U+00E1} (Alt+0225)
|
||||
Case "e": Send, {U+00E9} ; é {U+00E9} (Alt+0233)
|
||||
Case "i": Send, {U+00ED} ; í {U+00ED} (Alt+0237)
|
||||
Case "o": Send, {U+00F3} ; ó {U+00F3} (Alt+0243)
|
||||
Case "u": Send, {U+00FA} ; ú {U+00FA} (Alt+0250)
|
||||
Case "A": Send, {U+00C1} ; Á {U+00C1} (Alt+0193)
|
||||
Case "E": Send, {U+00C9} ; É {U+00C9} (Alt+0201)
|
||||
Case "I": Send, {U+00CD} ; Í {U+00CD} (Alt+0205)
|
||||
Case "O": Send, {U+00D3} ; Ó {U+00D3} (Alt+0211)
|
||||
Case "U": Send, {U+00DA} ; Ú {U+00DA} (Alt+0218)
|
||||
Default: Send, %UserInput% ; No match? Send input through.
|
||||
}
|
||||
Return
|
||||
|
||||
$!+e::Send, {U+00B4} ; Acute accent diacritic (non-combining) {U+00B4}: ´ (Alt+0180)
|
||||
$!r::Send, {U+00AE} ; Registered Trade Mark Sign {U+00AE}: ® (Alt+0174)
|
||||
$!+r::Send, {U+2030} ; Per mille symbol {U+2030}: ‰ (Alt+0137)
|
||||
$!t::Send, {U+2020} ; Simple dagger (cross) symbol {U+2020}: † (Alt+0134)
|
||||
$!+t::Send, {U+02C7} ; Caron/hacek diacritic (non-combining) (U+02C7): ˇ (Alt+0134)
|
||||
$!y::Send, {U+00A5} ; Yen currency symbol {U+00A5}: ¥ (Alt+0165)
|
||||
$!+y::Send, {U+00C1} ; Latin Capital Letter a with Acute (U+00C1): Á (Alt+0193)
|
||||
|
||||
; Dead_Keys_Accent_Umlaut
|
||||
; Umlaut/Diaeresis accent: Option+u, then key to accent
|
||||
$!u::
|
||||
; Use Apple "dead keys" Option key method to attach accents to next character typed
|
||||
; Umlaut/Diaeresis accent activated by Option+u (logical Alt+u)
|
||||
StringCaseSense, On
|
||||
; watch next input string
|
||||
Input, UserInput, L1
|
||||
Switch UserInput {
|
||||
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
|
||||
Case "a": Send, {U+00E4} ; ä {U+00E4} (Alt+0228)
|
||||
Case "e": Send, {U+00EB} ; ë {U+00EB} (Alt+0235)
|
||||
Case "i": Send, {U+00EF} ; ï {U+00EF} (Alt+0239)
|
||||
Case "o": Send, {U+00F6} ; ö {U+00F6} (Alt+0246)
|
||||
Case "u": Send, {U+00FC} ; ü {U+00FC} (Alt+0252)
|
||||
Case "y": Send, {U+00FF} ; ÿ {U+00FF} (Alt+0255)
|
||||
Case "A": Send, {U+00C4} ; Ä {U+00C4} (Alt+0196)
|
||||
Case "E": Send, {U+00CB} ; Ë {U+00CB} (Alt+0203)
|
||||
Case "I": Send, {U+00CF} ; Ï {U+00CF} (Alt+0207)
|
||||
Case "O": Send, {U+00D6} ; Ö {U+00D6} (Alt+0214)
|
||||
Case "U": Send, {U+00DC} ; Ü {U+00DC} (Alt+0220)
|
||||
Case "Y": Send, {U+0178} ; Ÿ {U+0178} (Alt+0159)
|
||||
Default: Send, %UserInput% ; No match? Send input through.
|
||||
}
|
||||
Return
|
||||
|
||||
$!+u::Send, {U+00A8} ; Umlaut/Diaeresis diacritic (non-combining) {U+00A8}: (Alt+0168)
|
||||
|
||||
; Dead_Keys_Accent_Circumflex
|
||||
; Circumflex accent: Option+i, then key to accent
|
||||
$!i::
|
||||
; Use Apple "dead keys" Option key method to attach accents to next character typed
|
||||
; Circumflex accent activated by Option+i (logical Alt+i)
|
||||
StringCaseSense, On
|
||||
; watch next input string
|
||||
Input, UserInput, L1
|
||||
Switch UserInput {
|
||||
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
|
||||
Case "a": Send, {U+00E2} ; â {U+00E2} (Alt+0226)
|
||||
Case "e": Send, {U+00EA} ; ê {U+00EA} (Alt+0234)
|
||||
Case "i": Send, {U+00EE} ; î {U+00EE} (Alt+0238)
|
||||
Case "o": Send, {U+00F4} ; ô {U+00F4} (Alt+0244)
|
||||
Case "u": Send, {U+00FB} ; û {U+00FB} (Alt+0251)
|
||||
Case "A": Send, {U+00C2} ; Â {U+00C2} (Alt+0194)
|
||||
Case "E": Send, {U+00CA} ; Ê {U+00CA} (Alt+0202)
|
||||
Case "I": Send, {U+00CE} ; Î {U+00CE} (Alt+0206)
|
||||
Case "O": Send, {U+00D4} ; Ô {U+00D4} (Alt+0212)
|
||||
Case "U": Send, {U+00DB} ; Û {U+00DB} (Alt+0219)
|
||||
Default: Send, %UserInput% ; No match? Send input through.
|
||||
}
|
||||
Return
|
||||
|
||||
$!+i::Send, {U+02C6} ; Modifier Letter Circumflex Accent (U+02C6): ˆ (Alt+0137)
|
||||
$!o::Send, {U+00F8} ; Latin Small Letter o with Stroke {U+00F8}: ø (Alt+0248)
|
||||
$!+o::Send, {U+00D8} ; Latin Capital Letter O with Stroke {U+00D8}: Ø (Alt+0216)
|
||||
$!p::Send, {U+03C0} ; Greek Small Letter Pi {U+03C0}: π (Alt+227)
|
||||
$!+p::Send, {U+220F} ; N-Ary Product mathematical symbol (U+220F): ∏ [Needs Unicode]
|
||||
$![::Send, {U+201C} ; Left Double Quotation Mark {U+201C}: “ (Alt+0147)
|
||||
$!+[::Send, {U+201D} ; Right Double Quotation Mark {U+201D}: ” (Alt+8)
|
||||
$!]::Send, {U+2018} ; Left Single Quotation Mark {U+2018}: ‘ (Alt+0145)
|
||||
$+!]::Send, {U+2019} ; Right Single Quotation Mark {U+2019}: ’ (Alt+0146)
|
||||
$!\::Send, {U+00AB} ; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00AB}: « (Alt+0171)
|
||||
$!+\::Send, {U+00BB} ; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK {U+00BB}: » (Alt+0187)
|
||||
|
||||
|
||||
; ##############
|
||||
; ### 2nd row: Caps Lock row [ asdfghjkl;' ] [ ASDFGHJKL:" ]
|
||||
|
||||
$!a::Send, {U+00E5} ; Small Letter a with Ring Above {U+00E5}: å (Alt+0229)
|
||||
$!+a::Send, {U+00C5} ; Capital Letter A with Ring Above {U+00C5}: Å (Alt+0197)
|
||||
$!s::Send, {U+00DF} ; German Eszett/beta (Sharfes/Sharp S) {U+00DF}: ß (Alt+0223)
|
||||
$!+s::Send, {U+00CD} ; Latin Capital Letter I with Acute {U+00CD}: Í (Alt+0205)
|
||||
$!d::Send, {U+2202} ; Partial Differential mathematical symbol {U+2202}: ∂ (Alt+2202) [Needs Unicode]
|
||||
$!+d::Send, {U+00CE} ; Latin Capital Letter I with Circumflex {U+00CE}: Î (Alt+0206)
|
||||
$!f::Send, {U+0192} ; Function/florin currency symbol {U+0192}: ƒ (Alt+159)
|
||||
$!+f::Send, {U+00CF} ; Latin Capital Letter I with Diaeresis {U+00CF}: Ï (Alt+0207)
|
||||
|
||||
; #######################################################################
|
||||
; ## Problem: Option+g (Win+g) brings up Windows XBox Game Bar!
|
||||
; ## To remove/disable paste this text in PowerShell (without quotes):
|
||||
; ## "Get-AppxPackage Microsoft.XboxGamingOverlay | Remove-AppxPackage"
|
||||
; #######################################################################
|
||||
$!g::Send, {U+00A9} ; Copyright Sign {U+00A9}: © (Alt+0169)
|
||||
$!+g::Send, {U+02DD} ; Double Acute Accent diacritic (non-combining) {U+02DD}: ˝ [Needs Unicode]
|
||||
$!h::Send, {U+02D9} ; Dot Above diacritic (non-combining) {U+02D9}: ˙ [Needs Unicode]
|
||||
$!+h::Send, {U+00D3} ; Latin Capital Letter O with Acute {U+00D3}: Ó (Alt+0211)
|
||||
$!j::Send, {U+2206} ; Increment, laplace operator symbol {U+2206}: ∆ [Needs Unicode]
|
||||
$!+j::Send, {U+00D4} ; Latin Capital Letter O with Circumflex {U+00D4}: Ô (Alt+0212)
|
||||
$!k::Send, {U+02DA} ; Ring Above diacritic (non-combining) {U+02DA}: ˚ [Needs Unicode] (NOT degree sign/symbol)
|
||||
|
||||
; Apple logo {U+F8FF}: [Unicode Private Use Area, req's Baskerville Old Face font]
|
||||
; $!+k::Send, {U+F8FF} ; This Unicode address only works with Mac fonts
|
||||
$!+k::
|
||||
Send, {U+F000} ; Change font of inserted character (may be invisible) to Baskerville Old Face
|
||||
apple_logo_alert:=1 ; Set to zero to disable, one to enable (default is enabled)
|
||||
if (apple_logo_alert=1) {
|
||||
MsgBox, 0, ALERT, % "ALERT: Change the font of the inserted character!`n`n"
|
||||
. "Apple logo character requires the Baskerville Old Face font.`n`n`n"
|
||||
. "Note 1: The character has been inserted but may be INVISIBLE`n"
|
||||
. " (i.e., non-printing) in its current font.`n`n`n"
|
||||
. "Note 2: The inserted character will probably NOT be portable`n"
|
||||
. " to a Mac document/font. Use only for print/PDF `n"
|
||||
. " purposes on PC.`n`n`n"
|
||||
. "Note 3: Search for apple_logo_alert in kinto.ahk config and `n"
|
||||
. " set it to zero to disable this MsgBox.`n`n`n"
|
||||
}
|
||||
return
|
||||
|
||||
; #######################################################################
|
||||
; ## Option+L works, but will also trigger the Win+L screen locking.
|
||||
; ## The screen locking shortcut can only be disabled in the registry.
|
||||
; #######################################################################
|
||||
$!l::Send, {U+00AC} ; Not Sign angled dash symbol {U+00AC}: ¬ (Alt+170)
|
||||
$!+l::Send, {U+00D2} ; Latin Capital Letter O with Grave {U+00D2}: Ò (Alt+0210)
|
||||
$!;::Send, {U+2026} ; Horizontal elipsis {U+2026}: … (Alt+0133)
|
||||
$!+;::Send, {U+00DA} ; Latin Capital Letter U with Acute {U+00DA}: Ú (Alt+0218)
|
||||
|
||||
; #######################################################################
|
||||
; ## SC028 is single-quote key scan code
|
||||
; #######################################################################
|
||||
$!SC028::Send, {U+00E6} ; Small ae ligature {U+00E6}: æ (Alt+0230)
|
||||
$!+SC028::Send, {U+00C6} ; Capital AE ligature {U+00C6}: Æ (Alt+0198)
|
||||
|
||||
|
||||
; ##############
|
||||
; ### 3rd row: Shift-Keys row [ zxcvbnm,./ ] [ ZXCVBNM<>? ]
|
||||
|
||||
$!z::Send, {U+03A9} ; Greek Capital Letter Omega symbol {U+03A9} Ω (Alt+234)
|
||||
$!+z::Send, {U+00B8} ; Spacing Cedilla diacritic symbol (non-combining) {U+00B8}: ¸ (Alt+0184)
|
||||
$!x::Send, {U+2248} ; Almost Equal To symbol (U+2248): ≈ (Alt+247)
|
||||
$!+x::Send, {U+02DB} ; Ogonek diacritic (non-combining) (U+02DB): ˛ [Needs Unicode]
|
||||
$!c::Send, {U+00E7} ; Small Letter c with Cedilla {U+00E7}: ç (Alt+0231)
|
||||
$!+c::Send, {U+00C7} ; Capital Letter C with Cedilla {U+00C7}: Ç (Alt+0199)
|
||||
$!v::Send, {U+221A} ; Square Root radical sign (U+221A): √ (Alt+251)
|
||||
$!+v::Send, {U+25CA} ; Lozenge (diamond) shape symbol (U+25CA): ◊ [Needs Unicode]
|
||||
$!b::Send, {U+222B} ; Integral mathematical symbol (U+222B): ∫ [Needs Unicode]
|
||||
$!+b::Send, {U+0131} ; Latin Small Letter Dotless i (U+0131): ı [Needs Unicode]
|
||||
|
||||
; Dead_Keys_Accent_Tilde
|
||||
; Tilde accent: Option+n, then key to accent
|
||||
$!n::
|
||||
; Use Apple "dead keys" Option key method to attach accents to next character typed
|
||||
; Tilde accent activated by Option+n (logical Alt+n)
|
||||
StringCaseSense, On
|
||||
; watch next input string
|
||||
Input, UserInput, L1
|
||||
Switch UserInput {
|
||||
Case Esc: Return ; Watch for Escape key, cancel dead keys sequence
|
||||
Case "a": Send, {U+00E3} ; ã {U+00E3} (Alt+0227)
|
||||
Case "n": Send, {U+00F1} ; ñ {U+00F1} (Alt+0241)
|
||||
Case "o": Send, {U+00F5} ; õ {U+00F5} (Alt+0245)
|
||||
Case "A": Send, {U+00C3} ; Ã {U+00C3} (Alt+0195)
|
||||
Case "N": Send, {U+00D1} ; Ñ {U+00D1} (Alt+0209)
|
||||
Case "O": Send, {U+00D5} ; Õ {U+00D5} (Alt+0213)
|
||||
Default: Send, %UserInput% ; No match? Send input through.
|
||||
}
|
||||
Return
|
||||
|
||||
$!+n::Send, {U+02DC} ; Small Tilde character (U+02DC): ˜ (Alt+0152)
|
||||
$!m::Send, {U+00B5} ; Micro (mu) symbol {U+00B5}: µ (Alt+0181)
|
||||
$!+m::Send, {U+00C2} ; Latin Capital Letter a with Circumflex (U+00C2): Â (Alt+0194)
|
||||
$!,::Send, {U+2264} ; Less than or equal to symbol {U+2264}: ≤ (Alt+243)
|
||||
$!+,::Send, {U+00AF} ; Macron/overline/apl overbar (non-combining) (U+00AF): ¯ (Alt+0175)
|
||||
$!.::Send, {U+2265} ; Greater than or equal to symbol {U+2265}: ≥ (Alt+242)
|
||||
$!+.::Send, {U+02D8} ; Breve diacritic (non-combining) {U+02D8}: ˘ [Needs Unicode]
|
||||
$!/::Send, {U+00F7} ; Obelus/Division symbol {U+00F7}: ÷ (Alt+0247)
|
||||
$!+/::Send, {U+00BF} ; Inverted Question Mark {U+00BF}: ¿ (Alt+0191)
|
||||
|
||||
#If ; ### END of special character insertion with Option(Alt) key
|
||||
|
@@ -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
|
||||
@@ -329,7 +330,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 "['<Super>d']"
|
||||
else
|
||||
@@ -385,10 +386,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
|
||||
@@ -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
|
||||
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 +576,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 +588,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..."
|
||||
|
Reference in New Issue
Block a user