コード例 #1
0
ファイル: KeyBind.c プロジェクト: MisPresident/libX11
int
XRefreshKeyboardMapping(register XMappingEvent *event)
{

    if(event->request == MappingKeyboard) {
	/* XXX should really only refresh what is necessary
	 * for now, make initialize test fail
	 */
	LockDisplay(event->display);
	if (event->display->keysyms) {
	     Xfree (event->display->keysyms);
	     event->display->keysyms = NULL;
	}
	UnlockDisplay(event->display);
    }
    if(event->request == MappingModifier) {
	LockDisplay(event->display);
	if (event->display->modifiermap) {
	    XFreeModifiermap(event->display->modifiermap);
	    event->display->modifiermap = NULL;
	}
	UnlockDisplay(event->display);
	/* go ahead and get it now, since initialize test may not fail */
	if (event->display->keysyms)
	    (void) InitModMap(event->display);
    }
    return 1;
}
コード例 #2
0
ファイル: KeyBind.c プロジェクト: MisPresident/libX11
int
_XKeyInitialize(
    Display *dpy)
{
    int per, n;
    KeySym *keysyms;

    /*
     * lets go get the keysyms from the server.
     */
    if (!dpy->keysyms) {
	n = dpy->max_keycode - dpy->min_keycode + 1;
	keysyms = XGetKeyboardMapping (dpy, (KeyCode) dpy->min_keycode,
				       n, &per);
	/* keysyms may be NULL */
	if (! keysyms) return 0;

	LockDisplay(dpy);
	if (dpy->keysyms)
	    Xfree (dpy->keysyms);
	dpy->keysyms = keysyms;
	dpy->keysyms_per_keycode = per;
	if (dpy->modifiermap)
	    ResetModMap(dpy);
	UnlockDisplay(dpy);
    }
    if (!dpy->modifiermap)
        return InitModMap(dpy);
    return 1;
}
コード例 #3
0
ファイル: darwin-keyboard.c プロジェクト: BakaMANIA/synfig
void
DarwinKeyboardReload (DeviceIntPtr pDev)
{
    KeySymsRec keysyms;

    load_keyboard_mapping (&keysyms);

    if (SetKeySymsMap (&pDev->key->curKeySyms, &keysyms))
    {
	/* now try to update modifiers. */

	memmove (pDev->key->modifierMap, info.mod_map, MAP_LENGTH);
	InitModMap (pDev->key);
    }

    SendMappingNotify (MappingKeyboard, MIN_KEYCODE, NUM_KEYCODES, 0);
    SendMappingNotify (MappingModifier, 0, 0, 0);
}