void ExecExitScript() { char *file, *paths; paths = wstrconcat(wusergnusteppath(), "/Library/WindowMaker"); paths = wstrappend(paths, ":"DEF_CONFIG_PATHS); file = wfindfile(paths, DEF_EXIT_SCRIPT); wfree(paths); if (file) { if (system(file) != 0) { wsyserror(_("%s:could not execute exit script"), file); } #if 0 if (fork()==0) { execl("/bin/sh", "/bin/sh", "-c", file, NULL); wsyserror(_("%s:could not execute exit script"), file); exit(1); } #endif wfree(file); } }
char *GetShortcutKey(WShortKey key) { char *tmp = NULL; char *k = XKeysymToString(XkbKeycodeToKeysym(dpy, key.keycode, 0, 0)); if (!k) return NULL; char **m = wPreferences.modifier_labels; if (key.modifier & ControlMask) tmp = wstrappend(tmp, m[1] ? m[1] : "Control+"); if (key.modifier & ShiftMask) tmp = wstrappend(tmp, m[0] ? m[0] : "Shift+"); if (key.modifier & Mod1Mask) tmp = wstrappend(tmp, m[2] ? m[2] : "Mod1+"); if (key.modifier & Mod2Mask) tmp = wstrappend(tmp, m[3] ? m[3] : "Mod2+"); if (key.modifier & Mod3Mask) tmp = wstrappend(tmp, m[4] ? m[4] : "Mod3+"); if (key.modifier & Mod4Mask) tmp = wstrappend(tmp, m[5] ? m[5] : "Mod4+"); if (key.modifier & Mod5Mask) tmp = wstrappend(tmp, m[6] ? m[6] : "Mod5+"); tmp = wstrappend(tmp, k); return GetShortcutString(tmp); }
char *GetShortcutString(const char *shortcut) { char *buffer = NULL; char *k; int control = 0; char *tmp, *text; tmp = text = wstrdup(shortcut); /* get modifiers */ while ((k = strchr(text, '+')) != NULL) { int mod; *k = 0; mod = wXModifierFromKey(text); if (mod < 0) { return wstrdup("bug"); } if (strcasecmp(text, "Meta") == 0) { buffer = wstrappend(buffer, "M+"); } else if (strcasecmp(text, "Alt") == 0) { buffer = wstrappend(buffer, "A+"); } else if (strcasecmp(text, "Shift") == 0) { buffer = wstrappend(buffer, "Sh+"); } else if (strcasecmp(text, "Mod1") == 0) { buffer = wstrappend(buffer, "M1+"); } else if (strcasecmp(text, "Mod2") == 0) { buffer = wstrappend(buffer, "M2+"); } else if (strcasecmp(text, "Mod3") == 0) { buffer = wstrappend(buffer, "M3+"); } else if (strcasecmp(text, "Mod4") == 0) { buffer = wstrappend(buffer, "M4+"); } else if (strcasecmp(text, "Mod5") == 0) { buffer = wstrappend(buffer, "M5+"); } else if (strcasecmp(text, "Control") == 0) { control = 1; } else { buffer = wstrappend(buffer, text); } text = k + 1; } if (control) { buffer = wstrappend(buffer, "^"); } buffer = wstrappend(buffer, text); wfree(tmp); return buffer; }