Ejemplo n.º 1
0
static int tm_init( int install )
/*******************************/
{
    bool        kmous;                          // Does key_mouse exist?

    MouseInstalled  = false;
    MouseType       = M_NONE;
    kmous           = ( key_mouse != NULL );

    if( install == 0 )
        return( false );

    if( strstr( GetTermType(), "xterm" ) != NULL ) {
        if( kmous ) {
            TryOne( M_XT, NULL, XT_INIT, key_mouse );
        } else {
            TryOne( M_XT, NULL, XT_INIT, ANSI_HDR "M" );
        }
        return( true );
    }

#ifdef __LINUX__
    return( gpm_tm_init() );
#else
    return( false );
#endif
}
Ejemplo n.º 2
0
static int tm_init( int install )
/*******************************/
{
    char        *term;
    bool        kmous;                          // Does key_mouse exist?

    MouseInstalled      = FALSE;
    MouseType           = M_NONE;
    kmous               = ( key_mouse != NULL );

    if( install == 0 )
        return( FALSE );

    term = GetTermType();
    if( term != NULL && strstr( term, "xterm" ) != NULL ) {
        if( kmous ) {
            TryOne( M_XT, NULL, XT_INIT, key_mouse );
        } else {
            TryOne( M_XT, NULL, XT_INIT, ANSI_HDR "M" );
        }
        return( TRUE );
    }

#ifdef __LINUX__
    return( gpm_tm_init() );
#else
    return( FALSE );
#endif
}
Ejemplo n.º 3
0
static int gpm_tm_init( void )
/****************************/
{
    struct {
        unsigned short  eventMask;
        unsigned short  defaultMask;
        unsigned short  minMod;
        unsigned short  maxMod;
        int             pid;
        int             vc;
    } gpm_conn;
    struct sockaddr_un  sau;
    char                tty_name[20];
    char                procname[30];
    int                 len, mult;

    UIMouseHandle = socket( PF_UNIX, SOCK_STREAM, 0 );
    if( UIMouseHandle < 0 )
        return( false );
    sau.sun_family = AF_UNIX;
    strcpy( sau.sun_path, "/dev/gpmctl" );
    if( connect( UIMouseHandle, (struct sockaddr *)&sau, sizeof sau ) < 0 )
        goto out;
    gpm_conn.eventMask = GPM_DRAG | GPM_UP | GPM_DOWN;
    gpm_conn.defaultMask = ~GPM_HARD;
    gpm_conn.pid = getpid();
    gpm_conn.vc = gpm_conn.minMod = gpm_conn.maxMod = 0;
    sprintf( procname, "/proc/self/fd/%d", UIConHandle );
    len = readlink( procname, tty_name, sizeof( tty_name ) - 1 );
    if( len < 0 )
        goto out;
    if( memcmp( tty_name, "/dev/tty", len ) == 0 ) {
        len = readlink( "/proc/self/fd/0", tty_name, sizeof( tty_name ) - 1 );
        if( len < 0 ) {
            goto out;
        }
    }
    len--;
    mult = 1;
    while( len && tty_name[len] >= '0' && tty_name[len] <= '9' ) {
        gpm_conn.vc += ( tty_name[len] - '0' ) * mult;
        len--;
        mult *= 10;
    }
    write( UIMouseHandle, &gpm_conn, sizeof gpm_conn );
    TryOne( M_GPM, NULL, "", ANSI_HDR "M" );
    MouseType = M_GPM;
    return( true );
 out:
    close( UIMouseHandle );
    UIMouseHandle = -1;
    return( false );
}