1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 04:20:27 +01:00

Add keyboard shortcut to run application.

A common feature in several desktop environments is the ability to bring up
a "run application" dialog via a keyboard shortcut (frequently Mod1+F2).  This
feature has been available to Window Maker users only through the root menu.

This patch adds the ability for a user to set up a keyboard shortcut to
accomplish this, either via WPrefs or by editing ~/GNUstep/Defaults/WindowMaker,
e.g., with
 RunKey = "Mod1+F2";

Code from the execCommand function in rootmenu.c has been copied almost directly
into the handleKeyPress function in misc.c to accomplish this.
This commit is contained in:
Doug Torrance
2014-05-10 00:12:52 -05:00
committed by Carlos R. Mafra
parent ab348c6dc8
commit b764a766bf
4 changed files with 25 additions and 0 deletions

View File

@@ -147,6 +147,7 @@ static const struct {
/* Misc. */
{ "WindowRelaunchKey", N_("Launch new instance of application") },
{ "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") },
{ "RunKey", N_("Run application") },
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") }
#ifdef XKB_MODELOCK

View File

@@ -721,6 +721,8 @@ WDefaultEntry optionList[] = {
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"ScreenSwitchKey", "None", (void *)WKBD_SWITCH_SCREEN,
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"RunKey", "None", (void *)WKBD_RUN,
NULL, getKeybind, setKeyGrab, NULL, NULL},
#ifdef KEEP_XKB_LOCK_STATUS
{"ToggleKbdModeKey", "None", (void *)WKBD_TOGGLE,

View File

@@ -1715,6 +1715,25 @@ static void handleKeyPress(XEvent * event)
}
break;
case WKBD_RUN:
{
char *cmdline;
cmdline = ExpandOptions(scr, _("exec %a(Run,Type command to run:)"));
XGrabPointer(dpy, scr->root_win, True, 0,
GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime);
XSync(dpy, 0);
if (cmdline) {
ExecuteShellCommand(scr, cmdline);
wfree(cmdline);
}
XUngrabPointer(dpy, CurrentTime);
XSync(dpy, 0);
break;
}
case WKBD_NEXTWSLAYER:
case WKBD_PREVWSLAYER:
{

View File

@@ -116,6 +116,9 @@ enum {
/* screen */
WKBD_SWITCH_SCREEN,
/* open "run" dialog */
WKBD_RUN,
#ifdef KEEP_XKB_LOCK_STATUS
WKBD_TOGGLE,
#endif