forked from extern/egroupware
164 lines
3.0 KiB
PHP
164 lines
3.0 KiB
PHP
<?php
|
|
/**
|
|
* eGroupWare API: contains classes and key constants for generating shortcuts
|
|
*
|
|
* @link http://www.egroupware.org
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package api
|
|
* @subpackage egw action grid
|
|
* @author Andreas Stöckel
|
|
* @copyright (c) 2011 Stylite
|
|
* @version $Id$
|
|
*/
|
|
|
|
class egw_keymanager
|
|
{
|
|
const BACKSPACE = 8;
|
|
const TAB = 9;
|
|
const ENTER = 13;
|
|
const ESCAPE = 27;
|
|
const DELETE = 46;
|
|
|
|
const SPACE = 32;
|
|
|
|
const PAGE_UP = 33;
|
|
const PAGE_DOWN = 34;
|
|
|
|
const ARROW_LEFT = 37;
|
|
const ARROW_UP = 38;
|
|
const ARROW_RIGHT = 39;
|
|
const ARROW_DOWN = 40;
|
|
|
|
const _0 = 48;
|
|
const _1 = 49;
|
|
const _2 = 50;
|
|
const _3 = 51;
|
|
const _4 = 52;
|
|
const _5 = 53;
|
|
const _6 = 54;
|
|
const _7 = 55;
|
|
const _8 = 56;
|
|
const _9 = 57;
|
|
|
|
const A = 65;
|
|
const B = 66;
|
|
const C = 67;
|
|
const D = 68;
|
|
const E = 69;
|
|
const F = 70;
|
|
const G = 71;
|
|
const H = 72;
|
|
const I = 73;
|
|
const J = 74;
|
|
const K = 75;
|
|
const L = 76;
|
|
const M = 77;
|
|
const N = 78;
|
|
const O = 79;
|
|
const P = 80;
|
|
const Q = 81;
|
|
const R = 82;
|
|
const S = 83;
|
|
const T = 84;
|
|
const U = 85;
|
|
const V = 86;
|
|
const W = 87;
|
|
const X = 88;
|
|
const Y = 89;
|
|
const Z = 90;
|
|
|
|
const F1 = 112;
|
|
const F2 = 113;
|
|
const F3 = 114;
|
|
const F4 = 115;
|
|
const F5 = 116;
|
|
const F6 = 117;
|
|
const F7 = 118;
|
|
const F8 = 119;
|
|
const F9 = 120;
|
|
const F10 = 121;
|
|
const F11 = 122;
|
|
const F12 = 123;
|
|
|
|
/**
|
|
* Converts the given key codes into translated key names.
|
|
*/
|
|
public static function key_name($keyCode)
|
|
{
|
|
// Keys which can be directly translated into ASCII chars
|
|
if (($keyCode >= self::_0 && $keyCode <= self::_9) ||
|
|
($keyCode >= self::A && $keyCode <= self::Z))
|
|
{
|
|
return chr($keyCode);
|
|
}
|
|
|
|
// Function keys
|
|
if ($keyCode >= self::F1 && $keyCode <= self::F12)
|
|
{
|
|
return "F".($keyCode - EGW_KEY_F1 + 1);
|
|
}
|
|
|
|
// Special keys
|
|
switch ($keyCode) {
|
|
case self::BACKSPACE:
|
|
return lang("Back");
|
|
case self::TAB:
|
|
return lang("Tab");
|
|
case self::DELETE:
|
|
return lang("Del");
|
|
case self::SPACE:
|
|
return lang("Space");
|
|
case self::PAGE_UP:
|
|
return lang("Pg up");
|
|
case self::PAGE_DOWN:
|
|
return lang("Pg down");
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
/**
|
|
* Generates the caption of the given shortcut and returns it
|
|
*/
|
|
public static function shortcut_caption($keyCode, $shift = false, $ctrl = false, $alt = false)
|
|
{
|
|
$elems = array();
|
|
|
|
if ($shift)
|
|
{
|
|
$elems[] = lang("Shift");
|
|
}
|
|
|
|
if ($ctrl)
|
|
{
|
|
$elems[] = lang("Ctrl");
|
|
}
|
|
|
|
if ($alt)
|
|
{
|
|
$elems[] = lang("Alt");
|
|
}
|
|
|
|
$elems[] = self::key_name($keyCode);
|
|
|
|
return implode(" + ", $elems);
|
|
}
|
|
|
|
/**
|
|
* Generates a shortcut structure which can be JSON encoded and send to the
|
|
* egw action system. This function and class could later be used to provide
|
|
* user defined shortcuts.
|
|
*/
|
|
public static function shortcut($keyCode, $shift = false, $ctrl = false, $alt = false)
|
|
{
|
|
return array(
|
|
"keyCode" => $keyCode,
|
|
"shift" => (boolean)$shift,
|
|
"ctrl" => (boolean)$ctrl,
|
|
"alt" => (boolean)$alt,
|
|
"caption" => self::shortcut_caption($keyCode, $shift, $ctrl, $alt)
|
|
);
|
|
}
|
|
}
|
|
|