Class: MacOS::Keyboard
- Inherits:
-
Object
- Object
- MacOS::Keyboard
- Defined in:
- lib/macos/keyboard.rb
Overview
Simulates a macOS keyboard.
Constant Summary collapse
- MILISECOND =
0.001
Instance Method Summary collapse
- #key(character, mask: 0) ⇒ Object
- #key_down(character, mask: 0) ⇒ Object
- #key_up(character, mask: 0) ⇒ Object
- #keys(text) ⇒ Object
- #type(text) ⇒ Object
Instance Method Details
#key(character, mask: 0) ⇒ Object
42 43 44 45 |
# File 'lib/macos/keyboard.rb', line 42 def key(character, mask: 0) key_down(character, mask:) key_up(character, mask:) end |
#key_down(character, mask: 0) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/macos/keyboard.rb', line 52 def key_down(character, mask: 0) code = Library::CoreGraphics::KeyCode.find(character) event = Library::CoreGraphics.CGEventCreateKeyboardEvent(nil, code, true) Library::CoreGraphics.CGEventSetFlags(event, mask) unless mask.zero? Library::CoreGraphics.CGEventPost(Library::CoreGraphics::EventTapLocation::HID_EVENT_TAP, event) Library::CoreGraphics.CFRelease(event) sleep(MILISECOND) end |
#key_up(character, mask: 0) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/macos/keyboard.rb', line 66 def key_up(character, mask: 0) code = Library::CoreGraphics::KeyCode.find(character) event = Library::CoreGraphics.CGEventCreateKeyboardEvent(nil, code, false) Library::CoreGraphics.CGEventSetFlags(event, mask) unless mask.zero? Library::CoreGraphics.CGEventPost(Library::CoreGraphics::EventTapLocation::HID_EVENT_TAP, event) Library::CoreGraphics.CFRelease(event) sleep(MILISECOND) end |
#keys(text) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/macos/keyboard.rb', line 25 def keys(text) mask = 0 = text.split("+") key = .pop .each do |option| mask |= Library::CoreGraphics::EventFlags.find(option) end key(key.downcase, mask:) end |
#type(text) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/macos/keyboard.rb', line 9 def type(text) text.chars.each do |character| mask = 0 mask |= Library::CoreGraphics::EventFlags::MASK_SHIFT if Library::CoreGraphics::KeyCode.shifted?(character) key(character, mask:) end end |