xkb: factor out xkb loading to LoadXkm
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
parent
4391cf27f4
commit
cb9a1d0146
|
@ -291,37 +291,14 @@ XkbDDXOpenConfigFile(const char *mapName, char *fileNameRtrn, int fileNameRtrnLe
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned
|
static unsigned
|
||||||
XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
|
LoadXKM(unsigned want, unsigned need, const char *keymap, XkbDescPtr *xkbRtrn)
|
||||||
XkbComponentNamesPtr names,
|
|
||||||
unsigned want,
|
|
||||||
unsigned need,
|
|
||||||
XkbDescPtr *xkbRtrn, char *nameRtrn, int nameRtrnLen)
|
|
||||||
{
|
{
|
||||||
XkbDescPtr xkb;
|
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char fileName[PATH_MAX];
|
char fileName[PATH_MAX];
|
||||||
unsigned missing;
|
unsigned missing;
|
||||||
|
|
||||||
*xkbRtrn = NULL;
|
file = XkbDDXOpenConfigFile(keymap, fileName, PATH_MAX);
|
||||||
if ((keybd == NULL) || (keybd->key == NULL) ||
|
|
||||||
(keybd->key->xkbInfo == NULL))
|
|
||||||
xkb = NULL;
|
|
||||||
else
|
|
||||||
xkb = keybd->key->xkbInfo->desc;
|
|
||||||
if ((names->keycodes == NULL) && (names->types == NULL) &&
|
|
||||||
(names->compat == NULL) && (names->symbols == NULL) &&
|
|
||||||
(names->geometry == NULL)) {
|
|
||||||
LogMessage(X_ERROR, "XKB: No components provided for device %s\n",
|
|
||||||
keybd->name ? keybd->name : "(unnamed keyboard)");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need,
|
|
||||||
nameRtrn, nameRtrnLen)) {
|
|
||||||
LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
file = XkbDDXOpenConfigFile(nameRtrn, fileName, PATH_MAX);
|
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",
|
LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",
|
||||||
fileName);
|
fileName);
|
||||||
|
@ -343,6 +320,37 @@ XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
|
||||||
return (need | want) & (~missing);
|
return (need | want) & (~missing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned
|
||||||
|
XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
|
||||||
|
XkbComponentNamesPtr names,
|
||||||
|
unsigned want,
|
||||||
|
unsigned need,
|
||||||
|
XkbDescPtr *xkbRtrn, char *nameRtrn, int nameRtrnLen)
|
||||||
|
{
|
||||||
|
XkbDescPtr xkb;
|
||||||
|
|
||||||
|
*xkbRtrn = NULL;
|
||||||
|
if ((keybd == NULL) || (keybd->key == NULL) ||
|
||||||
|
(keybd->key->xkbInfo == NULL))
|
||||||
|
xkb = NULL;
|
||||||
|
else
|
||||||
|
xkb = keybd->key->xkbInfo->desc;
|
||||||
|
if ((names->keycodes == NULL) && (names->types == NULL) &&
|
||||||
|
(names->compat == NULL) && (names->symbols == NULL) &&
|
||||||
|
(names->geometry == NULL)) {
|
||||||
|
LogMessage(X_ERROR, "XKB: No components provided for device %s\n",
|
||||||
|
keybd->name ? keybd->name : "(unnamed keyboard)");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need,
|
||||||
|
nameRtrn, nameRtrnLen)) {
|
||||||
|
LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return LoadXKM(want, need, nameRtrn, xkbRtrn);
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
XkbDDXNamesFromRules(DeviceIntPtr keybd,
|
XkbDDXNamesFromRules(DeviceIntPtr keybd,
|
||||||
const char *rules_name,
|
const char *rules_name,
|
||||||
|
|
Loading…
Reference in New Issue