forked from speedie/spmenu
fix a few issues, add in mouse bindings
This commit is contained in:
parent
ad32165408
commit
54797235e1
638
docs/spmenu.conf
638
docs/spmenu.conf
|
@ -213,373 +213,407 @@ spmenu =
|
||||||
password = 0;
|
password = 0;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
// Mouse
|
||||||
|
mouse = ( { click = "clickinput";
|
||||||
|
modifier = "None";
|
||||||
|
button = "left-click";
|
||||||
|
function = "clear";
|
||||||
|
argument = "0";
|
||||||
|
},
|
||||||
|
{ click = "clickprompt";
|
||||||
|
modifier = "None";
|
||||||
|
button = "left-click";
|
||||||
|
function = "clear";
|
||||||
|
argument = "0";
|
||||||
|
},
|
||||||
|
{ click = "clickmode";
|
||||||
|
modifier = "None";
|
||||||
|
button = "left-click";
|
||||||
|
function = "switchmode";
|
||||||
|
argument = "0";
|
||||||
|
},
|
||||||
|
{ click = "clicknumber";
|
||||||
|
modifier = "None";
|
||||||
|
button = "left-click";
|
||||||
|
function = "viewhist";
|
||||||
|
argument = "0";
|
||||||
|
},
|
||||||
|
{ click = "clickselitem";
|
||||||
|
modifier = "None";
|
||||||
|
button = "left-click";
|
||||||
|
function = "None";
|
||||||
|
argument = "0";
|
||||||
|
},
|
||||||
|
|
||||||
|
{ ignoreglobalmouse = 1; } );
|
||||||
|
|
||||||
// Keys
|
// Keys
|
||||||
keys = ( { mode = -1;
|
keys = ( { mode = -1;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Enter";
|
key = "Enter";
|
||||||
function = "selectitem";
|
function = "selectitem";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "Enter";
|
key = "Enter";
|
||||||
function = "selectitem";
|
function = "selectitem";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Tab";
|
key = "Tab";
|
||||||
function = "complete";
|
function = "complete";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "v";
|
key = "v";
|
||||||
function = "paste";
|
function = "paste";
|
||||||
argument = "2";
|
argument = "2";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Ctrl+Shift";
|
modifier = "Ctrl+Shift";
|
||||||
key = "v";
|
key = "v";
|
||||||
function = "paste";
|
function = "paste";
|
||||||
argument = "1";
|
argument = "1";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Backspace";
|
key = "Backspace";
|
||||||
function = "backspace";
|
function = "backspace";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "Backspace";
|
key = "Backspace";
|
||||||
function = "deleteword";
|
function = "deleteword";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "Left";
|
key = "Left";
|
||||||
function = "moveword";
|
function = "moveword";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "Right";
|
key = "Right";
|
||||||
function = "moveword";
|
function = "moveword";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Left";
|
key = "Left";
|
||||||
function = "movecursor";
|
function = "movecursor";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Right";
|
key = "Right";
|
||||||
function = "movecursor";
|
function = "movecursor";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = -1;
|
{ mode = -1;
|
||||||
modifier = "Control+Shift";
|
modifier = "Control+Shift";
|
||||||
key = "p";
|
key = "p";
|
||||||
function = "spawn";
|
function = "spawn";
|
||||||
argument = "setprofile";
|
argument = "setprofile";
|
||||||
}
|
},
|
||||||
{ mode = 1;
|
{ mode = 1;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Esc";
|
key = "Esc";
|
||||||
function = "switchmode";
|
function = "switchmode";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "i";
|
key = "i";
|
||||||
function = "switchmode";
|
function = "switchmode";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "/";
|
key = "/";
|
||||||
function = "switchmode";
|
function = "switchmode";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "=";
|
key = "=";
|
||||||
function = "setimgsize";
|
function = "setimgsize";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "-";
|
key = "-";
|
||||||
function = "setimgsize";
|
function = "setimgsize";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "-";
|
key = "-";
|
||||||
function = "setimgsize";
|
function = "setimgsize";
|
||||||
argument = "-10";
|
argument = "-10";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "=";
|
key = "=";
|
||||||
function = "setimgsize";
|
function = "setimgsize";
|
||||||
argument = "+10";
|
argument = "+10";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "-";
|
key = "-";
|
||||||
function = "setimgsize";
|
function = "setimgsize";
|
||||||
argument = "-100";
|
argument = "-100";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "=";
|
key = "=";
|
||||||
function = "setimgsize";
|
function = "setimgsize";
|
||||||
argument = "+100";
|
argument = "+100";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "0";
|
key = "0";
|
||||||
function = "defaultimg";
|
function = "defaultimg";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "r";
|
key = "r";
|
||||||
function = "rotateimg";
|
function = "rotateimg";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "p";
|
key = "p";
|
||||||
function = "setimgpos";
|
function = "setimgpos";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "1";
|
key = "1";
|
||||||
function = "setimggaps";
|
function = "setimggaps";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "2";
|
key = "2";
|
||||||
function = "setimggaps";
|
function = "setimggaps";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "1";
|
key = "1";
|
||||||
function = "setimggaps";
|
function = "setimggaps";
|
||||||
argument = "-10";
|
argument = "-10";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "2";
|
key = "2";
|
||||||
function = "setimggaps";
|
function = "setimggaps";
|
||||||
argument = "+10";
|
argument = "+10";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "1";
|
key = "1";
|
||||||
function = "setimggaps";
|
function = "setimggaps";
|
||||||
argument = "-100";
|
argument = "-100";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "2";
|
key = "2";
|
||||||
function = "setimggaps";
|
function = "setimggaps";
|
||||||
argument = "+100";
|
argument = "+100";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "t";
|
key = "t";
|
||||||
function = "toggleimg";
|
function = "toggleimg";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "h";
|
key = "h";
|
||||||
function = "flipimg";
|
function = "flipimg";
|
||||||
argument = "1";
|
argument = "1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "v";
|
key = "v";
|
||||||
function = "flipimg";
|
function = "flipimg";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "k";
|
key = "k";
|
||||||
function = "moveup";
|
function = "moveup";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "j";
|
key = "j";
|
||||||
function = "movedown";
|
function = "movedown";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "h";
|
key = "h";
|
||||||
function = "moveleft";
|
function = "moveleft";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "l";
|
key = "l";
|
||||||
function = "moveright";
|
function = "moveright";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "u";
|
key = "u";
|
||||||
function = "moveup";
|
function = "moveup";
|
||||||
argument = "5";
|
argument = "5";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "d";
|
key = "d";
|
||||||
function = "movedown";
|
function = "movedown";
|
||||||
argument = "5";
|
argument = "5";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "k";
|
key = "k";
|
||||||
function = "setlines";
|
function = "setlines";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "j";
|
key = "j";
|
||||||
function = "setlines";
|
function = "setlines";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl+Alt+Shift";
|
modifier = "Ctrl+Alt+Shift";
|
||||||
key = "k";
|
key = "k";
|
||||||
function = "setlines";
|
function = "setlines";
|
||||||
argument = "+5";
|
argument = "+5";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl+Alt+Shift";
|
modifier = "Ctrl+Alt+Shift";
|
||||||
key = "j";
|
key = "j";
|
||||||
function = "setlines";
|
function = "setlines";
|
||||||
argument = "-5";
|
argument = "-5";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "h";
|
key = "h";
|
||||||
function = "setcolumns";
|
function = "setcolumns";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "h";
|
key = "h";
|
||||||
function = "setcolumns";
|
function = "setcolumns";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl+Alt+Shift";
|
modifier = "Ctrl+Alt+Shift";
|
||||||
key = "h";
|
key = "h";
|
||||||
function = "setcolumns";
|
function = "setcolumns";
|
||||||
argument = "+5";
|
argument = "+5";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl+Alt+Shift";
|
modifier = "Ctrl+Alt+Shift";
|
||||||
key = "l";
|
key = "l";
|
||||||
function = "setcolumns";
|
function = "setcolumns";
|
||||||
argument = "-5";
|
argument = "-5";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl";
|
modifier = "Ctrl";
|
||||||
key = "k";
|
key = "k";
|
||||||
function = "restoresel";
|
function = "restoresel";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "u";
|
key = "u";
|
||||||
function = "togglehighlight";
|
function = "togglehighlight";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Ctrl+Shift";
|
modifier = "Ctrl+Shift";
|
||||||
key = "h";
|
key = "h";
|
||||||
function = "viewhist";
|
function = "viewhist";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "d";
|
key = "d";
|
||||||
function = "clear";
|
function = "clear";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "c";
|
key = "c";
|
||||||
function = "clearins";
|
function = "clearins";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Esc";
|
key = "Esc";
|
||||||
function = "quit";
|
function = "quit";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Home";
|
key = "Home";
|
||||||
function = "movestart";
|
function = "movestart";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "End";
|
key = "End";
|
||||||
function = "moveend";
|
function = "moveend";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "g";
|
key = "g";
|
||||||
function = "movestart";
|
function = "movestart";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Shift";
|
modifier = "Shift";
|
||||||
key = "g";
|
key = "g";
|
||||||
function = "moveend";
|
function = "moveend";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Next";
|
key = "Next";
|
||||||
function = "movenext";
|
function = "movenext";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "None";
|
modifier = "None";
|
||||||
key = "Prior";
|
key = "Prior";
|
||||||
function = "moveprev";
|
function = "moveprev";
|
||||||
argument = "0";
|
argument = "0";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Alt";
|
modifier = "Alt";
|
||||||
key = "p";
|
key = "p";
|
||||||
function = "navhistory";
|
function = "navhistory";
|
||||||
argument = "-1";
|
argument = "-1";
|
||||||
}
|
},
|
||||||
{ mode = 0;
|
{ mode = 0;
|
||||||
modifier = "Alt";
|
modifier = "Alt";
|
||||||
key = "n";
|
key = "n";
|
||||||
function = "navhistory";
|
function = "navhistory";
|
||||||
argument = "+1";
|
argument = "+1";
|
||||||
}
|
},
|
||||||
|
|
||||||
ignoreglobalkeys = 1; ),
|
{ ignoreglobalkeys = 1; } ),
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,7 +55,7 @@ conf_init(void)
|
||||||
// attempt to read config file to cfg
|
// attempt to read config file to cfg
|
||||||
if (!config_read_file(&cfg, cfgfile)) {
|
if (!config_read_file(&cfg, cfgfile)) {
|
||||||
// invalid configuration, but let's try to read it anyway
|
// invalid configuration, but let's try to read it anyway
|
||||||
;
|
fprintf(stdout, "spmenu: Invalid configuration.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// load options spmenu.window
|
// load options spmenu.window
|
||||||
|
@ -620,6 +620,62 @@ conf_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load options spmenu.keys
|
||||||
|
setting = config_lookup(&cfg, "spmenu.mouse");
|
||||||
|
if (setting != NULL) {
|
||||||
|
unsigned int i = 0;
|
||||||
|
|
||||||
|
conflength = config_setting_length(setting);
|
||||||
|
|
||||||
|
for (i = 0; i < conflength; ++i) {
|
||||||
|
config_setting_t *conf = config_setting_get_elem(setting, i);
|
||||||
|
|
||||||
|
// look up
|
||||||
|
config_setting_lookup_string(conf, "click", &dest);
|
||||||
|
|
||||||
|
for (int j = 0; j < LENGTH(ctp); j++) {
|
||||||
|
if (!strcmp(ctp[j].tclick, strdup(dest))) {
|
||||||
|
cbuttons[i].click = ctp[j].click;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// look up
|
||||||
|
config_setting_lookup_string(conf, "modifier", &dest);
|
||||||
|
|
||||||
|
for (int j = 0; j < LENGTH(ml); j++) {
|
||||||
|
if (!strcmp(ml[j].mod, strdup(dest))) {
|
||||||
|
cbuttons[i].mask = ml[j].modifier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
config_setting_lookup_string(conf, "button", &dest);
|
||||||
|
|
||||||
|
for (int j = 0; j < LENGTH(btp); j++) {
|
||||||
|
if (!strcmp(btp[j].click, strdup(dest))) {
|
||||||
|
cbuttons[i].button = btp[j].button;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
config_setting_lookup_string(conf, "function", &dest);
|
||||||
|
|
||||||
|
for (int j = 0; j < LENGTH(fl); j++) {
|
||||||
|
if (!strcmp(fl[j].function, strdup(dest))) {
|
||||||
|
cbuttons[i].func = fl[j].func;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
config_setting_lookup_string(conf, "argument", &dest);
|
||||||
|
|
||||||
|
for (int j = 0; j < LENGTH(al); j++) {
|
||||||
|
if (!strcmp(al[j].argument, strdup(dest))) {
|
||||||
|
cbuttons[i].arg = al[j].arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
config_setting_lookup_int(conf, "ignoreglobalmouse", &ignoreglobalmouse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// we're done here
|
// we're done here
|
||||||
config_destroy(&cfg);
|
config_destroy(&cfg);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -422,8 +422,8 @@ static KeyList kl[] = {
|
||||||
{ "g", XK_g },
|
{ "g", XK_g },
|
||||||
{ "h", XK_h },
|
{ "h", XK_h },
|
||||||
{ "i", XK_i },
|
{ "i", XK_i },
|
||||||
{ "j", XK_k },
|
{ "j", XK_j },
|
||||||
{ "k", XK_j },
|
{ "k", XK_k },
|
||||||
{ "l", XK_l },
|
{ "l", XK_l },
|
||||||
{ "m", XK_m },
|
{ "m", XK_m },
|
||||||
{ "n", XK_n },
|
{ "n", XK_n },
|
||||||
|
|
28
libs/mouse.c
28
libs/mouse.c
|
@ -73,6 +73,14 @@ buttonpress(XEvent *e)
|
||||||
} else if (buttons[i].click == clickitem) {
|
} else if (buttons[i].click == clickitem) {
|
||||||
click = clickitem;
|
click = clickitem;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
for (i = 0; i < LENGTH(cbuttons); i++) {
|
||||||
|
if (cbuttons[i].click == clickselitem && cbuttons[i].button == ev->button && CLEANMASK(cbuttons[i].mask) == CLEANMASK(ev->state)) {
|
||||||
|
puts(item->text);
|
||||||
|
exit(0);
|
||||||
|
} else if (cbuttons[i].click == clickitem) {
|
||||||
|
click = clickitem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,6 +107,14 @@ buttonpress(XEvent *e)
|
||||||
click = clickitem;
|
click = clickitem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < LENGTH(cbuttons); i++) {
|
||||||
|
if (cbuttons[i].click == clickselitem && cbuttons[i].button == ev->button && CLEANMASK(cbuttons[i].mask) == CLEANMASK(ev->state)) {
|
||||||
|
puts(item->text);
|
||||||
|
exit(0);
|
||||||
|
} else if (cbuttons[i].click == clickitem) {
|
||||||
|
click = clickitem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,8 +127,18 @@ buttonpress(XEvent *e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// go through mouse button array and run function
|
// go through mouse button array and run function
|
||||||
for (i = 0; i < LENGTH(buttons); i++)
|
for (i = 0; i < LENGTH(buttons); i++) {
|
||||||
|
if (ignoreglobalmouse) break;
|
||||||
if (click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button
|
if (click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button
|
||||||
&& CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state))
|
&& CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state))
|
||||||
buttons[i].func(&buttons[i].arg);
|
buttons[i].func(&buttons[i].arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// go through mouse config array and run function
|
||||||
|
for (i = 0; i < LENGTH(cbuttons); i++) {
|
||||||
|
if (ignoreconfmouse) break;
|
||||||
|
if (click == cbuttons[i].click && cbuttons[i].func && cbuttons[i].button == ev->button
|
||||||
|
&& CLEANMASK(cbuttons[i].mask) == CLEANMASK(ev->state))
|
||||||
|
cbuttons[i].func(&cbuttons[i].arg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
54
libs/mouse.h
54
libs/mouse.h
|
@ -1,11 +1,3 @@
|
||||||
typedef struct {
|
|
||||||
unsigned int click;
|
|
||||||
unsigned int mask;
|
|
||||||
unsigned int button;
|
|
||||||
void (*func)(Arg *arg);
|
|
||||||
Arg arg;
|
|
||||||
} Mouse;
|
|
||||||
|
|
||||||
// clicks
|
// clicks
|
||||||
enum {
|
enum {
|
||||||
clickwindow,
|
clickwindow,
|
||||||
|
@ -20,4 +12,50 @@ enum {
|
||||||
clickmode,
|
clickmode,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned int click;
|
||||||
|
unsigned int mask;
|
||||||
|
unsigned int button;
|
||||||
|
void (*func)(Arg *arg);
|
||||||
|
Arg arg;
|
||||||
|
} Mouse;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *click;
|
||||||
|
unsigned int button;
|
||||||
|
} ButtonType;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *tclick;
|
||||||
|
unsigned int click;
|
||||||
|
} ClickType;
|
||||||
|
|
||||||
|
static ButtonType btp[] = {
|
||||||
|
{ "button1", Button1 },
|
||||||
|
{ "button2", Button2 },
|
||||||
|
{ "button3", Button3 },
|
||||||
|
{ "button4", Button4 },
|
||||||
|
{ "button5", Button5 },
|
||||||
|
|
||||||
|
{ "left-click", Button1 },
|
||||||
|
{ "middle-click", Button2 },
|
||||||
|
{ "right-click", Button3 },
|
||||||
|
{ "scroll-up", Button4 },
|
||||||
|
{ "scroll-down", Button5 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static ClickType ctp[] = {
|
||||||
|
{ "clickwindow", clickwindow },
|
||||||
|
{ "clickprompt", clickprompt },
|
||||||
|
{ "clickinput", clickinput },
|
||||||
|
{ "clicklarrow", clicklarrow },
|
||||||
|
{ "clickitem", clickitem },
|
||||||
|
{ "clickselitem", clickselitem },
|
||||||
|
{ "clickrarrow", clickrarrow },
|
||||||
|
{ "clicknumber", clicknumber },
|
||||||
|
{ "clickcaps", clickcaps },
|
||||||
|
{ "clickmode", clickmode },
|
||||||
|
};
|
||||||
|
|
||||||
|
static Mouse cbuttons[256];
|
||||||
static void buttonpress(XEvent *e);
|
static void buttonpress(XEvent *e);
|
||||||
|
|
2
spmenu.c
2
spmenu.c
|
@ -177,6 +177,8 @@ static int isrtl = 0;
|
||||||
|
|
||||||
static int ignoreconfkeys = 0; // can be set globally if you don't want to override keybinds with config file keys
|
static int ignoreconfkeys = 0; // can be set globally if you don't want to override keybinds with config file keys
|
||||||
static int ignoreglobalkeys = 0; // should be set in the config file, if 1, the Keys keys array is ignored
|
static int ignoreglobalkeys = 0; // should be set in the config file, if 1, the Keys keys array is ignored
|
||||||
|
static int ignoreconfmouse = 0; // same for mouse
|
||||||
|
static int ignoreglobalmouse = 0; // same for mouse
|
||||||
|
|
||||||
// X11 properties
|
// X11 properties
|
||||||
static Atom clip, utf8, types, dock;
|
static Atom clip, utf8, types, dock;
|
||||||
|
|
Loading…
Reference in a new issue