<?php

/**
 * @copyright 2011 Anthon Pang
 * @license Apache-2.0
 *
 * @package WebDriver
 *
 * @author Anthon Pang <apang@softwaredevelopment.ca>
 */

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.
     *
     * @see https://github.com/SeleniumHQ/selenium/blob/trunk/java/src/org/openqa/selenium/Keys.java
     *
     *    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
    const ZENKAKU_HANKAKU = "\xEE\x81\x80"; // E040
}
