… | |
… | |
228 | for (i = 0; i < n; ++i) |
228 | for (i = 0; i < n; ++i) |
229 | register_keymap (&stock_keymap[i]); |
229 | register_keymap (&stock_keymap[i]); |
230 | |
230 | |
231 | purge_duplicate_keymap (); |
231 | purge_duplicate_keymap (); |
232 | |
232 | |
233 | #if TO_BE_DONE_INSIDE_dispatch |
|
|
234 | for (i = 0; i < keymap.size (); ++i) |
|
|
235 | { |
|
|
236 | keysym_t *key = keymap[i]; |
|
|
237 | |
|
|
238 | assert (bitcount (term_->ModMetaMask) == 1 && "call me after ModMetaMask was set!"); |
|
|
239 | |
|
|
240 | if (key->state & MetaMask) |
|
|
241 | { |
|
|
242 | //key->state &= ~MetaMask; |
|
|
243 | key->state |= term_->ModMetaMask; |
|
|
244 | } |
|
|
245 | |
|
|
246 | assert (bitcount (term_->ModNumLockMask) == 1 && "call me after ModNumLockMask was set!"); |
|
|
247 | |
|
|
248 | if (key->state & NumLockMask) |
|
|
249 | { |
|
|
250 | //key->state &= ~NumLockMask; |
|
|
251 | key->state |= term_->ModNumLockMask; |
|
|
252 | } |
|
|
253 | } |
|
|
254 | #endif |
|
|
255 | |
|
|
256 | setup_hash (); |
233 | setup_hash (); |
257 | } |
234 | } |
258 | |
235 | |
259 | bool |
236 | bool |
260 | keyboard_manager::dispatch (rxvt_term *term, KeySym keysym, unsigned int state) |
237 | keyboard_manager::dispatch (rxvt_term *term, KeySym keysym, unsigned int state) |
261 | { |
238 | { |
262 | assert (hash[0] == 0 && "register_done() need to be called"); |
239 | assert (hash[0] == 0 && "register_done() need to be called"); |
|
|
240 | |
|
|
241 | if (state & term->ModMetaMask) |
|
|
242 | state |= MetaMask; |
|
|
243 | |
|
|
244 | if (state & term->ModNumLockMask) |
|
|
245 | state |= NumLockMask; |
|
|
246 | |
|
|
247 | if (!!(term->priv_modes & PrivMode_aplKP) != !!(state & ShiftMask)) |
|
|
248 | state |= AppKeypadMask; |
263 | |
249 | |
264 | int index = find_keysym (keysym, state); |
250 | int index = find_keysym (keysym, state); |
265 | |
251 | |
266 | if (index >= 0) |
252 | if (index >= 0) |
267 | { |
253 | { |