Compare commits

..

5 Commits

Author SHA1 Message Date
Ben Reaves
8fdaaf592d Merge pull request #189 from rbreaves/dev
- Added support for Windows 10 Hosts w/ Kinto & running Linux VMs
2020-05-26 22:03:57 -07:00
Ben Reaves
e2a767fbec Merge pull request #188 from rbreaves/dev
- Added proper Ctrl/Alt + Backspace behavior for Linux remap. Closes #187
2020-05-23 16:06:40 -05:00
Ben Reaves
1d088b2e1d Typo correction 2020-05-20 01:29:14 -05:00
Ben Reaves
e63d8ee5b5 Merge pull request #184 from rbreaves/dev
- Adding basic hotkey functions for apps
2020-05-18 14:23:47 -05:00
Ben Reaves
42c04d062e Merge pull request #183 from rbreaves/dev
Extension of #182 merge and added mate support
2020-05-18 14:09:51 -05:00
7 changed files with 55 additions and 257 deletions

2
.gitignore vendored
View File

@@ -2,5 +2,3 @@
.DS_Store .DS_Store
__pycache__/ __pycache__/
xkeysnail/ xkeysnail/
keybindings_*
mutter_*

View File

@@ -48,7 +48,7 @@ Kinto works for standard Windows, Apple and Chromebook keyboards. The following
- Cursor/word-wise shortcut keys have been added to align with macOS keyboard shortcuts. - Cursor/word-wise shortcut keys have been added to align with macOS keyboard shortcuts.
Does Kinto have to have specific keyamps for individual apps? Does Kinto have to have specific keymaps for individual apps?
I'd say 90+% of the time no, but every OS has their default conventions that sometimes run afoul to macs. For this reason you can easily edit kinto.py or kinto.ahk to support the few shortcut keys Kinto may miss. If you do add additional support please consider forking this project and sharing your new keymaps with the rest of us! I'd say 90+% of the time no, but every OS has their default conventions that sometimes run afoul to macs. For this reason you can easily edit kinto.py or kinto.ahk to support the few shortcut keys Kinto may miss. If you do add additional support please consider forking this project and sharing your new keymaps with the rest of us!

View File

@@ -1,138 +0,0 @@
import wx
# import wx.richtext as rt
# import images
# http://www.ccp4.ac.uk/dist/checkout/wxPython-src-3.0.2.0/wxPython/demo/RichTextCtrl.py
# https://stackoverflow.com/questions/40257359/how-to-dynamically-update-multiple-wxpython-static-text
def GetRoundBitmap( w, h, r ):
maskColor = wx.Colour(0,0,0)
shownColor = wx.Colour(5,5,5)
b = wx.EmptyBitmap(w,h)
dc = wx.MemoryDC(b)
dc.SetBrush(wx.Brush(maskColor))
dc.DrawRectangle(0,0,w,h)
dc.SetBrush(wx.Brush(shownColor))
dc.SetPen(wx.Pen(shownColor))
dc.DrawRoundedRectangle(0,0,w,h,r)
dc.SelectObject(wx.NullBitmap)
b.SetMaskColour(maskColor)
return b
def GetRoundShape( w, h, r ):
return wx.Region( GetRoundBitmap(w,h,r) )
class PanelOne(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_KEY_UP, self.OnKeyDown)
wx.StaticText(self, label = "'^⌘G - Select All (Ctrl-Cmd-G) ^⌘G - Select All (Ctrl-Cmd-G)\n^⌘G - Select All (Ctrl-Cmd-G) ^⌘G - Select All (Ctrl-Cmd-G)")
self.SetTransparent( 220 )
def OnKeyDown(self, event):
self.Destroy()
class FancyFrame(wx.Frame):
def __init__(self):
sizer = wx.GridBagSizer()
style = ( wx.CLIP_CHILDREN | wx.STAY_ON_TOP | wx.FRAME_NO_TASKBAR |
wx.NO_BORDER | wx.FRAME_SHAPED )
wx.Frame.__init__(self, None, title='Fancy', style = style)
# self.rtc = rt.RichTextCtrl(self, style=wx.VSCROLL|wx.TE_READONLY|wx.HSCROLL|wx.NO_BORDER);
# self.rtc.Disable()
boldstatic = wx.Font(pointSize = 24, family = wx.DEFAULT,
style = wx.BOLD, weight = wx.BOLD,
faceName = 'Consolas')
normalstatic = wx.Font(pointSize = 10, family = wx.DEFAULT,
style = wx.NORMAL, weight = wx.NORMAL,
faceName = 'Consolas')
# font = wx.Font(pointSize = 18, family = wx.DEFAULT,
# style = wx.NORMAL, weight = wx.NORMAL,
# faceName = 'Consolas')
self.SetFont(boldstatic)
self.SetBackgroundColour((211,211,211))
self.label = wx.StaticText(self, label = "^⌘G", pos = (100,50))
self.SetFont(normalstatic)
self.label2 = wx.StaticText(self, label = " - Select All (Ctrl-Cmd-G)", pos = (200,50))
# sizer.Add(self.label, (4, 0), (1, 5), wx.EXPAND)
# sizer.Add(self.label2, (5, 0), (1, 5), wx.EXPAND)
# wx.StaticText(self, label = "^⌘G - Select All (Ctrl-Cmd-G) || ^⌘G - Select All (Ctrl-Cmd-G)\n^⌘G - Select All (Ctrl-Cmd-G) ^⌘G - Select All (Ctrl-Cmd-G)")
# self.rtc.Bind(wx.EVT_SET_FOCUS,self.OnInput)
# self.rtc.Bind(wx.EVT_KILL_FOCUS,self.OnInput)
# self.rtc.Bind(wx.EVT_KEY_UP, self.OnKeyDown)
# self.rtc.BeginFontSize(14)
# self.rtc.BeginBold()
# self.rtc.WriteText("^⌘G")
# self.rtc.EndBold()
# self.rtc.BeginFontSize(10)
# self.rtc.WriteText(" - Select All (Ctrl-Cmd-G)\n")
# self.rtc.BeginFontSize(14)
# self.rtc.WriteText("Different font sizes on the same line is allowed, too.")
# self.rtc.EndFontSize()
# self.rtc.WriteText(" Next we'll show an indented paragraph.")
# self.rtc.BeginLeftIndent(60)
# self.rtc.Newline()
# self.rtc.WriteText("It was in January, the most down-trodden month of an Edinburgh winter. An attractive woman came into the cafe, which is nothing remarkable.")
# self.rtc.EndLeftIndent()
# self.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.BOLD))
# font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
# wx.text.SetFont(font)
# self.panelOne = PanelOne(self)
# self.SetFocus()
w, h = wx.GetDisplaySize()
self.SetSize((w/2, h/2))
self.SetPosition( ((w-w/2)/2,(h-h/2)/2) )
self.SetTransparent( 220 )
self.Bind(wx.EVT_KEY_UP, self.OnKeyDown)
self.Bind(wx.EVT_MOTION, self.OnMouse)
self.Bind(wx.EVT_PAINT, self.OnPaint)
if wx.Platform == '__WXGTK__':
self.Bind(wx.EVT_WINDOW_CREATE, self.SetRoundShape)
else:
self.SetRoundShape()
self.SetSizer(sizer)
self.Show(True)
def OnInput(self, e):
self.Destroy()
# e.Skip()
def SetRoundShape(self, event=None):
w, h = self.GetSizeTuple()
self.SetShape(GetRoundShape( w,h, 10 ) )
def OnPaint(self, event):
dc = wx.PaintDC(self)
dc = wx.GCDC(dc)
w, h = self.GetSizeTuple()
r = 10
dc.SetPen( wx.Pen("#D3D3D3dth = 2"))
dc.SetBrush( wx.Brush("#D3D3D3"))
dc.DrawRoundedRectangle( 0,0,w,h,r )
def OnKeyDown(self, event):
# self.Close(force=True)
self.Destroy()
def OnMouse(self, event):
"""implement dragging"""
if not event.Dragging():
self._dragPos = None
return
self.CaptureMouse()
if not self._dragPos:
self._dragPos = event.GetPosition()
else:
pos = event.GetPosition()
displacement = self._dragPos - pos
self.SetPosition( self.GetPosition() - displacement )
app = wx.App()
f = FancyFrame()
app.MainLoop()

View File

@@ -68,8 +68,6 @@ if len(check_x11) == 0:
distro = cmdline("awk -F= '$1==\"NAME\" { print $2 ;}' /etc/os-release").replace('"','').strip().split(" ")[0] distro = cmdline("awk -F= '$1==\"NAME\" { print $2 ;}' /etc/os-release").replace('"','').strip().split(" ")[0]
dename = cmdline("./system-config/dename.sh").replace('"','').strip().split(" ")[0].lower() dename = cmdline("./system-config/dename.sh").replace('"','').strip().split(" ")[0].lower()
run_pkg = ""
def requirements(pkgm): def requirements(pkgm):
print(bcolors.CYELLOW2 + "You need to install some packages, " +run_pkg+ ", for Kinto to fully remap browsers during input focus.\n" + bcolors.ENDC) print(bcolors.CYELLOW2 + "You need to install some packages, " +run_pkg+ ", for Kinto to fully remap browsers during input focus.\n" + bcolors.ENDC)
print("sudo " + pkgm + " " + run_pkg + "\n") print("sudo " + pkgm + " " + run_pkg + "\n")
@@ -323,7 +321,7 @@ def kintoImpOne():
runpkg = 0 runpkg = 0
global run_pkg run_pkg = ""
if len(check_xbind) > 0 and len(check_xdotool) > 0 and len(check_ibus) > 0: if len(check_xbind) > 0 and len(check_xdotool) > 0 and len(check_ibus) > 0:
print("Xbindkeys, xdotool and IBus requirement is installed.") print("Xbindkeys, xdotool and IBus requirement is installed.")
@@ -339,7 +337,6 @@ def kintoImpOne():
runpkg = 1 runpkg = 1
if runpkg != 0: if runpkg != 0:
print(runpkg)
requirements(pkgm) requirements(pkgm)
if not os.path.exists(homedir + '/.config/ibus/bus') and cmdline("ls ~/.config/ibus/bus -1rt") == "": if not os.path.exists(homedir + '/.config/ibus/bus') and cmdline("ls ~/.config/ibus/bus -1rt") == "":

View File

@@ -12,9 +12,7 @@ GroupAdd, terminals, Fluent Terminal ahk_class ApplicationFrameWindow
GroupAdd, posix, ahk_exe ubuntu.exe GroupAdd, posix, ahk_exe ubuntu.exe
GroupAdd, posix, ahk_exe ConEmu.exe GroupAdd, posix, ahk_exe ConEmu.exe
GroupAdd, posix, ahk_exe ConEmu64.exe GroupAdd, posix, ahk_exe ConEmu64.exe
GroupAdd, posix, ahk_exe Hyper.exe
GroupAdd, posix, ahk_exe mintty.exe GroupAdd, posix, ahk_exe mintty.exe
GroupAdd, posix, Fluent Terminal ahk_class ApplicationFrameWindow
GroupAdd, ConEmu, ahk_exe ConEmu.exe GroupAdd, ConEmu, ahk_exe ConEmu.exe
GroupAdd, ConEmu, ahk_exe ConEmu64.exe GroupAdd, ConEmu, ahk_exe ConEmu64.exe
@@ -27,34 +25,6 @@ GroupAdd, editors, ahk_exe Code.exe
GroupAdd, vscode, ahk_exe VSCodium.exe GroupAdd, vscode, ahk_exe VSCodium.exe
GroupAdd, vscode, ahk_exe Code.exe GroupAdd, vscode, ahk_exe Code.exe
; Close Apps
^q::Send !{F4}
; Emoji Panel
#^Space::Send {LWin down};{LWin up}
; Full Screenshot
^+3::Send {PrintScreen}
; Region Screenshot
^+4::Send #+{S}
; wordwise support
$^Left::Send {Home}
$^+Left::Send +{Home}
$^Right::Send {End}
$^+Right::Send +{End}
^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}
; Cmd+Space Alternative ; Cmd+Space Alternative
LWin & vk07::return LWin & vk07::return
LWin::return LWin::return
@@ -86,15 +56,40 @@ if(!GetKeyState("LWin", "P"))
} }
return return
; Sublime Text Remaps for VS Code ; Close Apps
#IfWinActive ahk_group vscode ; ST2CODE ^q::Send !{F4}
; Remap Ctrl+Shift to behave like macOS Sublimetext
; Will extend cursor to multiple lines ; Full Screenshot
#+Up::send ^!{Up} ; ST2CODE ^+3::Send {PrintScreen}
#+Down::send ^!{Down} ; ST2CODE
; Remap Ctrl+Cmd+G to select all matches ; Region Screenshot
#^g::send ^+{L} ; ST2CODE ^+4::Send #+{S}
#If ; ST2CODE
; wordwise support
$^Left::Send {Home}
$^+Left::Send +{Home}
$^Right::Send {End}
$^+Right::Send +{End}
^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}
; ; Sublime Text Remaps for VS Code ; ST2CODE
; #IfWinActive ahk_group vscode ; ST2CODE
; ; Remap Ctrl+Shift to behave like macOS Sublimetext ; ST2CODE
; ; Will extend cursor to multiple lines ; ST2CODE
; #+Up::send ^!{Up} ; ST2CODE
; #+Down::send ^!{Down} ; ST2CODE
; ; Remap Ctrl+Cmd+G to select all matches ; ST2CODE
; #^g::send ^+{L} ; ST2CODE
; #If ; ST2CODE
#IfWinActive ahk_exe sublime_text.exe #IfWinActive ahk_exe sublime_text.exe
; Remap Ctrl+Shift to behave like macOS Sublimetext ; Remap Ctrl+Shift to behave like macOS Sublimetext
@@ -106,41 +101,22 @@ return
#^g::send !{F3} #^g::send !{F3}
#If #If
; Not sure why this fix is needed
#IfWinActive ahk_exe Firefox.exe
^v::send ^v
#If
#IfWinActive ahk_group terminals #IfWinActive ahk_group terminals
; Copy ; Copy
^c::Send {LCtrl down}{LShift down}c{LCtrl Up}{LShift Up} ^c::Send {LCtrl down}{LShift down}c{LCtrl Up}{LShift Up}
#c::Send {LCtrl down}c{LCtrl Up} #c::Send {LCtrl down}c{LCtrl Up}
; Paste #IfWinNotActive ahk_group ConEmu
$^v:: ; Paste
If not WinActive("ahk_group ConEmu") && not WinActive("ahk_exe cmd.exe"){ ^v::Send {LCtrl down}{LShift down}v{LCtrl Up}{LShift Up}
Send {LCtrl down}{LShift down}v{LCtrl Up}{LShift Up} #If
}
else{
Send ^v
}
return
#If #If
#IfWinActive ahk_group posix #IfWinActive ahk_group posix
; Open/Close Tab for those that support it
$^t::
If not WinActive("ahk_group ConEmu"){
Send {LCtrl down}{LShift down}t{LCtrl Up}{LShift Up}
}
else{
Send ^t
}
return
$^w::
If not WinActive("ahk_group ConEmu"){
Send {LCtrl down}{LShift down}w{LCtrl Up}{LShift Up}
}
else{
Send ^w
}
return
; End of Line ; End of Line
#e::Send {LCtrl down}e{LCtrl Up} #e::Send {LCtrl down}e{LCtrl Up}
^e::return ^e::return
@@ -165,11 +141,11 @@ return
#z::Send {LCtrl down}z{LCtrl Up} #z::Send {LCtrl down}z{LCtrl Up}
#If #If
; #IfWinActive ahk_group ConEmu #IfWinActive ahk_group ConEmu
; ; Paste ; Paste
; $^v::Send {Shift down}{Insert}{Shift Up} $^v::Send {Shift down}{Insert}{Shift Up}
; #v::Send {LCtrl down}v{LCtrl Up} #v::Send {LCtrl down}v{LCtrl Up}
; #If #If
#IfWinActive ahk_exe mintty.exe #IfWinActive ahk_exe mintty.exe
; Copy ; Copy

View File

@@ -30,7 +30,6 @@ define_conditional_modmap(lambda wm_class: wm_class.casefold() not in terminals,
# Key.RIGHT_CTRL: Key.RIGHT_META, # WinMac # Key.RIGHT_CTRL: Key.RIGHT_META, # WinMac
# # KintoWin # # KintoWin
# Key.LEFT_CTRL: Key.RIGHT_CTRL, # KintoWin
# # Mac Only # # Mac Only
# Key.LEFT_META: Key.RIGHT_CTRL, # Mac # Key.LEFT_META: Key.RIGHT_CTRL, # Mac
@@ -45,7 +44,7 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), {
# Key.LEFT_ALT: Key.RIGHT_CTRL, # Chromebook # Key.LEFT_ALT: Key.RIGHT_CTRL, # Chromebook
# # Left Ctrl Stays Left Ctrl # # Left Ctrl Stays Left Ctrl
# Key.LEFT_META: Key.LEFT_ALT, # Chromebook # Key.LEFT_META: Key.LEFT_ALT, # Chromebook
# Key.RIGHT_ALT: Key.RIGHT_CTRL, # Chromebook - Multi-language (Remove) # Key.RIGHT_ALT: Key.RIGHT_CTRL, # Chromebook
# Key.RIGHT_CTRL: Key.RIGHT_ALT, # Chromebook # Key.RIGHT_CTRL: Key.RIGHT_ALT, # Chromebook
# # Right Meta does not exist on chromebooks # # Right Meta does not exist on chromebooks
@@ -53,7 +52,7 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), {
# Key.LEFT_ALT: Key.RIGHT_CTRL, # WinMac # Key.LEFT_ALT: Key.RIGHT_CTRL, # WinMac
# Key.LEFT_META: Key.LEFT_ALT, # WinMac # Key.LEFT_META: Key.LEFT_ALT, # WinMac
# Key.LEFT_CTRL: Key.LEFT_CTRL, # WinMac # Key.LEFT_CTRL: Key.LEFT_CTRL, # WinMac
# Key.RIGHT_ALT: Key.RIGHT_CTRL, # WinMac - Multi-language (Remove) # Key.RIGHT_ALT: Key.RIGHT_CTRL, # WinMac
# Key.RIGHT_META: Key.RIGHT_ALT, # WinMac # Key.RIGHT_META: Key.RIGHT_ALT, # WinMac
# Key.RIGHT_CTRL: Key.LEFT_CTRL, # WinMac # Key.RIGHT_CTRL: Key.LEFT_CTRL, # WinMac
@@ -167,10 +166,10 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{
K("C-g"): K("f3"), # find_next K("C-g"): K("f3"), # find_next
K("Shift-f3"): pass_through_key, # cancel find_prev K("Shift-f3"): pass_through_key, # cancel find_prev
K("C-Shift-g"): K("Shift-f3"), # find_prev K("C-Shift-g"): K("Shift-f3"), # find_prev
# K("Super-C-g"): K("C-f2"), # Default - Sublime - find_all_under K("Super-C-g"): K("C-f2"), # Default - Sublime - find_all_under
# K("C-M-g"): K("C-f2"), # Chromebook - Sublime - find_all_under # K("C-M-g"): K("C-f2"), # Chromebook - Sublime - find_all_under
# K("Super-Shift-up"): K("M-Shift-up"), # multi-cursor up - Sublime K("Super-Shift-up"): K("M-Shift-up"), # multi-cursor up
# K("Super-Shift-down"): K("M-Shift-down"), # multi-cursor down - Sublime K("Super-Shift-down"): K("M-Shift-down"), # multi-cursor down
# K(""): pass_through_key, # cancel # K(""): pass_through_key, # cancel
# K(""): K(""), # # K(""): K(""), #
}, "Code") }, "Code")

View File

@@ -148,26 +148,7 @@ if [ $# -eq 0 ]; then
set "$n" set "$n"
fi fi
# multi-language
rightalt=false
# VS code remap
vssublime=false
if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "kintowin" || $1 == "winmac" || $1 == "mac" || $1 == "chromebook" ]]; then if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "kintowin" || $1 == "winmac" || $1 == "mac" || $1 == "chromebook" ]]; then
while true; do
read -rep $'\nDo you want multi-language support (the right Alt key will not remap)? (y/N)\n' yn
case $yn in
[Yy]* ) rightalt=true; break;;
* ) break;;
esac
done
while true; do
read -rep $'\nWould you like to give VS Code Sublime Text keymaps? (y/N)\n' yn
case $yn in
[Yy]* ) vssublime=true; break;;
* ) break;;
esac
done
branch=$(git rev-parse --abbrev-ref HEAD) branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" == "dev" ] || [ "$branch" == "alpha" ];then if [ "$branch" == "dev" ] || [ "$branch" == "alpha" ];then
while true; do while true; do
@@ -247,10 +228,6 @@ if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "kintowin" || $1
sed -i "s/{username}/`whoami`/g" ~/.config/kinto/prexk.sh sed -i "s/{username}/`whoami`/g" ~/.config/kinto/prexk.sh
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ./xkeysnail-config/xkeysnail.service.new sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ./xkeysnail-config/xkeysnail.service.new
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/kinto/prexk.sh sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/kinto/prexk.sh
if $vssublime ; then
perl -pi -e "s/(# )(.*)(- Sublime)/\$2\$3/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1
fi
fi fi
if [[ $1 == "1" || $1 == "winmac" ]]; then if [[ $1 == "1" || $1 == "winmac" ]]; then
@@ -274,10 +251,6 @@ elif [[ $1 == "4" || $1 == "kintowin" ]]; then
perl -pi -e "s/(# )(.*)(# KintoWin)/\$2\$3/g" ./xkeysnail-config/kinto.py.new perl -pi -e "s/(# )(.*)(# KintoWin)/\$2\$3/g" ./xkeysnail-config/kinto.py.new
fi fi
if $rightalt ; then
perl -pi -e "s/(\w.*)(Multi-language)/# \$1\$2/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1
fi
if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "kintowin" || $1 == "winmac" || $1 == "mac" || $1 == "chromebook" ]]; then if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "kintowin" || $1 == "winmac" || $1 == "mac" || $1 == "chromebook" ]]; then
mv ./xkeysnail-config/kinto.py.new ~/.config/kinto/kinto.py mv ./xkeysnail-config/kinto.py.new ~/.config/kinto/kinto.py
# if [ "$distro" == "fedora" ];then # if [ "$distro" == "fedora" ];then
@@ -349,13 +322,6 @@ if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "kintowin" || $1
echo "You can run 'sudo systemctl status xkeysnail' for more info" echo "You can run 'sudo systemctl status xkeysnail' for more info"
echo "You can also run 'sudo journalctl -u xkeysnail'" echo "You can also run 'sudo journalctl -u xkeysnail'"
fi fi
echo ""
if $vssublime ; then
echo -e "\e[1m\e[32mEnabled\e[0m VS Code Sublime Text remap."
fi
if $rightalt ; then
echo -e "\e[1m\e[32mEnabled\e[0m mutli-language support."
fi
elif [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then elif [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
echo "Uninstalling Kinto - xkeysnail (udev)" echo "Uninstalling Kinto - xkeysnail (udev)"
uninstall uninstall