Skip to content

Commit 432b74d

Browse files
committed
refactor: Simplify keyboard event handling by replacing string representation with keycode in KeyboardEventHandler
1 parent d4c23ab commit 432b74d

File tree

3 files changed

+16
-29
lines changed

3 files changed

+16
-29
lines changed

src/keyboard_monitor.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33
namespace nativeapi {
44

55
KeyboardEventHandler::KeyboardEventHandler(
6-
std::function<void(const std::string&)> onKeyPressedCallback,
7-
std::function<void(const std::string&)> onKeyReleasedCallback)
6+
std::function<void(int)> onKeyPressedCallback,
7+
std::function<void(int)> onKeyReleasedCallback)
88
: onKeyPressedCallback_(onKeyPressedCallback),
99
onKeyReleasedCallback_(onKeyReleasedCallback) {}
1010

11-
void KeyboardEventHandler::OnKeyPressed(const std::string& key) {
11+
void KeyboardEventHandler::OnKeyPressed(int keycode) {
1212
if (onKeyPressedCallback_) {
13-
onKeyPressedCallback_(key);
13+
onKeyPressedCallback_(keycode);
1414
}
1515
}
1616

17-
void KeyboardEventHandler::OnKeyReleased(const std::string& key) {
17+
void KeyboardEventHandler::OnKeyReleased(int keycode) {
1818
if (onKeyReleasedCallback_) {
19-
onKeyReleasedCallback_(key);
19+
onKeyReleasedCallback_(keycode);
2020
}
2121
}
2222

src/keyboard_monitor.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,18 @@ namespace nativeapi {
1010
class KeyboardEventHandler {
1111
public:
1212
// Constructor that takes callbacks for keyboard events
13-
KeyboardEventHandler(
14-
std::function<void(const std::string&)> onKeyPressedCallback,
15-
std::function<void(const std::string&)> onKeyReleasedCallback);
13+
KeyboardEventHandler(std::function<void(int)> onKeyPressedCallback,
14+
std::function<void(int)> onKeyReleasedCallback);
1615

1716
// Handle key pressed event
18-
void OnKeyPressed(const std::string& key);
17+
void OnKeyPressed(int keycode);
1918

2019
// Handle key released event
21-
void OnKeyReleased(const std::string& key);
20+
void OnKeyReleased(int keycode);
2221

2322
private:
24-
std::function<void(const std::string&)> onKeyPressedCallback_;
25-
std::function<void(const std::string&)> onKeyReleasedCallback_;
23+
std::function<void(int)> onKeyPressedCallback_;
24+
std::function<void(int)> onKeyReleasedCallback_;
2625
};
2726

2827
class KeyboardMonitor {

src/keyboard_monitor_macos.mm

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,10 @@ static CGEventRef keyboardEventCallback(CGEventTapProxy proxy,
4141
// Get the key code
4242
CGKeyCode keyCode = (CGKeyCode)CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode);
4343

44-
// Convert key code to string representation
45-
UniCharCount actualStringLength = 0;
46-
UniChar unicodeString[4];
47-
CGEventKeyboardGetUnicodeString(event, 4, &actualStringLength, unicodeString);
48-
49-
if (actualStringLength > 0) {
50-
std::string keyStr(actualStringLength, 0);
51-
for (UniCharCount i = 0; i < actualStringLength; ++i) {
52-
keyStr[i] = static_cast<char>(unicodeString[i]);
53-
}
54-
55-
if (type == kCGEventKeyDown) {
56-
eventHandler->OnKeyPressed(keyStr);
57-
} else if (type == kCGEventKeyUp) {
58-
eventHandler->OnKeyReleased(keyStr);
59-
}
44+
if (type == kCGEventKeyDown) {
45+
eventHandler->OnKeyPressed(keyCode);
46+
} else if (type == kCGEventKeyUp) {
47+
eventHandler->OnKeyReleased(keyCode);
6048
}
6149

6250
return event;

0 commit comments

Comments
 (0)