# frozen_string_literal: true # Licensed to the Software Freedom Conservancy (SFC) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The SFC licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. module Selenium module WebDriver module Keys # # @see Element#send_keys # @see http://www.google.com.au/search?&q=unicode+pua&btnK=Search # KEYS = { null: "\ue000", cancel: "\ue001", help: "\ue002", backspace: "\ue003", tab: "\ue004", clear: "\ue005", return: "\ue006", enter: "\ue007", shift: "\ue008", left_shift: "\ue008", control: "\ue009", left_control: "\ue009", alt: "\ue00A", left_alt: "\ue00A", pause: "\ue00B", escape: "\ue00C", space: "\ue00D", page_up: "\ue00E", page_down: "\ue00F", end: "\ue010", home: "\ue011", left: "\ue012", arrow_left: "\ue012", up: "\ue013", arrow_up: "\ue013", right: "\ue014", arrow_right: "\ue014", down: "\ue015", arrow_down: "\ue015", insert: "\ue016", delete: "\ue017", semicolon: "\ue018", equals: "\ue019", numpad0: "\ue01A", numpad1: "\ue01B", numpad2: "\ue01C", numpad3: "\ue01D", numpad4: "\ue01E", numpad5: "\ue01F", numpad6: "\ue020", numpad7: "\ue021", numpad8: "\ue022", numpad9: "\ue023", multiply: "\ue024", add: "\ue025", separator: "\ue026", subtract: "\ue027", decimal: "\ue028", divide: "\ue029", f1: "\ue031", f2: "\ue032", f3: "\ue033", f4: "\ue034", f5: "\ue035", f6: "\ue036", f7: "\ue037", f8: "\ue038", f9: "\ue039", f10: "\ue03A", f11: "\ue03B", f12: "\ue03C", meta: "\ue03D", command: "\ue03D", # alias left_meta: "\ue03D", # alias zenkaku_hankaku: "\uE040", right_shift: "\ue050", right_control: "\ue051", right_alt: "\ue052", right_meta: "\ue053", numpad_page_up: "\ue054", numpad_page_down: "\ue055", numpad_end: "\ue056", numpad_home: "\ue057", numpad_left: "\ue058", numpad_up: "\ue059", numpad_right: "\ue05A", numpad_down: "\ue05B", numpad_insert: "\ue05C", numpad_delete: "\ue05D" }.freeze # # @api private # def self.[](key) return KEYS[key] if KEYS[key] raise Error::UnsupportedOperationError, "no such key #{key.inspect}" end # # @api private # def self.encode(keys) keys.map { |key| encode_key(key) } end # # @api private # def self.encode_key(key) case key when Symbol Keys[key] when Array key = key.map { |e| e.is_a?(Symbol) ? Keys[e] : e }.join key << Keys[:null] key else key.to_s end end end # Keys end # WebDriver end # Selenium