Lockscreen capslock detection doesn't work well with remapped capslocks
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Unity |
Fix Released
|
Low
|
Andrea Azzarone | ||
7.2 |
Fix Released
|
Low
|
Andrea Azzarone | ||
unity (Ubuntu) |
Fix Released
|
Low
|
Andrea Azzarone | ||
Trusty |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
Remapped keys to activate the caps-lock are not correctly detected by the unity lockscreen
[Test case]
1. Configure the keyboard so that "Both shifts together toggles CapsLock"
2. Lock the screen using Super+L or menus
3. Press both shifts together to turn the capslock on
4. The lockscreen input field should show a warning
5. Press the shifts again, and the warning should be hidden
[Regression potential]
None
-----------------
Version: 7.2.2+14.
Some users like to remap the way the activate capslock. For example, using gnome-tweak-tool it's possible to set the CapsLock key to behave as an extra Ctrl, or an extra Alt (or several other extras) and then set "Both shifts together toggle CapsLock".
This works perfectly well inside Unity, the hardware keyboard led indicator shows up, etc. However, the lockscreen detector doesn't correctly warn or not warn when this setup is used.
* If the lockscreen was activated with capslock on, then the double-shift makes capslock go away, but not the warning.
* If the lockscreen was activated with capslock off, then the double-shift makes capslock on, but no warning shows up.
I believe the problem is in this piece of code in unity-shared/
void TextInput:
{
if (!caps_lock_on && keysym == NUX_VK_CAPITAL)
caps_lock_on = true;
else if (caps_lock_on && keysym == NUX_VK_CAPITAL)
caps_lock_on = false;
}
This is checking for specific key, instead of the fact that CapsLock was activated or not.
Related branches
- Marco Trevisan (Treviño): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 87 lines (+6/-25)2 files modifiedunity-shared/TextInput.cpp (+6/-24)
unity-shared/TextInput.h (+0/-1)
- Unity Team: Pending requested
-
Diff: 13027 lines (+3701/-2676)142 files modifiedUnityCore/GnomeSessionManager.cpp (+62/-14)
UnityCore/GnomeSessionManager.h (+2/-0)
UnityCore/GnomeSessionManagerImpl.h (+1/-0)
UnityCore/SessionManager.h (+3/-0)
dash/DashController.cpp (+2/-2)
dash/DashView.cpp (+55/-71)
dash/DashView.h (+3/-2)
dash/FilterBar.cpp (+8/-18)
dash/FilterBar.h (+0/-2)
dash/FilterBasicButton.cpp (+39/-46)
dash/FilterBasicButton.h (+6/-4)
dash/FilterExpanderLabel.cpp (+39/-41)
dash/FilterExpanderLabel.h (+2/-5)
dash/FilterGenreWidget.cpp (+33/-16)
dash/FilterGenreWidget.h (+1/-1)
dash/FilterMultiRangeButton.cpp (+22/-30)
dash/FilterMultiRangeButton.h (+3/-3)
dash/FilterMultiRangeWidget.cpp (+12/-1)
dash/FilterRatingsButton.cpp (+30/-223)
dash/FilterRatingsButton.h (+8/-21)
dash/FilterRatingsWidget.cpp (+22/-12)
dash/FilterRatingsWidget.h (+2/-1)
dash/PlacesGroup.cpp (+27/-29)
dash/ResultRendererHorizontalTile.cpp (+2/-2)
dash/ResultRendererTile.cpp (+18/-33)
dash/ScopeBar.cpp (+3/-1)
dash/ScopeBarIcon.cpp (+0/-1)
dash/ScopeView.cpp (+23/-23)
dash/ScopeView.h (+0/-1)
dash/StandaloneDash.cpp (+41/-27)
dash/previews/ActionButton.cpp (+43/-20)
dash/previews/ActionButton.h (+4/-0)
dash/previews/ActionLink.cpp (+13/-0)
dash/previews/ActionLink.h (+2/-2)
dash/previews/ApplicationPreview.cpp (+148/-62)
dash/previews/ApplicationPreview.h (+10/-0)
dash/previews/ErrorPreview.cpp (+53/-26)
dash/previews/ErrorPreview.h (+2/-0)
dash/previews/GenericPreview.cpp (+86/-42)
dash/previews/GenericPreview.h (+9/-1)
dash/previews/MoviePreview.cpp (+78/-34)
dash/previews/MoviePreview.h (+8/-1)
dash/previews/MusicPaymentPreview.cpp (+103/-41)
dash/previews/MusicPaymentPreview.h (+1/-0)
dash/previews/MusicPreview.cpp (+96/-37)
dash/previews/MusicPreview.h (+6/-0)
dash/previews/PaymentPreview.cpp (+59/-23)
dash/previews/PaymentPreview.h (+3/-0)
dash/previews/Preview.cpp (+42/-8)
dash/previews/Preview.h (+4/-0)
dash/previews/PreviewContainer.cpp (+62/-20)
dash/previews/PreviewContainer.h (+7/-2)
dash/previews/PreviewInfoHintWidget.cpp (+73/-77)
dash/previews/PreviewInfoHintWidget.h (+9/-8)
dash/previews/PreviewNavigator.cpp (+22/-5)
dash/previews/PreviewNavigator.h (+8/-4)
dash/previews/PreviewRatingsWidget.cpp (+31/-10)
dash/previews/PreviewRatingsWidget.h (+7/-2)
dash/previews/SocialPreview.cpp (+130/-61)
dash/previews/SocialPreview.h (+12/-0)
dash/previews/SocialPreviewComments.cpp (+16/-22)
dash/previews/SocialPreviewComments.h (+1/-5)
dash/previews/SocialPreviewContent.cpp (+33/-19)
dash/previews/SocialPreviewContent.h (+4/-1)
dash/previews/StandaloneApplicationPreview.cpp (+31/-12)
dash/previews/StandaloneErrorPreview.cpp (+18/-4)
dash/previews/StandaloneMoviePreview.cpp (+18/-3)
dash/previews/StandaloneMusicPaymentPreview.cpp (+17/-4)
dash/previews/StandaloneSocialPreview.cpp (+22/-8)
dash/previews/Track.cpp (+41/-18)
dash/previews/Track.h (+10/-3)
dash/previews/Tracks.cpp (+36/-7)
dash/previews/Tracks.h (+5/-1)
debian/changelog (+62/-1)
debian/patches/lp1349128.patch (+0/-164)
debian/patches/series (+0/-1)
hud/HudAbstractView.h (+3/-0)
hud/HudButton.cpp (+40/-28)
hud/HudButton.h (+5/-4)
hud/HudController.cpp (+15/-1)
hud/HudController.h (+4/-2)
hud/HudIcon.cpp (+1/-2)
hud/HudView.cpp (+52/-36)
hud/HudView.h (+2/-2)
hud/StandaloneHud.cpp (+28/-12)
launcher/Launcher.cpp (+1/-1)
launcher/SwitcherView.cpp (+11/-2)
launcher/SwitcherView.h (+1/-0)
lockscreen/LockScreenAcceleratorController.cpp (+46/-2)
lockscreen/LockScreenAcceleratorController.h (+2/-1)
lockscreen/LockScreenController.cpp (+13/-6)
lockscreen/LockScreenShield.cpp (+35/-22)
lockscreen/LockScreenShield.h (+3/-0)
lockscreen/UserPromptView.cpp (+0/-1)
plugins/unityshell/src/unityshell.cpp (+17/-13)
plugins/unityshell/src/unityshell.h (+1/-0)
resources/flow-view.svg (+0/-16)
resources/grid-view.svg (+0/-21)
resources/search_magnify.svg (+155/-0)
services/panel-service.c (+27/-5)
shutdown/SessionDBusManager.cpp (+23/-9)
shutdown/SessionView.cpp (+49/-30)
shutdown/SessionView.h (+6/-5)
shutdown/StandaloneSession.cpp (+2/-0)
tests/autopilot/unity/emulators/switcher.py (+4/-4)
tests/test_mock_session_manager.h (+2/-0)
tests/test_places_group.cpp (+34/-25)
tests/test_previews_payment.cpp (+1/-2)
tests/test_session_controller.cpp (+1/-0)
tests/test_session_view.cpp (+23/-2)
tools/unity.cmake (+14/-1)
unity-shared/CMakeLists.txt (+1/-0)
unity-shared/CoverArt.cpp (+37/-28)
unity-shared/CoverArt.h (+7/-3)
unity-shared/DashStyle.cpp (+260/-302)
unity-shared/DashStyle.h (+88/-94)
unity-shared/DashStyleInterface.h (+13/-11)
unity-shared/IconTexture.cpp (+7/-17)
unity-shared/OverlayRenderer.cpp (+129/-89)
unity-shared/OverlayRenderer.h (+1/-0)
unity-shared/OverlayScrollView.cpp (+56/-0)
unity-shared/OverlayScrollView.h (+43/-0)
unity-shared/PlacesOverlayVScrollBar.cpp (+47/-27)
unity-shared/PlacesOverlayVScrollBar.h (+6/-4)
unity-shared/PlacesVScrollBar.cpp (+54/-53)
unity-shared/PlacesVScrollBar.h (+6/-11)
unity-shared/PluginAdapter.cpp (+1/-0)
unity-shared/PreviewStyle.cpp (+155/-163)
unity-shared/PreviewStyle.h (+46/-45)
unity-shared/RatingsButton.cpp (+20/-20)
unity-shared/RatingsButton.h (+5/-4)
unity-shared/RawPixel.h (+1/-1)
unity-shared/SearchBar.cpp (+39/-32)
unity-shared/SearchBarSpinner.cpp (+48/-34)
unity-shared/SearchBarSpinner.h (+7/-4)
unity-shared/SpreadFilter.cpp (+2/-2)
unity-shared/TextInput.cpp (+6/-24)
unity-shared/TextInput.h (+0/-1)
unity-shared/TextureCache.cpp (+10/-3)
unity-shared/UnitySettings.cpp (+19/-12)
unity-shared/VScrollBarOverlayWindow.cpp (+49/-47)
unity-shared/VScrollBarOverlayWindow.h (+3/-1)
Changed in unity (Ubuntu): | |
assignee: | nobody → Andrea Azzarone (andyrock) |
Changed in unity: | |
assignee: | nobody → Andrea Azzarone (andyrock) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in unity (Ubuntu): | |
status: | New → In Progress |
Changed in unity: | |
importance: | Medium → Low |
Changed in unity: | |
milestone: | none → 7.3.1 |
Changed in unity: | |
status: | In Progress → Fix Committed |
Changed in unity (Ubuntu): | |
importance: | Undecided → Low |
description: | updated |
Changed in unity: | |
status: | Fix Committed → Fix Released |
This bug was fixed in the package unity - 7.3.0+14. 10.20140731. 1-0ubuntu1
--------------- 14.10.20140731. 1-0ubuntu1) utopic; urgency=low
unity (7.3.0+
[ Ubuntu daily release ]
* New rebuild forced
[ Brandon Schaefer ]
* Fixes FTBFS caused by gcc 4.9. Mostly unused functions. (LP:
#1350052)
[ Andrea Azzarone ]
* == Problem == Lockscreen capslock detection doesn't work well with
remapped capslocks == Fix == Use gdk keymap to get the state of the
caps lock. (LP: #1347735)
[ Marco Trevisan (Treviño) ] crollBar and VScrollBarOverl ayWindow: add support for llbar and with scaling support. Using them in dash Scopes :IsScreenGrabbe d request has still not keyboard. By doing this we instead try to grab the screen, crollBar: redirect the mouse wheel scroll events +merge/ 227070, this means that this code would just work as it
* PlacesOverlayVS
scaling Add a new ScrollView class to create ScrollViews with an
OverlayScro
and Previews. (LP: #1340996)
* LockScreenShield: Add GrabScreen function and retry to make sure we
really get grab It might happen that the grab is not possible
because the PluginAdapter:
being fully processed, and thus nux is not able to grab the
pointer/
and if this is not happening, we wait a little until we don't get
the ungrab event. In this way, if we eventually get the grab, all
will work as expected. Otherwise, we cancel the lock request (very
unlikely to happen). (LP: #1349128)
* PlacesOverlayVS
coming from the thumb to the scrollview This will make the
scrollview to handle then and perform the same scrolling action it
would do otherwise. (LP: #1340992)
* This has a "soft" dependency on lp:~3v1n0/nux/horizontal-scroll-
delta/
used to do (except for the SwitcerView fix) if that nux branch is
not used, while it will support correctly horizontal scroll events
when both the branches are used. (LP: #1342208)
-- Ubuntu daily release <email address hidden> Thu, 31 Jul 2014 18:40:00 +0000