Пример #1
0
static XkbFileInfo *
input_pad_xkb_get_file_info (InputPadGtkWindow *window)
{
    Display *xdisplay = GDK_WINDOW_XDISPLAY (gtk_widget_get_window (GTK_WIDGET (window)));
    XkbFileInfo *xkb_info;

    xkb_info = g_new0 (XkbFileInfo, 1);
    xkb_info->type = XkmKeymapFile;
    xkb_info->xkb = XkbGetMap (xdisplay, XkbAllMapComponentsMask, XkbUseCoreKbd);
    if (xkb_info->xkb == NULL) {
        g_warning ("Could not get XKB map");
    }
    if (XkbGetNames (xdisplay, XkbAllNamesMask, xkb_info->xkb) !=Success) {
        g_warning ("Could not get XKB names");
    }
    if (XkbGetGeometry (xdisplay, xkb_info->xkb) !=Success) {
        g_warning ("Could not get geometry");
        return NULL;
    }
    if (XkbChangeKbdDisplay (xdisplay, xkb_info) !=Success) {
        g_warning ("Could not get display");
        return NULL;
    }
    return xkb_info;
}
Пример #2
0
unsigned
XkbReadFromServer(Display *dpy,unsigned need,unsigned want,XkbFileInfo *result)
{
unsigned which= need|want;
unsigned tmp = 0;

    if ((result==NULL)||(dpy==NULL))
	return which;

    if (which&XkmSymbolsMask)		tmp= XkbAllMapComponentsMask;
    else if (which&XkmTypesMask)	tmp= XkbKeyTypesMask;
    if (result->xkb==NULL) {
	result->xkb= XkbGetMap(dpy,tmp,XkbUseCoreKbd);
	if (!result->xkb)
	     return which;
	else which&= ~(XkmSymbolsMask|XkmTypesMask|XkmVirtualModsMask);
    }
    else if ((tmp)&&(XkbGetUpdatedMap(dpy,tmp,result->xkb)==Success))
	which&= ~(XkmSymbolsMask|XkmTypesMask|XkmVirtualModsMask);

    if (which&XkmIndicatorsMask) {
	if (XkbGetIndicatorMap(dpy,XkbAllIndicatorsMask,result->xkb)==Success)
	    which&= ~XkmIndicatorsMask;
    }

    if (which&XkmCompatMapMask) {
	if (XkbGetCompatMap(dpy,XkbAllCompatMask,result->xkb)==Success)
	    which&= ~XkmCompatMapMask;
    }
    if (which&XkmGeometryMask) {
	if (XkbGetGeometry(dpy,result->xkb)==Success)
	    which&= ~XkmGeometryMask;
    }
    XkbGetNames(dpy,XkbAllNamesMask,result->xkb);
    return which;
}