From 1c6379c03775872a98328fdd6998fa5f422aa1f2 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 2 Feb 2020 13:09:01 -0600 Subject: [PATCH] - WIP - Adding and updating new setup files --- .xkb/types/mac_term | 13 ---- kintox11/binary/default.json | 34 +++++++++-- kintox11/src/kinto.json | 34 +++++++++-- prekinto.py | 74 ++++++++++++++++++++++ setup.py | 115 +++++++++++++++++++++++++++++++++++ 5 files changed, 247 insertions(+), 23 deletions(-) delete mode 100644 .xkb/types/mac_term create mode 100644 prekinto.py create mode 100644 setup.py diff --git a/.xkb/types/mac_term b/.xkb/types/mac_term deleted file mode 100644 index ddfeb71..0000000 --- a/.xkb/types/mac_term +++ /dev/null @@ -1,13 +0,0 @@ -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/kintox11/binary/default.json b/kintox11/binary/default.json index f6c224c..1e003f1 100644 --- a/kintox11/binary/default.json +++ b/kintox11/binary/default.json @@ -17,7 +17,11 @@ "active": false, "description":"Standard Windows 104 Keyboards", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 2, @@ -26,6 +30,10 @@ "description":"Standard Mac Keyboards with Apple driver", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"", "hack": "echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd;echo 'options hid_apple swap_opt_cmd=1' | sudo tee -a /etc/modprobe.d/hid_apple.conf;sudo update-initramfs -u -k all" }, { @@ -34,7 +42,11 @@ "active": true, "description":"Standard Mac Keyboards", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(alt_super_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 4, @@ -42,7 +54,11 @@ "active": false, "description":"Standard Chromebook Keyboards", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 5, @@ -51,7 +67,11 @@ "description":"Chromebook with Windows 104 Keyboard", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY; setxkbmap -device $usbid -option altwin:ctrl_alt_win", "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", - "fallbackgui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY" + "fallbackgui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY", + "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 6, @@ -59,7 +79,11 @@ "active": false, "description":"Chromebook with Mac Keyboard", "gui":"setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl; xkbcomp -w0 -i $internalid -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }], "defaultapps":[{ "name":"term", diff --git a/kintox11/src/kinto.json b/kintox11/src/kinto.json index 9ba0f50..8def26b 100644 --- a/kintox11/src/kinto.json +++ b/kintox11/src/kinto.json @@ -17,7 +17,11 @@ "active": false, "description":"Standard Windows 104 Keyboards", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 2, @@ -26,6 +30,10 @@ "description":"Standard Mac Keyboards with Apple driver", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"", "hack": "echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd;echo 'options hid_apple swap_opt_cmd=1' | sudo tee -a /etc/modprobe.d/hid_apple.conf;sudo update-initramfs -u -k all" }, { @@ -34,7 +42,11 @@ "active": true, "description":"Standard Mac Keyboards", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(alt_super_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 4, @@ -42,7 +54,11 @@ "active": false, "description":"Standard Chromebook Keyboards", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 5, @@ -51,7 +67,11 @@ "description":"Chromebook with Windows 104 Keyboard", "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY; setxkbmap -device $usbid -option altwin:ctrl_alt_win", "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", - "fallbackgui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY" + "fallbackgui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY", + "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }, { "id": 6, @@ -59,7 +79,11 @@ "active": false, "description":"Chromebook with Mac Keyboard", "gui":"setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl; xkbcomp -w0 -i $internalid -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY" + "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", + "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)", + "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", + "xkb_types_gui":"+mac_gui(addmac_levels)", + "xkb_types_term":"" }], "defaultapps":[{ "name":"term", diff --git a/prekinto.py b/prekinto.py new file mode 100644 index 0000000..38eeb13 --- /dev/null +++ b/prekinto.py @@ -0,0 +1,74 @@ +class bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + CBOLD = '\033[1m' + CITALIC = '\033[3m' + CURL = '\033[4m' + CBLINK = '\033[5m' + CBLINK2 = '\033[6m' + CSELECTED = '\033[7m' + + CBLACK = '\033[30m' + CRED = '\033[31m' + CGREEN = '\033[32m' + CYELLOW = '\033[33m' + CBLUE = '\033[34m' + CVIOLET = '\033[35m' + CBEIGE = '\033[36m' + CWHITE = '\033[37m' + + CBLACKBG = '\033[40m' + CREDBG = '\033[41m' + CGREENBG = '\033[42m' + CYELLOWBG = '\033[43m' + CBLUEBG = '\033[44m' + CVIOLETBG = '\033[45m' + CBEIGEBG = '\033[46m' + CWHITEBG = '\033[47m' + + CGREY = '\033[90m' + CRED2 = '\033[91m' + CGREEN2 = '\033[92m' + CYELLOW2 = '\033[93m' + CBLUE2 = '\033[94m' + CVIOLET2 = '\033[95m' + CBEIGE2 = '\033[96m' + CWHITE2 = '\033[97m' + + CGREYBG = '\033[100m' + CREDBG2 = '\033[101m' + CGREENBG2 = '\033[102m' + CYELLOWBG2 = '\033[103m' + CBLUEBG2 = '\033[104m' + CVIOLETBG2 = '\033[105m' + CBEIGEBG2 = '\033[106m' + CWHITEBG2 = '\033[107m' + +def cmdline(command): + process = Popen( + args=command, + stdout=PIPE, + shell=True + ) + return process.communicate()[0] + +def copytree(src, dst, symlinks=False, ignore=None): + for item in os.listdir(src): + s = os.path.join(src, item) + d = os.path.join(dst, item) + if os.path.isdir(s): + shutil.copytree(s, d, symlinks, ignore) + else: + shutil.copy2(s, d) + +def yn_choice(message, default='y'): + choices = 'Y/n' if default.lower() in ('y', 'yes') else 'y/N' + choice = input("%s (%s) " % (message, choices)) + values = ('y', 'yes', '') if choices == 'Y/n' else ('y', 'yes') + return choice.strip().lower() in values \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..027508c --- /dev/null +++ b/setup.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import json +import os +from subprocess import PIPE, Popen +from shutil import copyfile +from prekinto import * + +print("\nKinto - Type in Linux like it's a Mac.\n") + +try: + f = open("default.json") +except IOError: + print("default.json file is missing. Will exit.\n") + exit() +f.close() + +try: + f = open("kinto.json") + rewrite = yn_choice("kinto.json already exists. Do you want to overwrite it with a new config?") + print("") + if(rewrite): + copyfile("default.json", "kinto.json") + else: + exit() +except IOError: + pass + copyfile("default.json", "kinto.json") +finally: + f.close() + +with open('kinto.json') as json_file: + data = json.load(json_file) + + for index, item in enumerate(data['defaulttypes']): + ossym = "" + color_arr = [bcolors.CBLUE,bcolors.CRED,bcolors.CGREEN] + if item == "windows": + ossym = u'\u2756' + elif item == "mac": + ossym = u'\u2318' + elif item == "chromebook": + ossym = u'\u2707' + print("%s %i. %s %s %s" % (color_arr[index], index+1, ossym, item.capitalize(), bcolors.ENDC)) + + default = 0 + while not int(default) in range(1,len(data['defaulttypes'])+1): + default = int(input(bcolors.CYELLOW + "Please enter your keyboard type (1 - " + str(len(data['defaulttypes'])) + ") : " + bcolors.ENDC)) + print("") + # print(data['defaulttypes'][default-1]) + + keyboardconfigs = [obj for obj in data['defaults'] if(obj['type'] == data['defaulttypes'][default-1])] + # print(len(keyboardconfigs)) + + # for k in keyboardconfigs: + for index, k in enumerate(keyboardconfigs): + print(color_arr[default-1] + bcolors.BOLD + str(index+1) + '. ' + k['name'] + bcolors.ENDC) + print(bcolors.CYELLOW + 'Description: ' + k['description'] + bcolors.ENDC) + + # print(keyboardconfigs[0]['id']) + # print(keyboardconfigs[len(keyboardconfigs)-1]['id']) + print("") + defaultkb = 0 + while not int(defaultkb) in range(1,len(keyboardconfigs)+1): + defaultkb = int(input(bcolors.CYELLOW + "Please enter your keyboard config (1 - " + str(len(keyboardconfigs)) + ") : " + bcolors.ENDC)) + print("") + + if 'hack' in keyboardconfigs[defaultkb-1]: + print(bcolors.CYELLOW + "You have selected a keyboard config that needs the following command to be ran.\n" + bcolors.ENDC) + print(keyboardconfigs[defaultkb-1]['hack'].replace(";", "\n") + "\n") + runhack = yn_choice(bcolors.CYELLOW + "Would you like to run it now? (Will require sudo privileges. Will exit on No.)" + bcolors.ENDC) + if(runhack): + # keyboardconfigs[defaultkb-1]['hack'] + os.system('sudo hostname') + # else: + # exit() + + # Setup the selected keyboards config + copytree("./.xkb/","~/.xkb/") + os.system('setxkbmap -option') + os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui') + os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.term') + winmac = ["Windows","Mac - hid driver"] + if keyboardconfigs[defaultkb-1]['name'] in winmac: + + +# line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_symbols' | cut -f1 -d:) +# sed -ie "${line}s/\"/+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)\"/2" ~/.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/\"/+mac_gui(addmac_levels)\"/2" ~/.xkb/keymap/kbd.mac.gui +# sleep 1 +# line=$(cat ~/.xkb/keymap/kbd.mac.term | grep -n 'xkb_symbols' | cut -f1 -d:) +# sed -ie "${line}s/\"/+altwin(swap_alt_win)+mac_term(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.mac.term + + +# Tweaks available for initialization (on boot) + +# Tweaks available while in gui keymap mode + +# Tweaks available while in terminal keymap mode + + +# "id": 2, +# "name":"Mac - hid driver", +# "active": false, +# "description":"Standard Mac Keyboards with Apple driver", +# "gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", +# "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY", +# "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)", +# "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_levelssym)", +# "xkb_types_gui":"+mac_gui(addmac_levels)", +# "xkb_types_term":"", +# "hack": "echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd;echo 'options hid_apple swap_opt_cmd=1' | sudo tee -a /etc/modprobe.d/hid_apple.conf;sudo update-initramfs -u -k all" +