Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 11c5630b2c8f00f64861e0dac51a202a > files > 74

php-gtk2-2.0.1-12mdv2010.0.i586.rpm

<?php
/**
*   Event generation class for php-gtk2 regression tests
*   This one uses the xautomation tools, you can find them at
*    http://hoopajoo.net/projects/xautomation.html
*
*   @author Christian Weiske <cweiske@php.net>
*/

//required for System::which() functionality
require_once('System.php');


class EventGenerator_xte
{
    var $xte = null;



    function EventGenerator_xte()
    {
        $xte = System::which('xte');
        if ($xte !== false) {
            $this->xte = $xte;
        } else {
            echo "Couldn't find xte program!\r\nTests won't run!\r\n";
        }
    }//function EventGenerator_xte()



    /**
    *   Sends a key press (key down)
    *
    *   @param string   $key    Spoken keyname which shall be pressed
    */
    function sendKeyPress($key)
    {
        $key = $this->translateKey($key);
        exec($this->xte . ' \'keydown ' . $key . '\'');
    }//function sendKeyPress($key)



    /**
    *   Sends a key release (key up)
    *
    *   @param string   $key    Spoken keyname which shall be pressed
    */
    function sendKeyRelease($key)
    {
        $key = $this->translateKey($key);
        exec($this->xte . ' \'keyup ' . $key . '\'');
    }//function sendKeyRelease($key)



    /**
    *   Sends a key press+release
    *
    *   @param string   $key    Spoken keyname which shall be pressed
    */
    function sendKey($key)
    {
        $key = $this->translateKey($key);
        exec($this->xte . ' \'key ' . $key . '\'');
    }//function sendKey($key)



    /**
    *   Translates a given spoken key name in a
    *   key name which xte understands
    *
    *   @param string   $key Spoken keyname
    *   @return string  Key name for xte
    */
    function translateKey($key)
    {
        switch ($key) {
            case ' '        : return 'space';
            case 'space'    : return 'space';
            case 'home'     : return 'Home';
            case 'left'     : return 'Left';
            case 'up'       : return 'Up';
            case 'right'    : return 'Right';
            case 'down'     : return 'Down';
            case 'pgup'     : return 'Page_Up';
            case 'pgdown'   : return 'Page_Down';
            case 'end'      : return 'End';
            case 'enter'    : return 'Return';
            case 'return'   : return 'Return';
            case 'bksp'     : return 'Backspace';
            case 'backspace': return 'Backspace';
            case 'tab'      : return 'Tab';
            case 'esc'      : return 'Escape';
            case 'escape'   : return 'Escape';
            case 'del'      : return 'Delete';
            case 'delete'   : return 'Delete';
            case 'shift'    : return 'Shift_L';
            case 'shiftl'   : return 'Shift_L';
            case 'shiftr'   : return 'Shift_R';
            case 'ctrl'     : return 'Control_L';
            case 'ctrll'    : return 'Control_L';
            case 'ctrlr'    : return 'Control_R';
            case 'meta'     : return 'Meta_L';
            case 'metal'    : return 'Meta_L';
            case 'metar'    : return 'Meta_R';
            case 'alt'      : return 'Alt_L';
            case 'altl'     : return 'Alt_L';
            case 'altr'     : return 'Alt_R';
        }
        return $key;
    }//function translateKey($key)

}//class EventGenerator_xte
?>