mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +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:
committed by
Carlos R. Mafra
parent
ab348c6dc8
commit
b764a766bf
@@ -147,6 +147,7 @@ static const struct {
|
|||||||
/* Misc. */
|
/* Misc. */
|
||||||
{ "WindowRelaunchKey", N_("Launch new instance of application") },
|
{ "WindowRelaunchKey", N_("Launch new instance of application") },
|
||||||
{ "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") },
|
{ "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") },
|
||||||
|
{ "RunKey", N_("Run application") },
|
||||||
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
|
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
|
||||||
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") }
|
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") }
|
||||||
#ifdef XKB_MODELOCK
|
#ifdef XKB_MODELOCK
|
||||||
|
|||||||
@@ -721,6 +721,8 @@ WDefaultEntry optionList[] = {
|
|||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"ScreenSwitchKey", "None", (void *)WKBD_SWITCH_SCREEN,
|
{"ScreenSwitchKey", "None", (void *)WKBD_SWITCH_SCREEN,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
|
{"RunKey", "None", (void *)WKBD_RUN,
|
||||||
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
|
|
||||||
#ifdef KEEP_XKB_LOCK_STATUS
|
#ifdef KEEP_XKB_LOCK_STATUS
|
||||||
{"ToggleKbdModeKey", "None", (void *)WKBD_TOGGLE,
|
{"ToggleKbdModeKey", "None", (void *)WKBD_TOGGLE,
|
||||||
|
|||||||
19
src/event.c
19
src/event.c
@@ -1715,6 +1715,25 @@ static void handleKeyPress(XEvent * event)
|
|||||||
}
|
}
|
||||||
break;
|
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_NEXTWSLAYER:
|
||||||
case WKBD_PREVWSLAYER:
|
case WKBD_PREVWSLAYER:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -116,6 +116,9 @@ enum {
|
|||||||
/* screen */
|
/* screen */
|
||||||
WKBD_SWITCH_SCREEN,
|
WKBD_SWITCH_SCREEN,
|
||||||
|
|
||||||
|
/* open "run" dialog */
|
||||||
|
WKBD_RUN,
|
||||||
|
|
||||||
#ifdef KEEP_XKB_LOCK_STATUS
|
#ifdef KEEP_XKB_LOCK_STATUS
|
||||||
WKBD_TOGGLE,
|
WKBD_TOGGLE,
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user