Have 2 different things happen for regular Touch and Long Touch, (hold for 2 seconds.) 

If avatar Touches like normal they get TOUCH 1

If avatar Touches and holds for 2+ seconds they get TOUCH 2

 

 

float mintime = 2.0; //how many seconds to get long touch option

float t;
integer donenow = FALSE;
 
default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }
    
    state_entry()
    {
        donenow = FALSE;
    }
    
    touch_start(integer num_detected)
    {
        t = llGetTime();
    }
    
    touch(integer num_detected)
    {
        float tempsecs = llGetTime() - t;
        if ((tempsecs >= mintime) && (donenow == FALSE))
        {
            donenow = TRUE;
            llSay(0, "Long Touch detected, you may release Touch now.");
        }
    }
    
    touch_end(integer num_detected)
    {
        float secs = llGetTime() - t;
        //llOwnerSay((string)secs + " seconds between touch_start and touch_end"); //debug
        if (secs >= mintime) //greater than or equal
        {
            llSay(0, "Touch 2"); //debug
        }
        else //regular touch
        {
            llSay(0, "Touch 1"); //debug
        }
        donenow = FALSE;
    }
}