Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 407818 Details for
Bug 556156
x11-base/xorg-server-1.16.4: alt+shift+<any> combinations not working if Alt+Shift is set as layout switching
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch, fixing the Alt+Shift behavior
xorg-server-1.16-alt-shift.patch (text/plain), 3.02 KB, created by
Garry Filakhtov
on 2015-07-28 19:30:06 UTC
(
hide
)
Description:
Patch, fixing the Alt+Shift behavior
Filename:
MIME Type:
Creator:
Garry Filakhtov
Created:
2015-07-28 19:30:06 UTC
Size:
3.02 KB
patch
obsolete
>--- xkb.orig/xkbActions.c 2015-07-28 21:14:04.434993087 +0200 >+++ xkb/xkbActions.c 2015-07-28 21:22:36.330976574 +0200 >@@ -350,23 +350,66 @@ > return 1; > } > >+static void xkbUpdateLockedGroup(XkbSrvInfoPtr xkbi, XkbAction* pAction) >+{ >+ XkbGroupAction ga = pAction->group; >+ >+ if (ga.flags&XkbSA_GroupAbsolute) { >+ xkbi->state.locked_group = XkbSAGroup(&ga); >+ } else { >+ xkbi->state.locked_group += XkbSAGroup(&ga); >+ } >+} >+ >+static XkbFilterPtr _XkbNextFreeFilter(XkbSrvInfoPtr xkbi); >+ > static int >-_XkbFilterLockState(XkbSrvInfoPtr xkbi, >+_XkbFilterLockGroup(XkbSrvInfoPtr xkbi, > XkbFilterPtr filter, unsigned keycode, XkbAction *pAction) > { >- if (pAction && (pAction->type == XkbSA_LockGroup)) { >- if (pAction->group.flags & XkbSA_GroupAbsolute) >- xkbi->state.locked_group = XkbSAGroup(&pAction->group); >- else >- xkbi->state.locked_group += XkbSAGroup(&pAction->group); >- return 1; >+ int sendEvent = 1; >+ >+ if (filter->keycode == 0) { >+ filter->keycode = keycode; >+ filter->active = 1; >+ filter->filterOthers = 0; >+ filter->filter = _XkbFilterLockGroup; >+ filter->upAction = *pAction; >+ >+ { >+ XkbStateRec fake_state = xkbi->state; >+ XkbAction act; >+ >+ fake_state.mods = 0; >+ act = XkbGetKeyAction(xkbi, &fake_state, keycode); >+ >+ if (act.type == XkbSA_SetMods) { >+ XkbFilterPtr filter = _XkbNextFreeFilter(xkbi); >+ sendEvent = _XkbFilterSetState(xkbi,filter,keycode,&act); >+ } >+ } >+ } else { >+ if (!pAction) >+ xkbUpdateLockedGroup(xkbi, &filter->upAction); >+ filter->active = 0; > } >+ >+ return sendEvent; >+} >+ >+static int >+_XkbFilterLockMods( XkbSrvInfoPtr xkbi, >+ XkbFilterPtr filter, >+ unsigned keycode, >+ XkbAction * pAction) >+{ >+ > if (filter->keycode == 0) { /* initial press */ > filter->keycode = keycode; > filter->active = 1; > filter->filterOthers = 0; > filter->priv = xkbi->state.locked_mods & pAction->mods.mask; >- filter->filter = _XkbFilterLockState; >+ filter->filter = _XkbFilterLockMods; > filter->upAction = *pAction; > if (!(filter->upAction.mods.flags & XkbSA_LockNoLock)) > xkbi->state.locked_mods |= pAction->mods.mask; >@@ -1243,9 +1286,12 @@ > sendEvent = _XkbFilterLatchState(xkbi, filter, key, &act); > break; > case XkbSA_LockMods: >+ filter = _XkbNextFreeFilter(xkbi); >+ sendEvent = _XkbFilterLockMods(xkbi, filter, key, &act); >+ break; > case XkbSA_LockGroup: > filter = _XkbNextFreeFilter(xkbi); >- sendEvent = _XkbFilterLockState(xkbi, filter, key, &act); >+ sendEvent = _XkbFilterLockGroup(xkbi, filter, key, &act); > break; > case XkbSA_ISOLock: > filter = _XkbNextFreeFilter(xkbi);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 556156
: 407818