54 |
|
|
55 |
static void update_modifier_state(uint8 scancode, BOOL pressed); |
static void update_modifier_state(uint8 scancode, BOOL pressed); |
56 |
|
|
57 |
|
/* Free key_translation structure, included linked list */ |
58 |
|
void |
59 |
|
free_key_translation(key_translation * ptr) |
60 |
|
{ |
61 |
|
key_translation *next; |
62 |
|
|
63 |
|
while (ptr) |
64 |
|
{ |
65 |
|
next = ptr->next; |
66 |
|
xfree(ptr); |
67 |
|
ptr = next; |
68 |
|
} |
69 |
|
} |
70 |
|
|
71 |
static void |
static void |
72 |
add_to_keymap(char *keyname, uint8 scancode, uint16 modifiers, char *mapname) |
add_to_keymap(char *keyname, uint8 scancode, uint16 modifiers, char *mapname) |
73 |
{ |
{ |
88 |
memset(tr, 0, sizeof(key_translation)); |
memset(tr, 0, sizeof(key_translation)); |
89 |
tr->scancode = scancode; |
tr->scancode = scancode; |
90 |
tr->modifiers = modifiers; |
tr->modifiers = modifiers; |
91 |
|
free_key_translation(keymap[keysym & KEYMAP_MASK]); |
92 |
keymap[keysym & KEYMAP_MASK] = tr; |
keymap[keysym & KEYMAP_MASK] = tr; |
93 |
|
|
94 |
return; |
return; |
121 |
|
|
122 |
DEBUG_KBD(("Adding sequence for keysym (0x%lx, %s) -> ", keysym, keyname)); |
DEBUG_KBD(("Adding sequence for keysym (0x%lx, %s) -> ", keysym, keyname)); |
123 |
|
|
124 |
|
free_key_translation(keymap[keysym & KEYMAP_MASK]); |
125 |
prev_next = &keymap[keysym & KEYMAP_MASK]; |
prev_next = &keymap[keysym & KEYMAP_MASK]; |
126 |
|
|
127 |
while (*rest) |
while (*rest) |
155 |
DEBUG_KBD(("\n")); |
DEBUG_KBD(("\n")); |
156 |
} |
} |
157 |
|
|
|
|
|
158 |
static BOOL |
static BOOL |
159 |
xkeymap_read(char *mapname) |
xkeymap_read(char *mapname) |
160 |
{ |
{ |