mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-05 18:38:26 +02:00
Compare commits
152 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4ed4209563 | ||
![]() |
e106710afb | ||
![]() |
8eb26a3f74 | ||
![]() |
386bfa9c65 | ||
![]() |
6aa5cc5b54 | ||
![]() |
64995d4d56 | ||
![]() |
7b3aba95c4 | ||
![]() |
f342ee4db1 | ||
![]() |
66407d6010 | ||
![]() |
f3c0b51481 | ||
![]() |
60d836d272 | ||
![]() |
8e1e59b51f | ||
![]() |
bb1dcf4824 | ||
![]() |
177577b303 | ||
![]() |
7c6c56f7c3 | ||
![]() |
2c90c09c1b | ||
![]() |
1eca5430bf | ||
![]() |
cbd0e8cf34 | ||
![]() |
79dd20652b | ||
![]() |
53c5d96b2c | ||
![]() |
75fc13e0ea | ||
![]() |
82018232bf | ||
![]() |
f310919cf9 | ||
![]() |
aadfafac4a | ||
![]() |
7690af09fc | ||
![]() |
f5867a3d91 | ||
![]() |
b38c1a15b7 | ||
![]() |
5c36166ada | ||
![]() |
cdaaefaa0b | ||
![]() |
41e3703a7c | ||
![]() |
a85fac2e4b | ||
![]() |
f01e457bf2 | ||
![]() |
2c28ec5022 | ||
![]() |
e82de02e00 | ||
![]() |
d9817d406e | ||
![]() |
35981fc77f | ||
![]() |
346c79ca42 | ||
![]() |
f65e31791f | ||
![]() |
1b30572953 | ||
![]() |
11b2f30169 | ||
![]() |
fcb5c75180 | ||
![]() |
3d57409b3e | ||
![]() |
648819ffe7 | ||
![]() |
be898ab3c5 | ||
![]() |
a69b11884b | ||
![]() |
bed5f37ce3 | ||
![]() |
be0a6bb197 | ||
![]() |
e4a649fc8c | ||
![]() |
ddc7442e55 | ||
![]() |
274833af95 | ||
![]() |
bd9ecd123f | ||
![]() |
14ac2c8349 | ||
![]() |
a91bbec93c | ||
![]() |
df43fb363d | ||
![]() |
0dd5baca34 | ||
![]() |
896ab30e57 | ||
![]() |
f9aaae3038 | ||
![]() |
94b018aa48 | ||
![]() |
6b3ea9afab | ||
![]() |
1ee92339c0 | ||
![]() |
4e1331f9bb | ||
![]() |
f44182cefd | ||
![]() |
d15972dcae | ||
![]() |
65f48ce2f1 | ||
![]() |
589807bad9 | ||
![]() |
55a6d132c7 | ||
![]() |
eebf4d61eb | ||
![]() |
b364902db0 | ||
![]() |
035b9e2d85 | ||
![]() |
db68031eb4 | ||
![]() |
30f4c1285b | ||
![]() |
f858ae9614 | ||
![]() |
75dbe611b3 | ||
![]() |
6cdedf41e3 | ||
![]() |
df8d46e1c1 | ||
![]() |
b9f15950b2 | ||
![]() |
2f8ae2380f | ||
![]() |
77d52ec176 | ||
![]() |
13a98ce8cc | ||
![]() |
8f333dec20 | ||
![]() |
f7ff8d1728 | ||
![]() |
5b2a2c88c2 | ||
![]() |
48b5699aed | ||
![]() |
eec325024d | ||
![]() |
a5087b0f95 | ||
![]() |
36f189e434 | ||
![]() |
50b31abba9 | ||
![]() |
aa53c83c61 | ||
![]() |
5f795328c9 | ||
![]() |
39ed3c83f9 | ||
![]() |
bf35285914 | ||
![]() |
7a3d9cbd7c | ||
![]() |
2a920d0622 | ||
![]() |
253b061b12 | ||
![]() |
c8a28fe3e0 | ||
![]() |
9f5ba6e14e | ||
![]() |
f855da301c | ||
![]() |
4e33e5516b | ||
![]() |
5c25cd15cb | ||
![]() |
af4b4ea08e | ||
![]() |
e69e529a18 | ||
![]() |
f717db9aaa | ||
![]() |
353c2c6bb4 | ||
![]() |
dcbf1e8382 | ||
![]() |
9a52bd864a | ||
![]() |
9b87fda382 | ||
![]() |
b3fc4c9202 | ||
![]() |
4858b9cf28 | ||
![]() |
45ad4f3f68 | ||
![]() |
e54dba20a1 | ||
![]() |
56cae8a009 | ||
![]() |
e7dd3684c2 | ||
![]() |
982cdcb92a | ||
![]() |
829289ba78 | ||
![]() |
b8793cff49 | ||
![]() |
8b522461a5 | ||
![]() |
1f4b2bb451 | ||
![]() |
04bc3f60e4 | ||
![]() |
8ffd3159c8 | ||
![]() |
b19b0bea4b | ||
![]() |
07bee26ddb | ||
![]() |
6dc97a5628 | ||
![]() |
59e47dbbd6 | ||
![]() |
e6d0512ff4 | ||
![]() |
6587a149ce | ||
![]() |
f80a1d616d | ||
![]() |
c391b6abf8 | ||
![]() |
f6d57eae4c | ||
![]() |
06531dd6cc | ||
![]() |
4c2a4993ef | ||
![]() |
572739360e | ||
![]() |
d87802918d | ||
![]() |
e5b2ef8155 | ||
![]() |
7149b4ab24 | ||
![]() |
db61f2d937 | ||
![]() |
19aefd68e0 | ||
![]() |
9fb72c95b1 | ||
![]() |
ec8b0fdc22 | ||
![]() |
1e98cfc29d | ||
![]() |
e92bc37308 | ||
![]() |
14021fbf67 | ||
![]() |
1562096889 | ||
![]() |
c84d13118a | ||
![]() |
bec547bbda | ||
![]() |
724006ef3a | ||
![]() |
ef60bf8a59 | ||
![]() |
44080c25da | ||
![]() |
6fa6d05123 | ||
![]() |
9a5b44661c | ||
![]() |
d19e5836a5 | ||
![]() |
5e28015a31 | ||
![]() |
3a59edb51e |
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.
|
69
README.md
69
README.md
@@ -11,7 +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: VNC is now experimentally supported on Linux w/ the latest releases, but you must compile & install x11vnc. More info can be [found here](https://gist.github.com/rbreaves/87059f92f030ee4e068f911ddb56a4dd).
|
||||
|
||||
~~Note: If you plan to remote into Linux via VNC, xRDP, Synergy or other remote desktop solutions then remove the current release & try an earlier [v1.0.7-3](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3) release. It uses xkb so it'll work with virtual xinput devices. Some v1.1-x releases may offer both, but all v1.2.x releases ended support for xkb. I do plan to bring offical support back for virtual input devices.~~
|
||||
|
||||
### [Table of Contents ](#Table-of-Contents)
|
||||
|
||||
@@ -22,7 +26,9 @@ 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)|
|
||||
|---|---|---|---|
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## How to install (Linux)
|
||||
|
||||
@@ -80,9 +86,12 @@ sudo apt install xfce4-appmenu-plugin vala-panel-appmenu-common appmenu-gtk2-mod
|
||||
xfconf-query -c xsettings -p /Gtk/Modules -n -t string -s "appmenu-gtk-module"
|
||||
```
|
||||
|
||||
**Perfect HiDPI fractional scaling on Ubuntu Budgie 20.04 under x11**
|
||||
**Fractional HiDPI Scaling for Gnome/Budgie w/ x11**
|
||||
|
||||
https://github.com/rbreaves/betterScale
|
||||
|
||||
Use this with autorandr to save your settings as a profile that will auto re-apply when needed.
|
||||
|
||||
https://discourse.ubuntubudgie.org/t/ubuntu-budgie-20-04-fractional-hidpi-for-x11/4777
|
||||
|
||||
## How to Install (Windows)
|
||||
|
||||
@@ -140,18 +149,30 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had
|
||||
|
||||
|Program|Src/Remote Client ⇒|Dst/Remote Server|Works? |Notes|
|
||||
|---|---|---|---|---|
|
||||
|Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| |
|
||||
|Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| Note: Make sure to set all keyboard input to go to remote. |
|
||||
|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🍎macOS | ✅ Yes| Note: Must compile & install xrdp. |
|
||||
|Official MS RDC from Store| ❖Windows ⇒| ❖Windows | ✅ Yes| 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|
|
||||
|Official MS RDP| 🍎🤖iOS/Android⇒| ❖Windows | ❌ No|No workaround atm|
|
||||
|
||||
## How to Remap Windows keyboards for remote access to macOS
|
||||
Quick summary - Swap Alt & Win to conform with Apple keyboard layouts. Sharpkeys for Windows, Setkeycodes for Linux, then install Kinto.sh or change/update the Keyboard Type to Apple in the system tray.
|
||||
https://benreaves.medium.com/macos-to-linux-back-again-c6151200f4dc
|
||||
|
||||
## FreeRDP for macOS
|
||||
|
||||
1. Install [brew.sh](https://brew.sh).
|
||||
@@ -252,7 +273,7 @@ Additionally, if you are using a cross-platform app and if it happens to have a
|
||||
## What does Kinto require?
|
||||
|
||||
- Python
|
||||
- systemd
|
||||
- systemd or sysvinit
|
||||
- x11
|
||||
- xkeysnail
|
||||
|
||||
@@ -308,12 +329,18 @@ 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
|
||||
```
|
||||
sudo systemctl restart xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto restart
|
||||
```
|
||||
|
||||
More information can be seen on the readme page of [xkeysnail](https://github.com/mooz/xkeysnail).
|
||||
|
||||
## Windows (Autohotkey)
|
||||
@@ -375,25 +402,53 @@ git pull origin master
|
||||
This info is now superceded by the fact that linux has a full fledge GUI and system tray app that is very easy to use, but I will keep the command line options for those that want to know what they are.
|
||||
|
||||
Status
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl status xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
tail -f /tmp/kinto.log
|
||||
```
|
||||
|
||||
Stop (your keymap will return to normal)
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl stop xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto stop
|
||||
```
|
||||
|
||||
Start
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl start xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto start
|
||||
```
|
||||
|
||||
Restart
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl restart xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto restart
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Installed successfully, but modifier keys are not properly remapped?
|
||||
|
@@ -353,7 +353,7 @@ class MyWindow(Gtk.Window):
|
||||
self.queryConfig('cp '+os.environ['HOME']+'/.config/kinto/xkeysnail.desktop '+os.environ['HOME']+'/.config/autostart/xkeysnail.desktop')
|
||||
if self.options["systray"]:
|
||||
self.queryConfig('cp '+os.environ['HOME']+'/.config/kinto/kintotray.desktop '+os.environ['HOME']+'/.config/autostart/kintotray.desktop')
|
||||
self.queryConfig("nohup python3 ~/.config/kinto/kintotray.py >/dev/null 2>&1 &")
|
||||
self.queryConfig("nohup /usr/bin/python3 ~/.config/kinto/kintotray.py >/dev/null 2>&1 &")
|
||||
self.menuitem_systray.disconnect(self.menuitem_systray.signal_id)
|
||||
self.menuitem_systray.set_active(True)
|
||||
self.menuitem_systray.signal_id = self.menuitem_systray.connect('activate',self.checkTray,False)
|
||||
@@ -616,7 +616,7 @@ class MyWindow(Gtk.Window):
|
||||
if tray_bool:
|
||||
Popen(['cp',os.environ['HOME']+'/.config/kinto/kintotray.desktop',os.environ['HOME']+'/.config/autostart/kintotray.desktop'])
|
||||
if not kintotray:
|
||||
Popen([os.environ['HOME']+'/.config/kinto/kintotray.py'])
|
||||
Popen(['/usr/bin/python3',os.environ['HOME']+'/.config/kinto/kintotray.py'])
|
||||
self.menuitem_systray.disconnect(self.menuitem_systray.signal_id)
|
||||
self.menuitem_systray.set_active(True)
|
||||
self.menuitem_systray.signal_id = self.menuitem_systray.connect('activate',self.checkTray,False)
|
||||
@@ -628,9 +628,9 @@ class MyWindow(Gtk.Window):
|
||||
time.sleep(1)
|
||||
global child_pid
|
||||
if sysv:
|
||||
self.kinto_status = Popen("while :; do clear; pgrep 'xkeysnail'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
self.kinto_status = Popen("export TERM=xterm-color;while :; do clear; pgrep 'xkeysnail'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
else:
|
||||
self.kinto_status = Popen("while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
self.kinto_status = Popen("export TERM=xterm-color;while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
child_pid = self.kinto_status.pid
|
||||
self.menuitem_systray.disconnect(self.menuitem_systray.signal_id)
|
||||
self.menuitem_systray.set_active(False)
|
||||
|
@@ -4,7 +4,7 @@ Name=Kinto.sh
|
||||
GenericName=Kinto.sh
|
||||
Categories=Utility;
|
||||
Type=Application
|
||||
Exec={homedir}/.config/kinto/gui/kinto-gui.py
|
||||
Exec=/usr/bin/python3 {homedir}/.config/kinto/gui/kinto-gui.py
|
||||
Icon={homedir}/.config/kinto/kinto-color-48.svg
|
||||
# Icon=/usr/share/icons/Pocillo/kinto-color.svg
|
||||
Terminal=false
|
||||
|
523
linux/kinto.py
523
linux/kinto.py
@@ -9,6 +9,7 @@ from xkeysnail.transform import *
|
||||
# xbindkeys -mk
|
||||
terminals = [
|
||||
"alacritty",
|
||||
"cutefish-terminal",
|
||||
"deepin-terminal",
|
||||
"eterm",
|
||||
"gnome-terminal",
|
||||
@@ -17,34 +18,51 @@ terminals = [
|
||||
"io.elementary.terminal",
|
||||
"kinto-gui.py",
|
||||
"kitty",
|
||||
"Kgx", # GNOME Console terminal app
|
||||
"konsole",
|
||||
"lxterminal",
|
||||
"mate-terminal",
|
||||
"org.gnome.Console",
|
||||
"qterminal",
|
||||
"st",
|
||||
"sakura",
|
||||
"station",
|
||||
"tabby",
|
||||
"terminator",
|
||||
"termite",
|
||||
"tilda",
|
||||
"tilix",
|
||||
"urxvt",
|
||||
"xfce4-terminal",
|
||||
"xterm",
|
||||
]
|
||||
terminals = [term.casefold() for term in terminals]
|
||||
termStr = "|".join(str(x) for x in terminals)
|
||||
termStr = "|".join(str('^'+x+'$') for x in terminals)
|
||||
|
||||
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
|
||||
# Ideally we'd only exclude the client window,
|
||||
# but that may not be easily done.
|
||||
remotes = [
|
||||
"org.remmina.Remmina",
|
||||
"xfreerdp",
|
||||
"VirtualBox Machine",
|
||||
"VirtualBox",
|
||||
"Gnome-boxes",
|
||||
"org.remmina.Remmina",
|
||||
"remmina",
|
||||
"qemu-system-.*",
|
||||
"qemu",
|
||||
"Spicy",
|
||||
"Virt-manager",
|
||||
"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)
|
||||
@@ -57,12 +75,17 @@ browsers = [
|
||||
"Discord",
|
||||
"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)
|
||||
browserStr = "|".join(str('^'+x+'$') for x in browsers)
|
||||
|
||||
chromes = [
|
||||
"Chromium",
|
||||
@@ -70,13 +93,14 @@ 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)
|
||||
chromeStr = "|".join(str('^'+x+'$') for x in chromes)
|
||||
|
||||
# edges = ["microsoft-edge-dev","microsoft-edge"]
|
||||
# edges = [edge.casefold() for edge in edges]
|
||||
# edgeStr = "|".join(str(x) for x in edges)
|
||||
# edgeStr = "|".join(str('^'+x+'$') for x in edges)
|
||||
|
||||
define_multipurpose_modmap(
|
||||
# {Key.ENTER: [Key.ENTER, Key.RIGHT_CTRL] # Enter2Cmd
|
||||
@@ -135,7 +159,7 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), {
|
||||
# Key.RIGHT_ALT: Key.RIGHT_CTRL, # IBM - Multi-language (Remove)
|
||||
# Key.RIGHT_CTRL: Key.RIGHT_ALT, # IBM
|
||||
# # Right Meta does not exist on chromebooks
|
||||
|
||||
|
||||
# Key.RIGHT_ALT: Key.RIGHT_CTRL, # IBM - Multi-language (Remove)
|
||||
# Key.RIGHT_CTRL: Key.RIGHT_ALT, # IBM - Multi-language (Remove)
|
||||
|
||||
@@ -166,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
|
||||
@@ -184,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
|
||||
@@ -241,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")
|
||||
|
||||
@@ -256,76 +280,95 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
|
||||
### START OF FILE MANAGER GROUP OF KEYMAPS ###
|
||||
##############################################
|
||||
|
||||
# Keybindings overrides for Caja
|
||||
# Keybindings overrides for Caja
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
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")
|
||||
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
|
||||
# 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),{
|
||||
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
|
||||
},"Overrides for DDE File Manager - Finder")
|
||||
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
|
||||
K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Shift-Right_Brace"): K("C-Tab"), # Go to next tab
|
||||
K("RC-Shift-Left"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Shift-Right"): K("C-Tab"), # Go to next tab
|
||||
},"Overrides for DDE File Manager - Finder Mods")
|
||||
|
||||
# Keybindings overrides for Dolphin
|
||||
# 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)
|
||||
##########################################################################################
|
||||
### "Open in new window" requires manually setting custom shortcut of Ctrl+Shift+o
|
||||
### "Open in new window" requires manually setting custom shortcut of Ctrl+Shift+o
|
||||
### in Dolphin's keyboard shortcuts. There is no default shortcut set for this function.
|
||||
##########################################################################################
|
||||
### "Open in new tab" requires manually setting custom shortcut of Ctrl+Shift+o in
|
||||
### Dolphin's keyboard shortcuts. There is no default shortcut set for this function.
|
||||
### "Open in new tab" requires manually setting custom shortcut of Ctrl+Shift+o in
|
||||
### Dolphin's keyboard shortcuts. There is no default shortcut set for this function.
|
||||
##########################################################################################
|
||||
K("RC-Super-o"): K("RC-Shift-o"), # Open in new window (or new tab, user's choice, see above)
|
||||
K("RC-Shift-N"): K("F10"), # Create new folder
|
||||
K("RC-comma"): K("RC-Shift-comma"), # Open preferences dialog
|
||||
},"Overrides for Dolphin - Finder")
|
||||
K("RC-Super-o"): K("RC-Shift-o"), # Open in new window (or new tab, user's choice, see above)
|
||||
K("RC-Shift-N"): K("F10"), # Create new folder
|
||||
K("RC-comma"): K("RC-Shift-comma"), # Open preferences dialog
|
||||
},"Overrides for Dolphin - Finder Mods")
|
||||
|
||||
# Keybindings overrides for elementary OS Files
|
||||
# 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),{
|
||||
# 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")
|
||||
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
|
||||
# Keybindings overrides for Nautilus
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("org.gnome.nautilus|nautilus", re.IGNORECASE),{
|
||||
K("RC-Super-o"): K("Shift-Enter"), # Open in new window
|
||||
# K("RC-Super-o"): K("RC-Enter"), # Open in new tab
|
||||
K("RC-comma"): K("RC-comma"), # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Nautilus - Finder")
|
||||
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" ]
|
||||
K("RC-KEY_1"): K("C-KEY_2"), # View as Icons
|
||||
K("RC-KEY_2"): K("C-KEY_1"), # View as List (Detailed)
|
||||
K("RC-Super-o"): K("Shift-Enter"), # Open in new window
|
||||
# K("RC-Super-o"): K("RC-Enter"), # Open in new tab
|
||||
K("RC-comma"): K("RC-comma"), # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Nautilus - Finder Mods")
|
||||
|
||||
# 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),{
|
||||
K("RC-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog)
|
||||
},"Overrides for PCManFM - Finder")
|
||||
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),{
|
||||
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
|
||||
# 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")
|
||||
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
|
||||
K("RC-Shift-Right_Brace"): K("C-Tab"), # Go to next tab
|
||||
K("RC-Shift-Left"): K("C-Shift-Tab"), # Go to prior 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-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog)
|
||||
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
|
||||
# Keybindings overrides for Thunar
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("thunar", re.IGNORECASE),{
|
||||
K("RC-Super-o"): K("RC-Shift-P"), # Open in new tab
|
||||
K("RC-comma"): [K("M-E"),K("E")], # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Thunar - Finder")
|
||||
define_keymap(re.compile("^thunar$", re.IGNORECASE),{
|
||||
K("RC-Super-o"): K("RC-Shift-P"), # Open in new tab
|
||||
K("RC-comma"): [K("Alt-E"),K("E")], # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Thunar - Finder Mods")
|
||||
|
||||
filemanagers = [
|
||||
"caja",
|
||||
"cutefish-filemanager",
|
||||
"dde-file-manager",
|
||||
"dolphin",
|
||||
"io.elementary.files",
|
||||
@@ -338,10 +381,10 @@ filemanagers = [
|
||||
"thunar",
|
||||
]
|
||||
filemanagers = [filemanager.casefold() for filemanager in filemanagers]
|
||||
filemanagerStr = "|".join(str(x) for x in filemanagers)
|
||||
filemanagerStr = "|".join(str('^'+x+'$') for x in filemanagers)
|
||||
|
||||
# Currently supported Linux file managers (file browsers):
|
||||
#
|
||||
# Currently supported Linux file managers (file browsers):
|
||||
#
|
||||
# Caja File Browser (MATE file manager, fork of Nautilus)
|
||||
# DDE File Manager (Deepin Linux file manager)
|
||||
# Dolphin (KDE file manager)
|
||||
@@ -352,95 +395,163 @@ filemanagerStr = "|".join(str(x) for x in filemanagers)
|
||||
# PCManFM-Qt (LXQt file manager)
|
||||
# SpaceFM (Fork of PCManFM file manager)
|
||||
# Thunar File Manager (Xfce file manager)
|
||||
#
|
||||
# Keybindings for general Linux file managers group:
|
||||
#
|
||||
# Keybindings for general Linux file managers group:
|
||||
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-Shift-dot"): K("RC-H"), # Show/hide hidden files ("dot" files)
|
||||
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"): 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-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-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
|
||||
K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab
|
||||
K("RC-Shift-Left"): K("C-Page_Up"), # Go to prior tab
|
||||
K("RC-Shift-Right"): K("C-Page_Down"), # Go to next tab
|
||||
###########################################################################################################
|
||||
### Open in New Window | Move to Trash | Duplicate file/folder ###
|
||||
###########################################################################################################
|
||||
K("RC-Super-o"): K("RC-Shift-o"), # Open in new window (or tab, depends on FM setup) [not universal]
|
||||
K("RC-Backspace"): K("Delete"), # Move to Trash (delete)
|
||||
K("RC-D"): [K("RC-C"),K("RC-V")], # Mimic Finder's Duplicate command (Copy, then Paste)
|
||||
K("RC-Super-o"): K("RC-Shift-o"), # Open in new window (or tab, depends on FM setup) [not universal]
|
||||
K("RC-Backspace"): K("Delete"), # Move to Trash (delete)
|
||||
# K("RC-D"): [K("RC-C"),K("RC-V")], # Duplicate file/folder (Copy, then Paste) [conflicts with "Add Bookmark"]
|
||||
###########################################################################################################
|
||||
### To enable renaming files with the Enter key, uncomment the two keymapping lines just below this. ###
|
||||
### Use Ctrl+Shift+Enter to escape or activate text fields such as "[F]ind" and "[L]ocation" fields. ###
|
||||
###########################################################################################################
|
||||
# K("Enter"): K("F2"), # Rename with Enter key
|
||||
# K("RC-Shift-Enter"): K("Enter"), # Remap alternative "Enter" key to easily activate/exit text fields
|
||||
},"File Managers - Finder")
|
||||
# K("Enter"): K("F2"), # Rename with Enter key
|
||||
# K("RC-Shift-Enter"): K("Enter"), # Remap alternative "Enter" key to easily activate/exit text fields
|
||||
# K("RC-Shift-Enter"): K("F2"), # Rename with Cmd+Shift+Enter
|
||||
},"General File Managers - Finder Mods")
|
||||
|
||||
############################################
|
||||
### END OF FILE MANAGER GROUP OF KEYMAPS ###
|
||||
############################################
|
||||
|
||||
# Keybindings for 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("C-Left_Brace"): K("C-Page_Up"),
|
||||
K("C-Right_Brace"): K("C-Page_Down"),
|
||||
})
|
||||
|
||||
# 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"),
|
||||
K("e"),K("r"),K("e"),K("n"),K("c"),K("e"),K("s"),K("Enter")
|
||||
],
|
||||
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("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
|
||||
# Enable Cmd+Option+Left/Right for tab navigation
|
||||
K("RC-M-Left"): K("C-Page_Up"), # Go to prior tab
|
||||
K("RC-M-Right"): K("C-Page_Down"), # Go to next tab
|
||||
# Enable Ctrl+PgUp/PgDn for tab navigation
|
||||
K("Super-Page_Up"): K("C-Page_Up"), # Go to prior tab
|
||||
K("Super-Page_Down"): K("C-Page_Down"), # Go to next tab
|
||||
# Use Cmd+Braces keys for tab navigation instead of page navigation
|
||||
# K("C-Left_Brace"): K("C-Page_Up"),
|
||||
# K("C-Right_Brace"): K("C-Page_Down"),
|
||||
}, "General Web Browsers")
|
||||
|
||||
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
|
||||
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("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group
|
||||
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)
|
||||
# K("Super-Left"):K("Super-Page_Down"), # SL - Change workspace (ubuntu/fedora)
|
||||
@@ -455,18 +566,18 @@ 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
|
||||
K("Super-e"): K("End"), # End of Line
|
||||
@@ -477,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
|
||||
@@ -486,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
|
||||
@@ -505,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.
|
||||
@@ -531,15 +642,17 @@ 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("C-PAGE_DOWN"): pass_through_key, # cancel next_view
|
||||
# K("C-PAGE_UP"): pass_through_key, # cancel prev_view
|
||||
K("C-M-Left"): K("C-PAGE_UP"), # next_view
|
||||
K("C-M-Right"): K("C-PAGE_DOWN"), # prev_view
|
||||
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
|
||||
K("C-M-Left"): K("C-PAGE_UP"), # next_view
|
||||
K("C-M-Right"): K("C-PAGE_DOWN"), # prev_view
|
||||
K("RC-Shift-Left_Brace"): K("C-PAGE_UP"), # next_view
|
||||
K("RC-Shift-Right_Brace"): K("C-PAGE_DOWN"), # prev_view
|
||||
|
||||
# VS Code Shortcuts
|
||||
K("C-g"): pass_through_key, # cancel Go to Line...
|
||||
@@ -555,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
|
||||
@@ -589,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
|
||||
@@ -603,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
|
||||
@@ -617,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"),
|
||||
@@ -643,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"),
|
||||
@@ -651,14 +764,26 @@ 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("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)
|
||||
# K("LC-Left"):K("C-M-Left"), # Default SL - Change workspace (budgie)
|
||||
# K("LC-Left"):K("C-M-End"), # SL - Change workspace xfce4
|
||||
# K("LC-Left"):K("Super-Left"), # SL - Change workspace eos
|
||||
# K("LC-Right"):K("C-M-Home"), # SL - Change workspace xfce4
|
||||
# K("LC-Left"):K("C-M-End"), # SL - Change workspace xfce4
|
||||
# K("LC-Left"):K("Super-Left"), # SL - Change workspace eos
|
||||
# K("LC-Right"):K("C-M-Home"), # SL - Change workspace xfce4
|
||||
# K("LC-Right"):K("Super-Right"), # SL - Change workspace eos
|
||||
# K("LC-Right"):K("Super-Page_Up"), # SL - Change workspace (ubuntu/fedora)
|
||||
# K("LC-Left"):K("Super-Page_Down"), # SL - Change workspace (ubuntu/fedora)
|
||||
@@ -668,11 +793,11 @@ 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-Shift-MINUS"),
|
||||
K("RC-MINUS"): K("C-MINUS"),
|
||||
K("RC-EQUAL"): K("C-Shift-EQUAL"),
|
||||
K("RC-BACKSPACE"): K("C-Shift-BACKSPACE"),
|
||||
K("RC-W"): K("C-Shift-W"),
|
||||
@@ -686,6 +811,8 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{
|
||||
K("RC-P"): K("C-Shift-P"),
|
||||
K("RC-LEFT_BRACE"): K("C-Shift-LEFT_BRACE"),
|
||||
K("RC-RIGHT_BRACE"): K("C-Shift-RIGHT_BRACE"),
|
||||
K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab (Left)
|
||||
K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab (Right)
|
||||
K("RC-A"): K("C-Shift-A"),
|
||||
K("RC-S"): K("C-Shift-S"),
|
||||
K("RC-D"): K("C-Shift-D"),
|
||||
|
@@ -11,3 +11,4 @@ Defaults!/etc/init.d/kinto setenv,env_reset,env_delete+=PATH,env_delete+=LD_PREL
|
||||
%{username} ALL=NOPASSWD: {pkill} -f bin/xkeysnail
|
||||
%{username} ALL=NOPASSWD: {xkeysnail} *
|
||||
%{username} ALL=NOPASSWD: {systemctl} is-active --quiet xkeysnail
|
||||
%{username} ALL=NOPASSWD: /usr/lib/systemd/system/xkeysnail.service
|
||||
|
@@ -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
|
||||
|
||||
@@ -35,9 +39,9 @@ class Indicator():
|
||||
except:
|
||||
sysv = 2
|
||||
if sysv:
|
||||
kinto_status = Popen("while :; do clear; pgrep 'xkeysnail' && echo 'active'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
kinto_status = Popen("export TERM=xterm-color;while :; do clear; pgrep 'xkeysnail' && echo 'active'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
else:
|
||||
kinto_status = Popen("while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
kinto_status = Popen("export TERM=xterm-color;while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
child_pid = kinto_status.pid
|
||||
|
||||
homedir = os.path.expanduser("~")
|
||||
@@ -50,46 +54,46 @@ class Indicator():
|
||||
autostart_bool = False
|
||||
menu = Gtk.Menu()
|
||||
menukb = Gtk.Menu()
|
||||
checkbox_autostart = Gtk.CheckMenuItem('Autostart')
|
||||
restart = Gtk.MenuItem('Restart')
|
||||
stop = Gtk.MenuItem('Stop')
|
||||
keyboards = Gtk.MenuItem('Keyboard Types')
|
||||
checkbox_autostart = Gtk.CheckMenuItem(label='Autostart')
|
||||
restart = Gtk.MenuItem(label='Restart')
|
||||
stop = Gtk.MenuItem(label='Stop')
|
||||
keyboards = Gtk.MenuItem(label='Keyboard Types')
|
||||
keyboards.set_submenu(menukb)
|
||||
winkb = Gtk.RadioMenuItem(label='Windows')
|
||||
mackb = Gtk.RadioMenuItem(label='Apple',group=winkb)
|
||||
chromekb = Gtk.RadioMenuItem(label='Chromebook',group=winkb)
|
||||
ibmkb = Gtk.RadioMenuItem(label='IBM (No Super/Win key)',group=winkb)
|
||||
winmackb = Gtk.RadioMenuItem(label='Windows & Apple*',group=winkb)
|
||||
edit = Gtk.MenuItem('Customize')
|
||||
edit = Gtk.MenuItem(label='Customize')
|
||||
edit_submenu = Gtk.Menu()
|
||||
edit.set_submenu(edit_submenu)
|
||||
tweaks = Gtk.MenuItem('Tweaks')
|
||||
rightmod = Gtk.CheckButton('AltGr on Right Cmd')
|
||||
vsc2st3 = Gtk.CheckButton('ST3 hotkeys for VS Code')
|
||||
caps2esc = Gtk.CheckButton('Capslock is Escape when tapped, Cmd when held')
|
||||
caps2cmd = Gtk.CheckButton('Capslock is Cmd')
|
||||
button_config = Gtk.MenuItem('Kinto Config (shortcuts)')
|
||||
service = Gtk.MenuItem('Kinto Service')
|
||||
tweaks = Gtk.MenuItem(label='Tweaks')
|
||||
rightmod = Gtk.CheckButton(label='AltGr on Right Cmd')
|
||||
vsc2st3 = Gtk.CheckButton(label='ST3 hotkeys for VS Code')
|
||||
caps2esc = Gtk.CheckButton(label='Capslock is Escape when tapped, Cmd when held')
|
||||
caps2cmd = Gtk.CheckButton(label='Capslock is Cmd')
|
||||
button_config = Gtk.MenuItem(label='Kinto Config (shortcuts)')
|
||||
service = Gtk.MenuItem(label='Kinto Service')
|
||||
# Keyboard type set below
|
||||
button_syskb = Gtk.MenuItem('System Shortcuts')
|
||||
button_region = Gtk.MenuItem('Change Language')
|
||||
systray = Gtk.CheckMenuItem('Tray Enabled')
|
||||
helpm = Gtk.MenuItem('Help')
|
||||
button_syskb = Gtk.MenuItem(label='System Shortcuts')
|
||||
button_region = Gtk.MenuItem(label='Change Language')
|
||||
systray = Gtk.CheckMenuItem(label='Tray Enabled')
|
||||
helpm = Gtk.MenuItem(label='Help')
|
||||
help_submenu = Gtk.Menu()
|
||||
helpm.set_submenu(help_submenu)
|
||||
debug = Gtk.MenuItem('Debug')
|
||||
opengui = Gtk.MenuItem('Open Kinto')
|
||||
support = Gtk.MenuItem("Support")
|
||||
about = Gtk.MenuItem('About')
|
||||
debug = Gtk.MenuItem(label='Debug')
|
||||
opengui = Gtk.MenuItem(label='Open Kinto')
|
||||
support = Gtk.MenuItem(label='Support')
|
||||
about = Gtk.MenuItem(label='About')
|
||||
global restartsvc
|
||||
restartsvc = False
|
||||
unixts = int(time.time())
|
||||
last_status = ""
|
||||
last_status = ''
|
||||
|
||||
def __init__(self):
|
||||
global sysv
|
||||
try:
|
||||
sysv = check_output("pidof systemd >/dev/null 2>&1 && echo '0' || echo '1'").strip().decode('UTF-8')
|
||||
sysv = int(Popen("pidof systemd >/dev/null 2>&1 && echo '0' || echo '1'", stdout=PIPE, shell=True).communicate()[0].strip().decode('UTF-8'))
|
||||
except:
|
||||
sysv = 1
|
||||
if sysv:
|
||||
@@ -116,6 +120,8 @@ class Indicator():
|
||||
with open(self.kconfig) as configfile:
|
||||
autostart_line = configfile.read().split('\n')[1]
|
||||
|
||||
autostart_bool = False
|
||||
|
||||
# Autostart
|
||||
if "autostart = true" in autostart_line.casefold():
|
||||
autostart_bool = True
|
||||
@@ -199,7 +205,7 @@ class Indicator():
|
||||
# self.button_region.connect('activate',self.setRegion)
|
||||
# self.menu.append(self.button_region)
|
||||
|
||||
item_quit = Gtk.MenuItem('Close')
|
||||
item_quit = Gtk.MenuItem(label='Close')
|
||||
item_quit.connect('activate', quit)
|
||||
self.menu.append(item_quit)
|
||||
self.menu.show_all()
|
||||
@@ -417,10 +423,10 @@ class Indicator():
|
||||
self.lbl = Gtk.Label()
|
||||
global restartsvc
|
||||
restartsvc = False
|
||||
self.rightmod = Gtk.CheckButton('AltGr on Right Cmd')
|
||||
self.vsc2st3 = Gtk.CheckButton('ST3 hotkeys for VS Code')
|
||||
self.caps2esc = Gtk.CheckButton('Capslock is Escape when tapped, Cmd when held')
|
||||
self.caps2cmd = Gtk.CheckButton('Capslock is Cmd')
|
||||
self.rightmod = Gtk.CheckButton(label='AltGr on Right Cmd')
|
||||
self.vsc2st3 = Gtk.CheckButton(label='ST3 hotkeys for VS Code')
|
||||
self.caps2esc = Gtk.CheckButton(label='Capslock is Escape when tapped, Cmd when held')
|
||||
self.caps2cmd = Gtk.CheckButton(label='Capslock is Cmd')
|
||||
|
||||
if rightmod_result == 0:
|
||||
self.rightmod.set_active(True)
|
||||
@@ -598,6 +604,7 @@ class Indicator():
|
||||
Popen(['notify-send','Kinto: Error restarting Kinto!'])
|
||||
|
||||
def runStop(self,button):
|
||||
global sysv
|
||||
try:
|
||||
if sysv:
|
||||
stop = Popen(['sudo', '-E','/etc/init.d/kinto','stop'])
|
||||
@@ -618,9 +625,9 @@ class Indicator():
|
||||
def runDebug(self,button,opendebug):
|
||||
try:
|
||||
if opendebug:
|
||||
Popen([os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py','-d'])
|
||||
Popen(['/usr/bin/python3',os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py','-d'])
|
||||
else:
|
||||
Popen([os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py'])
|
||||
Popen(['/usr/bin/python3',os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py'])
|
||||
except:
|
||||
Popen(['notify-send','Kinto: Error opening Kinto!'])
|
||||
|
||||
|
@@ -4,8 +4,8 @@ Description=xkeysnail
|
||||
[Service]
|
||||
Type=simple
|
||||
KillMode=process
|
||||
ExecStart=/usr/bin/sudo /bin/bash -c '/usr/bin/xhost +SI:localuser:root && {homedir}/.config/kinto/killdups.sh && {xkeysnail} --quiet --watch {homedir}/.config/kinto/kinto.py'
|
||||
ExecStop=/usr/bin/sudo /bin/bash -c '/usr/bin/sudo pkill -f bin/xkeysnail && exit 0'
|
||||
ExecStart={sudo}/bin/bash -c '/usr/bin/xhost +SI:localuser:root && {homedir}/.config/kinto/killdups.sh && {xkeysnail} --quiet --watch {homedir}/.config/kinto/kinto.py'
|
||||
ExecStop={sudo}/bin/bash -c '{sudo}pkill -f bin/xkeysnail && exit 0'
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
Environment=DISPLAY={displayid}
|
||||
|
28
setup.py
28
setup.py
@@ -29,15 +29,15 @@ def windows_setup():
|
||||
print("This install will fail if you are not running with elevated privileges")
|
||||
os.system('powershell -executionpolicy bypass ".\\windows\\autohotkey.ps1"')
|
||||
print("Copying autohotkey combinations for Terminals & Editors...")
|
||||
os.system('copy /Y "' + path + '\\windows\\kinto.ahk" "' + path + '\\windows\\kinto-new.ahk"')
|
||||
os.system('copy /Y "' + path + '\\windows\\kinto.ahk" "' + homedir + '\\kinto-new.ahk"')
|
||||
if default < 3:
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default)(?!( - ST2CODE))(.*)/$2$3$5/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default)(?!( - ST2CODE))(.*)/$2$3$5/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default == 1:
|
||||
kbtype = "mac"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; MacModifiers)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; MacModifiers)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
elif default == 2:
|
||||
kbtype = "win"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
elif default == 5:
|
||||
print("Removing any old registry keys from prior versions...")
|
||||
p = subprocess.Popen(['powershell.exe', "Remove-ItemProperty -Path HKLM:'SYSTEM\CurrentControlSet\Control\Keyboard Layout' -Name 'Scancode Map' -ErrorAction SilentlyContinue"], stdout=sys.stdout)
|
||||
@@ -52,32 +52,32 @@ def windows_setup():
|
||||
print("Uninstall of Kinto is Complete.")
|
||||
if default == 3:
|
||||
kbtype = "chrome"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Chromebook)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers/CB)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Chromebook)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers\/CB)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default == 3 or default == 4:
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB\/IBM)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers\/CB\/IBM)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB\/IBM)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers\/CB\/IBM)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default == 4:
|
||||
kbtype = "ibm"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; IBM)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; IBM)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default > 0 and default < 5:
|
||||
stvscode = yn_choice(bcolors.CYELLOW2 + "Would you like to use Sublime Text 3 keymaps in VS Code?\n" + bcolors.ENDC)
|
||||
print("\nWill now install Ubuntu Terminal Theme as default...")
|
||||
os.system('regedit "' + path + '\\windows\\theme_ubuntu.reg"')
|
||||
os.system('robocopy "'+ path + '\\assets" "%userprofile%\\.kinto\\assets" /E')
|
||||
if (stvscode and (default > 0 or default < 3)):
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default - ST2CODE)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default - ST2CODE)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
elif (stvscode and (default == 3 or default == 4 )):
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB/IBM - ST2CODE)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB/IBM - ST2CODE)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
os.system('copy /Y "' + path + '\\windows\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/{kbtype}/' + kbtype + '/g" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/{kbtype}/' + kbtype + '/gm" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('copy /Y "' + path + '\\windows\\usb.vbs" "%userprofile%\\.kinto\\usb.vbs"')
|
||||
os.system('copy /Y "' + path + '\\windows\\detectUSB.ahk" "%userprofile%\\.kinto\\detectUSB.ahk"')
|
||||
os.system('mklink "%userprofile%\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('copy /Y "'+ path + '\\windows\\NoShell.vbs" "%userprofile%\\.kinto\\NoShell.vbs"')
|
||||
os.system('copy /Y "'+ path + '\\windows\\toggle_kb.bat" "%userprofile%\\.kinto\\toggle_kb.bat"')
|
||||
os.system('copy /Y "'+ path + '\\windows\\kinto-new.ahk" "%userprofile%\\.kinto\\kinto.ahk"')
|
||||
os.system("del /f .\\windows\\kinto-new.ahk")
|
||||
os.system('copy /Y "'+ homedir + '\\kinto-new.ahk" "%userprofile%\\.kinto\\kinto.ahk"')
|
||||
os.system("del /f " + homedir + "\\kinto-new.ahk")
|
||||
os.system("del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\" 2> nul")
|
||||
userpath = cmdline('cmd /c for %A in ("%userprofile%") do @echo %~sA')[:-1]
|
||||
print('Starting... "' + userpath + '\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs"')
|
||||
|
BIN
windows/WinToMac_AltWin_swap.skl
Normal file
BIN
windows/WinToMac_AltWin_swap.skl
Normal file
Binary file not shown.
@@ -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
|
||||
@@ -172,8 +174,14 @@ GroupAdd, browsers, ahk_exe msedge.exe
|
||||
|
||||
; Disable Key Remapping for Virtual Machines
|
||||
; Disable for Remote desktop solutions too
|
||||
GroupAdd, virtm, ahk_exe VirtualBoxVM.exe
|
||||
GroupAdd, virtm, ahk_exe mstsc.exe
|
||||
GroupAdd, remotes, ahk_exe VirtualBoxVM.exe
|
||||
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
|
||||
@@ -188,7 +196,108 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
|
||||
; SetCapsLockState, AlwaysOff ; CB/IBM
|
||||
|
||||
#IfWinNotActive ahk_group virtm
|
||||
; Keyboards w/o media keys can use this Remap
|
||||
; This will replace unneeded dedicated keys
|
||||
; with most commonly used media keys
|
||||
;
|
||||
; Insert::SoundSet, +1, , mute ; Toggles Speaker
|
||||
; +Insert::Insert ; Shift Insert maps to Insert
|
||||
; Home::SoundSetWaveVolume, -10 ; Decrease volume
|
||||
; PgUp::SoundSetWaveVolume, +10 ; Increase volume
|
||||
; Delete::Send {Media_Prev} ; Previous
|
||||
; End::Send {Media_Play_Pause} ; Pause/Play
|
||||
; PgDn::Send {Media_Next} ; Next
|
||||
|
||||
; Virtual Desktop Hack via TotalSpaces2 - macOS Remote Desktop
|
||||
; Custom Bind Gestures in Windows
|
||||
; Shift-F8 on Left Swipe
|
||||
; Shift-F9 on Right Swipe
|
||||
#IfWinActive ahk_exe nxplayer.bin
|
||||
+F8::Send !+- ; macOS TotalSpaces2 - Space Left
|
||||
+F6::Send !+= ; macOS TotalSpaces2 - Space Right
|
||||
#If
|
||||
; +F8::Send {LCtrl down}{LWin down}{left}{LCtrl up}{LWin up} ; Comment out on host machine
|
||||
; +F6::Send {LCtrl down}{LWin down}{right}{LCtrl up}{LWin up} ; Comment out on host machine
|
||||
|
||||
; #########################################################################
|
||||
; ############# START OF FINDER MODS FOR FILE MANAGERS ################
|
||||
; #########################################################################
|
||||
; Finder Mods for Windows File Explorer (explore.exe)
|
||||
#IfWinActive ahk_class CabinetWClass ahk_exe explorer.exe
|
||||
^i::Send !{Enter} ; Cmd+i: Get Info / Properties
|
||||
^r::Send {F5} ; Cmd+R: Refresh view (Not actually a Finder shortcut? But works in Linux file browsers too.)
|
||||
^1::Send ^+2 ; Cmd+1: View as Icons
|
||||
^2::Send ^+6 ; Cmd+2: View as List (Detailed)
|
||||
^3::Send ^+5 ; Cmd+3: View as List (Compact)
|
||||
^4::Send ^+1 ; Cmd+4: View as Gallery
|
||||
^Up::Send !{Up} ; Cmd+Up: Up to parent folder
|
||||
^Left::Send !{Left} ; Cmd+Left: Go to prior location in history
|
||||
^Right::Send !{Right} ; Cmd+Right: Go to next location in history
|
||||
^Down:: ; Cmd-Down: Navigate into the selected directory
|
||||
For window in ComObjCreate("Shell.Application").Windows
|
||||
If WinActive() = window.hwnd
|
||||
For item in window.document.SelectedItems {
|
||||
window.Navigate(item.Path)
|
||||
Return
|
||||
}
|
||||
Return
|
||||
^[::Send !{Left} ; Cmd+Left_Brace: Go to prior location in history
|
||||
^]::Send !{Right} ; Cmd+Right_Brace: Go to next location in history
|
||||
^+o::Send ^{Enter} ; Cmd+Shift+o: Open in new window (tabs not available)
|
||||
^Delete::Send {Delete} ; Cmd+Delete: Delete / Send to Trash
|
||||
^BackSpace::Send {Delete} ; Cmd+Delete: Delete / Send to Trash
|
||||
^d::return, ; Block the unusual Explorer "delete" shortcut of Ctrl+D, used for "bookmark" in similar apps
|
||||
$Enter:: ; Use Enter key to rename (F2), unless focus is inside a text input field.
|
||||
ControlGetFocus, fc, A
|
||||
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1,SysTreeView321
|
||||
Send {Enter}
|
||||
Else Send {F2}
|
||||
Return
|
||||
$BackSpace:: ; Backspace (without Cmd): Block Backspace key with error beep, unless inside text input field
|
||||
ControlGetFocus, fc, A
|
||||
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1
|
||||
Send {BackSpace}
|
||||
Else SoundBeep, 600, 300
|
||||
Return
|
||||
$Delete:: ; Delete (without Cmd): Block Delete key with error beep, unless inside text input field
|
||||
ControlGetFocus, fc, A
|
||||
If fc contains Edit,Search,Notify,Windows.UI.Core.CoreWindow1
|
||||
Send {Delete}
|
||||
Else SoundBeep, 600, 300
|
||||
Return
|
||||
#IfWinActive
|
||||
; #########################################################################
|
||||
; ############## END OF FINDER MODS FOR FILE MANAGERS #################
|
||||
; #########################################################################
|
||||
|
||||
#IfWinNotActive ahk_group remotes
|
||||
; Lock Workstation
|
||||
#^q::DllCall("LockWorkStation")
|
||||
; Conflicts w/ Win-L so will use Ctrl-Shift-L as Ctrl-L replacement
|
||||
; Helpful for Sublime text lowercasing & VSCode
|
||||
^+l::Send ^{l}
|
||||
; Adds Task View to Ctrl-Cmd-Down
|
||||
#^Down::
|
||||
Run, "C:\Windows\explorer.exe" "shell:::{3080F90E-D7AD-11D9-BD98-0000947B0257}"
|
||||
return
|
||||
; wordwise support
|
||||
^Up::Send ^{Home}
|
||||
^+Up::Send ^+{Home}
|
||||
^Down::Send ^{End}
|
||||
^+Down::Send ^+{End}
|
||||
$^Backspace::Send +{Home}{Delete}
|
||||
!Backspace::Send ^{Backspace}
|
||||
!Left::Send ^{Left}
|
||||
!+Left::Send ^+{Left}
|
||||
!Right::Send ^{Right}
|
||||
!+Right::Send ^+{Right}
|
||||
$^Left::Send {Home}
|
||||
$^+Left::Send +{Home}
|
||||
$^Right::Send {End}
|
||||
$^+Right::Send +{End}
|
||||
#If
|
||||
|
||||
#IfWinNotActive ahk_group remotes
|
||||
|
||||
; New AltTab and CtrlTab fix
|
||||
*tab::
|
||||
@@ -294,8 +403,10 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
!Esc::SendInput, {Pause}
|
||||
|
||||
; Go up or down a page
|
||||
$!Down::Send {PgDn};
|
||||
$!Up::Send {PgUp};
|
||||
#IfWinNotActive ahk_group editors
|
||||
$!Down::Send {PgDn}
|
||||
$!Up::Send {PgUp}
|
||||
#If
|
||||
|
||||
; Close Apps
|
||||
^q::Send !{F4}
|
||||
@@ -352,22 +463,6 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; !^space::Send #e ; Default
|
||||
; #^space::Send #e ; CB/IBM
|
||||
|
||||
; wordwise support
|
||||
^Up::Send ^{Home}
|
||||
^+Up::Send ^+{Home}
|
||||
^Down::Send ^{End}
|
||||
^+Down::Send ^+{End}
|
||||
$^Backspace::Send +{Home}{Delete}
|
||||
!Backspace::Send ^{Backspace}
|
||||
!Left::Send ^{Left}
|
||||
!+Left::Send ^+{Left}
|
||||
!Right::Send ^{Right}
|
||||
!+Right::Send ^+{Right}
|
||||
$^Left::Send {Home}
|
||||
$^+Left::Send +{Home}
|
||||
$^Right::Send {End}
|
||||
$^+Right::Send +{End}
|
||||
|
||||
; #if GetKeyState("LWin", "P") || GetKeyState("RAlt", "P") ; Chromebook
|
||||
; Space::Send ^{Esc} ; Chromebook
|
||||
; 0::Send #0 ; Chromebook
|
||||
@@ -412,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}
|
||||
@@ -522,6 +617,16 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
|
||||
; Close all browsers
|
||||
#IfWinActive ahk_group browsers
|
||||
; Page Navigation
|
||||
^[::send !{Left} ; Go to prior page
|
||||
^]::send !{Right} ; Go to next page
|
||||
;Tab Navigation
|
||||
^+[::send ^{PgUp} ; Go to prior tab (left)
|
||||
^+]::send ^{PgDn} ; Go to next tab (right)
|
||||
^!Left::send ^{PgUp} ; Go to prior tab (left)
|
||||
^!Right::send ^{PgDn} ; Go to next tab (right)
|
||||
#Left::send ^{PgUp} ; Go to prior tab (left)
|
||||
#Right::send ^{PgDn} ; Go to next tab (right)
|
||||
^q::send {Alt Down}f{Alt Up}x ; exit all windows
|
||||
; Dev Tools
|
||||
!^i::send {Ctrl Down}{Shift Down}i{Shift Up}{Ctrl Up}
|
||||
@@ -529,6 +634,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; Open preferences
|
||||
#IfWinActive ahk_exe firefox.exe
|
||||
^,::send, {Ctrl Down}t{Ctrl Up}about:preferences{Enter}
|
||||
^+n::send ^+p
|
||||
#If
|
||||
#IfWinActive ahk_exe chrome.exe
|
||||
^,::send {Alt Down}e{Alt Up}s{Enter}
|
||||
@@ -568,7 +674,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; #x::Send ^{x} ; Default - Terminal - Ctrl-x
|
||||
; #c::Send ^{c} ; Default - Terminal - Ctrl-c sigint
|
||||
; !x::Send ^{x} ; CB/IBM
|
||||
; !c::Send ^{c} ; CB/IBM
|
||||
; !c::Send ^{c} ; CB/IBM - Sigint
|
||||
; #c::send ^{Pause} ; cancel_build
|
||||
; #Space::Send ^{Space} ; Default - Basic code completion
|
||||
; !Space::Send ^{Space} ; CB/IBM - Basic code completion
|
||||
@@ -592,7 +698,6 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
Insert::Return ; cancel toggle_overwrite
|
||||
^!O::send {Insert} ; toggle_overwrite
|
||||
; !c::Return ; Default - cancel toggle_case_sensitive
|
||||
; $!c::send ^{c} ; CB/IBM - Sigint
|
||||
^!c::send !{c} ; toggle_case_sensitive
|
||||
; ^h::Return ; cancel replace
|
||||
^!f::send ^{h} ; replace
|
||||
@@ -600,6 +705,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
^!e::send ^+{h} ; replace_next
|
||||
F3::Return ; cancel find_next
|
||||
^g::send {F3} ; find_next
|
||||
#g::send ^{g} ; goto line - disable game bar - Start menu -> Game bar shortcuts -> toggle Off
|
||||
*F3::Return ; cancel find_prev, find_under, find_all_under
|
||||
^+g::send +{F3} ; find_prev
|
||||
#!g::send ^{F3} ; find_under
|
||||
@@ -729,45 +835,45 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; Clear Terminal and Scroll Buffer
|
||||
^k::Send clear && printf '\e[3J'{Enter}
|
||||
; Remap Physical Ctrl back to Ctrl
|
||||
#0::Send {LCtrl down}0{Ctrl up} ; Default
|
||||
#1::Send {LCtrl down}1{Ctrl up} ; Default
|
||||
#2::Send {LCtrl down}2{Ctrl up} ; Default
|
||||
#3::Send {LCtrl down}3{Ctrl up} ; Default
|
||||
#4::Send {LCtrl down}4{Ctrl up} ; Default
|
||||
#5::Send {LCtrl down}5{Ctrl up} ; Default
|
||||
#6::Send {LCtrl down}6{Ctrl up} ; Default
|
||||
#7::Send {LCtrl down}7{Ctrl up} ; Default
|
||||
#8::Send {LCtrl down}8{Ctrl up} ; Default
|
||||
#9::Send {LCtrl down}9{Ctrl up} ; Default
|
||||
#-::Send {LCtrl down}-{Ctrl up} ; Default
|
||||
#=::Send {LCtrl down}={Ctrl up} ; Default
|
||||
#`::Send {LCtrl down}`{Ctrl up} ; Default
|
||||
#a::Send {LCtrl down}a{Ctrl up} ; Default
|
||||
#b::Send {LCtrl down}b{Ctrl up} ; Default
|
||||
#c::Send {LCtrl down}c{Ctrl up} ; Default
|
||||
#d::Send {LCtrl down}d{Ctrl up} ; Default
|
||||
#e::Send {LCtrl down}e{Ctrl up} ; Default
|
||||
#f::Send {LCtrl down}f{Ctrl up} ; Default
|
||||
#g::Send {LCtrl down}g{Ctrl up} ; Default
|
||||
#h::Send {LCtrl down}h{Ctrl up} ; Default
|
||||
#i::Send {LCtrl down}i{Ctrl up} ; Default
|
||||
#j::Send {LCtrl down}j{Ctrl up} ; Default
|
||||
#k::Send {LCtrl down}k{Ctrl up} ; Default
|
||||
#l::Send {LCtrl down}l{Ctrl up} ; Default
|
||||
#m::Send {LCtrl down}m{Ctrl up} ; Default
|
||||
#n::Send {LCtrl down}n{Ctrl up} ; Default
|
||||
#o::Send {LCtrl down}o{Ctrl up} ; Default
|
||||
#p::Send {LCtrl down}p{Ctrl up} ; Default
|
||||
#q::Send {LCtrl down}q{Ctrl up} ; Default
|
||||
#r::Send {LCtrl down}r{Ctrl up} ; Default
|
||||
#s::Send {LCtrl down}s{Ctrl up} ; Default
|
||||
#t::Send {LCtrl down}t{Ctrl up} ; Default
|
||||
#u::Send {LCtrl down}u{Ctrl up} ; Default
|
||||
#v::Send {LCtrl down}v{Ctrl up} ; Default
|
||||
#w::Send {LCtrl down}w{Ctrl up} ; Default
|
||||
#x::Send {LCtrl down}x{Ctrl up} ; Default
|
||||
#y::Send {LCtrl down}y{Ctrl up} ; Default
|
||||
#z::Send {LCtrl down}z{Ctrl up} ; Default
|
||||
; #0::Send {LCtrl down}0{Ctrl up} ; Default
|
||||
; #1::Send {LCtrl down}1{Ctrl up} ; Default
|
||||
; #2::Send {LCtrl down}2{Ctrl up} ; Default
|
||||
; #3::Send {LCtrl down}3{Ctrl up} ; Default
|
||||
; #4::Send {LCtrl down}4{Ctrl up} ; Default
|
||||
; #5::Send {LCtrl down}5{Ctrl up} ; Default
|
||||
; #6::Send {LCtrl down}6{Ctrl up} ; Default
|
||||
; #7::Send {LCtrl down}7{Ctrl up} ; Default
|
||||
; #8::Send {LCtrl down}8{Ctrl up} ; Default
|
||||
; #9::Send {LCtrl down}9{Ctrl up} ; Default
|
||||
; #-::Send {LCtrl down}-{Ctrl up} ; Default
|
||||
; #=::Send {LCtrl down}={Ctrl up} ; Default
|
||||
; #`::Send {LCtrl down}`{Ctrl up} ; Default
|
||||
; #a::Send {LCtrl down}a{Ctrl up} ; Default
|
||||
; #b::Send {LCtrl down}b{Ctrl up} ; Default
|
||||
; #c::Send {LCtrl down}c{Ctrl up} ; Default
|
||||
; #d::Send {LCtrl down}d{Ctrl up} ; Default
|
||||
; #e::Send {LCtrl down}e{Ctrl up} ; Default
|
||||
; #f::Send {LCtrl down}f{Ctrl up} ; Default
|
||||
; #g::Send {LCtrl down}g{Ctrl up} ; Default
|
||||
; #h::Send {LCtrl down}h{Ctrl up} ; Default
|
||||
; #i::Send {LCtrl down}i{Ctrl up} ; Default
|
||||
; #j::Send {LCtrl down}j{Ctrl up} ; Default
|
||||
; #k::Send {LCtrl down}k{Ctrl up} ; Default
|
||||
; #l::Send {LCtrl down}l{Ctrl up} ; Default
|
||||
; #m::Send {LCtrl down}m{Ctrl up} ; Default
|
||||
; #n::Send {LCtrl down}n{Ctrl up} ; Default
|
||||
; #o::Send {LCtrl down}o{Ctrl up} ; Default
|
||||
; #p::Send {LCtrl down}p{Ctrl up} ; Default
|
||||
; #q::Send {LCtrl down}q{Ctrl up} ; Default
|
||||
; #r::Send {LCtrl down}r{Ctrl up} ; Default
|
||||
; #s::Send {LCtrl down}s{Ctrl up} ; Default
|
||||
; #t::Send {LCtrl down}t{Ctrl up} ; Default
|
||||
; #u::Send {LCtrl down}u{Ctrl up} ; Default
|
||||
; #v::Send {LCtrl down}v{Ctrl up} ; Default
|
||||
; #w::Send {LCtrl down}w{Ctrl up} ; Default
|
||||
; #x::Send {LCtrl down}x{Ctrl up} ; Default
|
||||
; #y::Send {LCtrl down}y{Ctrl up} ; Default
|
||||
; #z::Send {LCtrl down}z{Ctrl up} ; Default
|
||||
; !0::Send {LCtrl down}0{Ctrl up} ; CB/IBM
|
||||
; !1::Send {LCtrl down}1{Ctrl up} ; CB/IBM
|
||||
; !2::Send {LCtrl down}2{Ctrl up} ; CB/IBM
|
||||
@@ -819,4 +925,299 @@ Send {RWin up}
|
||||
Send {LWin up}
|
||||
Send {RShift 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
|
||||
|
@@ -305,6 +305,7 @@ fi
|
||||
|
||||
if [[ $distro == "elementaryos" ]]; then
|
||||
gsettings set io.elementary.terminal.settings natural-copy-paste false
|
||||
sudo ./linux/system-config/unipkg.sh libvte-2.91-dev
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v xhost)" ] || ! [ -x "$(command -v gcc)" ]; then
|
||||
@@ -314,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
|
||||
@@ -328,26 +330,7 @@ if [[ $distro == 'kdeneon' ]]; then
|
||||
kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 &
|
||||
fi
|
||||
|
||||
if [[ $distro == 'fedora' ]]; then
|
||||
echo "Checking SELinux status..."
|
||||
if [[ $(perl -ne 'print if /^SELINUX=enforcing/' /etc/selinux/config | wc -l) != 0 ]]; then
|
||||
while true; do
|
||||
read -rep $'\nWould you like to update your SELinux state from enforcing to permissive? (y/n)\n' yn
|
||||
case $yn in
|
||||
[Yy]* ) setSE='yes'; break;;
|
||||
[Nn]* ) exp='no'; expsh=" " break;;
|
||||
# * ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $yn == "yes" ]]; then
|
||||
sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
|
||||
echo "/etc/selinux/config has been updated. Please reboot your computer before continuing."
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "SELinux state should be ok for Kinto to install"
|
||||
fi
|
||||
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
|
||||
@@ -403,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
|
||||
@@ -518,8 +501,13 @@ 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
|
||||
selinuxtype=systemd_unit_file_t
|
||||
else
|
||||
sed -i "s#{sudo}#`\\which sudo` #g" ./linux/xkeysnail.service.new
|
||||
fi
|
||||
|
||||
if [[ $distro == "elementaryos" ]]; then
|
||||
@@ -568,17 +556,15 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
xkeypath="/lib/systemd/system/"
|
||||
fi
|
||||
xhost +SI:localuser:root
|
||||
git clone --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
git clone -b kinto --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
cd xkeysnail
|
||||
git checkout kinto
|
||||
giturl=$(git ls-remote --get-url)
|
||||
if [ "$giturl" != "https://github.com/rbreaves/xkeysnail.git" ];then
|
||||
echo -e "\nreplacing xkeysnail with fork...\n"
|
||||
cd ..
|
||||
rm -rf ./xkeysnail
|
||||
git clone --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
git clone -b kinto --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
cd xkeysnail
|
||||
git checkout kinto
|
||||
fi
|
||||
sudo pip3 install --upgrade .
|
||||
cd ..
|
||||
@@ -590,6 +576,10 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/limitedadmins.new
|
||||
if [[ $distro == 'fedora' ]] || [[ $distro == 'fedoralinux' ]]; then
|
||||
echo "Changing SELinux context"
|
||||
sudo chcon -v --user=$selinuxuser --type=$selinuxtype "$xkeypath"xkeysnail.service
|
||||
fi
|
||||
sudo chown root:root ./linux/limitedadmins.new
|
||||
# Add a check here for xkeysnail path resolving
|
||||
sudo mv ./linux/limitedadmins.new /etc/sudoers.d/limitedadmins
|
||||
@@ -598,10 +588,19 @@ 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"
|
||||
|
||||
sudo chown -R root:root "$xkeypath"xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chmod 644 "$xkeypath"xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Created soft symlink..." || echo "Failed to create soft symlink..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Created soft symlink for graphical target..." || echo "Failed to create soft symlink for graphical target..."
|
||||
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..."
|
||||
sudo chown -R root:root /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chmod 644 /etc/systemd/system/xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
sudo chmod 644 /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
else
|
||||
sudo chown -R root:root "$xkeypath"xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chmod 644 "$xkeypath"xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Created soft symlink..." || echo "Failed to create soft symlink..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Created soft symlink for graphical target..." || echo "Failed to create soft symlink for graphical target..."
|
||||
fi
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl disable xkeysnail
|
||||
sudo systemctl stop xkeysnail
|
||||
@@ -621,7 +620,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
# sudo systemctl restart xkeysnail
|
||||
sudo pkill -f kintotray &
|
||||
# >/dev/null 2>&1
|
||||
if [[ $dename == "gnome" || $dename == "kde" ]];then
|
||||
if [[ $dename == "kde" ]];then
|
||||
sed -i "s/systray = true/systray = false/g" ~/.config/kinto/initkb
|
||||
fi
|
||||
nohup python3 ~/.config/kinto/gui/kinto-gui.py >/dev/null 2>&1 &
|
||||
|
Reference in New Issue
Block a user