Implement Caps Lock warning for password input#3646
Conversation
081460a to
d274916
Compare
|
Alright, macOS works now, too and Windows has been tested as well. It's astounding how both Windows and macOS can do that in one line, but good-ol' X11 always makes you run the extra mile. Only thing missing now is a Wayland implementation. I also changed the polling mechanism from timer-based to overriding the event() method. That way the state doesn't neatly update in near-realtime anymore (only on explicit events like show, focus, hover, keypress, etc.), but I think it's worth it, since it reduces the amount of unnecessary polling significantly. |
d1f7815 to
8f92c2d
Compare
e472c95 to
c293bea
Compare
|
Are you going to pick this back up? |
|
This is basically ready, I just hate the Wayland implementation. I already depend on a third-party library (the first point I don't like at all) and it is still 40 LOC instead of one like on other sane platforms. An implementation with the plain Wayland C API would add another 100-300 LOC of boilerplate callback code. |
ef56738 to
d7d1672
Compare
d7d1672 to
8eeea9d
Compare
|
CI is missing some dependencies: Also need to run |
|
I would like to merge this but NOT add the Wayland support for now (requires a new dependency and the code is ugly as sin). Can you extract the Wayland portion into a separate PR for 2.7.0? |
|
Yeah, we can do that. I would want to redesign the message a little, but we may do that in another PR as well (the unlock dialogue needs some fresh air anyway). Colours also need to be adjusted to meet contrast requirements. |
089fe91 to
ce67c84
Compare
ce67c84 to
f374bc9
Compare
f374bc9 to
13825b7
Compare
13825b7 to
8f598e5
Compare
|
With those changes I'm getting a build error on Linux: Any idea what to do against it? |
|
Install qtbase5-private-dev. |
|
Works, thanks for the quick reply :) Should be added to https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux. |
|
BTW, what do you think about using one of the following icons instead of exclamation-mark-in-triangle to indicate that caps-lock is on? ( EDIT: Forgot to mention that I love the new feature. |
|
I tried the keyboard-caps icon before, but it's too thin and hard to see and also hard to interpret. The warning triangle was much clearer. |
|
I noticed the pop-up tool tip obscures the repeat password box. This could annoy people who actually use caps lock instead of shift. They are out there... |
|
We could place it on top, perhaps. But then it obscures the label. |
|
It's fine |
Added - Custom Light and Dark themes [#4110, #4769, #4791, #4796, #4892, #4915] - Compact mode to use classic Group and Entry line height [#4910] - View menu to quickly switch themes, compact mode, and toggle UI elements [#4910] - Search for groups and scope search to matched groups [#4705] - Save Database Backup feature [#4550] - Sort entries by "natural order" and move lines up/down [#4357] - Option to launch KeePassXC on system startup/login [#4675] - Caps Lock warning on password input fields [#3646] - Add "Size" column to entry view [#4588] - Browser-like tab experience using Ctrl+[Num] (Alt+[Num] on Linux) [#4063, #4305] - Password Generator: Define additional characters to choose from [#3876] - Reports: Database password health check (offline) [#3993] - Reports: HIBP online service to check for breached passwords [#4438] - Auto-Type: DateTime placeholders [#4409] - Browser: Show group name in results sent to browser extension [#4111] - Browser: Ability to define a custom browser location (macOS and Linux only) [#4148] - Browser: Ability to change root group UUID and inline edit connection ID [#4315, #4591] - CLI: `db-info` command [#4231] - CLI: Use wl-clipboard if xclip is not available (Linux) [#4323] - CLI: Incorporate xclip into snap builds [#4697] - SSH Agent: Key file path env substitution, SSH_AUTH_SOCK override, and connection test [#3769, #3801, #4545] - SSH Agent: Context menu actions to add/remove keys [#4290] Changed - Complete replacement of default database icons [#4699] - Complete replacement of application icons [#4066, #4161, #4203, #4411] - Complete rewrite of documentation and manpages using Asciidoctor [#4937] - Complete refactor of config files; separate between local and roaming [#4665] - Complete refactor of browser integration and proxy code [#4680] - Complete refactor of hardware key integration (YubiKey and OnlyKey) [#4584, #4843] - Significantly improve performance when saving and opening databases [#4309, #4833] - Remove read-only detection for database files [#4508] - Overhaul of password fields and password generator [#4367] - Replace instances of "Master Key" with "Database Credentials" [#4929] - Change settings checkboxes to positive phrasing for consistency [#4715] - Improve UX of using entry actions (focus fix) [#3893] - Set expiration time to Now when enabling entry expiration [#4406] - Always show "New Entry" in context menu [#4617] - Issue warning before adding large attachments [#4651] - Improve importing OPVault [#4630] - Improve AutoOpen capability [#3901, #4752] - Check for updates every 7 days even while still running [#4752] - Improve Windows installer UI/UX [#4675] - Improve config file handling of portable distribution [#4131, #4752] - macOS: Hide dock icon when application is hidden to tray [#4782] - Browser: Use unlock dialog to improve UX of opening a locked database [#3698] - Browser: Improve database and entry settings experience [#4392, #4591] - Browser: Improve confirm access dialog [#2143, #4660] - KeeShare: Improve monitoring file changes of shares [#4720] - CLI: Rename `create` command to `db-create` [#4231] - CLI: Cleanup `db-create` options (`--set-key-file` and `--set-password`) [#4313] - CLI: Use stderr for help text and password prompts [#4086, #4623] - FdoSecrets: Display existing secret service process [#4128] Fixed - Fix changing focus around the main window using tab key [#4641] - Fix search field clearing while still using the application [#4368] - Improve search help widget displaying on macOS and Linux [#4236] - Return keyboard focus after editing an entry [#4287] - Reset database path after failed "Save As" [#4526] - Use SHA256 Digest for Windows code signing [#4129] - Improve handling of ccache when building [#4104, #4335] - macOS: Properly re-hide application window after browser integration and Auto-Type usage [#4909] - Auto-Type: Fix crash when performing on new entry [#4132] - Browser: Send legacy HTTP settings to recycle bin [#4589] - Browser: Fix merging browser keys [#4685] - CLI: Fix encoding when exporting database [#3921] - SSH Agent: Improve reliability and underlying code [#3833, #4256, #4549, #4595] - FdoSecrets: Fix crash when editing settings before service is enabled [#4332]

Type of change
Description and Context
This PR adds a warning to the password edit field if cAPS lOCK is enabled. Related to #3487.
As of now, the functionality works on Linux (X11), macOS, and Windows. Wayland is missing because the API sucks.
The change requires the main application to be linked against Qt5::X11Extras and libX11. This is pretty ugly, but I don't want to make this a separate .so either. That will be solved if we move OSUtils to a separate library in the future.
Resolves #2250
Screenshots
Testing strategy
Manual
Checklist:
-DWITH_ASAN=ON. [REQUIRED]