From 8f1795339ef04ed4144501c29e54f04708e34fc8 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 15 Feb 2020 20:09:50 -0600 Subject: [PATCH 01/16] - Added script to monitor the status of the input caret --- system-config/caret_status.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 system-config/caret_status.sh diff --git a/system-config/caret_status.sh b/system-config/caret_status.sh new file mode 100755 index 0000000..972df1f --- /dev/null +++ b/system-config/caret_status.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +mkdir -p /tmp/kinto + +IBUSADD=$(cat ~/.config/ibus/bus/`ls ~/.config/ibus/bus -1rt | tail -n1` | awk -F'IBUS_ADDRESS=' '{print $2}' | xargs) +dbus-monitor --address $IBUSADD "path='/org/freedesktop/IBus/Panel/Extension/Emoji',interface='org.freedesktop.IBus.Panel',member='FocusOut'" 2> /dev/null | grep --line-buffered -o -P '(?<=object path \"/org/freedesktop/IBus/InputContext_).*(?=[\"])' | +while read ln +do + printf '%s\n' "$ln" > /tmp/kinto/caret +done From dc016d9270ab6f9893776ad8e45a004bbb877321 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 15 Feb 2020 21:23:53 -0600 Subject: [PATCH 02/16] - Added timeout to blocking XNextEvent for caret/input check --- keyswap_service.sh | 1 + kintox11/src/Makefile | 2 +- kintox11/src/kintox11.c | 38 +++++++++++++++++++++++++++++++++++++- system-config/xactive.sh | 1 + 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/keyswap_service.sh b/keyswap_service.sh index efd2baf..419959d 100755 --- a/keyswap_service.sh +++ b/keyswap_service.sh @@ -11,6 +11,7 @@ cp ./system-config/keyswap.service ~/.config/systemd/user/keyswap.service cp ./system-config/kinto.desktop ~/.config/autostart/kinto.desktop cp ./kintox11/binary/kintox11 ~/.config/kinto/kintox11 cp ./system-config/xactive.sh ~/.config/kinto/xactive.sh +cp ./system-config/caret_Status.sh ~/.config/kinto/caret_Status.sh sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service sed -i "s/ExecStart=/ExecStart=${swapcmd}/g" ~/.config/systemd/user/keyswap.service systemctl --user daemon-reload diff --git a/kintox11/src/Makefile b/kintox11/src/Makefile index e78e368..b285328 100644 --- a/kintox11/src/Makefile +++ b/kintox11/src/Makefile @@ -2,4 +2,4 @@ CFLAGS=-g $(shell pkg-config --cflags json-c xmu) LDFLAGS=-g $(shell pkg-config --libs json-c xmu) all: - $(CC) kintox11.c $(CFLAGS) $(LDFLAGS) -o kintox11 + $(CC) kintox11.c $(CFLAGS) $(LDFLAGS) -lm -o kintox11 diff --git a/kintox11/src/kintox11.c b/kintox11/src/kintox11.c index c6c328c..78405d6 100644 --- a/kintox11/src/kintox11.c +++ b/kintox11/src/kintox11.c @@ -22,9 +22,38 @@ #include // `apt-get install libx11-dev` #include // `apt-get install libxmu-dev` #include // `apt install libjson-c-dev` +#include +#include + +static int wait_fd(int fd, double seconds) +{ + struct timeval tv; + fd_set in_fds; + FD_ZERO(&in_fds); + FD_SET(fd, &in_fds); + tv.tv_sec = trunc(seconds); + tv.tv_usec = (seconds - trunc(seconds))*1000000; + return select(fd+1, &in_fds, 0, 0, &tv); +} + +int XNextEventTimeout(Display *d, XEvent *e, double seconds) +{ + if (XPending(d) || wait_fd(ConnectionNumber(d),seconds)) { + XNextEvent(d, e); + return 0; + } else { + return 1; + } +} Bool xerror = False; +int check_caret() +{ + /*printf("caret\n");*/ + return 1; +} + int in_int(int a[],int size,int item) { int i,pos=-1; @@ -404,7 +433,14 @@ int main(void){ strcpy(prior_category,current_category); XEvent e; - XNextEvent(d, &e); + while(XNextEventTimeout(d, &e, 1.5)){ + check_caret(); + // Handle timeout "event" + // one option is to simulate an Expose event + e.type = Expose; + e.xexpose.count = 0; + } + // XNextEvent(d, &e); w = get_focus_window(d); w = get_top_window(d, w); w = get_named_window(d, w); diff --git a/system-config/xactive.sh b/system-config/xactive.sh index a8f2afd..dcc1a4d 100755 --- a/system-config/xactive.sh +++ b/system-config/xactive.sh @@ -1,3 +1,4 @@ #!/bin/bash +./caret_status.sh & ./kintox11 \ No newline at end of file From 086ab8bb351b724bfa346ea169620ae7dd101c0f Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sat, 15 Feb 2020 22:48:49 -0600 Subject: [PATCH 03/16] - Added Input Caret check to kintox11, updated json with run_onInput --- kintox11/src/kintox11.c | 112 +++++++++++++++++++++++++++++++--------- user_config.json | 2 + 2 files changed, 89 insertions(+), 25 deletions(-) diff --git a/kintox11/src/kintox11.c b/kintox11/src/kintox11.c index 78405d6..d55b521 100644 --- a/kintox11/src/kintox11.c +++ b/kintox11/src/kintox11.c @@ -27,31 +27,68 @@ static int wait_fd(int fd, double seconds) { - struct timeval tv; - fd_set in_fds; - FD_ZERO(&in_fds); - FD_SET(fd, &in_fds); - tv.tv_sec = trunc(seconds); - tv.tv_usec = (seconds - trunc(seconds))*1000000; - return select(fd+1, &in_fds, 0, 0, &tv); + struct timeval tv; + fd_set in_fds; + FD_ZERO(&in_fds); + FD_SET(fd, &in_fds); + tv.tv_sec = trunc(seconds); + tv.tv_usec = (seconds - trunc(seconds))*1000000; + return select(fd+1, &in_fds, 0, 0, &tv); } int XNextEventTimeout(Display *d, XEvent *e, double seconds) { - if (XPending(d) || wait_fd(ConnectionNumber(d),seconds)) { - XNextEvent(d, e); - return 0; - } else { - return 1; - } + if (XPending(d) || wait_fd(ConnectionNumber(d),seconds)) { + XNextEvent(d, e); + return 0; + } else { + return 1; + } } Bool xerror = False; +char *trimwhitespace(char *str) +{ + char *end; + // Trim leading space + while(isspace((unsigned char)*str)) str++; + if(*str == 0) // All spaces? + return str; + // Trim trailing space + end = str + strlen(str) - 1; + while(end > str && isspace((unsigned char)*end)) end--; + // Write new null terminator character + end[1] = '\0'; + return str; +} + int check_caret() { - /*printf("caret\n");*/ - return 1; + char * fpname; + fpname = malloc(sizeof(char)*20); + strcpy(fpname,"/tmp/kinto/caret"); + if( access( fpname, F_OK ) != -1 ) { + char *buffer = NULL; + size_t size = 0; + FILE *fp = fopen(fpname, "r"); + fseek(fp, 0, SEEK_END); + size = ftell(fp); + rewind(fp); + buffer = malloc((size + 1) * sizeof(*buffer)); + fread(buffer, size, 1, fp); + buffer[size] = '\0'; + trimwhitespace(buffer); + if(strncmp(buffer,"1",1) == 0){ + // printf("caret: %s\n", buffer); + return 1; + } + return 0; + } + else{ + printf("file %s does not exist\n",fpname); + return 0; + } } int in_int(int a[],int size,int item) @@ -202,10 +239,10 @@ int main(void){ FILE *fp; char buffer[10240]; struct json_object *parsed_json, *config, *config_obj, - *config_obj_name, *config_obj_run, *config_obj_de, - *config_obj_appnames, *appnames_obj, *init, *de, - *de_obj, *de_obj_id, *de_obj_active, *de_obj_run, - *de_obj_runterm,*de_obj_rungui; + *config_obj_name, *config_obj_run, *config_obj_run_oninput, + *config_obj_de, *config_obj_appnames, *appnames_obj, + *init, *de, *de_obj, *de_obj_id, *de_obj_active, + *de_obj_run, *de_obj_runterm,*de_obj_rungui; int arraylen; int appnames_len, init_len, de_len, config_de_len; @@ -230,6 +267,7 @@ int main(void){ const char *name_array[arraylen]; const char *run_array[arraylen]; + const char *run_oninput_array[arraylen]; int init_array[init_len]; int de_id_array[de_len]; @@ -278,10 +316,14 @@ int main(void){ for (i = 0; i < arraylen; i++) { config_obj = json_object_array_get_idx(config, i); + config_obj_name = json_object_object_get(config_obj, "name"); config_obj_run = json_object_object_get(config_obj, "run"); + config_obj_run_oninput = json_object_object_get(config_obj, "run_onInput"); + name_array[i] = json_object_get_string(config_obj_name); run_array[i] = json_object_get_string(config_obj_run); + run_oninput_array[i] = json_object_get_string(config_obj_run_oninput); // printf("%s\n%s\n", json_object_get_string(config_obj_name), json_object_get_string(config_obj_run)); config_obj_appnames = json_object_object_get(config_obj, "appnames"); @@ -339,10 +381,14 @@ int main(void){ XSelectInput(d, DefaultRootWindow(d), SubstructureNotifyMask); XSetErrorHandler(handle_error); + char * run_normal; + char * run_onInput; char * prior_app; char * current_app; char * prior_category; char * current_category; + run_onInput = malloc(sizeof(char)*400); + run_normal = malloc(sizeof(char)*400); prior_app = malloc(sizeof(char)*100); current_app = malloc(sizeof(char)*100); prior_category = malloc(sizeof(char)*100); @@ -364,6 +410,7 @@ int main(void){ printf("First window name: %s \n",str_window_class(d, w,prior_app)); int breakouter; + Bool ran_onInput = 0; for (;;) { @@ -408,6 +455,9 @@ int main(void){ printf("%s: %s\n",current_category,current_app); // printf("run: %s\n",run_array[category_idx]); system(run_array[category_idx]); + ran_onInput = 0; + strcpy(run_normal,run_array[category_idx]); + strcpy(run_onInput,run_oninput_array[category_idx]); for(r = 0; r < config_de_max; r++){ if(config_de_array[category_idx][r] != -1){ int de_id_idx = in_int(de_id_array, de_len, config_de_array[category_idx][r]); @@ -432,14 +482,26 @@ int main(void){ strcpy(prior_app,current_app); strcpy(prior_category,current_category); + // printf("run_onInput: %ld\n",strlen(run_onInput)); XEvent e; - while(XNextEventTimeout(d, &e, 1.5)){ - check_caret(); - // Handle timeout "event" - // one option is to simulate an Expose event - e.type = Expose; - e.xexpose.count = 0; + if(strlen(run_onInput) > 0){ + while(XNextEventTimeout(d, &e, 1.5)){ + if(check_caret(run_onInput) && ran_onInput == 0){ + printf("run_onInput: %s\n",run_onInput); + ran_onInput = 1; + } + else if(!check_caret(run_onInput) && ran_onInput == 1){ + printf("run_normal: %s\n",run_normal); + ran_onInput = 0; + } + e.type = Expose; + e.xexpose.count = 0; + } } + else{ + XNextEvent(d, &e); + } + // XNextEvent(d, &e); w = get_focus_window(d); w = get_top_window(d, w); diff --git a/user_config.json b/user_config.json index d6ee4f8..b03a4bc 100644 --- a/user_config.json +++ b/user_config.json @@ -1,12 +1,14 @@ {"config":[{ "name":"gui", "run":"", + "run_onInput":"", "de":[], "appnames":[ "" ] }, { "name":"term", "run":"", + "run_onInput":"", "de":[], "appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm" ] }], From 5d5d8de92e953ab70ceed7610da88af774ce77ca Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 16 Feb 2020 03:33:51 -0600 Subject: [PATCH 04/16] - Updated kintox11 to filter out dragging windows --- kintox11/src/kintox11.c | 69 +++++++++++++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/kintox11/src/kintox11.c b/kintox11/src/kintox11.c index d55b521..f70456f 100644 --- a/kintox11/src/kintox11.c +++ b/kintox11/src/kintox11.c @@ -24,6 +24,14 @@ #include // `apt install libjson-c-dev` #include #include +#include + +long long timeInMilliseconds(void) { + struct timeval tv; + + gettimeofday(&tv,NULL); + return (((long long)tv.tv_sec)*1000)+(tv.tv_usec/1000); +} static int wait_fd(int fd, double seconds) { @@ -36,10 +44,36 @@ static int wait_fd(int fd, double seconds) return select(fd+1, &in_fds, 0, 0, &tv); } -int XNextEventTimeout(Display *d, XEvent *e, double seconds) +int XNextEventTimeout(Display *d, XEvent *e, double seconds, long long event_ts, int last_event, long long *event_ts_ptr, int *last_event_ptr) { if (XPending(d) || wait_fd(ConnectionNumber(d),seconds)) { - XNextEvent(d, e); + // XNextEvent(d, e); + // while (1) { + // XNextEvent(d, e); + // if(e->type != 16){ + // printf("Inside XNextEvent timeout\n"); + // break; + // } + // } + while (1) { + XNextEvent(d, e); + + long long int new_ts = timeInMilliseconds(); + + if(!(e->type == 22 && (e->type == last_event) && timeInMilliseconds()-event_ts < 419)){ + // printf("%d == %d\n",e->type, last_event); + // printf("Timestamp: %lld\n",timeInMilliseconds()-event_ts); + *event_ts_ptr = new_ts; + *last_event_ptr = e->type; + // printf("in event_ts_ptr: %lld\n",*event_ts_ptr); + // printf("in last_event_ptr: %d\n",*last_event_ptr); + break; + } + *event_ts_ptr = new_ts; + *last_event_ptr = e->type; + // printf("event_ts_ptr: %lld\n",*event_ts_ptr); + // printf("last_event_ptr: %d\n",*last_event_ptr); + } return 0; } else { return 1; @@ -410,11 +444,12 @@ int main(void){ printf("First window name: %s \n",str_window_class(d, w,prior_app)); int breakouter; + int last_event=0; Bool ran_onInput = 0; + long long int event_ts = timeInMilliseconds(); for (;;) { - strcpy(current_app,str_window_class(d, w,prior_app)); int category_idx; // printf("current: %s\n",current_app); @@ -485,24 +520,38 @@ int main(void){ // printf("run_onInput: %ld\n",strlen(run_onInput)); XEvent e; if(strlen(run_onInput) > 0){ - while(XNextEventTimeout(d, &e, 1.5)){ + while(XNextEventTimeout(d, &e, 1.0, event_ts, last_event, &event_ts, &last_event)){ if(check_caret(run_onInput) && ran_onInput == 0){ - printf("run_onInput: %s\n",run_onInput); + // printf("run_onInput: %s\n",run_onInput); + system(run_onInput); ran_onInput = 1; } else if(!check_caret(run_onInput) && ran_onInput == 1){ - printf("run_normal: %s\n",run_normal); + // printf("run_normal: %s\n",run_normal); + system(run_normal); ran_onInput = 0; } - e.type = Expose; - e.xexpose.count = 0; + // e.type = Expose; + // e.xexpose.count = 0; } } else{ - XNextEvent(d, &e); + // XNextEvent(d, &e); + while (1) { + XNextEvent(d, &e); + + if(!(e.type == 22 && (e.type == last_event) && timeInMilliseconds()-event_ts < 300)){ + // printf("%d == %d\n",e.type, last_event); + // printf("Timestamp: %lld\n",timeInMilliseconds()-event_ts); + event_ts = timeInMilliseconds(); + last_event = e.type; + break; + } + event_ts = timeInMilliseconds(); + last_event = e.type; + } } - // XNextEvent(d, &e); w = get_focus_window(d); w = get_top_window(d, w); w = get_named_window(d, w); From 5a56ea823f8a3b3b2d513ee3fd0176c73fb32c86 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 16 Feb 2020 17:33:28 -0600 Subject: [PATCH 05/16] - Added browsers category, input/caret detection, includes xbindkeys, and xautomation for one off fixes --- keyswap_service.sh | 8 +++++--- kintox11/binary/kintox11 | Bin 251992 -> 258904 bytes kintox11/src/kintox11.c | 14 ++++++++++---- setup.py | 26 ++++++++++++++++++++++++++ system-config/.browsers | 5 +++++ system-config/cleanup.sh | 3 +++ system-config/keyswap.service | 3 ++- user_config.json | 16 ++++++++++++++++ 8 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 system-config/.browsers create mode 100644 system-config/cleanup.sh diff --git a/keyswap_service.sh b/keyswap_service.sh index 419959d..f8f4316 100755 --- a/keyswap_service.sh +++ b/keyswap_service.sh @@ -4,16 +4,18 @@ systemctl --user stop keyswap >/dev/null 2>&1 systemctl --user disable keyswap >/dev/null 2>&1 systemctl --user stop keyswap.timer >/dev/null 2>&1 systemctl --user disable keyswap.timer >/dev/null 2>&1 -swapcmd="\/home\/`whoami`\/.config\/kinto\/xactive.sh" +swapcmd="\/bin\/bash -c \"\/home\/`whoami`\/.config\/kinto\/xactive.sh carrots\"" +swapstopcmd="\/bin\/bash \/home\/`whoami`\/.config\/kinto\/cleanup.sh" mkdir -p ~/.config/systemd/user mkdir -p ~/.config/autostart cp ./system-config/keyswap.service ~/.config/systemd/user/keyswap.service cp ./system-config/kinto.desktop ~/.config/autostart/kinto.desktop cp ./kintox11/binary/kintox11 ~/.config/kinto/kintox11 cp ./system-config/xactive.sh ~/.config/kinto/xactive.sh -cp ./system-config/caret_Status.sh ~/.config/kinto/caret_Status.sh +cp ./system-config/caret_status.sh ~/.config/kinto/caret_status.sh +cp ./system-config/cleanup.sh ~/.config/kinto/cleanup.sh +cp ./system-config/.browsers ~/.config/kinto/.browsers sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service -sed -i "s/ExecStart=/ExecStart=${swapcmd}/g" ~/.config/systemd/user/keyswap.service systemctl --user daemon-reload systemctl --user enable keyswap systemctl --user start keyswap diff --git a/kintox11/binary/kintox11 b/kintox11/binary/kintox11 index 7ce09100ec4844f24652b215c1b5854ff61e91f0..21689efc1b4b6a754a07269b3bc1db2e3d148016 100755 GIT binary patch delta 98427 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%0AT$CZ_c{yzE03 z&v*WvMe>+qEWLt=dA$>ij(-3flccq!bdF4-G!=MR42z8eftRjvikF{ zzD5L(9%GRc2H-7t+iDci86epCON1iCdnL0DHV!~4HfY^t{s=ub^I9Hn2H5llvv|>#*62fiQGHMJeSu^GGqDjS~Hrz z5;i0Fl_!~tvmaS;LR-tqCVcg0Kr=!Z>zYru5TET*pxgDOVR@hZ!1$J59B~~VpYpqmzEU|{; zVb)qR<-f!fLBM^{|z+#ENmOSz`Gep#c_~TVlDsvkED| z0LzUBWV+~KX5&VaX_nPy`KDQcW-H|(D{`uZYeR;@*D*jc)e0re8-$Xk2r}LBTsX>N z(~2$MBbMVGq$WFPSxBZAA6p!?)r#H>kE9{fotRE%+BUuL?f4;=!8^mjM@YJz@nvvf^Bs zR_sSsDjvxnS!sBre8g}2H+wjC{_m|AO525&Lp&VCyzM8pAUek3e#nYNu0_KITtWWk zPpnULq&X;LxjL-W4lAbCvNrOce`330g3vOu!^{oh&x*o7zUyZ;1sNOq*tHdr{>F;D z!SZcA1IZbQ7ex`yxk{w%Y^VeYKtXF1HiW@jbe<}mT8O?*7ZVQw^WPv|hGIn=}z zpKIyaJ-h1;r#Xz7MKxU?TL@r==X3>K<_2bV&h5I~Z9dBA&c$h7GmI-1yH-H>jJu^3--IbAJ-j`~2?&*4~%uF-Q6MMS;G0yyyndSSs-XCw)F!R9vt|1f6 zWO&`sRXN!#ibzv?-9|zLvrLp|cLZ~x;76e1;(S2IOmn%}dP|pY7Ab*q48tqTW9H7= zyW%U&6%MoLP}jC_3Cair^<1!f~NF>d-( zJ+x}Lr|YMBv!1!?r_5fuwz0LD&uui%bv2#cw5qMXZ5@BJ(Y!x;X4A&D2}G$vyMoIy z_{9s&-&+XLx|UB{WR47L_WD+Qp1pQj)25Y;ts;Q2s%Zm>xq6YgZdiT&lEv%l7q+ym zGuE$K*Rpg~)8g===Ek)~{gSm!O>3Lh)vst-*CraTDXV6*tN_-uX!WYaxK(hmIWB(n zswFK;>v1Hxe(m~I^{baGX<5|@T^bjglOk1f%5Ph2?xv))u3xpNjSp`!7rQCe`jw6A zmh=5hW>RF^+4buomfzoG_Ky*QRtY)vjceC7ZsH#_nXh{#d5RE!&l2-IHzaOc+_JQ# zjrU(_9`LuFQ@^rh)%v!kbsL)2wegphnrZp<^^1!P{3|vnA&XWtu3Kj`H?CT|qNyHN z(5yxxr_5g8+Soe=? z*O9hlg!(o#@U8X8g|#hB>x>PJEp12{H(Sj4e#F*RFEar-!0TGf44*QROvSk^=9WH) zv~fjibEAPS1%C#_o?=m92+o$7*_o6(OB+{`(hFBKu3Cc~WfTAXGIPi@5qQWT1YdP_%ewWAE7lon z83oq zA#KPbSDBZ37Bx35T3)}XacvX7VwG7KfkJ~^=;~T!Zed+zt!Adlm##H)9Z;3O@{A*& zzx24n%U@b+{>)!rXWrU%VVilg$p>sO*Kl(aMgR|OFpu&58_k5SM>m>t84sUhw(>Pk zID%bwo@4f7{DX7N@A#k3Gxv6FIp2KR&!=B*)^;7f-0aIH>Te2P(I)$CW>jnNNkwuR zI2O>Mv6p%nHTYf|zv_9juwBdAZnIQr@LHQRTZ1?D5?|G!vB!HDHK=1IJ*rNlN0rjU zVL*}B`Z@A#Mb_BDDt@Ctoj7L9(V$i+0rD#xt;?h#dOo9U>!ua?uZ)Tz-q4m|Mui5U z+mXX&)&yKAp;XcFGNW9l{%%|0at%IVljdvi$u_>_Q8Q^57Hv9LOKsm(Ph_74UuxAk zI$MKpE0WAnjeWI-kG;lBOZ&B~DlH2vN4_@0r(vn+&2sp(ES0@jiualsJe=%^YX5a? zwVF?V#F-g28q~Uy=CvIf)1O`jqXzW{l_jIb9$cesQKP^lLw`J3a%zlH`jMIX-*lYw zYaQ!Or{f%3$1m(`sMDarSiVoQ_^PJ~7pixy#{f&sPZ>rk<8@b@cqJ zT^gOB$S$M)YS+~+_-M-1U-@Xt>{CT)^c+QYlc;JT>zp+%Y1W(8@ZndRIcWiv)-*fK zJI%VqdPo zPCM=ex|rOgRAz;(y*te$pBbSG5k4bM zb$OS=*RC6~+f{>xra^76&P=fvuV{D ztX?j9id_!Bt=>I$6jd73v6C)Uwl44VFltc8E*UlEw&ShRV6-AhM#99ZSz-^T1~X3K z)L2drqXzq)!ldtx*Q>xfoX=iKFXiYqioEa*k9Za5Kt8VgpQ z&VrSvv0&xtELhp`YYSGM&VrR4r?Ft==`2{;@oNiKp3Z`m9ly3<<>@R~*>M^RR`#+W zdYFEvF-@&D&8xOiYc$xqyw%#)`k{wWgW5inm9@6Dv_j~G6qwno?AP|_CaZ`D%x`?$ z45b}VQRsTvtBT&WOjTs(#PCWPaG-jEOM^odiDXuHXly|bqXrkPq>7hg%Nk;{RB2F$ zmgQ7qXZ0{@5VBBAPbaJ5bh0XJy~=G_6&fU2_$Hx`G5vx1f|b0u!I3%f=n9$Yzo;it zt-((eNv2w3ep`CA27@ZqTGq$5tSSxa&@$B;i?n4`X%MnRs(&r3;&ieqIw)yu1bS>D^#+T46Ox5wi?u-NmfON#^P*Q6&fU2htYX{r)2%ST#RFVCVNv+ z{sPL6W(seZ?1-G8XuH%C1we!PjGirPNUD0mKpGrilWH_L&?Z%Duw*th3aJ>AMHFQ! zZ_SRzOoN)8+8xCuLx$51%#|wKuAX4gAUNKdoxGr;6 zV@rD&HMl~NB%{V|TFvFiIHFz0`zJfzDh-ae#nouA+$L3PP)9BchQ=1zj5Qk6kxNE} zISlB6nM7KeR^&@tkqQlh<%*lkJljU!*esPAoM^{4UxQi|im$RmV@*Ab8tkoDWrxNP z>6&LS!zsJj475M3VoY5nGm-|^8rDw?n>Dz~W-IQ{@O_E~HVyu>7n_Es+WIZfDzBh# z_|nfbif#2SReYq0hM{ut2uFIcq4hY^7B*W8Ti8SD6--QQ$18Q_*_xKWtH5tpsj0MQ z&gK@W%pK~9vaG=;Y*LK|pR-BT8vMN?$s(z-H(Er?jtZh9xW^7!rNO6c(tHhSsTdz> zP>YlWO=EBH%|DvSeCI8ur*@l?qvay72DMyf{C|pKj*ddx=Knu49eK#iC<&_+OtURg zt-4&k zY11_KuL9;wEN_-Ys8Kz^qQO^eQjG@RP$Zcijm5T5vyo}bYOw=WY4By6G+To@v@9AL zgDg~l6we_Q;Gt%I#qDNB(GG<_V+)$EgBZ5?=4;R?&F3@CD#gE}nLlyJOix{}@NKr7 zat-d_jo+K8p2N!LVT73KNa>9ul|8uBOe_ziols$P{3x*+gen*uW=&Ws?R-!@VP_3` zY*lJB7^O(k&KeuvEauL#_kLChGVRdwHQ&G8?EXMg$_+(P;8D^Qqat%P&H$u#=ld69maX#4vjEd&uR_o)DWMX zaAYYaof4Q+tU~J9pq|iEgV)%k*&4i_?|k0OF4BSK*c??F++&k!GHHc7{s-}CImDl=G328|>Qjjz_OvS%hm7C zwFWN`QnHFP%MzQVN`vRxq#6w()G2~BE9O5MBow%~GvdZm>huXz)fwl0`&gkR?W=XDi=J?SSQ)Ez~7| zZ3n8*AaNY-;m`r0tp>p%mg{iBQKfdUo$6{0uCz%t8r-NzvWRQ!3Y)Q7gSXqH8V%lm zN?3vQg|Qy9Ijc4JyiKan;0q#a^H*ziN82n_8r0g5ZdDx`<2{TT?5#*uhsK`lVbmZZ z6(yr{k<8TC9u^IzE~bso0$SAGxlnTbLp_mY8jMl`q}eow zmeknJ9!3p5cnYJ&e&}J;V5HDAtLRMSrDH-rqs8yGLsj$$5@SU#Gc?n7zNUj#|00Tx zHc0h9P*13@!FXHJYz-zfDoe2_f#k7|^b`nU%dtzl!-jnpjn+ANhC1PfZ7 z)CAM`gYx`PJ<&HcK1qF3Qt+2vrZIs(@v0g0^my>-MUIT3e`Q%-a{-}g{tk#zAZZZ%z_Z|aFjgSRP?ERPy{rH4_2Z`4!# zIa1KAwttldbx>({jXl@Hs6hyltD(D<-`;vLf0%fJUN*xo*$z{!!7~&|YN@f2J&YQh zCAB<_tg6$=s_M|P&a`D!X%MoYXx6}JPrT;Gz>bWf>D%T%FjTAIdnoV}t4i|9l&i#9cis|LYBWnbdHn$9{F{DE-=KD^Qj!K=5Z*8UL zYfvlCj9Lw9%_)XTI~}FAD)TkiI~|oBr%A_rosP5Yz?B-*n#));hIC-DHZG`^`v02ioGXTxdw|C@W<9Ua00~B{^&14;-Hxp@`Lii zqP+&SsW3j**7Dn0m1}UMOTVbtI* zvC~)B-mTX3KImEI(_mVa&a&AWbk<0c6tA&NMa2S<2K%1Es4@KnqfsCvISfyMYOQ^? zE=O%$sxhsGSXdi5IAnoCB7#Tz~P)hqo-J*t_53`1M$ zOIy1N4eD?Xkil%!>ICaVXFm+N5H+kvC-RRXBmH>KHw7NlSbRP@ZA_8% z=qDSUGNNoUXCV*0$+4t8nZdb$lbuWTCP#@O@-xH?(lO;GiqP--M-logE-ES-iCu>x z#b_kN(#Av)`VCUSaQfoQ{>ljb4NHm)c~x$2d$2wWR5}Rj zku>Nt@(vujOya@<3~wd=Fjq!)lMj`Uy%~`0z6|YL1$6^gP~9bd+ETLAA?=DR71&qmXaOnt1BT(1-3pIn&V$gmynel8J#j5d5cTz5WX|DiW7 z^@~*cFBZL&ML!>9lV#*TEM`_vs8W`oy~ylSYk%&O}nsXAX^Q{4r>gx1cGE+&0e-CbyWW!zDOxq>Xd<$EEU>ej-lotEm>wG zX~{~CGV)Da$Q&>BQx%h?Lan~IgQ4|-AX%+T9wA>SpJYHJEtFw`EYoXk7x~&~jtG(! zZ5U4ybD4;7a!pLux=ar{ffx;vK26rz)>n)w`ei!4fEm(r(!IzAsrosw4aL6G_e~ku zy8ziHz|emOf@GgIO<>Xr>bl(*DJ4stVmDbTv`v7aCxf(PMZKwSs=vV(DJIL*w!RtK z9te`vy37V(r!SJ1%P@1*qZ86w0|F72TiPU9>w>9r`#)NMh4y{^B}*CEt1q?_qzpJ@ zAN8R!vLE|UIoUr0vQ@!QWreSf?6Vbfh?PBy=wpEx*+2SF8QH&7=#g)7YzemeB`76( zrf=JSkY!11Ju<|?h#Se$Y%9nREte$~*mE3OE{Vy~auFj-%SDQ;6hhyDQ;kR5fl*k0 zqhE?*vRC@0Sk>R&;{KMcqLE?WZ^dM90A!mULt^%+rXr+2_beJv$qn|)dtbbkK#YU=izum}#Tx z`zfW5#mr*km>Y92aput(77kRLh(hW$EP47)ZgM=jDLxki z2I|eVmVO;@AvK;JqmhZzP&%Cpd77NkrEUB&HL^s-AeL^-2x{i zIzR5()WMLXl>5^;@^#1s$epz#&bY-c(~P#M|BWuuAA87DEKltx_U zr@E9Zv$gX8LoL2wDOu($mn&p%45Y}45%y`tz?0ZfOgmQl2}{T_XFGB;#LQ*jCd`#1X71_r$lqP?2 z+r;p~iedWBVaf#%FENJdS7&1o-J$v-`fiWP`-3}R9ny{T??9K4o$Ny;WT*7Gd(F_y zK#=U&K2%0_n49nS=n)fd@weW--&`G9OoXK0l#SVp$$68*q* z(n_kI>5G(-o##WV$Wq||xg;o?P{d%FFIh@f^vjYY&`+DC<&ZtkPgPEq3a$PN8C>Q| z7LyhIdPQq4CMd?dWo1NG#N=swUM@wLT+ASAHR)@iMr3oNpIsT*JA9~w>|KDYs~IY= zcO+G1fj8g+NL=M7E+u=X50#Up20K15B>H5m8CyWxHu(vQ$4!Etn5WX3?edPQewioujh8*=Ht`;ozF6|&#cnzO1|9CPoy+P#B2@dhRExI z7P37?i>=-L|4b||w+#;oZ}cA)mXW>5Yz#P=NNJ3Sv8TV5;#d*0EE@W(izEa zHoF;QS1zJ%@I^|=iipXmzesVch|Z|3pO$|?q+dqVLK{zFZZF=y_{x6|qm1m==Jk}k z-2Nh^F(Rf!{Y8pnMeMDH0=%JlzW=6X8QDdEY+quiJ`f}uspCG6GZ8tb&c2WHPZP;o znMiVLpqH!yWDQ{Gxj>NYK4UvmtHlq^%*j?B>BK#;8H!W*85+l;a>4KtN`BWv@w zJ%eJ@Cj$Uk5tE9UxUdoL+kFpIG?D!QAX{XHb_RlEcjK*Q>bl++DJ9F)w#W=U7zmOT zUAD;0h-+PMtB+}zsTfMu=5LEkG3t{dlNB+$4ds;R@eQ_{p3`KhC?k8P50#UB29R|G zLkE4qGO|bd2r@J(;%5Rj>OAOUXfJ0XVi`yDQjPS|-7i=v+1q@mge=`)Ym^~+LY9PN=>{vv&_>_r60l{yQ>-NY z!ZL|UvMi7lWXLa`Qxa1;ESzSe1h+MrrIc9~5M$NHv;q+mx8&x|N3un}1B%Fsh%63s z$1Fuu8K}PEBd^uu%Ufm}5O+h9epncUf6!!Z6{w=e-2tleD>re43%~UDPn>($Am|fu z&p&sB>iWt}tz{nl8>XL!+=*ibY-ZvevO%8Z{qu}#TBk;bqe!bj2iQ*nG02hvX7Jh= zX?fnwAX|l&7C1h8C<*FcKE0~D0&v?ag8vBv1|yrn5hd?uj7ph}@Un<`pyG#@N6dw( z{tVN=f+`5D1^vgqx4S?_rR;`ucf?!}<#r>?-YyO%`>I$Yi@KS4=&`fdbDc7>v-@;$ zhL*`kz06yy{Sua*EMaL!OhWykgT0wwx=*FKy*t#A6mR3m-W}qr6S>x5$zv>)EAij& z*t>GDmztE2rgmj|qty2@yv^h%XKH@0;BUJY%hpe(6ZhUb+1QOuQs~v~ zRz}K4cN?LBkMO>S@O7X!gWd-E$TDrvNIqD55ilR4y>6nHJb(x2+^xP7VQx*|gD`i- z???C$Xt4R*4auU=%E3ip7$b&-x9@dvc{48l&S)F%X?+38`%hbNU+LWnV>xe%l>iQIcADtmE||6PKcVf> zi`8e#z3d#M;?3{ic9u>(m0S5p-^LXSckOxD1(y^2Gtt z4-ow^=%=8mmDZQTL31lj@}mfn9z*zlKz{-H73jb!$NYv=>EvqbwO-oP3szff3FuPL z^`I@F(bYQ5$oLn4itzSNWwo)0FW`}Wf%lzUyoQ$yIsvo*bXM4C=Uah00rQ2#r%d$R za=fv+5|l5s)*yTtC|`0tj<9o?(H{SDYXRPoEi}#Co)-67_bd~=gsTF}l$W7}y6@}rdeK;(=KRt-Pr zxMPFSPBDHpG5%wN|Ak~njQB`i$Z_o-Ec~>#C0yzLGunxz7}va9;PzEFl3S*Jj@1>X zpkb%!-1ZLpf%j~hI;y;_IbDNo>0u z@HTH@!WNZ&hnFpOC7fR){MP0Sd8p!HrU99&o;)_W+bt0_RSnk-)D4&JFYvfZqnZ*RE=!j(&|- z{~nh=oiV?U#RP|d7h+{IM+?jE6ZzBf+}JVKpmKx^aIS>bxi(^$_(99FX`~o9RW=?X zqM%%@yxYr*fLB4014T6GO33rmRqu%*`ga%Pd-vNgt7s4K?moD*-d7RPiHK~Q z&iO6ywmAG7;FWz8$zdeYrgVu5fz#0G!1I6)hyEoRk4ge3PEj=y^zQ3hf~$dd$KkgL zu3gHn6`v;t>fe))Z-acEK^^Bc$m@YJUt=SX;6o(nL;}6AGrvTefn2pdagR4G8aLdW zj_9^H{9NGOad@fV3C?Jz2TczZ=TsZK|0r=I^f*(kHJPx=x!oi%!;Ok`c&BA)FKmL; zx1sisdf^@~JNgck^kSUG>fHH1qazrCTA+OJ09%_mM=T&g^UDGL`C%KD*8 z6iQrae&<;EsPh>TP|*@7N<#*0?-v7i;_$V=KY^Zs$etM3_aNrbrnRWK^F5oMTkB;8HZDwtMLbDQ!fe<-DSP zv*h(AS>H)XOWtkdhxeQG9s_P>Pc4XFx6#vo(%X58uAEf$;SMi7`mzXRNKG|vw5c#} zIo&d}=bdB%`~~C-S6lfDklCMr=RINpy4Fpy`rEFsc-uHjM+lzojLvX)Odji~KyA2J z+<%rK)0Z&$MK+mOWqvildtmlj;4L=w&4w)QfK)HmEz&H^?{R8fXT$S>zXZJTK?_U= z{@ifX0uCef5OYI%0YA`tl;=Q4S4t6Ru4LZ zvk3T3Pk|?UflpKO9uU*!TT*67l|F$~E9u^5rD)+z zz|+vnhd{|T;5?JC7Wjj}`Sh2zzGSkAKCElY?Z24qMY1;N!Gg*8Kj51%>Xaj!zcZVA zEx>g_s#L!&M%)R4&fT(-kpZp!&u;qkv5@InY18IG=S<)|z&SHrs1hEOQKj-hZ;TrF zpqG(wtpO75HKb}UlJOiWbPDG%)zw-3Y=Hj@oDb88{~h=RXkqY#lcb6tlIj{~Nc1dm zsObiXJ{!g_1>S|;^8oO*z_$Q62K-9kX_!H!Ud-5xTD5F}p9-Gtj*<&cR6OvPAsf%EGZ#OD#mEKi?YtP&oRmCHJb*2W~q8PkGfJ@?vd z=E0b)!1)3oM~wS`H)4JcLw*nStg`@aggdWUe4*2Lzl|6PXMDf}l@?!QiE{#Y(M1-> z2cE0PV%_fse2ZM}Jk3e_=*6(cia|i|L1h=5kc3*xRO5C@N1ANN z;&WsG)&4&YLwjv;oQr_>phxg>It-j23XDL0lhyhoL!vt%Rfsup45Xe0p7#?Av;#j3 zyb|)V?lHgL5P!mk5$*g1cxR=>$64Z}%G52Tnd%&`u?R=I2{ytx`wWZEhcl*`MPbe| zM5m#J7en7F6D`L9>!su3Yazw0b={D$ADqB3Onz#3brAe(ZCDgyb;i^&p{R^t#occtK5xj^j%)cVK@-mB0Ky<3w{-l>ZJ$tw<<`&HTHz9f|aPCH&1AKu^b}^!-B2)H;8sPjS zA+$P8c3FIrNuBcmq>it!S}{O6Pnqb1!#0n%L`t`vLvfAyL!?f_9C#{B`7ai{H__mp=qF$t#MXh!~w{BO&_hH{i{b*MVB zF(d~{)~bY7H*;8|K`itwsjZKMo0`>UFUZc0J%_wBd#2w<8{Eu%IiJ^-$}xG$;goWa zZ>YIJbm@a1Tbkvp#c+M7rZ&=8SJkR+X?1f>shC$+*HArQpAdPW7_JV#?46dVPry`5 z_j`G2*>~K5XXw()eU9cxUt{A7=B$Z?!|QCx^$~>UYkTBu$Iy4oA&NLyxUY_IOKo#s zBoq=;q=cb0Rkd|$)=S=4^>5d@DWk*za++i)yg^QEbZp(}13I-w)y^y2(P_GTlA}IR zv0+V(l+RYd0WT#_pTa1G(@xY!eD+hK(vNsqNwspSrJPUP{>`2&Rrs7YJYl`6I_PC) ztkGWUW273h&&!(>X^k|8*Y}Ay*>Rz|4wJ-tq1u`jQ=#hDjc)QRX+71o)$1Fj&ew<6 zS2wnbY3l-IGxN`MYBn}X-Bi_uV_@}0ME1#Sc*z^CdaiPlPx0G@9Q0XxWmx_3YIk^h z_nsW}@c}PYefI?~X;4kLPBOV7QmWyncqA%Rs z{#8n@n)6esgUL6z>B}OfaZ9Y6yt!Q3e~tK6P6VxqtqVQMZF1V_D(`@osJ67asp^)!UY2TTbqD2# z>KYo>ZIn|}Tbv626x*O@i_uc%(xvl57c5&43aQ2yykP^YYHIX=(RtX*9w0uH173gp zihOtdhgZAFYUB}H#Y5GGeO~4S8Lyhcy07)MOpbw#G=%Kwuc~dcn>#jkbda)1rv9j- zM@HR9N2wJNcY=EKyY4Xca*I1+f_9ZTAa!9wwd?|vTJPU98xDA*lcX`PZ@40?e*A(r zUUk0WWh{^)=mt?0XP2?UR9^gGD-AZ>EaPd3If>k!89VLjes%@`#j@v%;GgFOJY_<6b4wC+ZCh)UlihptaPakWgN#!5%1`iI-jcrzWuXuSA{ISCHQ9bI!71OCUBc3{UpERtS4|=DZ9Y5DOYpUxS zB5{4&RD?eHJ*3UEN7ptrsr#bxF4lW8kgEI}P(620MB4UC#K+y@u;@lNbyz4|Q`KA* z45QlBs(6F6hVd_Z<44=+OS@@}?nfL@zSATJ2Ak1iid1>Xn&4CvZwxoJmg)gDwoz2c z!Oe2iuO1#$+F>tgtermsk4!(a&tcE%)hpd8i)03t7_}@lsroHwn)9-f1R8;JY9y{p)r*&W5V9o zUh$@S?zSZLGGr|G|yw$~V3I6mItTXt#ReO>b6OH^e}Hr%vd^+~Ps{7d7WC zfqRcyY0~4WRp1mpqAL1AJ@J-zR&4lBI?VkX6BCtol6l z-$x}kZr^D8+QN$&XzbUHqm^V8ap>MVC`edwn_n4P6 z2uOEAP<8FS$%$(8+g{cn*Cu}ScR{48c-tG1Qt_#cd1Y)&%r+e}Q9kXce{1VvV&2s; zKWecte?P;<41LENpK|j97F_U$81agCM7(FKXB72}3S!Kj=DXkVhGlhj+1Nv4jgT`* hNUJ*Vj(2*>6M7)`ix_gr`dU$P+{=`Dji0ORmh#s!^$JwdRWq$CO8eM5j`i;AId4 z73&1=PmiVxT&Ldc0;!o>$m?$S(lDdoOH7=yhvo3L^;ZQ}|CcWfQv@Hz-j*M3@jo@X z{`^smXXQ#>+wJ>BO@DfvhagGE*-7Qjw*OOuXjK%XQI@Yxi0rp>)Jt2JZmU?fY5Dv` zBjVa^n|kjFwo6UT?2lU1Efn6W{O4pz4htr1AWk|`Td$70ZNO*O_I$H;@yRJ4&1M!u z5=%8j%b&0;LzKLkJr@|wmIg%0pYz`>Y$DK5`emyEqvikbT5UNxoY&~hf6F=YDKDSr zwM&De<%c-hf&W(V-xywFDF2<#>t!0EmB0dV2+#k@1Gp0XD0(Y%f%eo&1;Skx`LwR=Qui%qXxDnsMUaQ zDNd^A<0DC0j!9o4fx@I#O}H2*N&1=NagtG?@oYZkv$p1_#LJpg*QU!`04FOA5_{f! znB8aT#9p=JvPMfQ)*>XE4G9^0&E*aTPr7juW zn#x^)Ylk8!lFI)lX;g432gs6&LJ~}EP%I>B!{R%>FuwasyCYp;0=+{ zz~~f*422g_)RqJ(diwMbNeYsFLu10$t$7@C0slt>;v={`Kr(B5q=N$nsig+YkDZQb zuS#t+z9NQrMd|>a4t=rE$4^QV_-<_x(ee6Jf!F)t&VLE~sD?ZA25U6I3BLwUYWP_{ ze4B-(eOrJ+#y}o1UGyI(r+3r{UJQo9o_ww#{1z78Xo3{8#O)Aes~VY z9g>vbCkWgv45a$u@fx1#hj-TSJU=}14WY;GhySog;6;SPe$!n1RTGr>HMptarGB{d zj!;zQhX-kRxgQ>);j6rGvM;&!2}K*c1cZ1re2X7$c~{im?T1He_)$MRNyE?j;TiAp z_~C$`pqJL*h97>rh8zDB4(K^itl`mqc&Ub``r)%RJm*gyfAbJ5(gb$D2CFo@#1CJu z;bngK^BTU;53kekRXVQOm-cFc4Z1)CD1D&eTm10PG<>%oeo@1Z`r(Zle%23n+|mSY zKSA(*;lT|*JW9ij+D=3tf+P)(_QSI@Jk<~HCvb<9<0rU7Yhd@oOEkR151*ppWq$a5 z8otmEe@Meuaoo{7_K#?S4So&QYxovF{CN#G`dw0WKFkl_tgQ#p-Z<<_?`VQlZvpW7 z^~VCZVQZ{ z9|=u3;uqU&Axdo$NK&v~8#L1kH+$hZUbw{z&-22uA!s`6UbvM|-v6LQUV_l3>XKCA zh3lIP5|?`6;a>I2yzmxYc)1rI;e|UEdI=)E1eIQROD}wt7jE;yYrXI&FMNX+9_@v1 z61W4KB}t0$5^V8m5bK54dEu?R@ZDZ`oEKj2g~xm0N4@YiP5qAwC%gm+UJcHA;cdO} z1}{9(3wL|r?Y!_tFFaYtY5Z?^3EJxdqS~~i9!l}Tjb3=F7arz?YuiFDjrPK|ds2=k z0C!M{40Pa-_(}C@(9sLe^ujxN;W=J-h8Ldag?IMC?ajDD%JdQxH4CIHFTBJH@8X4* zdf{EY@G>vF>GlEgaxc6aukR487J3P~dnu~)!h3k(tGw_WFTB|8LaXGh+pEz&-deJ`|(r!_;G&xa6f)XGwEB-^Y*d=EryP#Xk({OZU5;KyI~<1hH}pZW10 z>byf6^Y?W?&jCOFO+S8zAOE5s|Fj>!-jA=*c!!>JRelwg`0?}o_}PB^6hD5PA3xlW zA0l{1Q`QggtI)@f@8-vM^5c{J_||@WOFuq@^N!|e7vNXn))~JX@Z*2*<1hR17yS6o zblzTVNT$1pP_w<7S<=$G*p^|Xs0n#?DUm*3U<2rBxfZpr*Mgl6x9l|m_YmoMqoSp~ zI$+KjR+biLr&p2GpZo?(q?iR|Hw`AXGa?C*>e<@ld0rE^}(CvSQ@&iCxq15Sj#C566K?>ypu z_$FK2xuE0gXl-{6xN&5_by~` zw5fF@FCh@O-u^%&SO3fcEFl%Oi3Al5>spU&fNz@Yq+;)UC24Ho- z$y3}yBG=_S3{9`B&>c!^QrGz}wks=B*>Qt?o0X!h_??AzN$xfKcitI|_Uhp{hn#?l zvv%i4r28I(;v8_TIv{|npC7n<$u+5>!~V$>=bL}9IbC9u2Y+YIF1`8~v4x&Y=|H<0 z^zG5CdN@(N92L8gftqelqYP*RK@D)p?yTDK8AV^UWo_4JM-0_MnIM?%#T!-CpAl@U ziKMk^lW4$6O}D|M5p^HJ4hzB!KEiBGI8g{|eS~qEus{e`edckHajpRh=V0UEtSS~w zcuRnzI9Mh?wBT+QaBvp5>h-+-q=WY5ZW-R3pc<174sssK-$!|YGNGq{9;rGDqJuS& z@1w|U*(-XV{Rce_LJ!*3i?&C-+B&Q11h|_8WUnu9^Y+}uCO;aR+HVq7xA?TL72t*@ zkR{}|WUKpyvbjCV3T|+P6dt)R0+UV)&RJC{+OBG9OA(d}aA6bZtslAfG?#qqr5T`ewQ2(jHmPMledu>=)GzArD}k|sD0tpM9W z&=*)4jtp`h&fibv!s;rL7FO4gw9t8MQ0Qx?3!U{KN9;8gg^Is_YnM;joyUZYOrb2N zSs4r`2ryLxp*550K`qsT+QRDfRHv}|X{rP5pAQi! zO%dh+Ey^+;&HE$1tX5n6u-<}cE8A62cCq$)jCpEE$Y;C z8>k8I5yIU<$m<|87blS+$NIBmqPpfNw`4em=DZ?mjNvubyZ=W8ZQ9(LFN~`~zcy_+ zLF-Pq?1_nj@amz12I$K3_<;#w6w9K6j2lki(*3Tct^JQ44>l^D3Z38E4}7npGUbQe zdD0&Gn((rEJ*l(H$LvQ8CrIm6J9>;`)m6egpX=A)!4T)QK?km>G!<*wk?HlMtf<|3cny}9V2;Z0R=)kKx6UH?CL++@Zf z77X3a+`Y}i=co|f`*Ji!VUm?-d(r|mzD$q_>>ddkxjpjhGb_(GRW z5JE~fbaJtS0%%_GjJLpI`#TT&x1Yb|u~AJL zz*7ZIqpARS!|KRd07e8^T|?Iur-Sc78^5Quc(Kr&O49Y5ne+)yPQKS22cN{|JLWs? z!9UbH;=VvmH?8Moq_H`=eiVC6w@%QspB_WIA9FiA9-;J^tB_&7z&Jb3vP4ylBFRL3hs9x{oQ_Cx~ zG=^5~C6BxoQR<9H)UD#9B__oy-w-PHh*c#BLj(g~r7K(TgSiKAxdZnRdVxeXM{&X)>q`$g`8j5?jNTi#SYrk636w?1DBHW{<3OjN|qTSK7-qJRQyCT-x z9oXhwHPl{}Yn!JN-yG=PhAw*$RnS3Nic&^u$?_9&mwLJfjg;1ddgt)mxL41O;SSMF zZWym#Pu*nK=ll_O49SjE?FNbtldgP%AG`B&`++O^3fSBv^fg>L*Hcwom#Pi5%Wrr> zS3L2*Z@||-wD4b-#H}$F6KB;zQmVOM(=7wO(_$CGW1JrkNe+$5dS0#B`EeJ~e{qo7 z|4G^pQuOO?y8dDrE+rGxu@pe)vKXvWSI0H?9G^NOtz2*kBbcW<1WyiqjXbJXoK+Rv zQJ%2Xf^nYQlYl

*u05dZ&Mb26!x!i(6JZ&A$RZ1|rdMkJLPlR~x9}KMe3EB&b<0 z(T%&dSPJ((ptyA8h&w?nV*hj5(Gumc?|P#?_D#ZbpY?=aCGVv5RLHL!_{-y&ni1Lt z&pdF1w#j234|z)I@(!CdG)@Vh%^m^i{?*PcLuFa{VJ6#l=ME)pCL3K8uUKZX2a7V4 zuV%2V;114U$3R}3!M+DsHG>5Yi;tW+gBFF~-D5`~(O$z<&^`A8%N-V@tPey%{cGv5j_gcFCK1p{(5&|^|Ycw=XdU&=h>9I+9{LI zu}AKTQ*J-Uw%nDXv_8j9-qpd}_yu*9Bf7H4 zLd7Mkdl{R1_h{wvH1^Tmz04~vV8nYHLaP>CU=hXRTC|-;&U@UEBZ&Uwj{AZwD^5`? z)7ZA+L2W*qit7OzjwPos$yoJ4=!$_zuRXL7LGklbS;X*U#W9uj8Xm7qoXSQIZ>0>J z$`%YyQzE9a=Z7bU-JBxfQIy``rzz~r@Se&GQ&@`;BZIq6m!zqo86mx=vw0(WjO&7g zaK4ABzlxT~cj<3a0f+P!hGN|XFia5CQH8AS9 z>C`#Uv#y?=>7kN)0eWfV5+$>YtsMEH^7?7ksiaNFib>qS^7jp%Iwo@*r=q)1-Ku$dW8Q4qh^t8pX71Bd73###VG?% zv6n}s#_oU*dtMdYb7LZ@>*E1&cl(T888tjMgT(bh>=fc1BtCqKm5lDFlzqxpj@};| z1kd(RXb5UqDOa)w#J&GhHet*i%E3~$eN2tAd;;q|_9dnI6ZXy6sX;HCK-#@}f)$Os zo_6*VO8ob)R)w~KijdDIK;2hDUBx)Au05%H{REpmesJt?5(m(oOHH>hAwCGmJ>&#C zIsQRq;>T>rgc-5j#-mmzt=3qsDGxN8#asqwMV|Pqf{71bS;0B^)91((*-lZP3l3kKtJ%mi2GlSC6oHQ`41xqu8@k zTPm5O*jrQYQ2sj1)M-PNF-O?l(?%%o9bwz1Wh?s*v#+PMR$e`_wk)!}5zY-lo+cn^ z=Qj+hUYr!|E*`*hc|g`B_uKEofkW@JUS-+J--lUw*+3=W2z$G%y)y0y`?@S4=;|R< z`0WrgPJdbX;ShU$dZ{wzeHJmJSgCrCO`p+5k?vxT%qUS}-(#0%j8XO-Wcf3v#wOo| z0e#y*BiSvXh)ADacVj@uy~hsB931=HFo+Kc@!mVR_%vF$|2W8!XLX6~M&gf!xLk-I zA@Pob?7msuW8a6uJ)ddHg}4`q#~ow`ARbQQ^Fn-LC|CYH6uLtWvhdm6V=tq{o{K_U zDa22bc;5jw5#sqIz9Ph#LOhtnvk$P>XQwIyhO%?BUst*fVUNy+Q zi<9=yHjMn08?=?dA1{VTQdYftFm7D0dbiIA@p!JR-Nyne z-c!21&Hi06Tsgj*CC*O{dlBlFd#npWoUkA8`)W3F{+g&2Z&Q{XLXK5r*eCt_d&dl(1$mnl^q!x z=KgXwMc3^c4CQ`)^WdaM+3p~Mk<3QEV2=tD)s2Ik*WBmf-GV!nnS*!ETY$^#@j>kV zg-0Bz6i_fs(57#?8O!-{Prx3;jJ5o?L7}&wLDw3n&P%&QodKvbWYQ0iLUIJ5V)N?$ z;4QwjNgA~LmVsaQMB~p;Wixg5bkVqKeQVU8G&8cWdQs*O=Z{02Z0IAwA!=yVm#y%p z>d>%&rv~r*^no-*so%-|UR106xQo>;{#0?+u_;SNC|9c4z9p*_R>$smXqj@ZfPMT> zrsY;0B1V@O-8)}nX2-7J3r#y#7dg)^_ySb<%D_NdlI-N%&9k4%-J+|Db6z^cMD^>^X?}wTbUtv2| zY*glL-FZjVJX!g18LMA;zp`=*%Xv6gvA@jje|UI{ua}ZJixT=)$XOIu6)G%$Z4|ry zaIc`yTTA&n;F~HhHxKMa?T#zmivCk{pH*vJXV+qR1=XMTxEL&E3Kf7~z z?JIIv?o+JyvrQ~XN$SK7vpbZh=I@MH zH&<3N+V6aLeG6F`md>7fJYMOV&fa;vQrVft`nc>$ifiY?uC}sbc${tBkdl2z2h6^2 zR2qzK5vfG_v;uK=eH{DjHvEstm3`LVhk$Vx&xg!;9}9S5bIv#A*qj)Wi~zAmF=Ubu zQzFcL3@z=|1xeA9?Onwm!sZ+8OAnnzh4Yn#}8ks(f zWhoWg(krEy#1LLW6j}9jZD~R1XrS&JYdjtxu<>dOQbIParLx$KvC6`=toz1J`44bk z7A8C2e-{lr*!!nom2&<>vwk1!(~BR4&W3UMW8a%v>z)aHP?iK`^hm0vj{=W2_BZ{C zK%DQpt!r50#>C#~XjkCuFs6XF%O96N{yj8W7p^z@1fGhu*6uurD2`zpfAu7^tx07= zp6;l;lgbu7JxJM5%ML%CrtGU_KR?||Ir$jt^h}gevWDIM%%mt4kF>PWTJ8y45XIL- z>tt5{OoFmFg^sW1_N?2c3Z+$hwrx|o za;}V>*>qkRki7HF=M0MSUNw8?g^tRHQ`nUk+A3S8Fw5p1ZPTiomfBHA@W=(nph?j3#2V=Cb(T_x_SWE*$HDT`y+o*gOu%*!ZM=MVg?ASo@OA}@;)s9y}a z@gfAy_p9m`j<(lSBw6_CjO6LPlmfnCn7;(q-1wy|;nhfaDeLxX@`$@&!2Ps?=MQd5 zFz-T+L=$QGA;=(SJvM$nj=?PgMvJbv%V0qKF}@5X_axCWPPD8MEw@Cox>wV?y@9Q=H@}tO@ukiaq_>6y?|`W~gfy^&;I024b3IeE`{jC_Lxh=q`VV^{vB= zg@cW$OKa`nWJUF@*?{_M@?4gAV5o{GM(n8rYgyjG26j_1mu!00}G71IT+_?oVCCrK+$oMYvKttVrTVx0RfIJ z*v3=>-h#7{#MnU8;xuBvl3MTa)Z;vXomA~Uk0)3nx@(7UWx&@r7S z+T#742ahdN9LLUiJdfZ!kMmQU*KmG=^Tv6P=O>&NoHxN=0zHRQz2NaY4t@mAEjSx- zZUSD5vl3?+&Jvt zK`TI$W?+7S)`0E?HO=&R&Vr5xy#aa!G#U%m2eXi`pnrmv1mXqY`)7MR3jwTK;qhz) zHLOAd(8-`lSmq*~n9!gFpo>9^L2E%PK(~W#20aRT3iJ}F;StPGI9vc43AzF_74-UQ zkLM8Rp~rxmBuOGxcp8AunTk{XcG1Xn?NUn)`M1no&sG5>IU5fdK2^%Xjrf$ zWn+hs3wj;2477q_s)Mco-441Av>r4GyORdc0?_M3*P{mQG@ynj;1Fmr=nBw+ClMHE1?Vo& zOQ4RUD6D%5i3Yk0)DQy08=(+%9jF~N=^2bMXffz2l4EV%1$qgzk>s1u&I$vd(V&|_ zi$D*7P6o|>4i11OJ&&OREdV_ay6$<8!_$bubpV!72ww1b5X3v@H+DbU@-pMYbalTX4R zwz`H-F|?qOpp~F2KzD&Aox%`;7CTU|V9PuiGy(JwXdx&)?5+ge1-cRR6lfjjCD22l zk*DDxXa%OSp(P>#jRU;|nn^t7e>vzb&=sJkKsSJ9W38wMEyg+%hGzqg>@N`+3KgKM zL6g41A_ZCu8i`H8F3>{Ibq$yupqD_mgI)(c1X}zxrXAs+3D}^lxQK{BlP)1r&;rn- zpcSB(NPZasW7B2$4nrIx4V5ZTCsRCyv z@CMvZ=?87mR^yZ>V@W1(fHiET(my0n8Da^-VnXumID0^TpO3tZ%M*Yd$GHmf>CJLS zNZ^3wsxpSx;Yu1I{1BBEH&=p@c}+&bum?<=;_(dgk=vW(nUIf${4pQ-$|iXc7fA-=1A*+lbu2vdxb|{NAMcE7-En2gerTg1BWRuD+T$2ecH}u9fWD&%4KN zMA7&#-p(R1`koT94p{cXtos*=K-|{^ zV4Hzq3E>CT%LZ2Gg{1e3<=-;wBVVtYYoYrDvQ#@f5DKxSa5V z6kP�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 diff --git a/kintox11/src/kintox11.c b/kintox11/src/kintox11.c index f70456f..c626a06 100644 --- a/kintox11/src/kintox11.c +++ b/kintox11/src/kintox11.c @@ -274,8 +274,8 @@ int main(void){ char buffer[10240]; struct json_object *parsed_json, *config, *config_obj, *config_obj_name, *config_obj_run, *config_obj_run_oninput, - *config_obj_de, *config_obj_appnames, *appnames_obj, - *init, *de, *de_obj, *de_obj_id, *de_obj_active, + *config_obj_run_offinput, *config_obj_de, *config_obj_appnames, + *appnames_obj, *init, *de, *de_obj, *de_obj_id, *de_obj_active, *de_obj_run, *de_obj_runterm,*de_obj_rungui; int arraylen; @@ -302,6 +302,7 @@ int main(void){ const char *name_array[arraylen]; const char *run_array[arraylen]; const char *run_oninput_array[arraylen]; + const char *run_offinput_array[arraylen]; int init_array[init_len]; int de_id_array[de_len]; @@ -354,10 +355,12 @@ int main(void){ config_obj_name = json_object_object_get(config_obj, "name"); config_obj_run = json_object_object_get(config_obj, "run"); config_obj_run_oninput = json_object_object_get(config_obj, "run_onInput"); + config_obj_run_offinput = json_object_object_get(config_obj, "run_offInput"); name_array[i] = json_object_get_string(config_obj_name); run_array[i] = json_object_get_string(config_obj_run); run_oninput_array[i] = json_object_get_string(config_obj_run_oninput); + run_offinput_array[i] = json_object_get_string(config_obj_run_offinput); // printf("%s\n%s\n", json_object_get_string(config_obj_name), json_object_get_string(config_obj_run)); config_obj_appnames = json_object_object_get(config_obj, "appnames"); @@ -417,11 +420,13 @@ int main(void){ char * run_normal; char * run_onInput; + char * run_offInput; char * prior_app; char * current_app; char * prior_category; char * current_category; run_onInput = malloc(sizeof(char)*400); + run_offInput = malloc(sizeof(char)*400); run_normal = malloc(sizeof(char)*400); prior_app = malloc(sizeof(char)*100); current_app = malloc(sizeof(char)*100); @@ -493,6 +498,7 @@ int main(void){ ran_onInput = 0; strcpy(run_normal,run_array[category_idx]); strcpy(run_onInput,run_oninput_array[category_idx]); + strcpy(run_offInput,run_offinput_array[category_idx]); for(r = 0; r < config_de_max; r++){ if(config_de_array[category_idx][r] != -1){ int de_id_idx = in_int(de_id_array, de_len, config_de_array[category_idx][r]); @@ -520,7 +526,7 @@ int main(void){ // printf("run_onInput: %ld\n",strlen(run_onInput)); XEvent e; if(strlen(run_onInput) > 0){ - while(XNextEventTimeout(d, &e, 1.0, event_ts, last_event, &event_ts, &last_event)){ + while(XNextEventTimeout(d, &e, .5, event_ts, last_event, &event_ts, &last_event)){ if(check_caret(run_onInput) && ran_onInput == 0){ // printf("run_onInput: %s\n",run_onInput); system(run_onInput); @@ -528,7 +534,7 @@ int main(void){ } else if(!check_caret(run_onInput) && ran_onInput == 1){ // printf("run_normal: %s\n",run_normal); - system(run_normal); + system(run_offInput); ran_onInput = 0; } // e.type = Expose; diff --git a/setup.py b/setup.py index 20163bb..edfb6ff 100755 --- a/setup.py +++ b/setup.py @@ -15,6 +15,29 @@ def cmdline(command): ) return process.communicate()[0] +def requirements(): + print(bcolors.CYELLOW + "You need to install some packages, " +run_pkg+ ", for Kinto to fully remap browsers during input focus.\n" + bcolors.ENDC) + print("sudo apt-get install -y " + run_pkg + "\n") + run_install = yn_choice(bcolors.CYELLOW + "Would you like to run it now? (Will require sudo privileges.)\n" + bcolors.ENDC) + if(run_install): + os.system("sudo apt-get install -y " + run_pkg) + print("\n") + +check_xbind = symbols_gui_line = cmdline("which xbindkeys").strip() +check_xte = symbols_gui_line = cmdline("which xte").strip() + +if len(check_xbind) > 0 and len(check_xte) > 0: + print("Xbindkeys and xte requirement is installed.") +elif len(check_xbind) == 0 and len(check_xbind) == 0: + run_pkg = "xbindkeys xautomation" + requirements() +elif len(check_xbind) == 0: + run_pkg = "xbindkeys" + requirements() +elif len(check_xte) == 0: + run_pkg = "xautomation" + requirements() + try: f = open("defaults.json") except IOError: @@ -152,9 +175,12 @@ if len(defaultde) != 0: user_config['config'][0]['de'] = tweaks_selected # term user_config['config'][1]['de'] = tweaks_selected + # browsers + user_config['config'][2]['de'] = tweaks_selected user_config['config'][0]['run'] = keyboardconfigs[defaultkb-1]['gui'] user_config['config'][1]['run'] = keyboardconfigs[defaultkb-1]['term'] +user_config['config'][2]['run'] = keyboardconfigs[defaultkb-1]['gui'] os.remove(user_file) with open(user_file, 'w') as f: diff --git a/system-config/.browsers b/system-config/.browsers new file mode 100644 index 0000000..7128056 --- /dev/null +++ b/system-config/.browsers @@ -0,0 +1,5 @@ +"xte 'keydown Control_L' 'key bracketleft' 'keyup Control_L'" + Home + release + +"xte 'keydown Control_L' 'key bracketright' 'keyup Control_L'" + End + release diff --git a/system-config/cleanup.sh b/system-config/cleanup.sh new file mode 100644 index 0000000..087906e --- /dev/null +++ b/system-config/cleanup.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +rm /tmp/kinto/caret diff --git a/system-config/keyswap.service b/system-config/keyswap.service index fa488f3..309ea46 100755 --- a/system-config/keyswap.service +++ b/system-config/keyswap.service @@ -7,7 +7,8 @@ Type=simple Restart=always RestartSec=1 WorkingDirectory=/home/{username}/.config/kinto -ExecStart= +ExecStart=/bin/bash -c "/home/{username}/.config/kinto/xactive.sh carrots" +ExecStop=/bin/bash /home/{username}/.config/kinto/cleanup.sh [Install] WantedBy=default.target diff --git a/user_config.json b/user_config.json index b03a4bc..fc63656 100644 --- a/user_config.json +++ b/user_config.json @@ -2,6 +2,9 @@ "name":"gui", "run":"", "run_onInput":"", + "run_offInput": "", + "symbols":"", + "types":"", "de":[], "appnames":[ "" ] }, @@ -9,8 +12,21 @@ "name":"term", "run":"", "run_onInput":"", + "run_offInput": "", + "symbols":"", + "types":"", "de":[], "appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm" ] + }, + { + "name": "browsers", + "run": "", + "run_onInput": "killall xbindkeys > /dev/null 2>&1", + "run_offInput": "xbindkeys -f $HOME/.config/kinto/.browsers", + "symbols":"", + "types":"", + "de": [], + "appnames":[ "Chromium","Firefox" ] }], "init": [], "detypes":["gnome2","gnome3","kde4","kde5","xfce","i3wm"], From fbe2451a3c2902256fdacadce1dbc329a29d185f Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 16 Feb 2020 18:11:57 -0600 Subject: [PATCH 06/16] - Fixed possible issue where the browser keymap would not fully undo if switched out with another app category --- kintox11/binary/kintox11 | Bin 258904 -> 258912 bytes kintox11/src/kintox11.c | 3 ++- user_config.json | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/kintox11/binary/kintox11 b/kintox11/binary/kintox11 index 21689efc1b4b6a754a07269b3bc1db2e3d148016..e376c776798e704e85aea09f68dcc7b4bd2e13c1 100755 GIT binary patch delta 39831 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 diff --git a/kintox11/src/kintox11.c b/kintox11/src/kintox11.c index c626a06..afae930 100644 --- a/kintox11/src/kintox11.c +++ b/kintox11/src/kintox11.c @@ -495,10 +495,11 @@ int main(void){ printf("%s: %s\n",current_category,current_app); // printf("run: %s\n",run_array[category_idx]); system(run_array[category_idx]); - ran_onInput = 0; strcpy(run_normal,run_array[category_idx]); + ran_onInput = 0; strcpy(run_onInput,run_oninput_array[category_idx]); strcpy(run_offInput,run_offinput_array[category_idx]); + system(run_offInput); for(r = 0; r < config_de_max; r++){ if(config_de_array[category_idx][r] != -1){ int de_id_idx = in_int(de_id_array, de_len, config_de_array[category_idx][r]); diff --git a/user_config.json b/user_config.json index fc63656..a6f0e46 100644 --- a/user_config.json +++ b/user_config.json @@ -2,7 +2,7 @@ "name":"gui", "run":"", "run_onInput":"", - "run_offInput": "", + "run_offInput": "killall xbindkeys > /dev/null 2>&1", "symbols":"", "types":"", "de":[], @@ -12,7 +12,7 @@ "name":"term", "run":"", "run_onInput":"", - "run_offInput": "", + "run_offInput": "killall xbindkeys > /dev/null 2>&1", "symbols":"", "types":"", "de":[], From 778d1df1ba47621fc7a92a157da9dc1ca8fd69c9 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 16 Feb 2020 20:10:37 -0600 Subject: [PATCH 07/16] - Additional updates that give Firefox and Chrome separate keymap files due to shortcut differences --- keyswap_service.sh | 4 +++- kintox11/binary/kintox11 | Bin 258912 -> 258968 bytes kintox11/src/kintox11.c | 11 ++++++---- setup.py | 30 +++++++++++++++++--------- system-config/.chrome-nw | 7 ++++++ system-config/.chrome-ww | 5 +++++ system-config/{.browsers => .firefox} | 4 ++-- user_config.json | 28 ++++++++++++++++-------- 8 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 system-config/.chrome-nw create mode 100644 system-config/.chrome-ww rename system-config/{.browsers => .firefox} (50%) diff --git a/keyswap_service.sh b/keyswap_service.sh index f8f4316..f0c41b5 100755 --- a/keyswap_service.sh +++ b/keyswap_service.sh @@ -14,7 +14,9 @@ cp ./kintox11/binary/kintox11 ~/.config/kinto/kintox11 cp ./system-config/xactive.sh ~/.config/kinto/xactive.sh cp ./system-config/caret_status.sh ~/.config/kinto/caret_status.sh cp ./system-config/cleanup.sh ~/.config/kinto/cleanup.sh -cp ./system-config/.browsers ~/.config/kinto/.browsers +cp ./system-config/.firefox ~/.config/kinto/.firefox +cp ./system-config/.chrome-ww ~/.config/kinto/.chrome-ww +cp ./system-config/.chrome-nw ~/.config/kinto/.chrome-nw sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service systemctl --user daemon-reload systemctl --user enable keyswap diff --git a/kintox11/binary/kintox11 b/kintox11/binary/kintox11 index e376c776798e704e85aea09f68dcc7b4bd2e13c1..5d3b6dbe491e4e53ad9a0fc2742fe146d68aac49 100755 GIT binary patch delta 25929 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 delta 25887 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 0){ while(XNextEventTimeout(d, &e, .5, event_ts, last_event, &event_ts, &last_event)){ - if(check_caret(run_onInput) && ran_onInput == 0){ + if(check_caret() && ran_onInput == 0){ // printf("run_onInput: %s\n",run_onInput); system(run_onInput); ran_onInput = 1; } - else if(!check_caret(run_onInput) && ran_onInput == 1){ - // printf("run_normal: %s\n",run_normal); + else if(!check_caret() && ran_onInput == 1){ + // printf("run_offInput: %s\n",run_offInput); system(run_offInput); ran_onInput = 0; } diff --git a/setup.py b/setup.py index edfb6ff..c6639f4 100755 --- a/setup.py +++ b/setup.py @@ -25,17 +25,20 @@ def requirements(): check_xbind = symbols_gui_line = cmdline("which xbindkeys").strip() check_xte = symbols_gui_line = cmdline("which xte").strip() +check_xdotool = symbols_gui_line = cmdline("which xdotool").strip() -if len(check_xbind) > 0 and len(check_xte) > 0: - print("Xbindkeys and xte requirement is installed.") -elif len(check_xbind) == 0 and len(check_xbind) == 0: - run_pkg = "xbindkeys xautomation" - requirements() -elif len(check_xbind) == 0: +runpkg = 0 + +if len(check_xbind) > 0 and len(check_xte) > 0 and len(check_xdotool) > 0: + print("Xbindkeys, xdotool and xte requirement is installed.") +if len(check_xbind) == 0: run_pkg = "xbindkeys" - requirements() -elif len(check_xte) == 0: - run_pkg = "xautomation" +if len(check_xte) == 0: + run_pkg += " xautomation" +if len(check_xdotool) == 0: + run_pkg += " xdotool" + +if runpkg != 0: requirements() try: @@ -119,6 +122,7 @@ if os.path.isdir(homedir + "/.xkb/keymap") == False: time.sleep(0.5) os.system('setxkbmap -option') os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui') +os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.nw') os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.term') time.sleep(0.5) @@ -130,6 +134,9 @@ cmdline('sed -i '' -e "' + symbols_gui_line + 's/\\"/' + keyboardconfigs[default cmdline('sed -i '' -e "' + types_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui') cmdline('sed -i '' -e "' + symbols_term_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_term'] + '\\"/2" ~/.xkb/keymap/kbd.mac.term') +cmdline('sed -i '' -e "' + symbols_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw') +cmdline('sed -i '' -e "' + types_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw') + user_file = homedir + '/.config/kinto/user_config.json' with open(user_file, 'r') as f: @@ -175,12 +182,15 @@ if len(defaultde) != 0: user_config['config'][0]['de'] = tweaks_selected # term user_config['config'][1]['de'] = tweaks_selected - # browsers + # firefox user_config['config'][2]['de'] = tweaks_selected + # chrome + user_config['config'][3]['de'] = tweaks_selected user_config['config'][0]['run'] = keyboardconfigs[defaultkb-1]['gui'] user_config['config'][1]['run'] = keyboardconfigs[defaultkb-1]['term'] user_config['config'][2]['run'] = keyboardconfigs[defaultkb-1]['gui'] +user_config['config'][3]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.nw") os.remove(user_file) with open(user_file, 'w') as f: diff --git a/system-config/.chrome-nw b/system-config/.chrome-nw new file mode 100644 index 0000000..7fd0b99 --- /dev/null +++ b/system-config/.chrome-nw @@ -0,0 +1,7 @@ +"xdotool key --delay 0 --clearmodifiers Alt+Left" + Control + Left + Release + #Home + release + +"xdotool key --delay 0 --clearmodifiers Alt+Right" + Control + Right + Release + #End + release diff --git a/system-config/.chrome-ww b/system-config/.chrome-ww new file mode 100644 index 0000000..9717ad1 --- /dev/null +++ b/system-config/.chrome-ww @@ -0,0 +1,5 @@ +"xdotool key --delay 0 --clearmodifiers Home" + Control + Left + Release + +"xdotool key --delay 0 --clearmodifiers End" + Control + Right + Release diff --git a/system-config/.browsers b/system-config/.firefox similarity index 50% rename from system-config/.browsers rename to system-config/.firefox index 7128056..b9aacf8 100644 --- a/system-config/.browsers +++ b/system-config/.firefox @@ -1,5 +1,5 @@ "xte 'keydown Control_L' 'key bracketleft' 'keyup Control_L'" Home + release -"xte 'keydown Control_L' 'key bracketright' 'keyup Control_L'" - End + release +"xte 'keydown Control_R' 'key bracketright' 'keyup Control_R'" + End + release \ No newline at end of file diff --git a/user_config.json b/user_config.json index a6f0e46..31e42cb 100644 --- a/user_config.json +++ b/user_config.json @@ -19,15 +19,25 @@ "appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm" ] }, { - "name": "browsers", - "run": "", - "run_onInput": "killall xbindkeys > /dev/null 2>&1", - "run_offInput": "xbindkeys -f $HOME/.config/kinto/.browsers", - "symbols":"", - "types":"", - "de": [], - "appnames":[ "Chromium","Firefox" ] - }], + "name": "firefox", + "run": "", + "run_onInput": "killall xbindkeys > /dev/null 2>&1", + "run_offInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.firefox", + "symbols": "", + "types": "", + "de": [], + "appnames": [ "Firefox" ] + }, + { + "name": "chrome", + "run": "", + "run_onInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.chrome-ww", + "run_offInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.chrome-nw", + "symbols": "", + "types": "", + "de": [], + "appnames": [ "Chromium" ] + }], "init": [], "detypes":["gnome2","gnome3","kde4","kde5","xfce","i3wm"], "de":[{ From ac5c5f664880fbeb89eb1b3638cd3de1d018af50 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Sun, 16 Feb 2020 20:54:51 -0600 Subject: [PATCH 08/16] - Added keyboard reset and kill any xbindkeys services running when the kinto keyswap service is stopped via systemctl --- system-config/cleanup.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system-config/cleanup.sh b/system-config/cleanup.sh index 087906e..8867cd3 100644 --- a/system-config/cleanup.sh +++ b/system-config/cleanup.sh @@ -1,3 +1,5 @@ #!/bin/bash +setxkbmap -option +killall xbindkeys > /dev/null 2>&1 rm /tmp/kinto/caret From 9dc026695b4fe6aca68b06c3b2f66206fc617401 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 13:51:46 -0600 Subject: [PATCH 09/16] - Fixed chrome keymap issue with xkb and no looping issues --- .xkb/symbols/mac_gui | 14 ++++++++++++++ setup.py | 4 +++- user_config.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.xkb/symbols/mac_gui b/.xkb/symbols/mac_gui index d05bd9e..9d32f16 100644 --- a/.xkb/symbols/mac_gui +++ b/.xkb/symbols/mac_gui @@ -30,3 +30,17 @@ default partial xkb_symbols "mac_levelssym" { // actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,clearmods=Control)] // }; }; +partial xkb_symbols "mac_chrome" { + // Back Button + replace key { + type[Group1]= "ONE_LEVEL_CTRL", + symbols[Group1]= [ Left, Left, Left ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,modifiers=Mod1,clearmods=Control)] + }; + // Forwards Button + replace key { + type[Group1]= "ONE_LEVEL_CTRL", + symbols[Group1]= [ Right, Right, Right ], + actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,modifiers=Mod1,clearmods=Control)] + }; +}; \ No newline at end of file diff --git a/setup.py b/setup.py index 587b493..ea9867a 100755 --- a/setup.py +++ b/setup.py @@ -123,6 +123,7 @@ if os.path.isdir(homedir + "/.xkb/keymap") == False: os.system('setxkbmap -option') os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui') os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.nw') +os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.chrome') os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.term') time.sleep(0.5) @@ -135,6 +136,7 @@ cmdline('sed -i '' -e "' + types_gui_line + 's/\\"/' + keyboardconfigs[defaultkb cmdline('sed -i '' -e "' + symbols_term_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_term'] + '\\"/2" ~/.xkb/keymap/kbd.mac.term') cmdline('sed -i '' -e "' + symbols_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw') +cmdline('sed -i '' -e "' + symbols_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome') cmdline('sed -i '' -e "' + types_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw') @@ -190,7 +192,7 @@ if len(defaultde) != 0: user_config['config'][0]['run'] = keyboardconfigs[defaultkb-1]['gui'] user_config['config'][1]['run'] = keyboardconfigs[defaultkb-1]['term'] user_config['config'][2]['run'] = keyboardconfigs[defaultkb-1]['gui'] -user_config['config'][3]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.nw") +user_config['config'][3]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.chrome") os.remove(user_file) with open(user_file, 'w') as f: diff --git a/user_config.json b/user_config.json index 31e42cb..754ecf0 100644 --- a/user_config.json +++ b/user_config.json @@ -31,8 +31,8 @@ { "name": "chrome", "run": "", - "run_onInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.chrome-ww", - "run_offInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.chrome-nw", + "run_onInput": "xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", + "run_offInput": "xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui.chrome $DISPLAY", "symbols": "", "types": "", "de": [], From 16c4378c2e43e5a91196e6a2b21148310ddc2f77 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 14:46:34 -0600 Subject: [PATCH 10/16] - Added some changes to firefox and app requirements for keybinding browsers --- keyswap_service.sh | 4 +--- setup.py | 7 ++----- user_config.json | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/keyswap_service.sh b/keyswap_service.sh index f0c41b5..3b9841b 100755 --- a/keyswap_service.sh +++ b/keyswap_service.sh @@ -14,9 +14,7 @@ cp ./kintox11/binary/kintox11 ~/.config/kinto/kintox11 cp ./system-config/xactive.sh ~/.config/kinto/xactive.sh cp ./system-config/caret_status.sh ~/.config/kinto/caret_status.sh cp ./system-config/cleanup.sh ~/.config/kinto/cleanup.sh -cp ./system-config/.firefox ~/.config/kinto/.firefox -cp ./system-config/.chrome-ww ~/.config/kinto/.chrome-ww -cp ./system-config/.chrome-nw ~/.config/kinto/.chrome-nw +cp ./system-config/.firefox-nw ~/.config/kinto/.firefox-nw sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service systemctl --user daemon-reload systemctl --user enable keyswap diff --git a/setup.py b/setup.py index ea9867a..bad4f03 100755 --- a/setup.py +++ b/setup.py @@ -24,17 +24,14 @@ def requirements(): print("\n") check_xbind = symbols_gui_line = cmdline("which xbindkeys").strip() -check_xte = symbols_gui_line = cmdline("which xte").strip() check_xdotool = symbols_gui_line = cmdline("which xdotool").strip() runpkg = 0 -if len(check_xbind) > 0 and len(check_xte) > 0 and len(check_xdotool) > 0: - print("Xbindkeys, xdotool and xte requirement is installed.") +if len(check_xbind) > 0 and len(check_xdotool) > 0: + print("Xbindkeys, and xdotool requirement is installed.") if len(check_xbind) == 0: run_pkg = "xbindkeys" -if len(check_xte) == 0: - run_pkg += " xautomation" if len(check_xdotool) == 0: run_pkg += " xdotool" diff --git a/user_config.json b/user_config.json index 754ecf0..ff13b7c 100644 --- a/user_config.json +++ b/user_config.json @@ -22,7 +22,7 @@ "name": "firefox", "run": "", "run_onInput": "killall xbindkeys > /dev/null 2>&1", - "run_offInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.firefox", + "run_offInput": "killall xbindkeys > /dev/null 2>&1;xbindkeys -f $HOME/.config/kinto/.firefox-nw", "symbols": "", "types": "", "de": [], From 4b4fc7fc3f0f8b112af8f279b3843d8ee988bff9 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 16:20:37 -0600 Subject: [PATCH 11/16] - Added firefox xbindkeys keymap file for overlaying back and forward buttons over wordwise --- system-config/.firefox | 5 ----- system-config/.firefox-nw | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) delete mode 100644 system-config/.firefox create mode 100644 system-config/.firefox-nw diff --git a/system-config/.firefox b/system-config/.firefox deleted file mode 100644 index b9aacf8..0000000 --- a/system-config/.firefox +++ /dev/null @@ -1,5 +0,0 @@ -"xte 'keydown Control_L' 'key bracketleft' 'keyup Control_L'" - Home + release - -"xte 'keydown Control_R' 'key bracketright' 'keyup Control_R'" - End + release \ No newline at end of file diff --git a/system-config/.firefox-nw b/system-config/.firefox-nw new file mode 100644 index 0000000..a2f2578 --- /dev/null +++ b/system-config/.firefox-nw @@ -0,0 +1,7 @@ +#"xte 'keydown Control_L' 'key bracketleft' 'keyup Control_L'" +"xdotool key --delay 0 --clearmodifiers Control_L+bracketleft" + Home + Release + +#"xte 'keydown Control_R' 'key bracketright' 'keyup Control_R'" +"xdotool key --delay 0 --clearmodifiers Control_L+bracketright" + End + Release \ No newline at end of file From ddfcd57c6ba44574047b48be3ec08f775782dbfe Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 16:23:05 -0600 Subject: [PATCH 12/16] - Fixed setup installer --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index bad4f03..dff00de 100755 --- a/setup.py +++ b/setup.py @@ -27,13 +27,16 @@ check_xbind = symbols_gui_line = cmdline("which xbindkeys").strip() check_xdotool = symbols_gui_line = cmdline("which xdotool").strip() runpkg = 0 +run_pkg = "" if len(check_xbind) > 0 and len(check_xdotool) > 0: print("Xbindkeys, and xdotool requirement is installed.") if len(check_xbind) == 0: run_pkg = "xbindkeys" + runpkg = 1 if len(check_xdotool) == 0: run_pkg += " xdotool" + runpkg = 1 if runpkg != 0: requirements() From 28bad9ed428e470a769348b7a9e10fe7d5f43031 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 16:40:19 -0600 Subject: [PATCH 13/16] - Added proper mac_chrome symbols --- .xkb/symbols/mac_gui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.xkb/symbols/mac_gui b/.xkb/symbols/mac_gui index 9d32f16..eebe957 100644 --- a/.xkb/symbols/mac_gui +++ b/.xkb/symbols/mac_gui @@ -35,12 +35,12 @@ partial xkb_symbols "mac_chrome" { replace key { type[Group1]= "ONE_LEVEL_CTRL", symbols[Group1]= [ Left, Left, Left ], - actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,modifiers=Mod1,clearmods=Control)] + actions[Group1]= [ NoAction(), RedirectKey(key=), RedirectKey(key=,modifiers=Mod1,clearmods=Control)] }; // Forwards Button replace key { type[Group1]= "ONE_LEVEL_CTRL", symbols[Group1]= [ Right, Right, Right ], - actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,modifiers=Mod1,clearmods=Control)] + actions[Group1]= [ NoAction(), RedirectKey(key=), RedirectKey(key=,modifiers=Mod1,clearmods=Control)] }; }; \ No newline at end of file From cd57efd89b8c93940b13f3ec6e6b60d97051c64f Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 16:51:19 -0600 Subject: [PATCH 14/16] - Added missing type definition --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index dff00de..6e6c5e3 100755 --- a/setup.py +++ b/setup.py @@ -138,6 +138,7 @@ cmdline('sed -i '' -e "' + symbols_term_line + 's/\\"/' + keyboardconfigs[defaul cmdline('sed -i '' -e "' + symbols_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw') cmdline('sed -i '' -e "' + symbols_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome') cmdline('sed -i '' -e "' + types_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw') +cmdline('sed -i '' -e "' + types_gui_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome') user_file = homedir + '/.config/kinto/user_config.json' From 5c6e42b8119f82c87b61a843b4ce062f49923c73 Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 20:16:53 -0600 Subject: [PATCH 15/16] - Fixed caret status script to not over exclude matches --- system-config/caret_status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-config/caret_status.sh b/system-config/caret_status.sh index 972df1f..375208b 100755 --- a/system-config/caret_status.sh +++ b/system-config/caret_status.sh @@ -3,7 +3,7 @@ mkdir -p /tmp/kinto IBUSADD=$(cat ~/.config/ibus/bus/`ls ~/.config/ibus/bus -1rt | tail -n1` | awk -F'IBUS_ADDRESS=' '{print $2}' | xargs) -dbus-monitor --address $IBUSADD "path='/org/freedesktop/IBus/Panel/Extension/Emoji',interface='org.freedesktop.IBus.Panel',member='FocusOut'" 2> /dev/null | grep --line-buffered -o -P '(?<=object path \"/org/freedesktop/IBus/InputContext_).*(?=[\"])' | +dbus-monitor --address $IBUSADD "path='/org/freedesktop/IBus/Panel',interface='org.freedesktop.IBus.Panel',member='FocusOut'" 2> /dev/null | grep --line-buffered -o -P '(?<=object path \"/org/freedesktop/IBus/InputContext_).*(?=[\"])' | while read ln do printf '%s\n' "$ln" > /tmp/kinto/caret From 83ae169fb736c6bbe03a0b162ffbecd45c142fef Mon Sep 17 00:00:00 2001 From: Ben Reaves Date: Mon, 17 Feb 2020 20:22:21 -0600 Subject: [PATCH 16/16] - Added notes about IBus requirement for full wordwise support and added chromium name to json config --- README.md | 9 +++++++++ user_config.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b2c46b..24e0940 100644 --- a/README.md +++ b/README.md @@ -32,12 +32,21 @@ Kinto works for standard Windows, Apple and Chromebook keyboards. The following - Python (initial install only) - systemd - x11 +- IBus - Debian/Ubuntu based distro 16.04+ If you need kintox11 recompiled for your distro please let me know and I will add a binary for your distro if my binary fails. You can also attempt to compile kintox11.c on your system as well, but you will need to compile and install json-c first as its libraries will be required to compile and run the program. +IBUS is needed to support wordwise during browser app usage as the keymap will need to change slightly depending if the cursor/caret is on screen waiting for input. You may install ibus with the following. + +``` +ibus-setup +``` + +And then navigate to your "Language Support" and set "Keyboard input method system:" to IBus for full word-wise support with web browsers. + Wayland support is planned, but not ready yet. ## How to install diff --git a/user_config.json b/user_config.json index ff13b7c..8f98b2c 100644 --- a/user_config.json +++ b/user_config.json @@ -36,7 +36,7 @@ "symbols": "", "types": "", "de": [], - "appnames": [ "Chromium" ] + "appnames": [ "Chromium","Chromium-browser" ] }], "init": [], "detypes":["gnome2","gnome3","kde4","kde5","xfce","i3wm"],