rem: STRINGP("Key spec");  val = PLGetString(value);
add: GET_STRING_OR_DEFAULT("Key spec", val);
context: getKeybind(WScreen *scr, WDefaultEntry *entry, proplist_t value, void *addr, 	 void **ret){    static WShortKey shortcut;    KeySym ksym;    char *val;    char *k;    char buf[128], *b;    STRINGP("Key spec");    val = PLGetString(value);    if (!val || strcasecmp(val, "NONE")==0) {	shortcut.keycode = 0;	shortcut.modifier = 0;	if (ret)	    *ret = &shortcut;	return True;    }    strcpy(buf, val);        b = (char*)buf;    /* get modifiers */    shortcut.modifier = 0;    while ((k = strchr(b, '+'))!=NULL) {	int mod;		*k = 0;	mod = wXModifierFromKey(b);	if (mod<0) {	    wwarning(_("%s:invalid key modifier \"%s\""), entry->key, b);	    return False;	}	shortcut.modifier |= mod;		b = k+1;    }        /* get key */    ksym = XStringToKeysym(b);        if (ksym==NoSymbol) {	wwarning(_("%s:invalid kbd shortcut specification \"%s\""), entry->key,		 val);	return False;    }        shortcut.keycode = XKeysymToKeycode(dpy, ksym);    if (shortcut.keycode==0) {	wwarning(_("%s:invalid key in shortcut \"%s\""), entry->key, val);	return False;    }    if (ret)      *ret = &shortcut;    return True;}