Compare commits

...

8 Commits

Author SHA1 Message Date
Ben Reaves
50885a7e78 Merge pull request #31 from rbreaves/dev
- Refactored kintox11 to fix multiple app category bug
2020-02-14 18:46:43 +00:00
Ben Reaves
ea60bb6db5 - Refactored kintox11 to fix multiple app category bug 2020-02-14 12:44:34 -06:00
Ben Reaves
4281d97c3d Merge pull request #30 from alexmyczko/patch-1
Makefile for .c source
2020-02-13 15:16:53 +00:00
Alex Myczko
364536b8ea Update Makefile 2020-02-13 08:33:01 +01:00
Alex Myczko
2585ab9f45 Update Makefile 2020-02-13 08:21:10 +01:00
Alex Myczko
7969bd007d Create Makefile 2020-02-13 08:19:13 +01:00
Ben Reaves
5d135afe5e Merge pull request #29 from rbreaves/dev
- word-wise update
2020-02-13 01:58:51 +00:00
Ben Reaves
a4fa9b225e - word-wise update for Alt+Left/Right to send cursor to begin/end of word while in GUI apps. 2020-02-12 19:53:10 -06:00
5 changed files with 76 additions and 90 deletions

View File

@@ -1,15 +1,15 @@
default partial xkb_symbols "mac_levelssym" {
// LEFT to Begin Line
// LEFT to Begin Line or Beginning of word
replace key <LEFT> {
type[Group1]= "ONE_LEVEL_CTRL",
symbols[Group1]= [ Left, Left, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<HOME>,clearmods=Control)]
actions[Group1]= [ NoAction(), RedirectKey(key=<LEFT>,modifiers=Control,clearmods=Mod1), RedirectKey(key=<HOME>,clearmods=Control)]
};
// Right to End of Line
// Right to End of Line or end of word
replace key <RGHT> {
type[Group1]= "ONE_LEVEL_CTRL",
symbols[Group1]= [ Right, Right, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<END>,clearmods=Control)]
actions[Group1]= [ NoAction(), RedirectKey(key=<RGHT>,modifiers=Control,clearmods=Mod1), RedirectKey(key=<END>,clearmods=Control)]
};
// Up to Mac Home
replace key <UP> {

View File

@@ -1,20 +1,11 @@
default partial xkb_types "addmac_levels" {
type "ONE_LEVEL_CTRL" {
modifiers= Shift+Control;
map[Shift]= Level2;
modifiers= Mod1+Control;
map[Mod1]= Level2;
map[Control]= Level3;
map[Shift+Control]= Level3;
map[Mod1+Control]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
level_name[Level3]= "With Control";
};
type "TWO_LEVEL_CTRL" {
modifiers= Shift+Control;
map[Shift]= Level2;
map[Control]= Level3;
map[Shift+Control]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
level_name[Level2]= "Alt";
level_name[Level3]= "With Control";
};
};

Binary file not shown.

5
kintox11/src/Makefile Normal file
View File

@@ -0,0 +1,5 @@
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

View File

@@ -312,8 +312,14 @@ int main(void){
char * prior_app;
char * current_app;
char * prior_category;
char * current_category;
prior_app = malloc(sizeof(char)*100);
current_app = malloc(sizeof(char)*100);
prior_category = malloc(sizeof(char)*100);
current_category = malloc(sizeof(char)*100);
strcpy(prior_app,"none");
strcpy(prior_category,"none");
int remap_bool = 2;
@@ -332,86 +338,70 @@ int main(void){
for (;;)
{
current_app = str_window_class(d, w,prior_app);
breakouter = 0;
// XFetchName(d, w, &name);
// printf("window:%#x name:%s\n", w, name);
// printf("%s\n","1");
// printf("%s\n",str_window_class(d, w,prior_app));
if(strcmp(current_app,prior_app) || !strcmp(current_app,"none")){
// printf("%s\n","2");
for(i = 0; i < arraylen; ++i){
if(breakouter == 0){
if(strcmp(name_array[i],"gui")){
// printf("%s\n","3");
for(n = 0; n < appnames_max; ++n){
// printf("2nd elseif %s i:%ld n:%ld %s\n",name_array[i],i,n,appnames_array[i][n]);
// printf("3rd elseif (i:%ld == arraylen-1:%d && appnames_array[i:%ld][n:%ld+1]:%s == NULL) && (remap_bool: %i == 0 || 2)\n",i,arraylen-1,i,n,appnames_array[i][n+1],remap_bool);
if (appnames_array[i][n] != NULL){
// printf("%s\n",appnames_array[i][n]);
// If statement for triggering terminal config
if((strcicmp(appnames_array[i][n], current_app) == 0 && (remap_bool == 1 || remap_bool == 2))) {
// printf("1st if %s i:%ld n:%ld %s\n",name_array[i],i,n,appnames_array[i][n]);
printf("%s: %s\n",name_array[i],current_app);
system(run_array[i]);
for(r = 0; r < config_de_max; r++){
if(config_de_array[i][r] != -1){
int de_id_idx = in_int(de_id_array, de_len, config_de_array[i][r]);
// printf("Running de command: %s\n",de_run_array[de_id_idx]);
system(de_runterm_array[de_id_idx]);
}
}
remap_bool = 0;
fflush(stdout);
breakouter = 1;
break;
} // Else command for ignoring similar app category based on config
else if((strcicmp(appnames_array[i][n], current_app) == 0 && remap_bool == 0)){
printf(" %s\n",current_app);
// printf("in 2nd elseif %s i:%ld n:%ld %s\n",name_array[i],i,n,appnames_array[i][n]);
// printf("%s\n","4");
breakouter = 1;
break;
} // Else command for triggering gui config
else if ((i == arraylen-1 && (appnames_array[i][n] == NULL || appnames_max == n+1)) && (remap_bool == 0 || remap_bool == 2)){
// printf("in 3rd elseif (i:%ld == arraylen-1:%d && appnames_array[i:%ld][n:%ld+1]:%s == NULL) && (remap_bool: %i == 0 || 2)\n",i,arraylen-1,i,n,appnames_array[i][n+1],remap_bool);
char *find = "gui";
int gui_idx = in(name_array, arraylen, find);
if(gui_idx >= 0) {
printf("%s: %s\n",name_array[gui_idx],current_app);
system(run_array[gui_idx]);
}
for(r = 0; r < config_de_max; r++){
if(config_de_array[gui_idx][r] != -1){
int de_id_idx = in_int(de_id_array, de_len, config_de_array[gui_idx][r]);
// printf("Running de command: %s\n",de_run_array[de_id_idx]);
system(de_rungui_array[de_id_idx]);
}
}
remap_bool = 1;
fflush(stdout);
breakouter = 1;
break;
} // GUI app still - no switching needed
else if ((i == arraylen-1 && appnames_max == n+1) && remap_bool == 1){
printf(" %s\n",current_app);
}
else if ((i == arraylen-1 && appnames_max == n+1)){
printf("%s - Failed to match any keyswap requirements\n",current_app);
}
}
}
strcpy(current_app,str_window_class(d, w,prior_app));
int category_idx;
// printf("current: %s\n",current_app);
breakouter = 0;
// Cycle through category name array
// printf("%d\n",arraylen);
for(i = 0; i < arraylen; ++i){
// Cycle through the maximum App name array in each category
for(n = 0; n < appnames_max; ++n){
if (appnames_array[i][n] != NULL){
// printf("%s\n",appnames_array[i][n]);
if(strcicmp(appnames_array[i][n], current_app) == 0){
strcpy(current_category,name_array[i]);
category_idx = i;
// printf("Match found: %s: %s\n",current_category,current_app);
breakouter = 1;
break;
}
}
else{
else if(i == arraylen-1 && breakouter==0){
// printf("No match found, default to gui");
strcpy(current_category,"gui");
category_idx = in(name_array, arraylen, current_category);
// printf("Match found: %s: %s\n",current_category,current_app);
break;
}
else if(appnames_array[i][n] == NULL){
break;
}
if(breakouter==1){
break;
}
}
}
// printf("%s\n","5");
strcpy(prior_app,str_window_class(d, w, prior_app));
if(strcicmp(prior_category, current_category) != 0){
printf("%s: %s\n",current_category,current_app);
// printf("run: %s\n",run_array[category_idx]);
system(run_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]);
if(strcicmp(current_category, "term") == 0){
// printf("Running de term command: %s\n",de_runterm_array[de_id_idx]);
system(de_runterm_array[de_id_idx]);
}
else{
// printf("Running de gui command: %s\n",de_rungui_array[de_id_idx]);
system(de_rungui_array[de_id_idx]);
}
}
}
}
else if(strcicmp(prior_app, current_app) != 0){
int indent = strlen(current_category)+2;
printf("%*c%s\n", indent, ' ',current_app);
}
fflush(stdout);
strcpy(prior_app,current_app);
strcpy(prior_category,current_category);
XEvent e;
XNextEvent(d, &e);