--- /dev/null
+<?php
+/**
+ * Copyright 2011-2017 Anthon Pang. All Rights Reserved.
+ *
+ * Licensed 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.
+ *
+ * @package WebDriver
+ *
+ * @author Anthon Pang <apang@softwaredevelopment.ca>
+ * @author Fabrizio Branca <mail@fabrizio-branca.de>
+ */
+
+namespace WebDriver;
+
+/**
+ * WebDriver\Key class
+ *
+ * @package WebDriver
+ */
+final class Key
+{
+ /*
+ * The Unicode "Private Use Area" code points (0xE000-0xF8FF) are used to represent
+ * pressable, non-text keys.
+ *
+ * @link http://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value
+ *
+ * key_name = "UTF-8"; // UCS-2
+ */
+ const NULL_KEY = "\xEE\x80\x80"; // E000
+ const CANCEL = "\xEE\x80\x81"; // E001
+ const HELP = "\xEE\x80\x82"; // E002
+ const BACKSPACE = "\xEE\x80\x83"; // E003
+ const TAB = "\xEE\x80\x84"; // E004
+ const CLEAR = "\xEE\x80\x85"; // E005
+ const RETURN_KEY = "\xEE\x80\x86"; // E006
+ const ENTER = "\xEE\x80\x87"; // E007
+ const SHIFT = "\xEE\x80\x88"; // E008
+ const CONTROL = "\xEE\x80\x89"; // E009
+ const ALT = "\xEE\x80\x8A"; // E00A
+ const PAUSE = "\xEE\x80\x8B"; // E00B
+ const ESCAPE = "\xEE\x80\x8C"; // E00C
+ const SPACE = "\xEE\x80\x8D"; // E00D
+ const PAGE_UP = "\xEE\x80\x8E"; // E00E
+ const PAGE_DOWN = "\xEE\x80\x8F"; // E00F
+ const END = "\xEE\x80\x90"; // E010
+ const HOME = "\xEE\x80\x91"; // E011
+ const LEFT_ARROW = "\xEE\x80\x92"; // E012
+ const UP_ARROW = "\xEE\x80\x93"; // E013
+ const RIGHT_ARROW = "\xEE\x80\x94"; // E014
+ const DOWN_ARROW = "\xEE\x80\x95"; // E015
+ const INSERT = "\xEE\x80\x96"; // E016
+ const DELETE = "\xEE\x80\x97"; // E017
+ const SEMICOLON = "\xEE\x80\x98"; // E018
+ const EQUALS = "\xEE\x80\x99"; // E019
+ const NUMPAD_0 = "\xEE\x80\x9A"; // E01A
+ const NUMPAD_1 = "\xEE\x80\x9B"; // E01B
+ const NUMPAD_2 = "\xEE\x80\x9C"; // E01C
+ const NUMPAD_3 = "\xEE\x80\x9D"; // E01D
+ const NUMPAD_4 = "\xEE\x80\x9E"; // E01E
+ const NUMPAD_5 = "\xEE\x80\x9F"; // E01F
+ const NUMPAD_6 = "\xEE\x80\xA0"; // E020
+ const NUMPAD_7 = "\xEE\x80\xA1"; // E021
+ const NUMPAD_8 = "\xEE\x80\xA2"; // E022
+ const NUMPAD_9 = "\xEE\x80\xA3"; // E023
+ const MULTIPLY = "\xEE\x80\xA4"; // E024
+ const ADD = "\xEE\x80\xA5"; // E025
+ const SEPARATOR = "\xEE\x80\xA6"; // E026
+ const SUBTRACT = "\xEE\x80\xA7"; // E027
+ const DECIMAL = "\xEE\x80\xA8"; // E028
+ const DIVIDE = "\xEE\x80\xA9"; // E029
+ const F1 = "\xEE\x80\xB1"; // E031
+ const F2 = "\xEE\x80\xB2"; // E032
+ const F3 = "\xEE\x80\xB3"; // E033
+ const F4 = "\xEE\x80\xB4"; // E034
+ const F5 = "\xEE\x80\xB5"; // E035
+ const F6 = "\xEE\x80\xB6"; // E036
+ const F7 = "\xEE\x80\xB7"; // E037
+ const F8 = "\xEE\x80\xB8"; // E038
+ const F9 = "\xEE\x80\xB9"; // E039
+ const F10 = "\xEE\x80\xBA"; // E03A
+ const F11 = "\xEE\x80\xBB"; // E03B
+ const F12 = "\xEE\x80\xBC"; // E03C
+ const COMMAND = "\xEE\x80\xBD"; // E03D
+ const META = "\xEE\x80\xBD"; // E03D
+}