Bug #2467: Fix a segfault in the void(4) driver. (David Wong)

This commit is contained in:
Adam Jackson
2005-02-18 19:38:31 +00:00
parent 118fbed4fb
commit c0541c7a20

View File

@@ -55,26 +55,108 @@
*****************************************************************************/
static KeySym void_map[] =
{
NoSymbol, /* 0x00 */
NoSymbol, /* 0x01 */
NoSymbol, /* 0x02 */
NoSymbol, /* 0x03 */
NoSymbol, /* 0x04 */
NoSymbol, /* 0x05 */
NoSymbol, /* 0x06 */
NoSymbol /* 0x07 */
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, XK_Escape,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
XK_comma, XK_minus, XK_period, XK_slash,
XK_0, XK_1, XK_2, XK_3,
XK_4, XK_5, XK_6, XK_7,
XK_8, XK_9, XK_colon, XK_semicolon,
XK_less, XK_equal, XK_greater, XK_question,
XK_at, XK_A, XK_B, XK_C,
XK_D, XK_E, XK_F, XK_G,
XK_H, XK_I, XK_J, XK_K,
XK_L, XK_M, XK_N, XK_O,
XK_P, XK_Q, XK_R, XK_S,
XK_T, XK_U, XK_V, XK_W,
XK_X, XK_Y, XK_Z, XK_bracketleft,
XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
XK_grave, XK_a, XK_b, XK_c,
XK_d, XK_e, XK_f, XK_g,
XK_h, XK_i, XK_j, XK_k,
XK_l, XK_m, XK_n, XK_o,
XK_p, XK_q, XK_r, XK_s,
XK_t, XK_u, XK_v, XK_w,
XK_x, XK_y, XK_z, XK_braceleft,
XK_bar, XK_braceright, XK_asciitilde, XK_BackSpace,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
XK_nobreakspace,XK_exclamdown, XK_cent, XK_sterling,
XK_currency, XK_yen, XK_brokenbar, XK_section,
XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft,
XK_notsign, XK_hyphen, XK_registered, XK_macron,
XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior,
XK_acute, XK_mu, XK_paragraph, XK_periodcentered,
XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright,
XK_onequarter, XK_onehalf, XK_threequarters,XK_questiondown,
XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde,
XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla,
XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply,
XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex,
XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp,
XK_agrave, XK_aacute, XK_acircumflex, XK_atilde,
XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla,
XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis,
XK_eth, XK_ntilde, XK_ograve, XK_oacute,
XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division,
XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex,
XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
};
/* minKeyCode = 8 because this is the min legal key code */
static KeySymsRec void_keysyms = {
/* map minKeyCode maxKC width */
void_map, 8, 8, 1
/* map minKeyCode maxKeyCode width */
void_map, 8, 255, 1
};
static const char *DEFAULTS[] = {
NULL
};
static void
BellProc(
int percent,
DeviceIntPtr pDev,
pointer ctrl,
int unused)
{
return;
}
static void
KeyControlProc(
DeviceIntPtr pDev,
KeybdCtrl *ctrl)
{
return;
}
static void
PointerControlProc(
DeviceIntPtr dev,
PtrCtrl *ctrl)
{
return;
}
/*
* xf86VoidControlProc --
*
@@ -105,6 +187,7 @@ xf86VoidControlProc(DeviceIntPtr device, int what)
return !Success;
}
/*
if (InitFocusClassDeviceStruct(device) == FALSE) {
ErrorF("unable to init Focus class device\n");
return !Success;
@@ -114,6 +197,11 @@ xf86VoidControlProc(DeviceIntPtr device, int what)
ErrorF("unable to init key class device\n");
return !Success;
}
*/
if (InitKeyboardDeviceStruct((DevicePtr)device, &void_keysyms, NULL, BellProc, KeyControlProc) == FALSE) {
ErrorF("unable to init keyboard device\n");
return !Success;
}
if (InitValuatorClassDeviceStruct(device,
2,
@@ -139,6 +227,10 @@ xf86VoidControlProc(DeviceIntPtr device, int what)
/* allocate the motion history buffer if needed */
xf86MotionHistoryAllocate(pInfo);
}
if (InitPtrFeedbackClassDeviceStruct(device, PointerControlProc) == FALSE) {
ErrorF("unable to init pointer feedback class device\n");
return !Success;
}
break;
case DEVICE_ON: