Class: Capybara::Lightpanda::Keyboard

Inherits:
Object
  • Object
show all
Defined in:
lib/capybara/lightpanda/keyboard.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary collapse

KEYS =

Capybara symbol -> CDP key definition.

{
  cancel: { key: "Cancel", code: "Abort", keyCode: 3 },
  help: { key: "Help", code: "Help", keyCode: 6 },
  backspace: { key: "Backspace", code: "Backspace", keyCode: 8 },
  tab: { key: "Tab", code: "Tab", keyCode: 9 },
  clear: { key: "Clear", code: "NumLock", keyCode: 12 },
  return: { key: "Enter", code: "Enter", keyCode: 13, text: "\r" },
  enter: { key: "Enter", code: "Enter", keyCode: 13, text: "\r" },
  shift: { key: "Shift", code: "ShiftLeft", keyCode: 16 },
  control: { key: "Control", code: "ControlLeft", keyCode: 17 },
  alt: { key: "Alt", code: "AltLeft", keyCode: 18 },
  pause: { key: "Pause", code: "Pause", keyCode: 19 },
  escape: { key: "Escape", code: "Escape", keyCode: 27 },
  space: { key: " ", code: "Space", keyCode: 32, text: " " },
  page_up: { key: "PageUp", code: "PageUp", keyCode: 33 },
  page_down: { key: "PageDown", code: "PageDown", keyCode: 34 },
  end: { key: "End", code: "End", keyCode: 35 },
  home: { key: "Home", code: "Home", keyCode: 36 },
  left: { key: "ArrowLeft", code: "ArrowLeft", keyCode: 37 },
  up: { key: "ArrowUp", code: "ArrowUp", keyCode: 38 },
  right: { key: "ArrowRight", code: "ArrowRight", keyCode: 39 },
  down: { key: "ArrowDown", code: "ArrowDown", keyCode: 40 },
  insert: { key: "Insert", code: "Insert", keyCode: 45 },
  delete: { key: "Delete", code: "Delete", keyCode: 46 },
  semicolon: { key: ";", code: "Semicolon", keyCode: 186, text: ";" },
  equals: { key: "=", code: "Equal", keyCode: 187, text: "=" },
  numpad0: { key: "0", code: "Numpad0", keyCode: 96, text: "0" },
  numpad1: { key: "1", code: "Numpad1", keyCode: 97, text: "1" },
  numpad2: { key: "2", code: "Numpad2", keyCode: 98, text: "2" },
  numpad3: { key: "3", code: "Numpad3", keyCode: 99, text: "3" },
  numpad4: { key: "4", code: "Numpad4", keyCode: 100, text: "4" },
  numpad5: { key: "5", code: "Numpad5", keyCode: 101, text: "5" },
  numpad6: { key: "6", code: "Numpad6", keyCode: 102, text: "6" },
  numpad7: { key: "7", code: "Numpad7", keyCode: 103, text: "7" },
  numpad8: { key: "8", code: "Numpad8", keyCode: 104, text: "8" },
  numpad9: { key: "9", code: "Numpad9", keyCode: 105, text: "9" },
  multiply: { key: "*", code: "NumpadMultiply", keyCode: 106, text: "*" },
  add: { key: "+", code: "NumpadAdd", keyCode: 107, text: "+" },
  separator: { key: ".", code: "NumpadDecimal", keyCode: 110, text: "." },
  subtract: { key: "-", code: "NumpadSubtract", keyCode: 109, text: "-" },
  decimal: { key: ".", code: "NumpadDecimal", keyCode: 110, text: "." },
  divide: { key: "/", code: "NumpadDivide", keyCode: 111, text: "/" },
  f1: { key: "F1", code: "F1", keyCode: 112 },
  f2: { key: "F2", code: "F2", keyCode: 113 },
  f3: { key: "F3", code: "F3", keyCode: 114 },
  f4: { key: "F4", code: "F4", keyCode: 115 },
  f5: { key: "F5", code: "F5", keyCode: 116 },
  f6: { key: "F6", code: "F6", keyCode: 117 },
  f7: { key: "F7", code: "F7", keyCode: 118 },
  f8: { key: "F8", code: "F8", keyCode: 119 },
  f9: { key: "F9", code: "F9", keyCode: 120 },
  f10: { key: "F10", code: "F10", keyCode: 121 },
  f11: { key: "F11", code: "F11", keyCode: 122 },
  f12: { key: "F12", code: "F12", keyCode: 123 },
  meta: { key: "Meta", code: "MetaLeft", keyCode: 91 },
  command: { key: "Meta", code: "MetaLeft", keyCode: 91 },
}.freeze
MODIFIERS =
{
  alt: 1,
  control: 2, ctrl: 2,
  meta: 4, command: 4,
  shift: 8,
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(browser) ⇒ Keyboard

Returns a new instance of Keyboard.



72
73
74
# File 'lib/capybara/lightpanda/keyboard.rb', line 72

def initialize(browser)
  @browser = browser
end

Instance Method Details

#type(*keys) ⇒ Object



76
77
78
79
80
81
82
83
84
# File 'lib/capybara/lightpanda/keyboard.rb', line 76

def type(*keys)
  keys.each do |key|
    case key
    when Symbol then dispatch_key(key)
    when String then key.each_char { |char| dispatch_char(char) }
    when Array  then type_with_modifiers(key)
    end
  end
end