From d4dbfd67dca6cea0a732bdcdb5a5c64f4bea1ede Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 5 Aug 2019 15:34:14 -0500 Subject: [PATCH] - Corrected keyboard detection bug and updated files in prep of a future keymap update. --- .xkb/symbols/{mac_levels => mac_gui} | 10 ++-- .xkb/symbols/mac_term | 80 ++++++++++++++++++++++++++++ .xkb/types/{mac_levels => mac_gui} | 0 .xkb/types/mac_term | 13 +++++ chromebook.sh | 13 +++-- install.py | 2 +- mac_wordwise.sh | 8 +-- 7 files changed, 112 insertions(+), 14 deletions(-) rename .xkb/symbols/{mac_levels => mac_gui} (80%) create mode 100644 .xkb/symbols/mac_term rename .xkb/types/{mac_levels => mac_gui} (100%) create mode 100644 .xkb/types/mac_term diff --git a/.xkb/symbols/mac_levels b/.xkb/symbols/mac_gui similarity index 80% rename from .xkb/symbols/mac_levels rename to .xkb/symbols/mac_gui index cc4a19b..ca93edd 100644 --- a/.xkb/symbols/mac_levels +++ b/.xkb/symbols/mac_gui @@ -24,9 +24,9 @@ default partial xkb_symbols "mac_levelssym" { actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=)] }; // CTRL BKSP to DELETE - replace key { - type[Group1]= "TWO_LEVEL_CTRL", - symbols[Group1]= [ BackSpace, BackSpace, NoSymbol ], - actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,clearmods=Control)] - }; + // replace key { + // type[Group1]= "TWO_LEVEL_CTRL", + // symbols[Group1]= [ BackSpace, BackSpace, NoSymbol ], + // actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,clearmods=Control)] + // }; }; diff --git a/.xkb/symbols/mac_term b/.xkb/symbols/mac_term new file mode 100644 index 0000000..e0403ba --- /dev/null +++ b/.xkb/symbols/mac_term @@ -0,0 +1,80 @@ +default partial xkb_symbols "mac_levelssym" { + // Cut + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ x, X, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Copy + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ c, C, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Paste + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ v, V, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // New Tab + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ t, T, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // New Window + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ n, N, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Close Tab + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ w, W, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Close Window + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ q, Q, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Scroll back reset + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ k, K, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Detach Tab + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ h, H, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Find + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ f, F, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Close Active + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ s, S, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Close Others + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ o, O, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; + // Show Menu + replace key { + type[Group1]= "ALPHABETIC_SUPER", + symbols[Group1]= [ m, M, NoSymbol ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,mods=Control+Shift,clearmods=Super)] + }; +}; diff --git a/.xkb/types/mac_levels b/.xkb/types/mac_gui similarity index 100% rename from .xkb/types/mac_levels rename to .xkb/types/mac_gui diff --git a/.xkb/types/mac_term b/.xkb/types/mac_term new file mode 100644 index 0000000..ddfeb71 --- /dev/null +++ b/.xkb/types/mac_term @@ -0,0 +1,13 @@ +default partial xkb_types "addmac_levels" { + type "ALPHABETIC_SUPER" { + modifiers= Shift+Lock+Mod4; + map[Shift]= Level2; + map[Lock]= Level2; + map[Mod4]= Level3; + map[Shift+Mod4]= Level3; + map[Lock+Mod4]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + level_name[Level3]= "With Super"; + }; +}; diff --git a/chromebook.sh b/chromebook.sh index 3dc9b89..f71089c 100755 --- a/chromebook.sh +++ b/chromebook.sh @@ -1,7 +1,12 @@ #!/bin/bash -mkdir -p ~/.xkb/{keymap,symbols} +mkdir -p ~/.xkb/{keymap,symbols,types} cp ./.xkb/symbols/chromebook ~/.xkb/symbols/chromebook +cp ./.xkb/symbols/mac_gui ~/.xkb/symbols/mac_gui +cp ./.xkb/types/mac_term ~/.xkb/types/mac_term setxkbmap -option -setxkbmap -print > ~/.xkb/keymap/kbd.gui -line=$(cat ~/.xkb/keymap/kbd.gui | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/)\"/)+chromebook(swap_lalt_lctrl)+mac_onelvl(mac_onelvlsym)\"/g" ~/.xkb/keymap/kbd.gui +setxkbmap -print > ~/.xkb/keymap/kbd.chromebook.gui +line=$(cat ~/.xkb/keymap/kbd.chromebook.gui | grep -n 'xkb_symbols' | cut -f1 -d:) +sed -ie "${line}s/)\"/)+chromebook(swap_lalt_lctrl)+mac_gui(mac_onelvlsym)\"/g" ~/.xkb/keymap/kbd.chromebook.gui +sleep 1 +line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_types' | cut -f1 -d:) +sed -ie "${line}s/)\"/)+mac_gui(addmac_levels)\"/g" ~/.xkb/keymap/kbd.chromebook.gui diff --git a/install.py b/install.py index de21981..ae4467c 100755 --- a/install.py +++ b/install.py @@ -31,7 +31,7 @@ def keyboard_detect(): 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}\';exit 0', shell=True).decode('utf-8') + 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') diff --git a/mac_wordwise.sh b/mac_wordwise.sh index 65ed5a4..d71a551 100755 --- a/mac_wordwise.sh +++ b/mac_wordwise.sh @@ -1,11 +1,11 @@ #!/bin/bash mkdir -p ~/.xkb/{keymap,symbols,types} -cp ./.xkb/symbols/mac_levels ~/.xkb/symbols/mac_levels -cp ./.xkb/types/mac_levels ~/.xkb/types/mac_levels +cp ./.xkb/symbols/mac_gui ~/.xkb/symbols/mac_gui +cp ./.xkb/types/mac_term ~/.xkb/types/mac_term setxkbmap -option setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/)\"/)+altwin(ctrl_alt_win)+mac_levels(mac_levelssym)\"/g" ~/.xkb/keymap/kbd.mac.gui +sed -ie "${line}s/)\"/)+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)\"/g" ~/.xkb/keymap/kbd.mac.gui sleep 1 line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_types' | cut -f1 -d:) -sed -ie "${line}s/)\"/)+altwin(ctrl_alt_win)+mac_levels(addmac_levels)\"/g" ~/.xkb/keymap/kbd.mac.gui +sed -ie "${line}s/)\"/)+mac_gui(addmac_levels)\"/g" ~/.xkb/keymap/kbd.mac.gui