Prune XKB code to only what we need to run the server. Remove dead
!XKB_IN_SERVER codepaths. Remove HAVE_CONFIG_H codepaths.
This commit is contained in:
parent
5be8a66d32
commit
0e88cefbfe
12
ChangeLog
12
ChangeLog
|
@ -35,6 +35,18 @@
|
||||||
Move XFree86 DDX actions out of xkb/ and into proper files in their
|
Move XFree86 DDX actions out of xkb/ and into proper files in their
|
||||||
own right in dixmods.
|
own right in dixmods.
|
||||||
|
|
||||||
|
* xkb/Makefile.am:
|
||||||
|
* xkb/XKBAlloc.c:
|
||||||
|
* xkb/XKBGAlloc.c:
|
||||||
|
* xkb/XKBMAlloc.c:
|
||||||
|
* xkb/XKBMisc.c:
|
||||||
|
* xkb/xkbfmisc.c:
|
||||||
|
* xkb/xkmread.c:
|
||||||
|
* xkb/xkbtext.c:
|
||||||
|
* xkb/xkbout.c:
|
||||||
|
Prune XKB code to only what we need to run the server. Remove dead
|
||||||
|
!XKB_IN_SERVER codepaths. Remove HAVE_CONFIG_H codepaths.
|
||||||
|
|
||||||
2006-03-25 Adam Jackson <ajax@freedesktop.org>
|
2006-03-25 Adam Jackson <ajax@freedesktop.org>
|
||||||
|
|
||||||
* hw/xfree86/common/xf86Bus.c:
|
* hw/xfree86/common/xf86Bus.c:
|
||||||
|
|
|
@ -30,10 +30,8 @@ DIX_SRCS = \
|
||||||
XKBFILE_SRCS = \
|
XKBFILE_SRCS = \
|
||||||
maprules.c \
|
maprules.c \
|
||||||
xkmread.c \
|
xkmread.c \
|
||||||
xkbtext.c \
|
|
||||||
xkbfmisc.c \
|
xkbfmisc.c \
|
||||||
xkberrs.c \
|
xkberrs.c
|
||||||
xkbout.c
|
|
||||||
|
|
||||||
X11_SRCS = \
|
X11_SRCS = \
|
||||||
XKBMisc.c \
|
XKBMisc.c \
|
||||||
|
|
|
@ -28,23 +28,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#elif defined(HAVE_CONFIG_H)
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#define NEED_REPLIES
|
|
||||||
#define NEED_EVENTS
|
|
||||||
#include "Xlibint.h"
|
|
||||||
#include "XKBlibint.h"
|
|
||||||
#include <X11/extensions/XKBgeom.h>
|
|
||||||
#include <X11/extensions/XKBproto.h>
|
|
||||||
#include "XKBlibint.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
|
@ -55,8 +40,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <X11/extensions/XKBsrv.h>
|
#include <X11/extensions/XKBsrv.h>
|
||||||
#include <X11/extensions/XKBgeom.h>
|
#include <X11/extensions/XKBgeom.h>
|
||||||
|
|
||||||
#endif /* XKB_IN_SERVER */
|
|
||||||
|
|
||||||
/***===================================================================***/
|
/***===================================================================***/
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
|
|
|
@ -28,23 +28,11 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#elif defined(HAVE_CONFIG_H)
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
#define NEED_REPLIES
|
#define NEED_REPLIES
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "Xlibint.h"
|
|
||||||
#include "XKBlibint.h"
|
|
||||||
#include <X11/extensions/XKBgeom.h>
|
|
||||||
#include <X11/extensions/XKBproto.h>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
|
@ -53,8 +41,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <X11/extensions/XKBsrv.h>
|
#include <X11/extensions/XKBsrv.h>
|
||||||
#include <X11/extensions/XKBgeom.h>
|
#include <X11/extensions/XKBgeom.h>
|
||||||
|
|
||||||
#endif /* XKB_IN_SERVER */
|
|
||||||
|
|
||||||
#ifdef X_NOT_POSIX
|
#ifdef X_NOT_POSIX
|
||||||
#define Size_t unsigned int
|
#define Size_t unsigned int
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -32,18 +32,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#define NEED_REPLIES
|
|
||||||
#define NEED_EVENTS
|
|
||||||
#include "Xlibint.h"
|
|
||||||
#include <X11/extensions/XKBproto.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
#include "XKBlibint.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
|
@ -55,8 +43,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#define XKBSRV_NEED_FILE_FUNCS
|
#define XKBSRV_NEED_FILE_FUNCS
|
||||||
#include <X11/extensions/XKBsrv.h>
|
#include <X11/extensions/XKBsrv.h>
|
||||||
|
|
||||||
#endif /* XKB_IN_SERVER */
|
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
|
@ -32,18 +32,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#define NEED_REPLIES
|
|
||||||
#define NEED_EVENTS
|
|
||||||
#include "Xlibint.h"
|
|
||||||
#include <X11/extensions/XKBproto.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
#include "XKBlibint.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
|
@ -55,8 +43,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#define XKBSRV_NEED_FILE_FUNCS
|
#define XKBSRV_NEED_FILE_FUNCS
|
||||||
#include <X11/extensions/XKBsrv.h>
|
#include <X11/extensions/XKBsrv.h>
|
||||||
|
|
||||||
#endif /* XKB_IN_SERVER */
|
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
#define mapSize(m) (sizeof(m)/sizeof(XkbKTMapEntryRec))
|
#define mapSize(m) (sizeof(m)/sizeof(XkbKTMapEntryRec))
|
||||||
|
|
149
xkb/maprules.c
149
xkb/maprules.c
|
@ -28,8 +28,6 @@
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#elif defined(HAVE_CONFIG_H)
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -40,22 +38,6 @@
|
||||||
#define XOS_USE_NO_LOCKING
|
#define XOS_USE_NO_LOCKING
|
||||||
#include <X11/Xos_r.h>
|
#include <X11/Xos_r.h>
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <X11/Xproto.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/Xos.h>
|
|
||||||
#include <X11/Xfuncs.h>
|
|
||||||
#include <X11/Xatom.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
#include <X11/XKBlib.h>
|
|
||||||
#include <X11/extensions/XKBgeom.h>
|
|
||||||
#include "XKMformat.h"
|
|
||||||
#include "XKBfileInt.h"
|
|
||||||
#include "XKBrules.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
|
@ -70,8 +52,6 @@
|
||||||
#define XKBSRV_NEED_FILE_FUNCS
|
#define XKBSRV_NEED_FILE_FUNCS
|
||||||
#include <X11/extensions/XKBsrv.h>
|
#include <X11/extensions/XKBsrv.h>
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define PR_DEBUG(s) fprintf(stderr,s)
|
#define PR_DEBUG(s) fprintf(stderr,s)
|
||||||
#define PR_DEBUG1(s,a) fprintf(stderr,s,a)
|
#define PR_DEBUG1(s,a) fprintf(stderr,s,a)
|
||||||
|
@ -1350,132 +1330,3 @@ XkbRF_GroupPtr group;
|
||||||
_XkbFree(rules);
|
_XkbFree(rules);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
Bool
|
|
||||||
XkbRF_GetNamesProp(Display *dpy,char **rf_rtrn,XkbRF_VarDefsPtr vd_rtrn)
|
|
||||||
{
|
|
||||||
Atom rules_atom,actual_type;
|
|
||||||
int fmt;
|
|
||||||
unsigned long nitems,bytes_after;
|
|
||||||
char *data,*out;
|
|
||||||
Status rtrn;
|
|
||||||
|
|
||||||
rules_atom= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,True);
|
|
||||||
if (rules_atom==None) /* property cannot exist */
|
|
||||||
return False;
|
|
||||||
rtrn= XGetWindowProperty(dpy,DefaultRootWindow(dpy),rules_atom,
|
|
||||||
0L,_XKB_RF_NAMES_PROP_MAXLEN,False,
|
|
||||||
XA_STRING,&actual_type,
|
|
||||||
&fmt,&nitems,&bytes_after,
|
|
||||||
(unsigned char **)&data);
|
|
||||||
if (rtrn!=Success)
|
|
||||||
return False;
|
|
||||||
if (rf_rtrn)
|
|
||||||
*rf_rtrn= NULL;
|
|
||||||
(void)bzero((char *)vd_rtrn,sizeof(XkbRF_VarDefsRec));
|
|
||||||
if ((bytes_after>0)||(actual_type!=XA_STRING)||(fmt!=8)) {
|
|
||||||
if (data) XFree(data);
|
|
||||||
return (fmt==0?True:False);
|
|
||||||
}
|
|
||||||
|
|
||||||
out= data;
|
|
||||||
if (out && (*out) && rf_rtrn)
|
|
||||||
*rf_rtrn= _XkbDupString(out);
|
|
||||||
out+=strlen(out)+1;
|
|
||||||
|
|
||||||
if ((out-data)<nitems) {
|
|
||||||
if (*out)
|
|
||||||
vd_rtrn->model= _XkbDupString(out);
|
|
||||||
out+=strlen(out)+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((out-data)<nitems) {
|
|
||||||
if (*out)
|
|
||||||
vd_rtrn->layout= _XkbDupString(out);
|
|
||||||
out+=strlen(out)+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((out-data)<nitems) {
|
|
||||||
if (*out)
|
|
||||||
vd_rtrn->variant= _XkbDupString(out);
|
|
||||||
out+=strlen(out)+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ((out-data)<nitems) {
|
|
||||||
if (*out)
|
|
||||||
vd_rtrn->options= _XkbDupString(out);
|
|
||||||
out+=strlen(out)+1;
|
|
||||||
}
|
|
||||||
XFree(data);
|
|
||||||
return True;
|
|
||||||
}
|
|
||||||
|
|
||||||
Bool
|
|
||||||
XkbRF_SetNamesProp(Display *dpy,char *rules_file,XkbRF_VarDefsPtr var_defs)
|
|
||||||
{
|
|
||||||
int len,out;
|
|
||||||
Atom name;
|
|
||||||
char * pval;
|
|
||||||
|
|
||||||
len= (rules_file?strlen(rules_file):0);
|
|
||||||
len+= (var_defs->model?strlen(var_defs->model):0);
|
|
||||||
len+= (var_defs->layout?strlen(var_defs->layout):0);
|
|
||||||
len+= (var_defs->variant?strlen(var_defs->variant):0);
|
|
||||||
len+= (var_defs->options?strlen(var_defs->options):0);
|
|
||||||
if (len<1)
|
|
||||||
return True;
|
|
||||||
|
|
||||||
len+= 5; /* trailing NULs */
|
|
||||||
|
|
||||||
name= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,False);
|
|
||||||
if (name==None) { /* should never happen */
|
|
||||||
_XkbLibError(_XkbErrXReqFailure,"XkbRF_SetNamesProp",X_InternAtom);
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
pval= (char *)_XkbAlloc(len);
|
|
||||||
if (!pval) {
|
|
||||||
_XkbLibError(_XkbErrBadAlloc,"XkbRF_SetNamesProp",len);
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
out= 0;
|
|
||||||
if (rules_file) {
|
|
||||||
strcpy(&pval[out],rules_file);
|
|
||||||
out+= strlen(rules_file);
|
|
||||||
}
|
|
||||||
pval[out++]= '\0';
|
|
||||||
if (var_defs->model) {
|
|
||||||
strcpy(&pval[out],var_defs->model);
|
|
||||||
out+= strlen(var_defs->model);
|
|
||||||
}
|
|
||||||
pval[out++]= '\0';
|
|
||||||
if (var_defs->layout) {
|
|
||||||
strcpy(&pval[out],var_defs->layout);
|
|
||||||
out+= strlen(var_defs->layout);
|
|
||||||
}
|
|
||||||
pval[out++]= '\0';
|
|
||||||
if (var_defs->variant) {
|
|
||||||
strcpy(&pval[out],var_defs->variant);
|
|
||||||
out+= strlen(var_defs->variant);
|
|
||||||
}
|
|
||||||
pval[out++]= '\0';
|
|
||||||
if (var_defs->options) {
|
|
||||||
strcpy(&pval[out],var_defs->options);
|
|
||||||
out+= strlen(var_defs->options);
|
|
||||||
}
|
|
||||||
pval[out++]= '\0';
|
|
||||||
if (out!=len) {
|
|
||||||
_XkbLibError(_XkbErrBadLength,"XkbRF_SetNamesProp",out);
|
|
||||||
_XkbFree(pval);
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
|
|
||||||
XChangeProperty(dpy,DefaultRootWindow(dpy),name,XA_STRING,8,PropModeReplace,
|
|
||||||
(unsigned char *)pval,len);
|
|
||||||
_XkbFree(pval);
|
|
||||||
return True;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -9,13 +9,8 @@
|
||||||
#ifndef DEFAULT_H
|
#ifndef DEFAULT_H
|
||||||
#define DEFAULT_H 1
|
#define DEFAULT_H 1
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
#define GET_ATOM(d,s) XInternAtom(d,s,0)
|
|
||||||
#define DPYTYPE Display *
|
|
||||||
#else
|
|
||||||
#define GET_ATOM(d,s) MakeAtom(s,strlen(s),1)
|
#define GET_ATOM(d,s) MakeAtom(s,strlen(s),1)
|
||||||
#define DPYTYPE char *
|
#define DPYTYPE char *
|
||||||
#endif
|
|
||||||
#define NUM_KEYS 1
|
#define NUM_KEYS 1
|
||||||
|
|
||||||
#define vmod_NumLock 0
|
#define vmod_NumLock 0
|
||||||
|
|
|
@ -28,8 +28,6 @@
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#elif defined(HAVE_CONFIG_H)
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
450
xkb/xkbfmisc.c
450
xkb/xkbfmisc.c
|
@ -28,8 +28,6 @@
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#elif defined(HAVE_CONFIG_H)
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -39,17 +37,6 @@
|
||||||
#include <X11/Xos.h>
|
#include <X11/Xos.h>
|
||||||
#include <X11/Xfuncs.h>
|
#include <X11/Xfuncs.h>
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
#include <X11/XKBlib.h>
|
|
||||||
#include <X11/extensions/XKBgeom.h>
|
|
||||||
#include "XKMformat.h"
|
|
||||||
#include "XKBfileInt.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
#include <X11/keysym.h>
|
#include <X11/keysym.h>
|
||||||
|
@ -63,187 +50,16 @@
|
||||||
#include <X11/extensions/XKBgeom.h>
|
#include <X11/extensions/XKBgeom.h>
|
||||||
#include "xkb.h"
|
#include "xkb.h"
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
unsigned
|
|
||||||
_XkbKSCheckCase(KeySym ks)
|
|
||||||
{
|
|
||||||
unsigned set,rtrn;
|
|
||||||
|
|
||||||
set= (ks & (~0xff)) >> 8;
|
|
||||||
rtrn= 0;
|
|
||||||
switch (set) {
|
|
||||||
case 0: /* latin 1 */
|
|
||||||
if (((ks>=XK_A)&&(ks<=XK_Z))||
|
|
||||||
((ks>=XK_Agrave)&&(ks<=XK_THORN)&&(ks!=XK_multiply))) {
|
|
||||||
rtrn|= _XkbKSUpper;
|
|
||||||
}
|
|
||||||
if (((ks>=XK_a)&&(ks<=XK_z))||
|
|
||||||
((ks>=XK_agrave)&&(ks<=XK_ydiaeresis))) {
|
|
||||||
rtrn|= _XkbKSLower;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 1: /* latin 2 */
|
|
||||||
if (((ks>=XK_Aogonek)&&(ks<=XK_Zabovedot)&&(ks!=XK_breve))||
|
|
||||||
((ks>=XK_Racute)&&(ks<=XK_Tcedilla))) {
|
|
||||||
rtrn|= _XkbKSUpper;
|
|
||||||
}
|
|
||||||
if (((ks>=XK_aogonek)&&(ks<=XK_zabovedot)&&(ks!=XK_caron))||
|
|
||||||
((ks>=XK_racute)&&(ks<=XK_tcedilla))) {
|
|
||||||
rtrn|= _XkbKSLower;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2: /* latin 3 */
|
|
||||||
if (((ks>=XK_Hstroke)&&(ks<=XK_Jcircumflex))||
|
|
||||||
((ks>=XK_Cabovedot)&&(ks<=XK_Scircumflex))) {
|
|
||||||
rtrn|= _XkbKSUpper;
|
|
||||||
}
|
|
||||||
if (((ks>=XK_hstroke)&&(ks<=XK_jcircumflex))||
|
|
||||||
((ks>=XK_cabovedot)&&(ks<=XK_scircumflex))) {
|
|
||||||
rtrn|= _XkbKSLower;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3: /* latin 4 */
|
|
||||||
if (((ks>=XK_Rcedilla)&&(ks<=XK_Tslash))||
|
|
||||||
(ks==XK_ENG)||
|
|
||||||
((ks>=XK_Amacron)&&(ks<=XK_Umacron))) {
|
|
||||||
rtrn|= _XkbKSUpper;
|
|
||||||
}
|
|
||||||
if (((ks>=XK_rcedilla)&&(ks<=XK_tslash))||
|
|
||||||
(ks==XK_eng)||
|
|
||||||
((ks>=XK_amacron)&&(ks<=XK_umacron))) {
|
|
||||||
rtrn|= _XkbKSLower;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 18: /* latin 8 */
|
|
||||||
if ((ks==XK_Babovedot)||
|
|
||||||
((ks>=XK_Dabovedot)&&(ks<=XK_Wacute))||
|
|
||||||
((ks>=XK_Ygrave)&&(ks<=XK_Fabovedot))||
|
|
||||||
(ks==XK_Mabovedot)||
|
|
||||||
(ks==XK_Pabovedot)||
|
|
||||||
(ks==XK_Sabovedot)||
|
|
||||||
(ks==XK_Wdiaeresis)||
|
|
||||||
((ks>=XK_Wcircumflex)&&(ks<=XK_Ycircumflex))) {
|
|
||||||
rtrn|= _XkbKSUpper;
|
|
||||||
}
|
|
||||||
if ((ks==XK_babovedot)||
|
|
||||||
(ks==XK_dabovedot)||
|
|
||||||
(ks==XK_fabovedot)||
|
|
||||||
(ks==XK_mabovedot)||
|
|
||||||
((ks>=XK_wgrave)&&(ks<=XK_wacute))||
|
|
||||||
(ks==XK_ygrave)||
|
|
||||||
((ks>=XK_wdiaeresis)&&(ks<=XK_ycircumflex))) {
|
|
||||||
rtrn|= _XkbKSLower;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 19: /* latin 9 */
|
|
||||||
if ((ks==XK_OE)||(ks==XK_Ydiaeresis)) {
|
|
||||||
rtrn|= _XkbKSUpper;
|
|
||||||
}
|
|
||||||
if (ks==XK_oe) {
|
|
||||||
rtrn|= _XkbKSLower;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return rtrn;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***===================================================================***/
|
|
||||||
|
|
||||||
Bool
|
|
||||||
XkbLookupGroupAndLevel( XkbDescPtr xkb,
|
|
||||||
int key,
|
|
||||||
int * mods_inout,
|
|
||||||
int * grp_inout,
|
|
||||||
int * lvl_rtrn)
|
|
||||||
{
|
|
||||||
int nG,eG;
|
|
||||||
|
|
||||||
if ((!xkb)||(!XkbKeycodeInRange(xkb,key))||(!grp_inout))
|
|
||||||
return False;
|
|
||||||
|
|
||||||
nG= XkbKeyNumGroups(xkb,key);
|
|
||||||
eG= *grp_inout;
|
|
||||||
|
|
||||||
if ( nG==0 ) {
|
|
||||||
*grp_inout= 0;
|
|
||||||
if (lvl_rtrn!=NULL)
|
|
||||||
*lvl_rtrn= 0;
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
else if ( nG==1 ) {
|
|
||||||
eG= 0;
|
|
||||||
}
|
|
||||||
else if ( eG>=nG ) {
|
|
||||||
unsigned gI= XkbKeyGroupInfo(xkb,key);
|
|
||||||
switch (XkbOutOfRangeGroupAction(gI)) {
|
|
||||||
default:
|
|
||||||
eG %= nG;
|
|
||||||
break;
|
|
||||||
case XkbClampIntoRange:
|
|
||||||
eG = nG-1;
|
|
||||||
break;
|
|
||||||
case XkbRedirectIntoRange:
|
|
||||||
eG = XkbOutOfRangeGroupNumber(gI);
|
|
||||||
if (eG>=nG)
|
|
||||||
eG= 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*grp_inout= eG;
|
|
||||||
if (mods_inout!=NULL) {
|
|
||||||
XkbKeyTypePtr type;
|
|
||||||
int preserve;
|
|
||||||
|
|
||||||
type = XkbKeyKeyType(xkb,key,eG);
|
|
||||||
if (lvl_rtrn!=NULL)
|
|
||||||
*lvl_rtrn= 0;
|
|
||||||
preserve= 0;
|
|
||||||
if (type->map) { /* find the shift level */
|
|
||||||
register int i;
|
|
||||||
register XkbKTMapEntryPtr entry;
|
|
||||||
for (i=0,entry=type->map;i<type->map_count;i++,entry++) {
|
|
||||||
if ((entry->active)&&
|
|
||||||
(((*mods_inout)&type->mods.mask)==entry->mods.mask)){
|
|
||||||
if (lvl_rtrn!=NULL)
|
|
||||||
*lvl_rtrn= entry->level;
|
|
||||||
if (type->preserve)
|
|
||||||
preserve= type->preserve[i].mask;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
(*mods_inout)&= ~(type->mods.mask&(~preserve));
|
|
||||||
}
|
|
||||||
return True;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***===================================================================***/
|
/***===================================================================***/
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
XkbWriteSectionFromName(FILE *file,char *sectionName,char *name)
|
XkbWriteSectionFromName(FILE *file,char *sectionName,char *name)
|
||||||
{
|
{
|
||||||
fprintf(file," xkb_%-20s { include \"%s\" };\n",sectionName,name);
|
fprintf(file," xkb_%-20s { include \"%s\" };\n",sectionName,name);
|
||||||
|
ErrorF(" xkb_%-20s { include \"%s\" };\n",sectionName,name);
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NEED_DESC(n) ((!n)||((n)[0]=='+')||((n)[0]=='|')||(strchr((n),'%')))
|
|
||||||
#define COMPLETE(n) ((n)&&(!NEED_DESC(n)))
|
|
||||||
|
|
||||||
/* ARGSUSED */
|
|
||||||
static void
|
|
||||||
_AddIncl( FILE * file,
|
|
||||||
XkbFileInfo * result,
|
|
||||||
Bool topLevel,
|
|
||||||
Bool showImplicit,
|
|
||||||
int index,
|
|
||||||
void * priv)
|
|
||||||
{
|
|
||||||
if ((priv)&&(strcmp((char *)priv,"%")!=0))
|
|
||||||
fprintf(file," include \"%s\"\n",(char *)priv);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
XkbWriteXKBKeymapForNames( FILE * file,
|
XkbWriteXKBKeymapForNames( FILE * file,
|
||||||
XkbComponentNamesPtr names,
|
XkbComponentNamesPtr names,
|
||||||
|
@ -252,229 +68,45 @@ XkbWriteXKBKeymapForNames( FILE * file,
|
||||||
unsigned want,
|
unsigned want,
|
||||||
unsigned need)
|
unsigned need)
|
||||||
{
|
{
|
||||||
char * name,*tmp;
|
unsigned complete = 0;
|
||||||
unsigned complete;
|
|
||||||
XkbNamesPtr old_names;
|
|
||||||
int multi_section;
|
|
||||||
unsigned wantNames,wantConfig,wantDflts;
|
|
||||||
XkbFileInfo finfo;
|
|
||||||
|
|
||||||
bzero(&finfo,sizeof(XkbFileInfo));
|
if (names->keycodes) complete |= XkmKeyNamesMask;
|
||||||
|
if (names->types) complete |= XkmTypesMask;
|
||||||
|
if (names->compat) complete |= XkmCompatMapMask;
|
||||||
|
if (names->symbols) complete |= XkmSymbolsMask;
|
||||||
|
if (names->geometry) complete |= XkmGeometryMask;
|
||||||
|
|
||||||
complete= 0;
|
if (complete == 0)
|
||||||
if ((name=names->keymap)==NULL) name= "default";
|
return False;
|
||||||
if (COMPLETE(names->keycodes)) complete|= XkmKeyNamesMask;
|
|
||||||
if (COMPLETE(names->types)) complete|= XkmTypesMask;
|
|
||||||
if (COMPLETE(names->compat)) complete|= XkmCompatMapMask;
|
|
||||||
if (COMPLETE(names->symbols)) complete|= XkmSymbolsMask;
|
|
||||||
if (COMPLETE(names->geometry)) complete|= XkmGeometryMask;
|
|
||||||
want|= (complete|need);
|
|
||||||
if (want&XkmSymbolsMask)
|
|
||||||
want|= XkmKeyNamesMask|XkmTypesMask;
|
|
||||||
|
|
||||||
if (want==0)
|
if (complete & XkmSymbolsMask)
|
||||||
return False;
|
complete |= XkmKeyNamesMask | XkmTypesMask;
|
||||||
|
|
||||||
if (xkb!=NULL) {
|
fprintf(file, "xkb_keymap \"%s\" {\n",names->keymap ? names->keymap :
|
||||||
old_names= xkb->names;
|
"default");
|
||||||
finfo.type= 0;
|
ErrorF("xkb_keymap \"%s\" {\n",names->keymap ? names->keymap :
|
||||||
finfo.defined= 0;
|
"default");
|
||||||
finfo.xkb= xkb;
|
|
||||||
if (!XkbDetermineFileType(&finfo,XkbXKBFile,NULL))
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
else old_names= NULL;
|
|
||||||
|
|
||||||
wantConfig= want&(~complete);
|
if (complete & XkmKeyNamesMask)
|
||||||
if (xkb!=NULL) {
|
XkbWriteSectionFromName(file, "keycodes", names->keycodes);
|
||||||
if (wantConfig&XkmTypesMask) {
|
|
||||||
if ((!xkb->map) || (xkb->map->num_types<XkbNumRequiredTypes))
|
|
||||||
wantConfig&= ~XkmTypesMask;
|
|
||||||
}
|
|
||||||
if (wantConfig&XkmCompatMapMask) {
|
|
||||||
if ((!xkb->compat) || (xkb->compat->num_si<1))
|
|
||||||
wantConfig&= ~XkmCompatMapMask;
|
|
||||||
}
|
|
||||||
if (wantConfig&XkmSymbolsMask) {
|
|
||||||
if ((!xkb->map) || (!xkb->map->key_sym_map))
|
|
||||||
wantConfig&= ~XkmSymbolsMask;
|
|
||||||
}
|
|
||||||
if (wantConfig&XkmIndicatorsMask) {
|
|
||||||
if (!xkb->indicators)
|
|
||||||
wantConfig&= ~XkmIndicatorsMask;
|
|
||||||
}
|
|
||||||
if (wantConfig&XkmKeyNamesMask) {
|
|
||||||
if ((!xkb->names)||(!xkb->names->keys))
|
|
||||||
wantConfig&= ~XkmKeyNamesMask;
|
|
||||||
}
|
|
||||||
if ((wantConfig&XkmGeometryMask)&&(!xkb->geom))
|
|
||||||
wantConfig&= ~XkmGeometryMask;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
wantConfig= 0;
|
|
||||||
}
|
|
||||||
complete|= wantConfig;
|
|
||||||
|
|
||||||
wantDflts= 0;
|
if (complete & XkmTypesMask)
|
||||||
wantNames= want&(~complete);
|
XkbWriteSectionFromName(file, "types", names->types);
|
||||||
if ((xkb!=NULL) && (old_names!=NULL)) {
|
|
||||||
if (wantNames&XkmTypesMask) {
|
|
||||||
if (old_names->types!=None) {
|
|
||||||
tmp= XkbAtomGetString(dpy,old_names->types);
|
|
||||||
names->types= _XkbDupString(tmp);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
wantDflts|= XkmTypesMask;
|
|
||||||
}
|
|
||||||
complete|= XkmTypesMask;
|
|
||||||
}
|
|
||||||
if (wantNames&XkmCompatMapMask) {
|
|
||||||
if (old_names->compat!=None) {
|
|
||||||
tmp= XkbAtomGetString(dpy,old_names->compat);
|
|
||||||
names->compat= _XkbDupString(tmp);
|
|
||||||
}
|
|
||||||
else wantDflts|= XkmCompatMapMask;
|
|
||||||
complete|= XkmCompatMapMask;
|
|
||||||
}
|
|
||||||
if (wantNames&XkmSymbolsMask) {
|
|
||||||
if (old_names->symbols==None)
|
|
||||||
return False;
|
|
||||||
tmp= XkbAtomGetString(dpy,old_names->symbols);
|
|
||||||
names->symbols= _XkbDupString(tmp);
|
|
||||||
complete|= XkmSymbolsMask;
|
|
||||||
}
|
|
||||||
if (wantNames&XkmKeyNamesMask) {
|
|
||||||
if (old_names->keycodes!=None) {
|
|
||||||
tmp= XkbAtomGetString(dpy,old_names->keycodes);
|
|
||||||
names->keycodes= _XkbDupString(tmp);
|
|
||||||
}
|
|
||||||
else wantDflts|= XkmKeyNamesMask;
|
|
||||||
complete|= XkmKeyNamesMask;
|
|
||||||
}
|
|
||||||
if (wantNames&XkmGeometryMask) {
|
|
||||||
if (old_names->geometry==None)
|
|
||||||
return False;
|
|
||||||
tmp= XkbAtomGetString(dpy,old_names->geometry);
|
|
||||||
names->geometry= _XkbDupString(tmp);
|
|
||||||
complete|= XkmGeometryMask;
|
|
||||||
wantNames&= ~XkmGeometryMask;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (complete&XkmCompatMapMask)
|
|
||||||
complete|= XkmIndicatorsMask|XkmVirtualModsMask;
|
|
||||||
else if (complete&(XkmSymbolsMask|XkmTypesMask))
|
|
||||||
complete|= XkmVirtualModsMask;
|
|
||||||
if (need & (~complete))
|
|
||||||
return False;
|
|
||||||
if ((complete&XkmSymbolsMask)&&((XkmKeyNamesMask|XkmTypesMask)&(~complete)))
|
|
||||||
return False;
|
|
||||||
|
|
||||||
multi_section= 1;
|
if (complete & XkmCompatMapMask)
|
||||||
if (((complete&XkmKeymapRequired)==XkmKeymapRequired)&&
|
XkbWriteSectionFromName(file, "compatibility", names->compat);
|
||||||
((complete&(~XkmKeymapLegal))==0)) {
|
|
||||||
fprintf(file,"xkb_keymap \"%s\" {\n",name);
|
|
||||||
}
|
|
||||||
else if (((complete&XkmSemanticsRequired)==XkmSemanticsRequired)&&
|
|
||||||
((complete&(~XkmSemanticsLegal))==0)) {
|
|
||||||
fprintf(file,"xkb_semantics \"%s\" {\n",name);
|
|
||||||
}
|
|
||||||
else if (((complete&XkmLayoutRequired)==XkmLayoutRequired)&&
|
|
||||||
((complete&(~XkmLayoutLegal))==0)) {
|
|
||||||
fprintf(file,"xkb_layout \"%s\" {\n",name);
|
|
||||||
}
|
|
||||||
else if (XkmSingleSection(complete&(~XkmVirtualModsMask))) {
|
|
||||||
multi_section= 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
|
|
||||||
wantNames= complete&(~(wantConfig|wantDflts));
|
if (complete & XkmSymbolsMask)
|
||||||
name= names->keycodes;
|
XkbWriteSectionFromName(file, "symbols", names->symbols);
|
||||||
if (wantConfig&XkmKeyNamesMask)
|
|
||||||
XkbWriteXKBKeycodes(file,&finfo,False,False,_AddIncl,name);
|
|
||||||
else if (wantDflts&XkmKeyNamesMask)
|
|
||||||
fprintf(stderr,"Default symbols not implemented yet!\n");
|
|
||||||
else if (wantNames&XkmKeyNamesMask)
|
|
||||||
XkbWriteSectionFromName(file,"keycodes",name);
|
|
||||||
|
|
||||||
name= names->types;
|
if (complete & XkmGeometryMask)
|
||||||
if (wantConfig&XkmTypesMask)
|
XkbWriteSectionFromName(file, "geometry", names->geometry);
|
||||||
XkbWriteXKBKeyTypes(file,&finfo,False,False,_AddIncl,name);
|
|
||||||
else if (wantDflts&XkmTypesMask)
|
|
||||||
fprintf(stderr,"Default types not implemented yet!\n");
|
|
||||||
else if (wantNames&XkmTypesMask)
|
|
||||||
XkbWriteSectionFromName(file,"types",name);
|
|
||||||
|
|
||||||
name= names->compat;
|
fprintf(file,"};\n");
|
||||||
if (wantConfig&XkmCompatMapMask)
|
ErrorF("};\n");
|
||||||
XkbWriteXKBCompatMap(file,&finfo,False,False,_AddIncl,name);
|
|
||||||
else if (wantDflts&XkmCompatMapMask)
|
|
||||||
fprintf(stderr,"Default interps not implemented yet!\n");
|
|
||||||
else if (wantNames&XkmCompatMapMask)
|
|
||||||
XkbWriteSectionFromName(file,"compatibility",name);
|
|
||||||
|
|
||||||
name= names->symbols;
|
|
||||||
if (wantConfig&XkmSymbolsMask)
|
|
||||||
XkbWriteXKBSymbols(file,&finfo,False,False,_AddIncl,name);
|
|
||||||
else if (wantNames&XkmSymbolsMask)
|
|
||||||
XkbWriteSectionFromName(file,"symbols",name);
|
|
||||||
|
|
||||||
name= names->geometry;
|
|
||||||
if (wantConfig&XkmGeometryMask)
|
|
||||||
XkbWriteXKBGeometry(file,&finfo,False,False,_AddIncl,name);
|
|
||||||
else if (wantNames&XkmGeometryMask)
|
|
||||||
XkbWriteSectionFromName(file,"geometry",name);
|
|
||||||
|
|
||||||
if (multi_section)
|
|
||||||
fprintf(file,"};\n");
|
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***====================================================================***/
|
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
Status
|
|
||||||
XkbMergeFile(XkbDescPtr xkb,XkbFileInfo finfo)
|
|
||||||
{
|
|
||||||
return BadImplementation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***====================================================================***/
|
|
||||||
|
|
||||||
int
|
|
||||||
XkbFindKeycodeByName(XkbDescPtr xkb,char *name,Bool use_aliases)
|
|
||||||
{
|
|
||||||
register int i;
|
|
||||||
|
|
||||||
if ((!xkb)||(!xkb->names)||(!xkb->names->keys))
|
|
||||||
return 0;
|
|
||||||
for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
|
|
||||||
if (strncmp(xkb->names->keys[i].name,name,XkbKeyNameLength)==0)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
if (!use_aliases)
|
|
||||||
return 0;
|
|
||||||
if (xkb->geom && xkb->geom->key_aliases) {
|
|
||||||
XkbKeyAliasPtr a;
|
|
||||||
a= xkb->geom->key_aliases;
|
|
||||||
for (i=0;i<xkb->geom->num_key_aliases;i++,a++) {
|
|
||||||
if (strncmp(name,a->alias,XkbKeyNameLength)==0)
|
|
||||||
return XkbFindKeycodeByName(xkb,a->real,False);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (xkb->names && xkb->names->key_aliases) {
|
|
||||||
XkbKeyAliasPtr a;
|
|
||||||
a= xkb->names->key_aliases;
|
|
||||||
for (i=0;i<xkb->names->num_key_aliases;i++,a++) {
|
|
||||||
if (strncmp(name,a->alias,XkbKeyNameLength)==0)
|
|
||||||
return XkbFindKeycodeByName(xkb,a->real,False);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned
|
unsigned
|
||||||
XkbConvertGetByNameComponents(Bool toXkm,unsigned orig)
|
XkbConvertGetByNameComponents(Bool toXkm,unsigned orig)
|
||||||
{
|
{
|
||||||
|
@ -501,34 +133,6 @@ unsigned rtrn;
|
||||||
return rtrn;
|
return rtrn;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned
|
|
||||||
XkbConvertXkbComponents(Bool toXkm,unsigned orig)
|
|
||||||
{
|
|
||||||
unsigned rtrn;
|
|
||||||
|
|
||||||
rtrn= 0;
|
|
||||||
if (toXkm) {
|
|
||||||
if (orig&XkbClientMapMask) rtrn|= XkmTypesMask|XkmSymbolsMask;
|
|
||||||
if (orig&XkbServerMapMask) rtrn|= XkmTypesMask|XkmSymbolsMask;
|
|
||||||
if (orig&XkbCompatMapMask) rtrn|= XkmCompatMapMask;
|
|
||||||
if (orig&XkbIndicatorMapMask) rtrn|= XkmIndicatorsMask;
|
|
||||||
if (orig&XkbNamesMask) rtrn|= XkmKeyNamesMask;
|
|
||||||
if (orig&XkbGeometryMask) rtrn|= XkmGeometryMask;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (orig!=0) rtrn|= XkbNamesMask;
|
|
||||||
if (orig&XkmTypesMask) rtrn|= XkbClientMapMask;
|
|
||||||
if (orig&XkmCompatMapMask)
|
|
||||||
rtrn|= XkbCompatMapMask|XkbIndicatorMapMask;
|
|
||||||
if (orig&XkmSymbolsMask) rtrn|=XkbClientMapMask|XkbServerMapMask;
|
|
||||||
if (orig&XkmIndicatorsMask) rtrn|= XkbIndicatorMapMask;
|
|
||||||
if (orig&XkmKeyNamesMask)
|
|
||||||
rtrn|= XkbNamesMask|XkbIndicatorMapMask;
|
|
||||||
if (orig&XkmGeometryMask) rtrn|= XkbGeometryMask;
|
|
||||||
}
|
|
||||||
return rtrn;
|
|
||||||
}
|
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
XkbDetermineFileType(XkbFileInfoPtr finfo,int format,int *opts_missing)
|
XkbDetermineFileType(XkbFileInfoPtr finfo,int format,int *opts_missing)
|
||||||
{
|
{
|
||||||
|
|
1066
xkb/xkbout.c
1066
xkb/xkbout.c
File diff suppressed because it is too large
Load Diff
1440
xkb/xkbtext.c
1440
xkb/xkbtext.c
File diff suppressed because it is too large
Load Diff
112
xkb/xkmread.c
112
xkb/xkmread.c
|
@ -28,8 +28,6 @@
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#elif defined(HAVE_CONFIG_H)
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -37,20 +35,6 @@
|
||||||
#include <X11/Xos.h>
|
#include <X11/Xos.h>
|
||||||
#include <X11/Xfuncs.h>
|
#include <X11/Xfuncs.h>
|
||||||
|
|
||||||
#ifndef XKB_IN_SERVER
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
|
|
||||||
#include <X11/XKBlib.h>
|
|
||||||
|
|
||||||
#include <X11/extensions/XKBgeom.h>
|
|
||||||
#include "XKMformat.h"
|
|
||||||
#include "XKBfileInt.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#define NEED_EVENTS
|
#define NEED_EVENTS
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
|
@ -70,8 +54,6 @@ XkbInternAtom(Display *dpy,char *str,Bool only_if_exists)
|
||||||
return MakeAtom(str,strlen(str),!only_if_exists);
|
return MakeAtom(str,strlen(str),!only_if_exists);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SEEK_SET
|
#ifndef SEEK_SET
|
||||||
#define SEEK_SET 0
|
#define SEEK_SET 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -187,6 +169,89 @@ int count,nRead=0;
|
||||||
return nRead;
|
return nRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned
|
||||||
|
_XkbKSCheckCase(KeySym ks)
|
||||||
|
{
|
||||||
|
unsigned set,rtrn;
|
||||||
|
|
||||||
|
set= (ks & (~0xff)) >> 8;
|
||||||
|
rtrn= 0;
|
||||||
|
switch (set) {
|
||||||
|
case 0: /* latin 1 */
|
||||||
|
if (((ks>=XK_A)&&(ks<=XK_Z))||
|
||||||
|
((ks>=XK_Agrave)&&(ks<=XK_THORN)&&(ks!=XK_multiply))) {
|
||||||
|
rtrn|= _XkbKSUpper;
|
||||||
|
}
|
||||||
|
if (((ks>=XK_a)&&(ks<=XK_z))||
|
||||||
|
((ks>=XK_agrave)&&(ks<=XK_ydiaeresis))) {
|
||||||
|
rtrn|= _XkbKSLower;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1: /* latin 2 */
|
||||||
|
if (((ks>=XK_Aogonek)&&(ks<=XK_Zabovedot)&&(ks!=XK_breve))||
|
||||||
|
((ks>=XK_Racute)&&(ks<=XK_Tcedilla))) {
|
||||||
|
rtrn|= _XkbKSUpper;
|
||||||
|
}
|
||||||
|
if (((ks>=XK_aogonek)&&(ks<=XK_zabovedot)&&(ks!=XK_caron))||
|
||||||
|
((ks>=XK_racute)&&(ks<=XK_tcedilla))) {
|
||||||
|
rtrn|= _XkbKSLower;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: /* latin 3 */
|
||||||
|
if (((ks>=XK_Hstroke)&&(ks<=XK_Jcircumflex))||
|
||||||
|
((ks>=XK_Cabovedot)&&(ks<=XK_Scircumflex))) {
|
||||||
|
rtrn|= _XkbKSUpper;
|
||||||
|
}
|
||||||
|
if (((ks>=XK_hstroke)&&(ks<=XK_jcircumflex))||
|
||||||
|
((ks>=XK_cabovedot)&&(ks<=XK_scircumflex))) {
|
||||||
|
rtrn|= _XkbKSLower;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: /* latin 4 */
|
||||||
|
if (((ks>=XK_Rcedilla)&&(ks<=XK_Tslash))||
|
||||||
|
(ks==XK_ENG)||
|
||||||
|
((ks>=XK_Amacron)&&(ks<=XK_Umacron))) {
|
||||||
|
rtrn|= _XkbKSUpper;
|
||||||
|
}
|
||||||
|
if (((ks>=XK_rcedilla)&&(ks<=XK_tslash))||
|
||||||
|
(ks==XK_eng)||
|
||||||
|
((ks>=XK_amacron)&&(ks<=XK_umacron))) {
|
||||||
|
rtrn|= _XkbKSLower;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 18: /* latin 8 */
|
||||||
|
if ((ks==XK_Babovedot)||
|
||||||
|
((ks>=XK_Dabovedot)&&(ks<=XK_Wacute))||
|
||||||
|
((ks>=XK_Ygrave)&&(ks<=XK_Fabovedot))||
|
||||||
|
(ks==XK_Mabovedot)||
|
||||||
|
(ks==XK_Pabovedot)||
|
||||||
|
(ks==XK_Sabovedot)||
|
||||||
|
(ks==XK_Wdiaeresis)||
|
||||||
|
((ks>=XK_Wcircumflex)&&(ks<=XK_Ycircumflex))) {
|
||||||
|
rtrn|= _XkbKSUpper;
|
||||||
|
}
|
||||||
|
if ((ks==XK_babovedot)||
|
||||||
|
(ks==XK_dabovedot)||
|
||||||
|
(ks==XK_fabovedot)||
|
||||||
|
(ks==XK_mabovedot)||
|
||||||
|
((ks>=XK_wgrave)&&(ks<=XK_wacute))||
|
||||||
|
(ks==XK_ygrave)||
|
||||||
|
((ks>=XK_wdiaeresis)&&(ks<=XK_ycircumflex))) {
|
||||||
|
rtrn|= _XkbKSLower;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 19: /* latin 9 */
|
||||||
|
if ((ks==XK_OE)||(ks==XK_Ydiaeresis)) {
|
||||||
|
rtrn|= _XkbKSUpper;
|
||||||
|
}
|
||||||
|
if (ks==XK_oe) {
|
||||||
|
rtrn|= _XkbKSLower;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return rtrn;
|
||||||
|
}
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1188,14 +1253,10 @@ int nRead;
|
||||||
*loaded_rtrn|= XkmGeometryMask;
|
*loaded_rtrn|= XkmGeometryMask;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_XkbLibError(_XkbErrBadImplementation,
|
|
||||||
XkbConfigText(tmpTOC.type,XkbMessage),0);
|
|
||||||
nRead= 0;
|
nRead= 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (nRead!=tmpTOC.size) {
|
if (nRead!=tmpTOC.size) {
|
||||||
_XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage),
|
|
||||||
nRead-tmpTOC.size);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (nRead>=0);
|
return (nRead>=0);
|
||||||
|
@ -1229,8 +1290,6 @@ char name[100];
|
||||||
return _XkbDupString(name);
|
return _XkbDupString(name);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_XkbLibError(_XkbErrBadImplementation,
|
|
||||||
XkbConfigText(tmpTOC.type,XkbMessage),0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1296,8 +1355,6 @@ unsigned which= need|want;
|
||||||
tmp= ReadXkmGeometry(file,result);
|
tmp= ReadXkmGeometry(file,result);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_XkbLibError(_XkbErrBadImplementation,
|
|
||||||
XkbConfigText(tmpTOC.type,XkbMessage),0);
|
|
||||||
tmp= 0;
|
tmp= 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1307,8 +1364,7 @@ unsigned which= need|want;
|
||||||
result->defined|= (1<<toc[i].type);
|
result->defined|= (1<<toc[i].type);
|
||||||
}
|
}
|
||||||
if (nRead!=tmpTOC.size) {
|
if (nRead!=tmpTOC.size) {
|
||||||
_XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage),
|
return 0;
|
||||||
nRead-tmpTOC.size);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return which;
|
return which;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user