Comment 0 for bug 251443

Revision history for this message
In , Sergey V. Udaltsov (svu) wrote :

The server map of explicit components may contain:
- types (per group)
- action
- autorepeat
- behaviour
- vmodmask

In XKB.h:
#define XkbExplicitKeyType1Mask (1<<0)
#define XkbExplicitKeyType2Mask (1<<1)
#define XkbExplicitKeyType3Mask (1<<2)
#define XkbExplicitKeyType4Mask (1<<3)
#define XkbExplicitInterpretMask (1<<4)
#define XkbExplicitAutoRepeatMask (1<<5)
#define XkbExplicitBehaviorMask (1<<6)
#define XkbExplicitVModMapMask (1<<7)

But in XKM files, there is no place to store explicit vmodmap mask:
#define XkmKeyHasGroup1Type (1<<0)
#define XkmKeyHasGroup2Type (1<<1)
#define XkmKeyHasGroup3Type (1<<2)
#define XkmKeyHasGroup4Type (1<<3)
#define XkmKeyHasActions (1<<4)
#define XkmKeyHasBehavior (1<<5)
#define XkmRepeatingKey (1<<6)
#define XkmNonRepeatingKey (1<<7)

So it is not an issue in the input-output code, it is a bigger issue - in the
XKM format.
This causes problems when configuration is passed through binary files.

To demonstrate this problem, create any textual XKB file with explicit vmodmap,
then convert it to XKM and back to XKB - the information will be lost.