49 lines
1.0 KiB
PHP
49 lines
1.0 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace Aviat\Kilo\Enum;
|
|
|
|
use Aviat\Kilo\Traits;
|
|
use function Aviat\Kilo\ctrl_key;
|
|
|
|
/**
|
|
* Constants representing various control keys
|
|
*/
|
|
class KeyType {
|
|
use Traits\ConstList;
|
|
|
|
public const ARROW_DOWN = 'ARROW_DOWN';
|
|
public const ARROW_LEFT = 'ARROW_LEFT';
|
|
public const ARROW_RIGHT = 'ARROW_RIGHT';
|
|
public const ARROW_UP = 'ARROW_UP';
|
|
public const BACKSPACE = 'BACKSPACE';
|
|
public const DEL_KEY = 'DELETE';
|
|
public const END_KEY = 'END';
|
|
public const ENTER = 'ENTER';
|
|
public const ESCAPE = 'ESCAPE';
|
|
public const HOME_KEY = 'HOME';
|
|
public const PAGE_DOWN = 'PAGE_DOWN';
|
|
public const PAGE_UP = 'PAGE_UP';
|
|
|
|
/**
|
|
* Returns the ascii character for the specified
|
|
* ctrl + letter combo
|
|
*
|
|
* @param string $char
|
|
* @return string
|
|
*/
|
|
public static function CTRL(string $char): ?string
|
|
{
|
|
$char = strtolower($char);
|
|
$ord = ord($char);
|
|
|
|
// a = 0x61
|
|
// z = 0x7a
|
|
if ($ord >= 0x61 && $ord <= 0x7a)
|
|
{
|
|
return chr(ctrl_key($char));
|
|
}
|
|
|
|
// Invalid input, not an ascii letter
|
|
return NULL;
|
|
}
|
|
} |