--- rxvt-unicode/src/keyboard.C 2007/07/29 09:37:01 1.27 +++ rxvt-unicode/src/keyboard.C 2009/12/26 10:24:04 1.32 @@ -70,7 +70,7 @@ keysym_t keyboard_manager::stock_keymap[] = { /* examples */ - /* keysym, state, range, handler, str */ + /* keysym, state, range, type, str */ //{XK_ISO_Left_Tab, 0, 1, keysym_t::STRING, "\033[Z"}, //{ 'a', 0, 26, keysym_t::RANGE_META8, "a" "%c"}, //{ 'a', ControlMask, 26, keysym_t::RANGE_META8, "" "%c"}, @@ -145,8 +145,8 @@ compare_priority (keysym_t *a, keysym_t *b) { // (the more '1's in state; the less range): the greater priority - int ca = popcount (a->state /* & OtherModMask */); - int cb = popcount (b->state /* & OtherModMask */); + int ca = rxvt_popcount (a->state /* & OtherModMask */); + int cb = rxvt_popcount (b->state /* & OtherModMask */); if (ca != cb) return ca - cb; @@ -215,7 +215,7 @@ { char *middle = strchr (translation + 5, translation [4]); char *suffix = strrchr (translation + 5, translation [4]); - + if (suffix && middle && suffix > middle + 1) { key->type = keysym_t::LIST; @@ -428,7 +428,7 @@ keymap.swap (sorted_keymap); -#ifdef DEBUG_STRICT +#ifndef NDEBUG // check for invariants for (i = 0; i < KEYSYM_HASH_BUDGETS; ++i) { @@ -454,8 +454,9 @@ assert (index >= 0); keysym_t *b = keymap [index]; - assert (i == (signed) index || // the normally expected result - (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 + assert (i == index // the normally expected result + || IN_RANGE_INC (a->keysym + j, b->keysym, b->keysym + b->range) + && compare_priority (a, b) <= 0); // is effectively the same or a closer match } } #endif @@ -467,7 +468,7 @@ int hashkey = keysym & KEYSYM_HASH_MASK; unsigned int index = hash [hashkey]; unsigned int end = hashkey < KEYSYM_HASH_BUDGETS - 1 - ? hash [hashkey + 1] + ? hash [hashkey + 1] : keymap.size (); for (; index < end; ++index)