|
|
|
@ -274,26 +274,27 @@ int xkb_init()
|
|
|
|
|
&& XkbQueryExtension( dpy, &xkb_opcode, &xkb_event, &xkb_error,
|
|
|
|
|
&xkb_lmaj, &xkb_lmin );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned int xkb_mask_modifier( XkbDescPtr xkb, const char *name )
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
if( !xkb || !xkb->names )
|
|
|
|
|
return 0;
|
|
|
|
|
for( i = 0;
|
|
|
|
|
i < XkbNumVirtualMods;
|
|
|
|
|
i++ )
|
|
|
|
|
{
|
|
|
|
|
for( i = 0; i < XkbNumVirtualMods; i++ ) {
|
|
|
|
|
char* modStr = XGetAtomName( xkb->dpy, xkb->names->vmods[i] );
|
|
|
|
|
if( modStr != NULL && strcmp(name, modStr) == 0 )
|
|
|
|
|
{
|
|
|
|
|
if( modStr == NULL ) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if( strcmp(name, modStr) == 0 ) {
|
|
|
|
|
unsigned int mask;
|
|
|
|
|
XkbVirtualModsToReal( xkb, 1 << i, &mask );
|
|
|
|
|
XFree(modStr);
|
|
|
|
|
return mask;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
XFree(modStr);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unsigned int xkb_numlock_mask()
|
|
|
|
|
{
|
|
|
|
|