Lines Matching refs:xkb
90 XkbInitCanonicalKeyTypes(XkbDescPtr xkb, unsigned which, int keypadVMod)
96 if (!xkb)
98 rtrn = XkbAllocClientMap(xkb, XkbKeyTypesMask, XkbNumRequiredTypes);
101 map = xkb->map;
143 XkbKeyTypesForCoreSymbols(XkbDescPtr xkb,
159 if ((protected & (1 << i)) && (types_inout[i] < xkb->map->num_types)) {
160 nSyms[i] = xkb->map->types[types_inout[i]].num_levels;
286 allOneLevel = (xkb->map->types[types_inout[0]].num_levels == 1);
292 allOneLevel = (xkb->map->types[types_inout[i]].num_levels == 1);
328 _XkbFindMatchingInterp(XkbDescPtr xkb,
338 interp = xkb->compat->sym_interpret;
339 for (i = 0; i < xkb->compat->num_si; i++, interp++) {
397 _XkbSetActionKeyMods(XkbDescPtr xkb, XkbAction *act, unsigned mods)
408 XkbVirtualModsToReal(xkb, tmp, &tmp);
416 XkbVirtualModsToReal(xkb, tmp, &tmp);
427 XkbApplyCompatMapToKey(XkbDescPtr xkb, KeyCode key, XkbChangesPtr changes)
435 if ((!xkb) || (!xkb->map) || (!xkb->map->key_sym_map) ||
436 (!xkb->compat) || (!xkb->compat->sym_interpret) ||
437 (key < xkb->min_key_code) || (key > xkb->max_key_code)) {
440 if (((!xkb->server) || (!xkb->server->key_acts)) &&
441 (XkbAllocServerMap(xkb, XkbAllServerInfoMask, 0) != Success)) {
445 explicit = xkb->server->explicit[key];
448 mods = (xkb->map->modmap ? xkb->map->modmap[key] : 0);
449 nSyms = XkbKeyNumSyms(xkb, key);
450 syms = XkbKeySymsPtr(xkb, key);
463 unsigned level = (n % XkbKeyGroupsWidth(xkb, key));
467 interps[n] = _XkbFindMatchingInterp(xkb, syms[n], mods, level);
476 if (xkb->server->key_acts[key] != 0) {
477 xkb->server->key_acts[key] = 0;
486 pActs = XkbResizeKeyActions(xkb, key, nSyms);
505 _XkbSetActionKeyMods(xkb, &pActs[n], effMods);
511 (xkb->server->vmodmap[key] != new_vmodmask)) {
513 xkb->server->vmodmap[key] = new_vmodmask;
518 xkb->server->behaviors[key].type = XkbKB_Lock;
521 if (((explicit & XkbExplicitAutoRepeatMask) == 0) && (xkb->ctrls)) {
524 old = xkb->ctrls->per_key_repeat[key / 8];
526 xkb->ctrls->per_key_repeat[key / 8] |= (1 << (key % 8));
528 xkb->ctrls->per_key_repeat[key / 8] &= ~(1 << (key % 8));
529 if (changes && (old != xkb->ctrls->per_key_repeat[key / 8]))
535 if (((explicit & XkbExplicitAutoRepeatMask) == 0) && (xkb->ctrls)) {
538 old = xkb->ctrls->per_key_repeat[key / 8];
540 if (*XkbKeySymsPtr(xkb, key) != XK_Return)
542 xkb->ctrls->per_key_repeat[key / 8] |= (1 << (key % 8));
543 if (changes && (old != xkb->ctrls->per_key_repeat[key / 8]))
547 (xkb->server->behaviors[key].type == XkbKB_Lock)) {
548 xkb->server->behaviors[key].type = XkbKB_Default;
589 XkbUpdateMapFromCore(XkbDescPtr xkb,
599 syms = &core_keysyms[(first_key - xkb->min_key_code) * map_width];
624 explicit = xkb->server->explicit[key] & XkbExplicitKeyTypesMask;
625 types[XkbGroup1Index] = XkbKeyKeyTypeIndex(xkb, key, XkbGroup1Index);
626 types[XkbGroup2Index] = XkbKeyKeyTypeIndex(xkb, key, XkbGroup2Index);
627 types[XkbGroup3Index] = XkbKeyKeyTypeIndex(xkb, key, XkbGroup3Index);
628 types[XkbGroup4Index] = XkbKeyKeyTypeIndex(xkb, key, XkbGroup4Index);
629 nG = XkbKeyTypesForCoreSymbols(xkb, map_width, syms, explicit, types,
635 XkbChangeTypesOfKey(xkb, key, nG, XkbAllGroupsMask, types, mc);
636 memcpy((char *) XkbKeySymsPtr(xkb, key), (char *) tsyms,
637 XkbKeyNumSyms(xkb, key) * sizeof(KeySym));
638 XkbApplyCompatMapToKey(xkb, key, changes);
641 if ((xkb->map->modmap != NULL) && (changes) &&
649 for (key = xkb->min_key_code; key <= xkb->max_key_code; key++) {
650 if (xkb->server->vmodmap[key] == 0)
653 if (bit & xkb->server->vmodmap[key]) {
655 newVMods[i] |= xkb->map->modmap[key];
660 if ((bit & present) && (newVMods[i] != xkb->server->vmods[i])) {
663 xkb->server->vmods[i] = newVMods[i];
668 XkbApplyVirtualModChanges(xkb, changes->map.vmods, changes);
673 XkbChangeTypesOfKey(XkbDescPtr xkb,
684 if ((!xkb) || (!XkbKeycodeInRange(xkb, key)) || (!xkb->map) ||
685 (!xkb->map->types) || (!newTypesIn) ||
691 xkb->map->key_sym_map[key].kt_index[i] = XkbOneLevelIndex;
693 i = xkb->map->key_sym_map[key].group_info;
695 xkb->map->key_sym_map[key].group_info = i;
696 XkbResizeKeySyms(xkb, key, 0);
697 XkbResizeKeyActions(xkb, key, 0);
701 nOldGroups = XkbKeyNumGroups(xkb, key);
702 oldWidth = XkbKeyGroupsWidth(xkb, key);
707 newTypes[i] = XkbKeyKeyTypeIndex(xkb, key, i);
709 newTypes[i] = XkbKeyKeyTypeIndex(xkb, key, XkbGroup1Index);
712 if (newTypes[i] > xkb->map->num_types)
714 pNewType = &xkb->map->types[newTypes[i]];
718 if ((xkb->ctrls) && (nGroups > xkb->ctrls->num_groups))
719 xkb->ctrls->num_groups = nGroups;
725 pSyms = XkbResizeKeySyms(xkb, key, width * nGroups);
727 i = xkb->map->key_sym_map[key].group_info;
729 xkb->map->key_sym_map[key].group_info = i;
730 xkb->map->key_sym_map[key].width = width;
732 xkb->map->key_sym_map[key].kt_index[i] = newTypes[i];
738 pSyms = XkbKeySymsPtr(xkb, key);
739 memcpy(oldSyms, pSyms, (size_t) XkbKeyNumSyms(xkb, key) * sizeof(KeySym));
740 pSyms = XkbResizeKeySyms(xkb, key, width * nGroups);
745 pOldType = XkbKeyKeyType(xkb, key, i);
746 pNewType = &xkb->map->types[newTypes[i]];
754 if (XkbKeyHasActions(xkb, key)) {
757 pActs = XkbKeyActionsPtr(xkb, key);
758 memcpy(oldActs, pActs, (size_t) XkbKeyNumSyms(xkb, key) * sizeof(XkbAction));
759 pActs = XkbResizeKeyActions(xkb, key, width * nGroups);
764 pOldType = XkbKeyKeyType(xkb, key, i);
765 pNewType = &xkb->map->types[newTypes[i]];
774 i = xkb->map->key_sym_map[key].group_info;
776 xkb->map->key_sym_map[key].group_info = i;
777 xkb->map->key_sym_map[key].width = width;
781 xkb->map->key_sym_map[key].kt_index[i] = newTypes[i];
782 if (xkb->map->types[newTypes[i]].num_levels > width)
783 width = xkb->map->types[newTypes[i]].num_levels;
785 xkb->map->key_sym_map[key].width = width;
803 XkbVirtualModsToReal(XkbDescPtr xkb, unsigned virtual_mask, unsigned *mask_rtrn)
808 if ((xkb == NULL) || (xkb->server == NULL)) {
818 mask |= xkb->server->vmods[i];
827 XkbUpdateActionVirtualMods(XkbDescPtr xkb, XkbAction *act, unsigned changed)
836 XkbVirtualModsToReal(xkb, tmp, &tmp);
844 XkbVirtualModsToReal(xkb, tmp, &tmp);
855 XkbUpdateKeyTypeVirtualMods(XkbDescPtr xkb,
863 XkbVirtualModsToReal(xkb, type->mods.vmods, &mask);
870 XkbVirtualModsToReal(xkb, entry->mods.vmods, &mask);
882 type_ndx = type - xkb->map->types;
883 if ((type_ndx < 0) || (type_ndx > xkb->map->num_types))
908 XkbApplyVirtualModChanges(XkbDescPtr xkb,
915 if ((!xkb) || (!xkb->map) || (changed == 0))
917 for (i = 0; i < xkb->map->num_types; i++) {
918 if (xkb->map->types[i].mods.vmods & changed)
919 XkbUpdateKeyTypeVirtualMods(xkb, &xkb->map->types[i], changed,
922 if (changed & xkb->ctrls->internal.vmods) {
925 XkbVirtualModsToReal(xkb, xkb->ctrls->internal.vmods, &newMask);
926 newMask |= xkb->ctrls->internal.real_mods;
927 if (xkb->ctrls->internal.mask != newMask) {
928 xkb->ctrls->internal.mask = newMask;
935 if (changed & xkb->ctrls->ignore_lock.vmods) {
938 XkbVirtualModsToReal(xkb, xkb->ctrls->ignore_lock.vmods, &newMask);
939 newMask |= xkb->ctrls->ignore_lock.real_mods;
940 if (xkb->ctrls->ignore_lock.mask != newMask) {
941 xkb->ctrls->ignore_lock.mask = newMask;
948 if (xkb->indicators != NULL) {
951 map = &xkb->indicators->maps[0];
956 XkbVirtualModsToReal(xkb, map->mods.vmods, &newMask);
968 if (xkb->compat != NULL) {
971 compat = xkb->compat;
975 XkbVirtualModsToReal(xkb, compat->groups[i].vmods, &newMask);
986 if (xkb->map && xkb->server) {
989 for (i = xkb->min_key_code; i <= xkb->max_key_code; i++) {
990 if (XkbKeyHasActions(xkb, i)) {
994 pAct = XkbKeyActionsPtr(xkb, i);
995 for (n = XkbKeyNumActions(xkb, i); n > 0; n--, pAct++) {
997 XkbUpdateActionVirtualMods(xkb, pAct, changed)) {