Commit Graph

7 Commits (63ece6e3ca035087b9ee7e31151aefefef0f975c)

Author SHA1 Message Date
Chris Burel 5967b419a2
Only enable the Keyboard device in the XcbKeyboard unit tests (#4682)
This prevents other input devices from interfering with the expected calls
that the Keyboard tests should make.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel 8668d8b2fe [XCB] Avoid emitting text events when a key press does not generate text
Many keys will generate key press events but return an empty string from
`xkb_state_key_get_utf8`, like modifier keys, arrow keys, function keys,
etc. This checks if the string retrieved from such a key press is empty
before emitting an associated text event for it, to avoid notifying a
potentially large number of listeners about an empty string.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel ba48426750 [XCB] Generate raw text events as well as key press events
Fixes LYN-6997

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel ee5ab1770b [XCB] Respond to keyboard state changes
This allows the keyboard to correctly store modifier keys, as the keyboard
state changes.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel aa8594b491
Add a unit test for `XcbInputDeviceKeyboard` (#4393)
* Use XcbUniquePtr to manage xcb resources

Signed-off-by: Chris Burel <burelc@amazon.com>

* Add a unit test for XcbInputDeviceKeyboard

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel f5effaabcc Consolidate all xcb functionality into one subdirectory
The Linux platform has multiple windowing systems. Support for xcb is
currently in progress, support for Wayland is planned in the future. The
way the current xcb support is included is by making some file with a
`_xcb` suffix, and placing `#if PAL_TRAIT_LINUX_WINDOW_MANAGER_XCB` around
most of that file's contents.

With this change, all of the code in AzFramework that uses xcb directly is
inside the `Platform/Common/Xcb` subdirectory. It greatly reduces the
amount of code in compile-time `#ifdef` checks for the chosen windowing
system. It also provides a logical place to include O3DE-specific xcb
C++ wrappers and interfaces, without polluting non-xcb related code.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel 08e3d14013 Move xcb files to common directory
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago