aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2018-08-27 17:06:07 +0200
committerTeddy Wing2018-08-27 17:06:07 +0200
commit62729cbbc786943eff6093ceb4b13146470295ec (patch)
tree1125bf7ec4ae2d76e9e9575cf53e164fd35c6a9d
parentf3a108e3c8795af7694d2dbd9341b1fabbff9dd1 (diff)
downloadDomeKey-62729cbbc786943eff6093ceb4b13146470295ec.tar.bz2
KeyboardSimulator: Add `simpleKeyPressWithKey:` method
This as yet untested method will be responsible for simulating a key press given a single-character string corresponding to the glyph of the key to be pressed. It relies on `keyCodeForChar:` to get the `CGKeyCode` corresponding to the glyph, a method which is currently just a placeholder.
-rw-r--r--DomeKey/KeyboardSimulator.h3
-rw-r--r--DomeKey/KeyboardSimulator.m24
2 files changed, 27 insertions, 0 deletions
diff --git a/DomeKey/KeyboardSimulator.h b/DomeKey/KeyboardSimulator.h
index bdd62b5..dc471d3 100644
--- a/DomeKey/KeyboardSimulator.h
+++ b/DomeKey/KeyboardSimulator.h
@@ -10,4 +10,7 @@
@interface KeyboardSimulator : NSObject
++ (CGKeyCode)keyCodeForChar:(NSString *)aChar;
++ (void)simpleKeyPressWithKey:(NSString *)aChar;
+
@end
diff --git a/DomeKey/KeyboardSimulator.m b/DomeKey/KeyboardSimulator.m
index f33601a..2fa808d 100644
--- a/DomeKey/KeyboardSimulator.m
+++ b/DomeKey/KeyboardSimulator.m
@@ -10,4 +10,28 @@
@implementation KeyboardSimulator
++ (CGKeyCode)keyCodeForChar:(NSString *)aChar
+{
+ return (CGKeyCode)0;
+}
+
++ (void)simpleKeyPressWithKey:(NSString *)aChar
+{
+ CGEventSourceRef source = CGEventSourceCreate(
+ kCGEventSourceStateHIDSystemState
+ );
+
+ CGKeyCode key_code = [self keyCodeForChar:aChar];
+
+ CGEventRef key_down = CGEventCreateKeyboardEvent(source, key_code, true);
+ CGEventRef key_up = CGEventCreateKeyboardEvent(source, key_code, false);
+
+ CGEventPost(kCGHIDEventTap, key_down);
+ CGEventPost(kCGHIDEventTap, key_up);
+
+ CFRelease(key_down);
+ CFRelease(key_up);
+ CFRelease(source);
+}
+
@end