This will need a skate animation :D

string gAnimName = "skate012";
float gStopTimeout = 1.0;

integer gInTimeout;


default
{
    state_entry()
    {
        //llSay(0, "Hello, Avatar!");
        llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH );
        gInTimeout = FALSE;
    }

    //touch_start(integer total_number)
    //{
    //    llSay(0, "Touched.");
    //}

    run_time_permissions(integer perms) {
        llTakeControls(CONTROL_FWD | CONTROL_BACK, TRUE, TRUE);
    }

    on_rez(integer param) {
        llResetScript();
    }    
    control(key name, integer levels, integer edges) {
        //llSay(0, "control");
        if (edges & levels & (CONTROL_FWD | CONTROL_BACK)) {
            //llSay(0, "Debug: on");
            llStartAnimation(gAnimName);
            gInTimeout = FALSE;
            llSetTimerEvent(gStopTimeout/2);
        }
        
        if (edges & ~levels & (CONTROL_FWD | CONTROL_BACK)) {
            //llSay(0, "Debug: off");
            //llStopAnimation(gAnimName);
            gInTimeout = TRUE;
            llSetTimerEvent(gStopTimeout);
        }
    }

    timer() {
        //llSay(0,"Timer");
        if (gInTimeout) {
            //llSay(0,"intimeout");
            llStopAnimation(gAnimName);
            llSetTimerEvent(0.0);
        }        
        else {
            //llSay(0,"notintimeout");
            llStartAnimation(gAnimName);
        }            
    }            
                                    
    attach(key id) {
        //llSay(0, "ok...");
        integer perm = llGetPermissions();
        
        if (id != NULL_KEY) {
            //llSay(0, "yep...");
            if (! (perm & PERMISSION_TRIGGER_ANIMATION & PERMISSION_TAKE_CONTROLS)) {
                llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION | 
                                                   PERMISSION_TAKE_CONTROLS |
                                                   PERMISSION_ATTACH);
            }
        }
        else {
            //llSay(0, "nope...");
            if (perm & PERMISSION_TRIGGER_ANIMATION) {
                llStopAnimation(gAnimName);   
            }         
        }
    }

}