Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modifier key naming is inconsistent between VirtualKeyCode and ModifiersState #1343

Closed
Osspial opened this issue Dec 28, 2019 · 0 comments
Closed
Labels
S - api Design and usability

Comments

@Osspial
Copy link
Contributor

Osspial commented Dec 28, 2019

Noticed this when implementing ModifiersStateChanged on Windows. The control key is CTRL in ModifiersState, but Control in VirtualKeyCode. Similarly, the logo key is LOGO in ModifiersState and Win in VirtualKeyCode.

I don't think it particularly matters which name we end up settling on, but the names should be consistent throughout the API. We should try and resolve this when we do a design pass over the keyboard input API.

@Osspial Osspial added this to the Keyboard Events Overhaul milestone Dec 28, 2019
@Osspial Osspial added the S - api Design and usability label Dec 28, 2019
ArturKovacs added a commit to ArturKovacs/winit that referenced this issue Jan 4, 2021
ArturKovacs added a commit that referenced this issue Apr 25, 2021
* Introducing the new `KeyEvent` and renaming old stuff

* Implemented physical_key on Windows

* Ran cargo fmt

* Progress with the keyboard's windows implementation

* Add proper handling of dead keys

* Add translation for non-printable virtual keys

* Run `cargo fmt`

* Fix for AltGraph not being reported

* Synthesize key events when focus enters or leaves

* Minor improvements

* Remove obsolete API

* Fix numlock and pause not being reported correctly

* Ran `cargo fmt`

* Fix numpad keys being reported incorrectly

* Update examples

* Ran `cargo fmt`

* Add documentation for `ScanCode`

* Add key binding example

* Use consistent modifier key names #1343

* WONT COMPILE transitioning to new keyboard API

* WONT COMPILE Implement new keyboard layout preparation

* WONT COMPILE new keyboard API progress

* Main compile errors fixed for keyboard

* Fix bugs in new keyboard handling

* Remove obsolete code

* Fix examples

* Ran `cargo fmt`

* Fix build error with serde

* Ran `cargo fmt`

* Tweaks in the Windows keyboard implementation

* Add `KeyCodeExtScancode`

* Add `reset_dead_keys`

* Improve the documentation for `Key` and `KeyCode`

* Rename the meta key to super

* Address feedback for the keyboard API

* Fix for rustdoc

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Improve documentation

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Fix for arrow keys being reported as unidentified.

And minor improvements

* Fix media keys reporting Unidentified

* Don't report text on key release events

* Fix for NumLock being reported as Pause in raw input

* Fix for strange behaviour around NumLock and Pause

* Fix for NumLock being ineffective

* Fix for location not being reported correctly

* `RawKeyEvent`s now report repeat

* Don't report text for synthetic key releases

* Address feedback

- Add the `Space` variant to the `to_text` function.
- Mark `get_kbd_state` safe.
- Change `[MaybeUninit<u8>; 256]` to `MaybeUninit<[u8; 256]>`

* Filter `Unidentified` from PrtSc key device events

* Don't report incorrect `RawKeyEvent` for shift + numpad

* AltGraph is not reported again

* Document Windows specific behaviour for shift+numpad

* Fix typo

* Dead keys now affect characters from logical_key

* Prevent Pause and NumLock mappings in window events

* Apply suggestions from code review

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Ran `cargo fmt`

* Add W3C license for `Key` and `KeyCode`

* Extend documentation according to feedback

* Ignore NumLock in `key_without_modifiers`

* Remove unused `key_code_to_non_char_key`

* Remove empty event.rs file

* Use space for resetting dead keys

* Fix reporting multiple graphemes in logical_key

* Avoid incorrect synthetic keypress during setfocus

* Fixed the AltGr keypress not being reported when the AltGr key is pressed and released in a very quick succession

* Filter fake Ctrl events when pressing AltGr

* Improve code quality

* Remove `repeat` from `RawKeyEvent`

* Allow fractional scroll in raw mouse events

* Fix typo

Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

* Remove unused imports

* Remove unused variable

* Remove unnecessary `unwrap()`

Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

* Avoid using the deprecated `into_rgba()`

* Fix IME crash

Co-authored-by: Markus Røyset <maroider@protonmail.com>
Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>
ArturKovacs added a commit to ArturKovacs/winit that referenced this issue Jan 10, 2022
* Introducing the new `KeyEvent` and renaming old stuff

* Implemented physical_key on Windows

* Ran cargo fmt

* Progress with the keyboard's windows implementation

* Add proper handling of dead keys

* Add translation for non-printable virtual keys

* Run `cargo fmt`

* Fix for AltGraph not being reported

* Synthesize key events when focus enters or leaves

* Minor improvements

* Remove obsolete API

* Fix numlock and pause not being reported correctly

* Ran `cargo fmt`

* Fix numpad keys being reported incorrectly

* Update examples

* Ran `cargo fmt`

* Add documentation for `ScanCode`

* Add key binding example

* Use consistent modifier key names rust-windowing#1343

* WONT COMPILE transitioning to new keyboard API

* WONT COMPILE Implement new keyboard layout preparation

* WONT COMPILE new keyboard API progress

* Main compile errors fixed for keyboard

* Fix bugs in new keyboard handling

* Remove obsolete code

* Fix examples

* Ran `cargo fmt`

* Fix build error with serde

* Ran `cargo fmt`

* Tweaks in the Windows keyboard implementation

* Add `KeyCodeExtScancode`

* Add `reset_dead_keys`

* Improve the documentation for `Key` and `KeyCode`

* Rename the meta key to super

* Address feedback for the keyboard API

* Fix for rustdoc

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Improve documentation

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Fix for arrow keys being reported as unidentified.

And minor improvements

* Fix media keys reporting Unidentified

* Don't report text on key release events

* Fix for NumLock being reported as Pause in raw input

* Fix for strange behaviour around NumLock and Pause

* Fix for NumLock being ineffective

* Fix for location not being reported correctly

* `RawKeyEvent`s now report repeat

* Don't report text for synthetic key releases

* Address feedback

- Add the `Space` variant to the `to_text` function.
- Mark `get_kbd_state` safe.
- Change `[MaybeUninit<u8>; 256]` to `MaybeUninit<[u8; 256]>`

* Filter `Unidentified` from PrtSc key device events

* Don't report incorrect `RawKeyEvent` for shift + numpad

* AltGraph is not reported again

* Document Windows specific behaviour for shift+numpad

* Fix typo

* Dead keys now affect characters from logical_key

* Prevent Pause and NumLock mappings in window events

* Apply suggestions from code review

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Ran `cargo fmt`

* Add W3C license for `Key` and `KeyCode`

* Extend documentation according to feedback

* Ignore NumLock in `key_without_modifiers`

* Remove unused `key_code_to_non_char_key`

* Remove empty event.rs file

* Use space for resetting dead keys

* Fix reporting multiple graphemes in logical_key

* Avoid incorrect synthetic keypress during setfocus

* Fixed the AltGr keypress not being reported when the AltGr key is pressed and released in a very quick succession

* Filter fake Ctrl events when pressing AltGr

* Improve code quality

* Remove `repeat` from `RawKeyEvent`

* Allow fractional scroll in raw mouse events

* Fix typo

Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

* Remove unused imports

* Remove unused variable

* Remove unnecessary `unwrap()`

Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

* Avoid using the deprecated `into_rgba()`

* Fix IME crash

Co-authored-by: Markus Røyset <maroider@protonmail.com>
Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>
ArturKovacs added a commit to ArturKovacs/winit that referenced this issue Jan 11, 2022
* Introducing the new `KeyEvent` and renaming old stuff

* Implemented physical_key on Windows

* Ran cargo fmt

* Progress with the keyboard's windows implementation

* Add proper handling of dead keys

* Add translation for non-printable virtual keys

* Run `cargo fmt`

* Fix for AltGraph not being reported

* Synthesize key events when focus enters or leaves

* Minor improvements

* Remove obsolete API

* Fix numlock and pause not being reported correctly

* Ran `cargo fmt`

* Fix numpad keys being reported incorrectly

* Update examples

* Ran `cargo fmt`

* Add documentation for `ScanCode`

* Add key binding example

* Use consistent modifier key names rust-windowing#1343

* WONT COMPILE transitioning to new keyboard API

* WONT COMPILE Implement new keyboard layout preparation

* WONT COMPILE new keyboard API progress

* Main compile errors fixed for keyboard

* Fix bugs in new keyboard handling

* Remove obsolete code

* Fix examples

* Ran `cargo fmt`

* Fix build error with serde

* Ran `cargo fmt`

* Tweaks in the Windows keyboard implementation

* Add `KeyCodeExtScancode`

* Add `reset_dead_keys`

* Improve the documentation for `Key` and `KeyCode`

* Rename the meta key to super

* Address feedback for the keyboard API

* Fix for rustdoc

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Improve documentation

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Fix for arrow keys being reported as unidentified.

And minor improvements

* Fix media keys reporting Unidentified

* Don't report text on key release events

* Fix for NumLock being reported as Pause in raw input

* Fix for strange behaviour around NumLock and Pause

* Fix for NumLock being ineffective

* Fix for location not being reported correctly

* `RawKeyEvent`s now report repeat

* Don't report text for synthetic key releases

* Address feedback

- Add the `Space` variant to the `to_text` function.
- Mark `get_kbd_state` safe.
- Change `[MaybeUninit<u8>; 256]` to `MaybeUninit<[u8; 256]>`

* Filter `Unidentified` from PrtSc key device events

* Don't report incorrect `RawKeyEvent` for shift + numpad

* AltGraph is not reported again

* Document Windows specific behaviour for shift+numpad

* Fix typo

* Dead keys now affect characters from logical_key

* Prevent Pause and NumLock mappings in window events

* Apply suggestions from code review

Co-authored-by: Markus Røyset <maroider@protonmail.com>

* Ran `cargo fmt`

* Add W3C license for `Key` and `KeyCode`

* Extend documentation according to feedback

* Ignore NumLock in `key_without_modifiers`

* Remove unused `key_code_to_non_char_key`

* Remove empty event.rs file

* Use space for resetting dead keys

* Fix reporting multiple graphemes in logical_key

* Avoid incorrect synthetic keypress during setfocus

* Fixed the AltGr keypress not being reported when the AltGr key is pressed and released in a very quick succession

* Filter fake Ctrl events when pressing AltGr

* Improve code quality

* Remove `repeat` from `RawKeyEvent`

* Allow fractional scroll in raw mouse events

* Fix typo

Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

* Remove unused imports

* Remove unused variable

* Remove unnecessary `unwrap()`

Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

* Avoid using the deprecated `into_rgba()`

* Fix IME crash

Co-authored-by: Markus Røyset <maroider@protonmail.com>
Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>

Fix the `drag_window` example
kchibisov added a commit that referenced this issue May 28, 2023
Overhaul the keyboard API in winit to mimic the W3C specification
to achieve better crossplatform parity. The `KeyboardInput` event
is now uses `KeyEvent` which consists of:

  - `physical_key` - a cross platform way to refer to scancodes;
  - `logical_key`  - keysym value, which shows your key respecting the
                     layout;
  - `text`         - the text produced by this keypress;
  - `location`     - the location of the key on the keyboard;
  - `repeat`       - whether the key was produced by the repeat.

And also a `platform_specific` field which encapsulates extra
information on desktop platforms, like key without modifiers
and text with all modifiers.

The `Modifiers` were also slightly reworked as in, the information
whether the left or right modifier is pressed is now also exposed
on platforms where it could be queried reliably. The support was
also added for the web and orbital platforms finishing the API
change.

This change made the `OptionAsAlt` API on macOS redundant thus it
was removed all together.

Co-Authored-By: Artúr Kovács <kovacs.artur.barnabas@gmail.com>
Co-Authored-By: Kirill Chibisov <contact@kchibisov.com>
Co-Authored-By: daxpedda <daxpedda@gmail.com>
Fixes: #2631.
Fixes: #2055.
Fixes: #2032.
Fixes: #1904.
Fixes: #1810.
Fixes: #1700.
Fixes: #1443.
Fixes: #1343.
Fixes: #1208.
Fixes: #1151.
Fixes: #812.
Fixes: #600.
Fixes: #361.
Fixes: #343.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S - api Design and usability
Development

No branches or pull requests

1 participant