Method: Platform#press_key
- Defined in:
- lib/platform/platform.rb
#press_key(*args) ⇒ Object
Public: Presses keys. When no arguments are given, this returns the key presser, which defines methods for all of
the valid keys for this platform. See examples.
Examples
press_key.ARROW_DOWN
# => nil
press_key.NUM_3(:sleep_time => 1.sec)
# => nil
press_key('0123', :delay_between_keys => 250.ms, :sleep_time => 5.sec)
# => nil
Returns the key presser or the Time at which the key(s) were pressed.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/platform/platform.rb', line 63 def press_key(*args) if args.empty? @key_presser else keys = args[0] raise 'Key cannot be nil.' if keys.empty? || keys.nil? args = args.fetch(1, {}) delay_between_keys = args.fetch(:delay_between_keys, 500.ms) sleep_time = args.fetch(:sleep_time, 3.sec) if keys.is_a?(Integer) || keys =~ /\A\d+\z/ keys = keys.to_s.chars.to_a keys << 'select' if keys.length > 1 && keys.length < 4 && self.class <= Stb end unless keys.is_a?(Array) keys = [keys] end logger.keypress(keys, message: %Q(Pressing keys: #{keys.join(', ')})) json_keys = keys.each_with_index.map do |k, i| {key: "KEY_#{k}".upcase, delayMs: (i + 1) == keys.count ? 0.ms : delay_between_keys} end resp = @test_case.send(:tmc_put, '/api/ir/send', json: {devices: [@id], remote: @remote_type, irData: json_keys, script: @test_case.send(:path)}) sleep(sleep_time) resp['stop'].to_time end end |