summaryrefslogtreecommitdiff
path: root/src/devices/Keyboard.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2024-07-21 13:09:54 +0200
committerGitHub <noreply@github.com>2024-07-21 13:09:54 +0200
commit016da234d0e852de3ef20eb2e89ac58d2a85f6e7 (patch)
tree496085987176551b0794fffc069877d44943e2f1 /src/devices/Keyboard.cpp
parentf642fb97df5c69267a03452533de383ff8023570 (diff)
Core: Move to aquamarine (#6608)
Moves Hyprland from wlroots to aquamarine for the backend. --------- Signed-off-by: Vaxry <vaxry@vaxry.net> Co-authored-by: Mihai Fufezan <mihai@fufexan.net> Co-authored-by: Jan Beich <jbeich@FreeBSD.org> Co-authored-by: vaxerski <vaxerski@users.noreply.github.com> Co-authored-by: UjinT34 <41110182+UjinT34@users.noreply.github.com> Co-authored-by: Tom Englund <tomenglund26@gmail.com> Co-authored-by: Ikalco <73481042+ikalco@users.noreply.github.com> Co-authored-by: diniamo <diniamo53@gmail.com>
Diffstat (limited to 'src/devices/Keyboard.cpp')
-rw-r--r--src/devices/Keyboard.cpp66
1 files changed, 29 insertions, 37 deletions
diff --git a/src/devices/Keyboard.cpp b/src/devices/Keyboard.cpp
index 17357edb..ae28c07d 100644
--- a/src/devices/Keyboard.cpp
+++ b/src/devices/Keyboard.cpp
@@ -1,7 +1,10 @@
#include "Keyboard.hpp"
#include "../defines.hpp"
+#include "../Compositor.hpp"
-SP<CKeyboard> CKeyboard::create(wlr_keyboard* keeb) {
+#include <aquamarine/input/Input.hpp>
+
+SP<CKeyboard> CKeyboard::create(SP<Aquamarine::IKeyboard> keeb) {
SP<CKeyboard> pKeeb = SP<CKeyboard>(new CKeyboard(keeb));
pKeeb->self = pKeeb;
@@ -13,52 +16,41 @@ bool CKeyboard::isVirtual() {
return false;
}
-wlr_keyboard* CKeyboard::wlr() {
- return keyboard;
+SP<Aquamarine::IKeyboard> CKeyboard::aq() {
+ return keyboard.lock();
}
-CKeyboard::CKeyboard(wlr_keyboard* keeb) : keyboard(keeb) {
+CKeyboard::CKeyboard(SP<Aquamarine::IKeyboard> keeb) : keyboard(keeb) {
if (!keeb)
return;
- // clang-format off
- hyprListener_destroy.initCallback(&keeb->base.events.destroy, [this] (void* owner, void* data) {
- disconnectCallbacks();
- keyboard = nullptr;
- events.destroy.emit();
- }, this, "CKeyboard");
+ listeners.destroy = keeb->events.destroy.registerListener([this](std::any d) {
+ keyboard.reset();
+ events.destroy.emit();
+ });
+
+ listeners.key = keeb->events.key.registerListener([this](std::any d) {
+ auto E = std::any_cast<Aquamarine::IKeyboard::SKeyEvent>(d);
- hyprListener_key.initCallback(&keeb->events.key, [this] (void* owner, void* data) {
- auto E = (wlr_keyboard_key_event*)data;
+ updateXkbStateWithKey(E.key + 8, E.pressed);
keyboardEvents.key.emit(SKeyEvent{
- .timeMs = E->time_msec,
- .keycode = E->keycode,
- .updateMods = E->update_state,
- .state = E->state,
+ .timeMs = E.timeMs,
+ .keycode = E.key,
+ .state = E.pressed ? WL_KEYBOARD_KEY_STATE_PRESSED : WL_KEYBOARD_KEY_STATE_RELEASED,
});
- }, this, "CKeyboard");
-
- hyprListener_keymap.initCallback(&keeb->events.keymap, [this] (void* owner, void* data) {
- keyboardEvents.keymap.emit();
- }, this, "CKeyboard");
+ });
- hyprListener_modifiers.initCallback(&keeb->events.modifiers, [this] (void* owner, void* data) {
- keyboardEvents.modifiers.emit();
- }, this, "CKeyboard");
+ listeners.modifiers = keeb->events.modifiers.registerListener([this](std::any d) {
+ updateModifiersState();
- hyprListener_repeatInfo.initCallback(&keeb->events.repeat_info, [this] (void* owner, void* data) {
- keyboardEvents.repeatInfo.emit();
- }, this, "CKeyboard");
- // clang-format on
-
- deviceName = keeb->base.name ? keeb->base.name : "UNKNOWN";
-}
+ keyboardEvents.modifiers.emit(SModifiersEvent{
+ .depressed = modifiersState.depressed,
+ .latched = modifiersState.latched,
+ .locked = modifiersState.locked,
+ .group = modifiersState.group,
+ });
+ });
-void CKeyboard::disconnectCallbacks() {
- hyprListener_destroy.removeCallback();
- hyprListener_key.removeCallback();
- hyprListener_keymap.removeCallback();
- hyprListener_repeatInfo.removeCallback();
- hyprListener_modifiers.removeCallback();
+ deviceName = keeb->getName();
}