- Updated files to no longer use device id's for mac or windows keyboards, only chromebooks will make use of device id's for external keyboards. Closes #5

This commit is contained in:
Ben Reaves
2019-08-09 17:43:54 -05:00
parent 2d27c18529
commit 1bb36cb1b6
2 changed files with 47 additions and 48 deletions

View File

@@ -25,31 +25,34 @@ def keyboard_detect():
global internalid, usbid, chromeswap, system_type global internalid, usbid, chromeswap, system_type
internal_kbname = "" internal_kbname = ""
usb_kbname = "" usb_kbname = ""
print()
print("Looking for keyboards...")
print()
result = subprocess.check_output('xinput list | grep -iv "Virtual\|USB" | grep -i "keyboard.*keyboard" | grep -o -P "(?<=↳).*(?=id\=)";exit 0', shell=True).decode('utf-8')
if result != "":
internal_kbname = result.strip()
internalid = subprocess.check_output('xinput list | grep -iv "Virtual\|USB" | grep -i "keyboard.*keyboard" | cut -d "=" -f 2- | awk \'{print $1}\' | tail -1;exit 0', shell=True).decode('utf-8')
print("Internal Keyboard\nName: " + internal_kbname + "\nID: " + internalid)
result = subprocess.check_output('udevadm info -e | grep -o -P "(?<=by-id/usb-).*(?=-event-kbd)" | head -1;exit 0', shell=True).decode('utf-8') # If chromebook
if result != "": if system_type == "2":
usb_kbname = result.strip() print()
print("Looking for keyboards...")
print()
result = subprocess.check_output('xinput list | grep -iv "Virtual\|USB" | grep -i "keyboard.*keyboard" | grep -o -P "(?<=↳).*(?=id\=)";exit 0', shell=True).decode('utf-8')
if result != "":
internal_kbname = result.strip()
internalid = subprocess.check_output('xinput list | grep -iv "Virtual\|USB" | grep -i "keyboard.*keyboard" | cut -d "=" -f 2- | awk \'{print $1}\' | tail -1;exit 0', shell=True).decode('utf-8')
print("Internal Keyboard\nName: " + internal_kbname + "\nID: " + internalid)
# Loop the following to ensure the id is picked up after 5-10 tries result = subprocess.check_output('udevadm info -e | grep -o -P "(?<=by-id/usb-).*(?=-event-kbd)" | head -1;exit 0', shell=True).decode('utf-8')
usbid = "" if result != "":
usbcount=0 usb_kbname = result.strip()
while usbid == "":
usbid = subprocess.check_output('udevadm info -e | stdbuf -oL grep -o -P "(?<=event-kbd /dev/input/by-path/pci-0000:00:).*(?=.0-usb)";exit 0', shell=True).decode('utf-8') # Loop the following to ensure the id is picked up after 5-10 tries
if usbid == "": usbid = ""
usbcount += 1 usbcount=0
# print('usbid not found '+ str(usbcount)) while usbid == "":
if usbcount == 5: usbid = subprocess.check_output('udevadm info -e | stdbuf -oL grep -o -P "(?<=event-kbd /dev/input/by-path/pci-0000:00:).*(?=.0-usb) | head -n 1";exit 0', shell=True).decode('utf-8')
usbid = "0" if usbid == "":
time.sleep(1) usbcount += 1
print("\nUSB Keyboard\n" + "Name: " + usb_kbname + "\nID: " + usbid) # print('usbid not found '+ str(usbcount))
if usbcount == 5:
usbid = "0"
time.sleep(1)
print("\nUSB Keyboard\n" + "Name: " + usb_kbname + "\nID: " + usbid)
if system_type == "1": if system_type == "1":
system_type = "windows" system_type = "windows"
@@ -120,7 +123,7 @@ sys.stdout.write(reset)
print() print()
input("Press Enter to begin...") input("Press Enter to begin...")
system_type = input("\nWhat type of system are you using?\n\ system_type = input("\nWhat type of keyboard are you using? (If Mac and Windows then select Mac)\n\
1) Windows\n\ 1) Windows\n\
2) Chromebook\n\ 2) Chromebook\n\
3) Mac\n") 3) Mac\n")

View File

@@ -53,35 +53,31 @@ while read -r id; do
if [ $timediff -gt 0 ]; then if [ $timediff -gt 0 ]; then
if [ -n "$class" ]; then if [ -n "$class" ]; then
# Set keymap for terminal, Alt is Super, Ctrl is Ctrl, Super is Alt # Set keymap for terminal, Alt is Super, Ctrl is Ctrl, Super is Alt
if [[ $internalid -gt 0 ]]; then eval "$check_gt"
eval "$check_gt" echo $?
echo $? if [ $? -eq 0 ]; then
if [ $? -eq 0 ]; then echo "internal gui to term"
echo "internal gui to term" eval "$swapcmd_term"
eval "$swapcmd_term"
# Quick hack, will want to refactor later # Quick hack, will want to refactor later
# just resets required checks, for chromebooks that # just resets required checks, for chromebooks that
# use usb windows keyboards # use usb windows keyboards
if [[ "$swapbehavior" == "both_win" ]]; then if [[ "$swapbehavior" == "both_win" ]]; then
check_gt="setxkbmap -query | grep -q 'ctrl_alt_win'" check_gt="setxkbmap -query | grep -q 'ctrl_alt_win'"
check_tg="setxkbmap -query | grep -v 'ctrl_alt_win' 1>/dev/null" check_tg="setxkbmap -query | grep -v 'ctrl_alt_win' 1>/dev/null"
fi
fi fi
fi fi
else else
# Set keymap for gui, Alt is Ctrl,Super is Alt, Ctrl is Super # Set keymap for gui, Alt is Ctrl,Super is Alt, Ctrl is Super
if [[ $internalid -gt 0 ]]; then eval "$check_tg"
eval "$check_tg" echo $?
echo $? if [ $? -eq 0 ]; then
if [ $? -eq 0 ]; then echo "internal term to gui"
echo "internal term to gui" eval "$swapcmd_gui"
eval "$swapcmd_gui" if [ $? -eq 0 ] && [[ "$swapbehavior" == "both_win" ]]; then
if [ $? -eq 0 ] && [[ "$swapbehavior" == "both_win" ]]; then eval "$fallbackcmd_gui"
eval "$fallbackcmd_gui" check_gt="setxkbmap -query | grep -v 'swap_alt_win' 1>/dev/null"
check_gt="setxkbmap -query | grep -v 'swap_alt_win' 1>/dev/null" check_tg="setxkbmap -query | grep -q 'swap_alt_win'"
check_tg="setxkbmap -query | grep -q 'swap_alt_win'"
fi
fi fi
fi fi
fi fi