Gpm_Open () подключается, но печатает на консоль по щелчку мыши - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь использовать libgpm, похоже, что программа обнаруживает щелчки мыши, но в качестве побочного эффекта она печатает что-то вроде этого на терминале:

^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M Y=^[[M#M<^[[M !=^[[M#)=

Даже если я удаляю любые вызовы на Gpm_Getc() оставив код так просто:

#include <gpm.h>

int main(int argc, char *argv[])
{
    Gpm_Connect conn;
    int c;

    conn.eventMask = 0;
    conn.defaultMask = ~0;
    conn.minMod = 0;
    conn.maxMod = ~0;

    if (Gpm_Open(&conn, 0) == -1)
        printf("Cannot connect to mouse server\n");

    while (1);

    Gpm_Close();
    return 0;
}

Я все еще вижу эти бессмысленные коды.Я считаю, они представляют события мыши.Но в моем коде нет прямой инструкции их печатать.Почему они распечатаны на моем терминале?Как этого можно избежать?

Я использую gnome-терминал в Linux, а не настоящую консоль, если это имеет значение.

1 Ответ

0 голосов
/ 23 мая 2018

Если переменная окружения TERM равна xterm, GPM не будет пытаться открыть консоль Linux.

Вместо этого он просто включает xterm режим мыши (которыйзаставляет терминал отправлять escape-последовательности) и оказывается, что приложение будет обрабатывать это, а не преобразовывать escape-последовательности в свой протокол.

From ncurses 'например, точка зрения, которая делает его поведение в эмуляторе терминала менее чем полезным, и библиотека проверяет этот случай и игнорирует GPM (начиная с 2010 ).

...