Source code

Revision control

Copy as Markdown

Other Tools

# 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
#
#
# 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.
"""The Keys implementation."""
from collections import OrderedDict
from inspect import getmembers
class Keys(object):
"""
Set of special keys codes.
"""
NULL = u"\ue000"
CANCEL = u"\ue001" # ^break
HELP = u"\ue002"
BACKSPACE = u"\ue003"
TAB = u"\ue004"
CLEAR = u"\ue005"
RETURN = u"\ue006"
ENTER = u"\ue007"
SHIFT = u"\ue008"
CONTROL = u"\ue009"
ALT = u"\ue00a"
PAUSE = u"\ue00b"
ESCAPE = u"\ue00c"
SPACE = u"\ue00d"
PAGE_UP = u"\ue00e"
PAGE_DOWN = u"\ue00f"
END = u"\ue010"
HOME = u"\ue011"
LEFT = u"\ue012"
UP = u"\ue013"
RIGHT = u"\ue014"
DOWN = u"\ue015"
INSERT = u"\ue016"
DELETE = u"\ue017"
SEMICOLON = u"\ue018"
EQUALS = u"\ue019"
NUMPAD0 = u"\ue01a" # number pad keys
NUMPAD1 = u"\ue01b"
NUMPAD2 = u"\ue01c"
NUMPAD3 = u"\ue01d"
NUMPAD4 = u"\ue01e"
NUMPAD5 = u"\ue01f"
NUMPAD6 = u"\ue020"
NUMPAD7 = u"\ue021"
NUMPAD8 = u"\ue022"
NUMPAD9 = u"\ue023"
MULTIPLY = u"\ue024"
ADD = u"\ue025"
SEPARATOR = u"\ue026"
SUBTRACT = u"\ue027"
DECIMAL = u"\ue028"
DIVIDE = u"\ue029"
F1 = u"\ue031" # function keys
F2 = u"\ue032"
F3 = u"\ue033"
F4 = u"\ue034"
F5 = u"\ue035"
F6 = u"\ue036"
F7 = u"\ue037"
F8 = u"\ue038"
F9 = u"\ue039"
F10 = u"\ue03a"
F11 = u"\ue03b"
F12 = u"\ue03c"
META = u"\ue03d"
# More keys from webdriver spec
ZENKAKUHANKAKU = u"\uE040"
R_SHIFT = u"\uE050"
R_CONTROL = u"\uE051"
R_ALT = u"\uE052"
R_META = u"\uE053"
R_PAGEUP = u"\uE054"
R_PAGEDOWN = u"\uE055"
R_END = u"\uE056"
R_HOME = u"\uE057"
R_ARROWLEFT = u"\uE058"
R_ARROWUP = u"\uE059"
R_ARROWRIGHT = u"\uE05A"
R_ARROWDOWN = u"\uE05B"
R_INSERT = u"\uE05C"
R_DELETE = u"\uE05D"
ALL_KEYS = getmembers(Keys, lambda x: type(x) is str)
ALL_EVENTS = OrderedDict(
[
("ADD", OrderedDict(
[
("code", "NumpadAdd"),
("ctrl", False),
("key", "+"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue025")
]
)),
("ALT", OrderedDict(
[
("code", "AltLeft"),
("ctrl", False),
("key", "Alt"),
("location", 1),
("meta", False),
("shift", False),
("value", u"\ue00a")
]
)),
("BACKSPACE", OrderedDict(
[
("code", "Backspace"),
("ctrl", False),
("key", "Backspace"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue003")
]
)),
("CANCEL", OrderedDict(
[
("code", ""),
("ctrl", False),
("key", "Cancel"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue001")
]
)),
("CLEAR", OrderedDict(
[
("code", ""),
("ctrl", False),
("key", "Clear"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue005")
]
)),
("CONTROL", OrderedDict(
[
("code", "ControlLeft"),
("ctrl", True),
("key", "Control"),
("location", 1),
("meta", False),
("shift", False),
("value", u"\ue009")
]
)),
("DECIMAL", OrderedDict(
[
("code", "NumpadDecimal"),
("ctrl", False),
("key", "."),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue028")
]
)),
("DELETE", OrderedDict(
[
("code", "Delete"),
("ctrl", False),
("key", "Delete"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue017")
]
)),
("DIVIDE", OrderedDict(
[
("code", "NumpadDivide"),
("ctrl", False),
("key", "/"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue029")
]
)),
("DOWN", OrderedDict(
[
("code", "ArrowDown"),
("ctrl", False),
("key", "ArrowDown"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue015")
]
)),
("END", OrderedDict(
[
("code", "End"),
("ctrl", False),
("key", "End"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue010")
]
)),
("ENTER", OrderedDict(
[
("code", "NumpadEnter"),
("ctrl", False),
("key", "Enter"),
("location", 1),
("meta", False),
("shift", False),
("value", u"\ue007")
]
)),
("EQUALS", OrderedDict(
[
("code", "NumpadEqual"),
("ctrl", False),
("key", "="),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue019")
]
)),
("ESCAPE", OrderedDict(
[
("code", "Escape"),
("ctrl", False),
("key", "Escape"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue00c")
]
)),
("F1", OrderedDict(
[
("code", "F1"),
("ctrl", False),
("key", "F1"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue031")
]
)),
("F10", OrderedDict(
[
("code", "F10"),
("ctrl", False),
("key", "F10"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue03a")
]
)),
("F11", OrderedDict(
[
("code", "F11"),
("ctrl", False),
("key", "F11"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue03b")
]
)),
("F12", OrderedDict(
[
("code", "F12"),
("ctrl", False),
("key", "F12"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue03c")
]
)),
("F2", OrderedDict(
[
("code", "F2"),
("ctrl", False),
("key", "F2"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue032")
]
)),
("F3", OrderedDict(
[
("code", "F3"),
("ctrl", False),
("key", "F3"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue033")
]
)),
("F4", OrderedDict(
[
("code", "F4"),
("ctrl", False),
("key", "F4"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue034")
]
)),
("F5", OrderedDict(
[
("code", "F5"),
("ctrl", False),
("key", "F5"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue035")
]
)),
("F6", OrderedDict(
[
("code", "F6"),
("ctrl", False),
("key", "F6"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue036")
]
)),
("F7", OrderedDict(
[
("code", "F7"),
("ctrl", False),
("key", "F7"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue037")
]
)),
("F8", OrderedDict(
[
("code", "F8"),
("ctrl", False),
("key", "F8"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue038")
]
)),
("F9", OrderedDict(
[
("code", "F9"),
("ctrl", False),
("key", "F9"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue039")
]
)),
("HELP", OrderedDict(
[
("code", "Help"),
("ctrl", False),
("key", "Help"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue002")
]
)),
("HOME", OrderedDict(
[
("code", "Home"),
("ctrl", False),
("key", "Home"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue011")
]
)),
("INSERT", OrderedDict(
[
("code", "Insert"),
("ctrl", False),
("key", "Insert"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue016")
]
)),
("LEFT", OrderedDict(
[
("code", "ArrowLeft"),
("ctrl", False),
("key", "ArrowLeft"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue012")
]
)),
("META", OrderedDict(
[
("code", "MetaLeft"),
("ctrl", False),
("key", "Meta"),
("location", 1),
("meta", True),
("shift", False),
("value", u"\ue03d")
]
)),
("MULTIPLY", OrderedDict(
[
("code", "NumpadMultiply"),
("ctrl", False),
("key", "*"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue024")
]
)),
("NULL", OrderedDict(
[
("code", ""),
("ctrl", False),
("key", "Unidentified"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue000")
]
)),
("NUMPAD0", OrderedDict(
[
("code", "Numpad0"),
("ctrl", False),
("key", "0"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue01a")
]
)),
("NUMPAD1", OrderedDict(
[
("code", "Numpad1"),
("ctrl", False),
("key", "1"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue01b")
]
)),
("NUMPAD2", OrderedDict(
[
("code", "Numpad2"),
("ctrl", False),
("key", "2"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue01c")
]
)),
("NUMPAD3", OrderedDict(
[
("code", "Numpad3"),
("ctrl", False),
("key", "3"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue01d")
]
)),
("NUMPAD4", OrderedDict(
[
("code", "Numpad4"),
("ctrl", False),
("key", "4"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue01e")
]
)),
("NUMPAD5", OrderedDict(
[
("code", "Numpad5"),
("ctrl", False),
("key", "5"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue01f")
]
)),
("NUMPAD6", OrderedDict(
[
("code", "Numpad6"),
("ctrl", False),
("key", "6"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue020")
]
)),
("NUMPAD7", OrderedDict(
[
("code", "Numpad7"),
("ctrl", False),
("key", "7"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue021")
]
)),
("NUMPAD8", OrderedDict(
[
("code", "Numpad8"),
("ctrl", False),
("key", "8"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue022")
]
)),
("NUMPAD9", OrderedDict(
[
("code", "Numpad9"),
("ctrl", False),
("key", "9"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue023")
]
)),
("PAGE_DOWN", OrderedDict(
[
("code", "PageDown"),
("ctrl", False),
("key", "PageDown"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue00f")
]
)),
("PAGE_UP", OrderedDict(
[
("code", "PageUp"),
("ctrl", False),
("key", "PageUp"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue00e")
]
)),
("PAUSE", OrderedDict(
[
("code", "Pause"),
("ctrl", False),
("key", "Pause"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue00b")
]
)),
("RETURN", OrderedDict(
[
("code", "Enter"),
("ctrl", False),
("key", "Enter"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue006")
]
)),
("RIGHT", OrderedDict(
[
("code", "ArrowRight"),
("ctrl", False),
("key", "ArrowRight"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue014")
]
)),
("R_ALT", OrderedDict(
[
("code", "AltRight"),
("ctrl", False),
("key", "Alt"),
("location", 2),
("meta", False),
("shift", False),
("value", u"\ue052")
]
)),
("R_ARROWDOWN", OrderedDict(
[
("code", "Numpad2"),
("ctrl", False),
("key", "ArrowDown"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue05b")
]
)),
("R_ARROWLEFT", OrderedDict(
[
("code", "Numpad4"),
("ctrl", False),
("key", "ArrowLeft"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue058")
]
)),
("R_ARROWRIGHT", OrderedDict(
[
("code", "Numpad6"),
("ctrl", False),
("key", "ArrowRight"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue05a")
]
)),
("R_ARROWUP", OrderedDict(
[
("code", "Numpad8"),
("ctrl", False),
("key", "ArrowUp"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue059")
]
)),
("R_CONTROL", OrderedDict(
[
("code", "ControlRight"),
("ctrl", True),
("key", "Control"),
("location", 2),
("meta", False),
("shift", False),
("value", u"\ue051")
]
)),
("R_DELETE", OrderedDict(
[
("code", "NumpadDecimal"),
("ctrl", False),
("key", "Delete"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue05d")
]
)),
("R_END", OrderedDict(
[
("code", "Numpad1"),
("ctrl", False),
("key", "End"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue056")
]
)),
("R_HOME", OrderedDict(
[
("code", "Numpad7"),
("ctrl", False),
("key", "Home"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue057")
]
)),
("R_INSERT", OrderedDict(
[
("code", "Numpad0"),
("ctrl", False),
("key", "Insert"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue05c")
]
)),
("R_META", OrderedDict(
[
("code", "MetaRight"),
("ctrl", False),
("key", "Meta"),
("location", 2),
("meta", True),
("shift", False),
("value", u"\ue053")
]
)),
("R_PAGEDOWN", OrderedDict(
[
("code", "Numpad3"),
("ctrl", False),
("key", "PageDown"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue055")
]
)),
("R_PAGEUP", OrderedDict(
[
("code", "Numpad9"),
("ctrl", False),
("key", "PageUp"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue054")
]
)),
("R_SHIFT", OrderedDict(
[
("code", "ShiftRight"),
("ctrl", False),
("key", "Shift"),
("location", 2),
("meta", False),
("shift", True),
("value", u"\ue050")
]
)),
("SEMICOLON", OrderedDict(
[
("code", ""),
("ctrl", False),
("key", ";"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue018")
]
)),
("SEPARATOR", OrderedDict(
[
("code", "NumpadComma"),
("ctrl", False),
("key", ","),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue026")
]
)),
("SHIFT", OrderedDict(
[
("code", "ShiftLeft"),
("ctrl", False),
("key", "Shift"),
("location", 1),
("meta", False),
("shift", True),
("value", u"\ue008")
]
)),
("SPACE", OrderedDict(
[
("code", "Space"),
("ctrl", False),
("key", " "),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue00d")
]
)),
("SUBTRACT", OrderedDict(
[
("code", "NumpadSubtract"),
("ctrl", False),
("key", "-"),
("location", 3),
("meta", False),
("shift", False),
("value", u"\ue027")
]
)),
("TAB", OrderedDict(
[
("code", "Tab"),
("ctrl", False),
("key", "Tab"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue004")
]
)),
("UP", OrderedDict(
[
("code", "ArrowUp"),
("ctrl", False),
("key", "ArrowUp"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue013")
]
)),
("ZENKAKUHANKAKU", OrderedDict(
[
("code", ""),
("ctrl", False),
("key", "ZenkakuHankaku"),
("location", 0),
("meta", False),
("shift", False),
("value", u"\ue040")
]
))
]
)
ALTERNATIVE_KEY_NAMES = {
"ADD": "Add",
"DECIMAL": "Decimal",
"DELETE": "Del",
"DIVIDE": "Divide",
"DOWN": "Down",
"ESCAPE": "Esc",
"LEFT": "Left",
"MULTIPLY": "Multiply",
"R_ARROWDOWN": "Down",
"R_ARROWLEFT": "Left",
"R_ARROWRIGHT": "Right",
"R_ARROWUP": "Up",
"R_DELETE": "Del",
"RIGHT": "Right",
"SEPARATOR": "Separator",
"SPACE": "Spacebar",
"SUBTRACT": "Subtract",
"UP": "Up",
}