ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/keyboard.C
(Generate patch)

Comparing rxvt-unicode/src/keyboard.C (file contents):
Revision 1.8 by root, Mon Jan 17 00:07:26 2005 UTC vs.
Revision 1.10 by root, Thu Feb 3 10:24:10 2005 UTC

11//////////////////////////////////////////////////////////////////////////////// 11////////////////////////////////////////////////////////////////////////////////
12// default keycode translation map and keyevent handlers 12// default keycode translation map and keyevent handlers
13 13
14keysym_t keyboard_manager::stock_keymap[] = { 14keysym_t keyboard_manager::stock_keymap[] = {
15 /* examples */ 15 /* examples */
16 /* keysym, state, range, handler, str */ 16 /* keysym, state, range, handler, str */
17//{XK_ISO_Left_Tab, 0, 1, NORMAL, "\033[Z"}, 17//{XK_ISO_Left_Tab, 0, 1, keysym_t::NORMAL, "\033[Z"},
18//{ 'a', 0, 26, RANGE_META8, "a" "%c"}, 18//{ 'a', 0, 26, keysym_t::RANGE_META8, "a" "%c"},
19//{ 'a', ControlMask, 26, RANGE_META8, "" "%c"}, 19//{ 'a', ControlMask, 26, keysym_t::RANGE_META8, "" "%c"},
20//{ XK_Left, 0, 4, LIST, "DACBZ" "\033[Z"}, 20//{ XK_Left, 0, 4, keysym_t::LIST, ".\033[.DACB."},
21//{ XK_Left, ShiftMask, 4, LIST, "dacbZ" "\033[Z"}, 21//{ XK_Left, ShiftMask, 4, keysym_t::LIST, ".\033[.dacb."},
22//{ XK_Left, ControlMask, 4, LIST, "dacbZ" "\033OZ"}, 22//{ XK_Left, ControlMask, 4, keysym_t::LIST, ".\033O.dacb."},
23//{ XK_Tab, ControlMask, 1, NORMAL, "\033<C-Tab>"}, 23//{ XK_Tab, ControlMask, 1, keysym_t::NORMAL, "\033<C-Tab>"},
24//{ XK_apostrophe, ControlMask, 1, NORMAL, "\033<C-'>"}, 24//{ XK_apostrophe, ControlMask, 1, keysym_t::NORMAL, "\033<C-'>"},
25//{ XK_slash, ControlMask, 1, NORMAL, "\033<C-/>"}, 25//{ XK_slash, ControlMask, 1, keysym_t::NORMAL, "\033<C-/>"},
26//{ XK_semicolon, ControlMask, 1, NORMAL, "\033<C-;>"}, 26//{ XK_semicolon, ControlMask, 1, keysym_t::NORMAL, "\033<C-;>"},
27//{ XK_grave, ControlMask, 1, NORMAL, "\033<C-`>"}, 27//{ XK_grave, ControlMask, 1, keysym_t::NORMAL, "\033<C-`>"},
28//{ XK_comma, ControlMask, 1, NORMAL, "\033<C-\054>"}, 28//{ XK_comma, ControlMask, 1, keysym_t::NORMAL, "\033<C-\054>"},
29//{ XK_Return, ControlMask, 1, NORMAL, "\033<C-Return>"}, 29//{ XK_Return, ControlMask, 1, keysym_t::NORMAL, "\033<C-Return>"},
30//{ XK_Return, ShiftMask, 1, NORMAL, "\033<S-Return>"}, 30//{ XK_Return, ShiftMask, 1, keysym_t::NORMAL, "\033<S-Return>"},
31//{ ' ', ShiftMask, 1, NORMAL, "\033<S-Space>"}, 31//{ ' ', ShiftMask, 1, keysym_t::NORMAL, "\033<S-Space>"},
32//{ '.', ControlMask, 1, NORMAL, "\033<C-.>"}, 32//{ '.', ControlMask, 1, keysym_t::NORMAL, "\033<C-.>"},
33//{ '0', ControlMask, 10, RANGE, "0" "\033<C-%c>"}, 33//{ '0', ControlMask, 10, keysym_t::RANGE, "0" "\033<C-%c>"},
34//{ '0', MetaMask|ControlMask, 10, RANGE, "0" "\033<M-C-%c>"}, 34//{ '0', MetaMask|ControlMask, 10, keysym_t::RANGE, "0" "\033<M-C-%c>"},
35//{ 'a', MetaMask|ControlMask, 26, RANGE, "a" "\033<M-C-%c>"}, 35//{ 'a', MetaMask|ControlMask, 26, keysym_t::RANGE, "a" "\033<M-C-%c>"},
36}; 36};
37 37
38static void 38static void
39output_string (rxvt_term *rt, const char *str) 39output_string (rxvt_term *rt, const char *str)
40{ 40{
41 if (strncmp (str, "proto:", 6) == 0) 41 if (strncmp (str, "command:", 8) == 0)
42 rt->cmd_write ((unsigned char *)str + 6, strlen (str) - 6); 42 rt->cmd_write ((unsigned char *)str + 8, strlen (str) - 8);
43 else 43 else
44 rt->tt_write ((unsigned char *)str, strlen (str)); 44 rt->tt_write ((unsigned char *)str, strlen (str));
45} 45}
46 46
47static void 47static void
366 index += hash_budget_size [i - 1]; 366 index += hash_budget_size [i - 1];
367 hash[i] = (hash_budget_size [i] ? index : hash [i - 1]); 367 hash[i] = (hash_budget_size [i] ? index : hash [i - 1]);
368 } 368 }
369 369
370 // and allocate just enough space 370 // and allocate just enough space
371 //sorted_keymap.reserve (hash[i - 1] + hash_budget_size[i - 1]);
372 sorted_keymap.insert (sorted_keymap.begin (), index + hash_budget_size [i - 1], 0); 371 sorted_keymap.insert (sorted_keymap.begin (), index + hash_budget_size [i - 1], 0);
373 372
374 // fill in sorted_keymap 373 // fill in sorted_keymap
375 // it is sorted in each budget 374 // it is sorted in each budget
376 for (i = 0; i < keymap.size (); ++i) 375 for (i = 0; i < keymap.size (); ++i)
423 int index = find_keysym (a->keysym + j, a->state); 422 int index = find_keysym (a->keysym + j, a->state);
424 423
425 assert (index >= 0); 424 assert (index >= 0);
426 keysym_t *b = keymap [index]; 425 keysym_t *b = keymap [index];
427 assert (i == (signed) index || // the normally expected result 426 assert (i == (signed) index || // the normally expected result
428 (a->keysym + j) >= b->keysym && (a->keysym + j) <= (b->keysym + b->range) && compare_priority (a, b) <= 0); // is effectively the same 427 (a->keysym + j) >= b->keysym && (a->keysym + j) <= (b->keysym + b->range) && compare_priority (a, b) <= 0); // is effectively the same or a closer match
429 } 428 }
430 } 429 }
431#endif 430#endif
432} 431}
433 432
443 442
444 if (key->keysym <= keysym && key->keysym + key->range > keysym 443 if (key->keysym <= keysym && key->keysym + key->range > keysym
445 // match only the specified bits in state and ignore others 444 // match only the specified bits in state and ignore others
446 && (key->state & state) == key->state) 445 && (key->state & state) == key->state)
447 return index; 446 return index;
448 else if (key->keysym > keysym && key->range == 1) 447 else if ((key->keysym & KEYSYM_HASH_MASK) > hashkey && key->range == 1)
449 return -1; 448 return -1;
450 } 449 }
451 450
452 return -1; 451 return -1;
453} 452}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines