Compare commits

...

27 Commits

Author SHA1 Message Date
Ben Reaves
dab65cd8f0 - Added Remmina support for RDP sessions (Linux to Windows) 2021-02-14 23:45:29 -06:00
Ben Reaves
50d53ba77f Merge pull request #385 from fracture91/browser-tab-num-jump
Make Command+Num on linux jump to tabs in browsers
2021-02-07 14:12:01 -08:00
Ben Reaves
a285e7ebe9 Merge pull request #386 from fracture91/same-app-switching-backwards
Fix Command + Shift + Grave same app switching so it moves backwards, not forwards
2021-02-04 19:59:49 -08:00
Andrew Hurle
231060ee5b Fix Command + Shift + Grave same app switching so it moves backwards 2021-02-04 21:13:42 -05:00
Andrew Hurle
f693312dce Make Command+Num on linux jump to tabs in browsers
See "Go to Tab 1 to 8" and "Go to Last Tab":

https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform-firefox-tasks-quickly#w_windows-tabs

See "Jump to a specific tab" and "Jump to the rightmost tab":

https://support.google.com/chrome/answer/157179?co=GENIE.Platform%3DDesktop&hl=en#zippy=%2Ctab-and-window-shortcuts
2021-02-04 17:12:22 -05:00
Ben Reaves
6d2dd55a96 Merge pull request #384 from rbreaves/dev
- Fixes system tray to be executable. Closes #383
2021-02-03 11:33:58 -08:00
Ryan Reaves
46430e3ec6 - Fixes system tray to be executable. Closes #383 2021-02-01 13:03:16 -06:00
Ben Reaves
d1d020ff80 Update README.md 2021-01-21 21:58:33 -06:00
Ben Reaves
bc04c87042 Update README.md 2021-01-21 21:26:26 -06:00
Ben Reaves
dc31e28e16 Merge pull request #377 from rbreaves/dev
- Added min/max fix for Windows to avoid multi-cursor issue
2021-01-16 00:25:05 -06:00
Ben Reaves
30a9529940 - Added min/max fix for Windows to avoid multi-cursor issue 2021-01-15 17:17:24 -06:00
Ben Reaves
7c9887237b Update README.md 2021-01-14 23:19:03 -06:00
Ben Reaves
a090725633 Merge pull request #372 from rbreaves/dev
Set permissions better, add RAlt-Enter for Insert, fix cmd-tab for terms (linux)
2021-01-14 08:38:56 -06:00
Ben Reaves
1e694aa65f Update README.md 2021-01-13 18:57:49 -06:00
Ben Reaves
7f771cb5da Update README.md 2021-01-13 18:45:44 -06:00
Ben Reaves
20e73a060b Update README.md 2021-01-13 18:45:11 -06:00
Ben Reaves
3cbb2efa4b Update README.md 2021-01-12 22:17:41 -06:00
Ben Reaves
39aef1be43 Update README.md 2021-01-12 21:53:06 -06:00
Ben Reaves
e526dfdda0 Update README.md 2021-01-12 18:22:27 -06:00
Ben Reaves
c321e51a8f Merge pull request #370 from albertofem/patch-1
Catch all Jetbrains applications
2021-01-10 16:33:52 -06:00
Ryan Reaves
43b4ae3986 - Added Insert on RAlt-Enter #371 #348, fixed cmd-tab during term usage (linux) 2021-01-10 16:16:42 -06:00
Alberto Fernández
8eb14ee96a Catch all Jetbrains applications
Right now, only IntelliJ IDEA IDE is being remapped. However, if you try to use CLion, PyCharm, etc. those won't be remapped as they have a different `WM_CLASS` value, for example: `jetbrains-clion`, `jetbrains-pycharm`, etc.

This PR just adds a wildcard to the regular expression for jetbrains remapping to catch all IDEs, but excluding the Jetbrains Toolbox app, which does not need remapping.

Tested with CLion, IntelliJ, PyCharm and Android Studio. Not sure if this will catch 100% of availables IDEs in Linux (for example, others like MPS, Datalore, etc.)
2021-01-10 18:45:01 +01:00
Ben Reaves
b76154d046 Update README.md 2021-01-10 03:02:01 -06:00
Ben Reaves
6fa0ec8ddd Update README.md 2021-01-10 02:45:56 -06:00
Ben Reaves
c924d91440 Update README.md 2021-01-10 02:44:51 -06:00
Ben Reaves
e9edc4891c Update README.md 2021-01-10 02:41:26 -06:00
Ben Reaves
015faa4491 - Set more execute permissions after file relocations 2021-01-09 18:30:18 -06:00
9 changed files with 93 additions and 30 deletions

View File

@@ -5,7 +5,7 @@
[![GitHub release](https://img.shields.io/github/release/rbreaves/kinto.svg)](https://github.com/rbreaves/kinto/releases/latest)
\- Type in Linux & Windows like it's a Mac. \-
\- Linux & Windows with Mac-style shortcut keys. \-
Seamless copy and paste with all apps and terminals. The zero effort solution.
@@ -22,7 +22,7 @@ If you like or appreciate this project then please consider donating.
|**Wishlists**|[Amazon](https://smile.amazon.com/hz/wishlist/ls/3EVXR21VFKD9Z?ref_=wl_share)|[Adafruit](https://www.adafruit.com/wishlists/515932)|[eBay](https://www.ebay.com/mye/myebay/WatchList?custom_list_id=636668138019)|
|---|---|---|---|
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 will accept shipments (of keyboards in particular) as well.
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)
@@ -50,20 +50,24 @@ sudo apt install python3
./setup.py
```
Troubleshoot
**Troubleshoot**
If the wizard does not appear then either type in "kinto.sh" in your application overview search bar or run this following command.
```
~/.config/kinto/gui/kinto-gui.py
```
To Uninstall Kinto
**Issues with Numpad?**
Try toggling numlock on & off (clear key on official mac keyboards). If it still does not work then restart the Kinto service and try toggling the numlock/clear key again, it will likely work after that. #369
**Uninstall Kinto**
```
./setup.py -r
```
Other tips
**Other tips**
If you want a global menu app similar to what mac users have then I strongly recommend Ubuntu Budgie as it has the Vala Appmenu built in and ready for activation. Short of that Vala-AppMenu can be installed in various distros, mileage will vary. If you try to activate it in the latest 20.xx releases with XFCE then you may need to run the following commands.
@@ -96,25 +100,26 @@ py setup.py
<img src="https://user-images.githubusercontent.com/10969616/85195079-30fd4f80-b295-11ea-8bcd-257990b77dcb.png" width="50%" height="50%">
<img src="https://user-images.githubusercontent.com/10969616/85195082-322e7c80-b295-11ea-8c81-320dab424c3c.png" width="50%" height="50%">
To Uninstall Kinto - Select Uninstall
**Uninstall Kinto**
```
py setup.py
```
Select Uninstall
## How to use in Remote Desktop Solutions
Currently this may be limited to Windows RDP Clients and Servers on both ends, but in theory any remote desktop solution that properly handles the Windows key should work is what I am finding. The latest version of Kinto may need to be suspended via the system tray on the computer running the Client software of the Remote Desktop solution you are using - or you can add it to the "virtm" group of the Kinto.ahk script for Windows 10. On the linux side a 3rd, but similar "define_conditional_modmap" terminals like group may need to be added to align with virtm.
RDP fully works as long as the entire keyboard input is being captured. RDP had been working for ahwile with Windows but as of 2/14/2021 Linux is now supported and potentially macOS as well.
Note: virtm is just a shortname for virtual machine and remote desktop exceptions - so that remapping can happen within their OS & not on your host machine - if it can be avoided.
Scenarios confirmed working?
Windows RDP Client -> Windows Computer
Scenarios that don't appear to work?
Microsoft RDP Client on a Mac -> Windows Computer
FreeRDP based client on a Mac -> Windows Computer
Android/iOS RDP Client -> Windows Computer
|Program|Host OS|Client OS|Works? |Notes|
|---|---|---|---|---|
|mstsc.exe (rdp)| Windows | Windows | Yes| |
|Official MS RDP| macOS | Windows | No|Use Windows in VM & RDP from it|
|Remmina| Linux | Windows | Yes|Use hover menu to enable "Grab all keyboard events"|
|FreeRDP| Linux | Windows | Maybe|Needs to grab keyboard events fully (Add client to remotes)|
|FreeRDP| macOS | Windows | Maybe|Needs to grab keyboard events fully|
|Official MS RDP| iOS/Android | Windows | No|No workaround atm|
## Table of Contents
@@ -379,10 +384,23 @@ I'd appreciate any help from people with non-US based keyboards, to help ensure
Yet another keyboard remapping tool for X environment
[Interception](https://gitlab.com/interception/linux/tools)
Another low level key remapper, not as easily configurable as Xkeysnail, but does not rely on X11.
[Wincent](https://github.com/wincent/wincent) by Greg Hurrell
Dot files and configurations that may help those that want mac-style shortcut keys that work under Wayland, or w/o x11.
[Vim #102: macOS keyboard bindings on Linux](https://www.youtube.com/watch?v=TBqTHesnzkI)
[mac-precision-touchpad](https://github.com/imbushuo/mac-precision-touchpad) by imbushuo
Windows 10 touchpad to precision touchpad driver
[macOS-cursors-for-Windows](https://github.com/antiden/macOS-cursors-for-Windows) by antiden
macOS cursors for Windows
[fusuma](https://github.com/iberianpig/fusuma) by iberianpig
Multitouch gestures with libinput driver on Linux
@@ -391,10 +409,11 @@ Multitouch gestures with libinput driver on Linux
Linux driver for Facetime HD on macbooks
[Fluent Terminal - Windows only](https://github.com/felixse/FluentTerminal) by felixse
[Windows Terminal Preview](https://aka.ms/terminal-preview) by Microsoft
The best Terminal app built for Windows hands down. I have tried countless, but this one actually seems to get everything right, despite the lack of a GUI to configure all aspects of the program. Custom configurations have to be done via a json file - but given the performance and feature set I feel like it is the a decent trade off.
A Terminal Emulator based on UWP and web technologies.
I will update Kinto to have custom configurations for this specific Terminal in the future. Will make seamless copy & paste, which already works, work even better (Cmd-C can still trigger sigint - but there is a fix for that that involves updating the json config).
[PowerToys - Windows only](https://github.com/microsoft/PowerToys) by microsoft
@@ -444,7 +463,7 @@ Dark & Light Theme w/ OSX controls for Elementary OS
Auto-detect the connected display hardware and load the appropriate X11 setup using xrandr
[Barrier](https://github.com/debauchee/barrier) by debauchee
[Barrier](https://github.com/debauchee/barrier) by debauchee (Note: Does not appear to work with Kinto v1.2+, may work w/ Kinto v1.1?)
Open-source KVM software

0
linux/gui/kinto-gui.py Normal file → Executable file
View File

0
linux/gui/kinto.desktop Normal file → Executable file
View File

46
linux/kinto.py Normal file → Executable file
View File

@@ -11,6 +11,19 @@ terminals = ["kinto-gui.py","gnome-terminal","konsole","io.elementary.terminal",
terminals = [term.casefold() for term in terminals]
termStr = "|".join(str(x) for x in terminals)
mscodes = ["code","vscodium"]
codeStr = "|".join(str(x) for x in mscodes)
# 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"]
remotes = [client.casefold() for client in remotes]
# Add remote desktop clients & VMs for no remapping
terminals.extend(remotes)
mscodes.extend(remotes)
# Use for browser specific hotkeys
browsers = ["Chromium","Chromium-browser","Google-chrome","microsoft-edge-dev","microsoft-edge","Epiphany","Firefox","Discord"]
browsers = [browser.casefold() for browser in browsers]
@@ -24,9 +37,6 @@ chromeStr = "|".join(str(x) for x in chromes)
# edges = [edge.casefold() for edge in edges]
# edgeStr = "|".join(str(x) for x in edges)
mscodes = ["code","vscodium"]
codeStr = "|".join(str(x) for x in mscodes)
define_multipurpose_modmap(
# {Key.ENTER: [Key.ENTER, Key.RIGHT_CTRL] # Enter2Cmd
# {Key.CAPSLOCK: [Key.ESC, Key.RIGHT_CTRL] # Caps2Esc
@@ -107,7 +117,7 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), {
})
# Keybindings for IntelliJ
define_keymap(re.compile("jetbrains-idea", re.IGNORECASE),{
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
@@ -209,6 +219,15 @@ 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
})
# Open preferences in browsers
@@ -220,7 +239,10 @@ define_keymap(re.compile(chromeStr, re.IGNORECASE),{
})
# Opera C-F12
define_keymap(None,{
# 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-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-LC-f"):K("M-F10"), # Default SL - Maximize app (gnome/kde)
@@ -232,7 +254,7 @@ define_keymap(None,{
K("RC-Tab"): K("M-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
K("RC-Grave"): K("M-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching
K("RC-Shift-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("Super-Right"):K("Super-Page_Up"), # SL - Change workspace (ubuntu/fedora)
# K("Super-Left"):K("Super-Page_Down"), # SL - Change workspace (ubuntu/fedora)
# K("Super-Right"):K("Super-C-Up"), # SL - Change workspace (popos)
@@ -259,6 +281,9 @@ define_keymap(None,{
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
# emacs style
K("Super-a"): K("Home"), # Beginning of Line
K("Super-e"): K("End"), # End of Line
@@ -454,9 +479,14 @@ 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 not-xfce4 - Cmd Tab - App Switching Default
# K("RC-Tab"): K("M-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
# K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
# Cmd Tab - App Switching Default
# K("RC-Tab"): K("RC-backslash"), # xfce4
# K("RC-Shift-Tab"): K("RC-Shift-backslash"), # xfce4
# K("RC-Grave"): K("RC-Shift-backslash"), # xfce4
# Converts Cmd to use Ctrl-Shift
K("RC-Tab"): K("RC-F13"),
K("RC-Shift-Tab"): K("RC-Shift-F13"),
K("RC-V"): K("C-Shift-V"),
K("RC-MINUS"): K("C-Shift-MINUS"),
K("RC-EQUAL"): K("C-Shift-EQUAL"),

0
linux/trayapps/appindicator/kintotray.py Normal file → Executable file
View File

0
linux/xkeysnail.desktop Normal file → Executable file
View File

0
linux/xkeysnail.service Normal file → Executable file
View File

View File

@@ -263,6 +263,10 @@ GroupAdd, intellij, ahk_exe idea64.exe
; Static
$LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up}
; Disable Win-Up/Down - interferes with Sublime text 3 multi-cursors
#Down::return
#Up::return
; temporary hack to ensure keys don't get stuck
; impacts Alt-Tab fix
; Primary
@@ -270,6 +274,17 @@ GroupAdd, intellij, ahk_exe idea64.exe
; $LWin up::Send {LWin up}{LAlt up}{LCtrl up} ; MacModifiers
; $LAlt up::Send {LWin up}{CapsLock up}{LAlt up}{LCtrl up} ; CB/IBM
!Enter::
{
if (GetKeyState("RAlt", "P")) {
Send {Insert}
}
else{
Send {Alt down}{Enter}{Alt up}
}
Return
}
; Remap Alt+Esc to Break/Pause
!Esc::SendInput, {Pause}

View File

@@ -470,8 +470,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
xhost +SI:localuser:root
git clone --depth 10 https://github.com/rbreaves/xkeysnail.git
cd xkeysnail
git pull --depth 10
git checkout 51c369084e0045a8410d227bab52411bf84fb65b
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"
@@ -479,7 +478,7 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
rm -rf ./xkeysnail
git clone --depth 10 https://github.com/rbreaves/xkeysnail.git
cd xkeysnail
git checkout 51c369084e0045a8410d227bab52411bf84fb65b
git checkout kinto
fi
sudo pip3 install --upgrade .
cd ..