mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-04 10:06:41 +02:00
Compare commits
9 Commits
debug
...
feature/Br
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9562a25ebb | ||
![]() |
b7f4c6c54d | ||
![]() |
c0bc49b150 | ||
![]() |
bcea1e682a | ||
![]() |
78e480c5ad | ||
![]() |
37c7949fb4 | ||
![]() |
ef99b6548c | ||
![]() |
7647cebf22 | ||
![]() |
1a836d20d5 |
60
README.md
60
README.md
@@ -110,56 +110,17 @@ Select Uninstall
|
||||
|
||||
## How to use in Remote Desktop Solutions
|
||||
|
||||
RDP fully works as long as the entire keyboard input is being captured. RDP had been working for awhile with Windows but as of 2/14/2021 Linux is now supported and potentially macOS as well. VNC & other protocols may work, but is likely most dependent on how the keyboard input is captured on the computer running the client.
|
||||
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.
|
||||
|
||||
|Program|Src/Remote Client ⇒|Dst/Remote Server|Works? |Notes|
|
||||
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.
|
||||
|
||||
|Program|Host OS|Client OS|Works? |Notes|
|
||||
|---|---|---|---|---|
|
||||
|Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| |
|
||||
|Remmina| 🐧Linux⇒| ❖Windows | ✅ Yes|Use hover menu to enable "Grab all keyboard events"|
|
||||
|FreeRDP| 🐧Linux⇒| ❖Windows | ✅ Yes | |
|
||||
|FreeRDP| 🍎macOS⇒| ❖Windows | ✅ Yes| [FreeRDP for macOS](#FreeRDP-for-macOS)|
|
||||
|Jump Desktop (RDP)| 🍎macOS ⇒| ❖Windows | ✅ Yes|Preferences -> Keyboard -> Disable "Key Conversions", Enabled "Send macOS Shortcuts" under Keyboard shortcuts|
|
||||
|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|
|
||||
|
||||
## FreeRDP for macOS
|
||||
|
||||
1. Install [brew.sh](https://brew.sh).
|
||||
|
||||
```/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"```
|
||||
|
||||
2. Install XQuartz (x11/xorg)
|
||||
|
||||
```brew install --cask xquartz```
|
||||
|
||||
3. log off and back on.
|
||||
4. Install FreeRDP
|
||||
|
||||
```brew install freerdp```
|
||||
|
||||
5. Disable [NLA](https://kb.parallels.com/en/123661), if it is enabled on the destination.
|
||||
6. Run command to access machine
|
||||
Note: 192.168.x.x = Your IP.
|
||||
|
||||
```xfreerdp /u:your_username /v:192.168.x.x /cert-ignore /auto-reconnect-max-retries:0 /f +clipboard -decorations```
|
||||
|
||||
7. Click on XQuartz -> Preferences and set these checkmarks so that fullscreen can work, may need to quit it and re-run the xfreerdp command from step 6.
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/10969616/108144025-68bfcf80-708e-11eb-96cc-2930b7b1694a.png" width="50%">
|
||||
|
||||
More info here
|
||||
https://medium.com/idomongodb/macos-rdp-to-a-windows-machine-1e0f52f777b
|
||||
|
||||
## Jump Desktop for macOS
|
||||
|
||||
Screenshots of how to configure Jump Desktop for macOS users accessing a Windows PC with Kinto installed. I apologize that it is not a free RDP client - BUT it does work, and at $15 it is reasonable if you plan to use it frequently.
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/10969616/107990246-a2fb7500-6f99-11eb-8c19-0a9b538b996f.png" width="25%">
|
||||
<img src="https://user-images.githubusercontent.com/10969616/107990265-a8f15600-6f99-11eb-9922-bbcfa0b92031.png" width="50%">
|
||||
<img src="https://user-images.githubusercontent.com/10969616/107990256-a68efc00-6f99-11eb-9f31-575ed6016944.png" width="50%">
|
||||
|
||||
|mstsc.exe (rdp)| Windows | Windows | Yes| |
|
||||
|Official MS RDP| macOS | Windows | No|Use Windows in VM & RDP from it|
|
||||
|FreeRDP| macOS | Windows | No|Use Windows in VM & RDP from it|
|
||||
|FreeRDP| Linux | Windows | No|Use Windows in VM & RDP from it|
|
||||
|Official MS RDP| iOS/Android | Windows | No|No workaround atm|
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -424,9 +385,6 @@ I'd appreciate any help from people with non-US based keyboards, to help ensure
|
||||
|
||||
Yet another keyboard remapping tool for X environment
|
||||
|
||||
[libinput-gestures](https://github.com/bulletmark/libinput-gestures)
|
||||
Three finger gesture or other type of gestures for desktop switching or other features within a Linux distro. More info here for quickly setting it up. Make sure you logoff after setting your user to access input. https://www.reddit.com/r/GalliumOS/comments/5lgrxe/psa_multitouch_gestures_on_galliumos/
|
||||
|
||||
[Interception](https://gitlab.com/interception/linux/tools)
|
||||
|
||||
Another low level key remapper, not as easily configurable as Xkeysnail, but does not rely on X11.
|
||||
|
11
linux/.xbindkeysrc
Executable file
11
linux/.xbindkeysrc
Executable file
@@ -0,0 +1,11 @@
|
||||
"~/.config/kinto/browsers.sh Left"
|
||||
m:0x8 + c:192
|
||||
Alt + XF86Launch5
|
||||
|
||||
"~/.config/kinto/browsers.sh Right"
|
||||
m:0x8 + c:193
|
||||
Alt + XF86Launch6
|
||||
|
||||
"~/.config/kinto/browsers.sh Undo"
|
||||
m:0x8 + c:194
|
||||
Alt + XF86Launch7
|
75
linux/browsers.sh
Executable file
75
linux/browsers.sh
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
action=$1
|
||||
|
||||
saveClipboard=$(xclip -selection clipboard -o)
|
||||
echo "" | xclip -i -selection clipboard
|
||||
|
||||
if [ "$action" == "Left" ] || [ "$action" == "Undo" ];then
|
||||
xdotool getactivewindow key --delay 40 --clearmodifiers Shift+Home ctrl+c Home
|
||||
firstClipboard=$(xclip -selection clipboard -o)
|
||||
if [ "$firstClipboard" == "" ];then
|
||||
xdotool getactivewindow key --delay 40 --clearmodifiers Shift+Right ctrl+c Home
|
||||
firstClipboard=$(xclip -selection clipboard -o)
|
||||
if [ "$firstClipboard" == "" ];then
|
||||
xdotool getactivewindow key --delay 24 --clearmodifiers bar Shift+Left ctrl+x
|
||||
firstClipboard=$(xclip -selection clipboard -o)
|
||||
fi
|
||||
fi
|
||||
echo "" | xclip -i -selection clipboard
|
||||
xdotool getactivewindow key --clearmodifiers Shift+Right ctrl+c Home
|
||||
if [ "${firstClipboard:0:1}" == "$(xclip -selection clipboard -o)" ];then
|
||||
echo "" | xclip -i -selection clipboard
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ "$action" == "Right" ];then
|
||||
xdotool getactivewindow key --delay 40 --clearmodifiers Shift+End ctrl+c
|
||||
firstClipboard=$(xclip -selection clipboard -o | tr -d /)
|
||||
if [ "$firstClipboard" == "" ];then
|
||||
xdotool getactivewindow key --delay 40 --clearmodifiers Left Shift+Right ctrl+c
|
||||
firstClipboard=$(xclip -selection clipboard -o | tr -d /)
|
||||
if [ "$firstClipboard" == "" ];then
|
||||
xdotool getactivewindow key --delay 24 --clearmodifiers bar Shift+Left ctrl+x
|
||||
firstClipboard=$(xclip -selection clipboard -o | tr -d /)
|
||||
fi
|
||||
fi
|
||||
if [ "$firstClipboard" != "" ];then
|
||||
xdotool getactivewindow key --clearmodifiers Right
|
||||
fi
|
||||
echo "" | xclip -i -selection clipboard
|
||||
xdotool getactivewindow key --clearmodifiers Shift+Left ctrl+c
|
||||
if [ "${firstClipboard: -1}" == "$(xclip -selection clipboard -o)" ];then
|
||||
echo "" | xclip -i -selection clipboard
|
||||
xdotool getactivewindow key --clearmodifiers Right
|
||||
fi
|
||||
fi
|
||||
|
||||
newClipboard=$(xclip -selection clipboard -o)
|
||||
|
||||
# echo ${#firstClipboard}
|
||||
# echo "$firstClipboard""-"
|
||||
# echo "first"
|
||||
# echo ${#newClipboard}
|
||||
# echo "$newClipboard""-"
|
||||
# echo "hello"
|
||||
|
||||
|
||||
if [ "$action" == "Left" ] && ([ "$firstClipboard" == "" ] || [ "$newClipboard" != "" ]);then
|
||||
xdotool getactivewindow key --clearmodifiers alt+Left
|
||||
fi
|
||||
|
||||
if [ "$action" == "Right" ] && ([ "$firstClipboard" == "" ] || [ "$newClipboard" != "" ]);then
|
||||
xdotool getactivewindow key --clearmodifiers alt+Right
|
||||
elif [ "$action" == "Right" ];then
|
||||
xdotool getactivewindow key --clearmodifiers End
|
||||
fi
|
||||
|
||||
if [ "$action" == "Undo" ] && ([ "$firstClipboard" != "" ] && [ "$newClipboard" == "" ]);then
|
||||
xdotool getactivewindow key --delay 24 --clearmodifiers ctrl+z
|
||||
elif [ "$action" == "Undo" ];then
|
||||
xdotool getactivewindow key ctrl+Shift+t
|
||||
fi
|
||||
|
||||
echo $saveClipboard | xclip -i -selection clipboard
|
@@ -11,19 +11,6 @@ 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]
|
||||
@@ -37,6 +24,9 @@ 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
|
||||
@@ -204,7 +194,7 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
|
||||
# VCS/Local History
|
||||
K("Super-v"): K("M-Grave"), # VCS quick popup
|
||||
K("Super-c"): K("LC-c"), # Sigints - interrupt
|
||||
},"JetBrains Products")
|
||||
})
|
||||
|
||||
# Keybindings for Nautilus
|
||||
define_keymap(re.compile("org.gnome.nautilus", re.IGNORECASE),{
|
||||
@@ -212,13 +202,16 @@ define_keymap(re.compile("org.gnome.nautilus", re.IGNORECASE),{
|
||||
K("RC-Down"): K("M-Down"), # Go Down dir
|
||||
K("RC-Left"): K("M-Left"), # Go Back
|
||||
K("RC-Right"): K("M-Right"), # Go Forward
|
||||
},"Nautilus")
|
||||
})
|
||||
|
||||
# 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-Left"): K("M-F14"), # Back
|
||||
K("RC-Right"): K("M-F15"), # Forward
|
||||
K("RC-Z"): K("M-F16"), # Undo Text/Closed Tab
|
||||
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"),
|
||||
@@ -228,21 +221,18 @@ define_keymap(re.compile(browserStr, re.IGNORECASE),{
|
||||
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
|
||||
},"General Web Browsers")
|
||||
})
|
||||
|
||||
# Open preferences in browsers
|
||||
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")],
|
||||
},"Firefox")
|
||||
})
|
||||
define_keymap(re.compile(chromeStr, re.IGNORECASE),{
|
||||
K("C-comma"): [K("M-e"), K("s"),K("Enter")],
|
||||
},"Chrome Based Web Browsers")
|
||||
})
|
||||
# Opera C-F12
|
||||
|
||||
# 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,{
|
||||
define_keymap(None,{
|
||||
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)
|
||||
@@ -314,7 +304,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
|
||||
K("Alt-Delete"): K("C-Delete"), # Default not-chromebook - Delete Right Word of Cursor
|
||||
# K(""): pass_through_key, # cancel
|
||||
# K(""): K(""), #
|
||||
},"General GUI Apps")
|
||||
})
|
||||
|
||||
define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{
|
||||
# Wordwise remaining - for Everything but VS Code
|
||||
@@ -337,7 +327,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{
|
||||
# https://superuser.com/questions/770301/pentadactyl-how-to-disable-menu-bar-toggle-by-alt
|
||||
# **
|
||||
#
|
||||
}, "wordwise for GUI apps")
|
||||
})
|
||||
|
||||
# Keybindings for VS Code
|
||||
define_keymap(re.compile(codeStr, re.IGNORECASE),{
|
||||
|
@@ -260,8 +260,8 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; $LCtrl::LWin ; MacModifiers
|
||||
|
||||
; Hack to disable start menu on winkey
|
||||
; Static - Does not apply to IBM or Chromebooks
|
||||
; $LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up} ; Default
|
||||
; Static
|
||||
$LCtrl up::Send {Ctrl down}{LWin up}{Ctrl up}
|
||||
|
||||
; Disable Win-Up/Down - interferes with Sublime text 3 multi-cursors
|
||||
#Down::return
|
||||
@@ -343,9 +343,29 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
^+4::Send #+{S}
|
||||
|
||||
; wordwise support
|
||||
$^Left::Send {Home}
|
||||
#if !winactive("ahk_group browsers")
|
||||
$^Left::Send {Home}
|
||||
$^Right::Send {End}
|
||||
#if
|
||||
#if winactive("ahk_group browsers")
|
||||
$^Left::
|
||||
if(blinking()){
|
||||
Send, {Home}
|
||||
}
|
||||
else{
|
||||
Send, !{Left}
|
||||
}
|
||||
Return
|
||||
$^Right::
|
||||
if(blinking()){
|
||||
Send, {End}
|
||||
}
|
||||
else{
|
||||
Send, !{Right}
|
||||
}
|
||||
Return
|
||||
#if
|
||||
$^+Left::Send +{Home}
|
||||
$^Right::Send {End}
|
||||
$^+Right::Send +{End}
|
||||
^Up::Send ^{Home}
|
||||
^+Up::Send ^+{Home}
|
||||
@@ -469,9 +489,18 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; Dev Tools
|
||||
!^i::send {Ctrl Down}{Shift Down}i{Shift Up}{Ctrl Up}
|
||||
!^j::send {Ctrl Down}{Shift Down}j{Shift Up}{Ctrl Up}
|
||||
; Reopen closed tab or Undo text field
|
||||
$^z::
|
||||
if(blinking()){
|
||||
Send ^z
|
||||
}
|
||||
else{
|
||||
Send ^+t
|
||||
}
|
||||
Return
|
||||
; Open preferences
|
||||
#IfWinActive ahk_exe firefox.exe
|
||||
^,::send, {Ctrl Down}t{Ctrl Up}about:preferences{Enter}
|
||||
^,::send {Ctrl Down}t{Ctrl Up}about:preferences{Enter}
|
||||
#If
|
||||
#IfWinActive ahk_exe chrome.exe
|
||||
^,::send {Alt Down}e{Alt Up}s{Enter}
|
||||
@@ -524,8 +553,8 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
^!Down::send ^{Down} ; scroll_lines down
|
||||
; #+Up::send {shift up}^!{Up} ; Default - multi-cursor up
|
||||
; #+Down::send {shift up}^!{Down} ; Default - multi-cursor down
|
||||
; !+Up::send {shift up}^!{Up} ; CB/IBM - multi-cursor up
|
||||
; !+Down::send {shift up}^!{Down} ; CB/IBM - multi-cursor down
|
||||
; #+Up::send {shift up}^!{Up} ; CB/IBM - multi-cursor up
|
||||
; #+Down::send {shift up}^!{Down} ; CB/IBM - multi-cursor down
|
||||
^PgDn::Return ; cancel next_view
|
||||
^PgUp::Return ; cancel prev_view
|
||||
^+{::send ^{PgDn} ; next_view
|
||||
@@ -759,4 +788,22 @@ Send {RWin up}
|
||||
Send {LWin up}
|
||||
Send {RShift up}
|
||||
Send {LShift up}
|
||||
return
|
||||
return
|
||||
|
||||
blinking(){
|
||||
ClipSaved := ClipboardAll
|
||||
clipboard := ""
|
||||
status := False
|
||||
Send, {Left}{Left}{Right}
|
||||
Send, +{Right}
|
||||
Send, ^c
|
||||
Send, {Left}
|
||||
ClipWait, 0.2
|
||||
if(clipboard != "" ){
|
||||
status := True
|
||||
}
|
||||
Sleep, 100
|
||||
clipboard := ClipSaved
|
||||
ClipSaved := ""
|
||||
return status
|
||||
}
|
@@ -470,7 +470,16 @@ 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 checkout debug
|
||||
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
|
||||
cd xkeysnail
|
||||
git checkout kinto
|
||||
fi
|
||||
sudo pip3 install --upgrade .
|
||||
cd ..
|
||||
which xkeysnail
|
||||
|
Reference in New Issue
Block a user