summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSascha Hlusiak <saschahlusiak@arcor.de>2008-03-30 13:21:22 +0200
committerSascha Hlusiak <saschahlusiak@arcor.de>2008-03-30 13:21:22 +0200
commitedcc8c26dfa3f89672a66c47665d89c7c9200b13 (patch)
tree72bf9fbe508b45daeaf4a0f28131a1ae3a854e9c /src
parentfac2c42a01cf030a05d2305a01700f3677f6a8dc (diff)
Fixed keymap size to 8-256 to prevent crash
Newer xservers don't like keymaps that are smaller than 248 keys.
Diffstat (limited to 'src')
-rw-r--r--src/jstk.h2
-rw-r--r--src/jstk_key.c9
-rw-r--r--src/jstk_options.c2
3 files changed, 9 insertions, 4 deletions
diff --git a/src/jstk.h b/src/jstk.h
index e6c22c0..c2cef9d 100644
--- a/src/jstk.h
+++ b/src/jstk.h
@@ -127,7 +127,7 @@ typedef struct _JoystickDevRec {
} buttonmap;
struct _KEYMAP {
int size;
- KeySym map[MAP_LENGTH];
+ KeySym map[256-MIN_KEYCODE];
} keymap;
AXIS axis[MAXAXES]; /* Configuration per axis */
diff --git a/src/jstk_key.c b/src/jstk_key.c
index 42492c4..a9a6e0d 100644
--- a/src/jstk_key.c
+++ b/src/jstk_key.c
@@ -70,8 +70,12 @@ jstkInitKeys(DeviceIntPtr pJstk, JoystickDevPtr priv)
DBG(1, xf86Msg(X_CONFIG, "Initializing Keyboard with %d keys\n",
priv->keymap.size));
+ for (i = 0; i < priv->keymap.size; i++)
+ {
+ DBG(6, xf86Msg(X_CONFIG, "Keymap [%d]: 0x%08X\n", MIN_KEYCODE+i,priv->keymap.map[i]));
+ }
- memset(modMap, 0, sizeof modMap);
+ memset(modMap, 0, sizeof(modMap));
for (i = 0; i < priv->keymap.size; i++) {
sym = priv->keymap.map[i];
@@ -84,7 +88,8 @@ jstkInitKeys(DeviceIntPtr pJstk, JoystickDevPtr priv)
keySyms.map = priv->keymap.map;
keySyms.mapWidth = 1;
keySyms.minKeyCode = MIN_KEYCODE;
- keySyms.maxKeyCode = MIN_KEYCODE + priv->keymap.size - 1;
+/* keySyms.maxKeyCode = MIN_KEYCODE + priv->keymap.size - 1; */
+ keySyms.maxKeyCode = MIN_KEYCODE + sizeof(priv->keymap.map)/sizeof(priv->keymap.map[0]) - 1;
for (i = 0; i < priv->keymap.size; i++) {
sym = priv->keymap.map[i];
diff --git a/src/jstk_options.c b/src/jstk_options.c
index 24912b5..510c160 100644
--- a/src/jstk_options.c
+++ b/src/jstk_options.c
@@ -83,7 +83,7 @@ jstkGetKeyNumberInMap(JoystickDevPtr priv,
for (j=0; j<priv->keymap.size; j++)
if (priv->keymap.map[j] == keysym)
break;
- if (j > MAP_LENGTH+1) return 0;
+ if (j >= sizeof(priv->keymap.map)/sizeof(priv->keymap.map[0])) return 0;
priv->keymap.map[j] = keysym;
if (j + 1 > priv->keymap.size) priv->keymap.size = j + 1;
return j;