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