mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-06 10:58:26 +02:00
124 lines
3.4 KiB
Bash
Executable File
124 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
class_name='konsole'
|
|
|
|
internalkb=$1
|
|
internalid=$2
|
|
usbkb=$3
|
|
usbid=$4
|
|
swapbehavior=$5
|
|
|
|
# echo $1 $2 $3 $4
|
|
|
|
internalgui="setxkbmap -device $internalid -option "
|
|
internalterm="$internalgui"
|
|
usbgui="setxkbmap -device $usbid -option "
|
|
usbterm="$usbgui"
|
|
|
|
if [[ $internalkb == "windows" ]]; then
|
|
internalgui+="altwin:ctrl_alt_win"
|
|
internalterm+="altwin:swap_alt_win"
|
|
internalgrep_term="-q ctrl_alt_win"
|
|
internalgrep_gui="-v ctrl_alt_win\ 1>/dev/null"
|
|
elif [[ $internalkb == "chromebook" ]]; then
|
|
internalgui="xkbcomp -w0 -I$HOME/.xkb -i $internalid ~/.xkb/keymap/kbd.gui $DISPLAY"
|
|
internalterm+="altwin:swap_lalt_lwin"
|
|
# internalgrep_term="-vq swap_lalt_lwin"
|
|
internalgrep_term="-q swap_lalt_lwin"
|
|
internalgrep_gui="-v swap_lalt_lwin 1>/dev/null"
|
|
elif [[ $internalkb == "mac" ]]; then
|
|
internalgui+="ctrl:swap_lwin_lctl"
|
|
#mac term is blank
|
|
internalterm=""
|
|
internalgrep_term="-q swap_lwin_lctl"
|
|
internalgrep_gui="-v swap_lwin_lctl 1>/dev/null"
|
|
fi
|
|
|
|
if [[ $usbkb == "windows" ]]; then
|
|
usbgui+="altwin:ctrl_alt_win"
|
|
usbterm+="altwin:swap_alt_win"
|
|
usbgrep_term="-q ctrl_alt_win"
|
|
usbgrep_gui="-v ctrl_alt_win 1>/dev/null"
|
|
elif [[ $usbkb == "chromebook" ]]; then
|
|
usbgui="xkbcomp -w0 -I$HOME/.xkb -i $usbid ~/.xkb/keymap/kbd.gui $DISPLAY"
|
|
usbterm+="altwin:swap_lalt_lwin"
|
|
usbgrep_term="-q swap_lalt_lwin"
|
|
usbgrep_gui="-v swap_lalt_lwin 1>/dev/null"
|
|
elif [[ $usbkb == "mac" ]]; then
|
|
usbgui+="ctrl:swap_lwin_lctl"
|
|
#mac term is blank
|
|
usbterm=""
|
|
usbgrep_term="-q swap_lwin_lctl"
|
|
usbgrep_gui="-v swap_lwin_lctl 1>/dev/null"
|
|
fi
|
|
|
|
# echo "$internalgui"
|
|
# echo "$internalterm"
|
|
|
|
# echo "$usbgui"
|
|
# echo "$usbterm"
|
|
|
|
# exit
|
|
|
|
# regex for extracting hex id's
|
|
grep_id='0[xX][a-zA-Z0-9]\{7\}'
|
|
|
|
#Storing timestamp and will use timediff to prevent xprop duplicates
|
|
timestp=$(date +%s)
|
|
|
|
xprop -spy -root _NET_ACTIVE_WINDOW | grep --line-buffered -o $grep_id |
|
|
while read -r id; do
|
|
class="`xprop -id $id WM_CLASS | grep $class_name`"
|
|
newtime=$(date +%s)
|
|
timediff=$((newtime-timestp))
|
|
if [ $timediff -gt 0 ]; then
|
|
if [ -n "$class" ]; then
|
|
# Set keymap for terminal, Alt is Super, Ctrl is Ctrl, Super is Alt
|
|
if [[ $internalid -gt 0 ]]; then
|
|
echo "internal gui to term"
|
|
echo "$internalgrep_gui"
|
|
eval "setxkbmap -query | grep $internalgrep_gui"
|
|
if [ $? -eq 0 ]; then
|
|
echo "* inside internal gui to term"
|
|
echo "* $internalterm"
|
|
eval setxkbmap -device $internalid -option
|
|
eval $internalterm
|
|
fi
|
|
fi
|
|
if [[ $usbid -gt 0 ]]; then
|
|
echo "usb gui to term"
|
|
echo "$usbgrep_gui"
|
|
eval "setxkbmap -query | grep $usbgrep_gui"
|
|
if [ $? -eq 0 ]; then
|
|
echo "* inside usb gui to term"
|
|
echo "* $usbterm"
|
|
eval setxkbmap -device $usbid -option
|
|
eval $usbterm
|
|
fi
|
|
fi
|
|
else
|
|
# Set keymap for gui, Alt is Ctrl,Super is Alt, Ctrl is Super
|
|
if [[ $internalid -gt 0 ]]; then
|
|
echo "internal term to gui"
|
|
echo "$internalgrep_term"
|
|
eval "setxkbmap -query | grep $internalgrep_term"
|
|
if [ $? -eq 0 ]; then
|
|
echo "** inside internal term to gui"
|
|
echo "** $internalgui"
|
|
eval "setxkbmap -device $internalid -option"
|
|
eval "$internalgui"
|
|
fi
|
|
fi
|
|
if [[ $usbid -gt 0 ]]; then
|
|
echo "usb term to gui"
|
|
echo "$usbgrep_term"
|
|
eval "setxkbmap -query | grep $usbgrep_term"
|
|
if [ $? -eq 0 ]; then
|
|
echo "** inside usb term to gui"
|
|
eval setxkbmap -device $usbid -option
|
|
eval $usbgui
|
|
fi
|
|
fi
|
|
fi
|
|
timestp=$(date +%s)
|
|
fi
|
|
done |