2017-02-21 12 views
0

Моя проблема: я не могу понять, как прокручивать вниз и вверх, используя ncurses5 и событие мыши.Мышь прокрутки вверх (Ncurses/C++)

Я знаю, что это функция ncurses5.6 +, но я не могу знать, могу ли я получить эту версию из пакетов или нет.

Даже если я могу его получить, zsh, bash, sh и т. Д. Могут хорошо прокручиваться на каждом терминале (как?), Это аппаратная функция? Могу ли я получить свою собственную программу на C++, не добавляя больше lib, чем ncurses, c stantard и std?

Этот код хорошо подходит для прокрутки вниз, но не компилируется, когда я пытаюсь интегрировать BUTTON5_PRESSED (из-за моей версии ncurses).

Итак, на самом деле я мог справиться с прокруткой, но не с прокруткой. Есть ли способ справиться с обоими?

// mouse event structure 
    MEVENT event; 

    if (getmouse(&event) == OK) { 
    printw("mouse Event OK"); 
    if (event.bstate & BUTTON4_PRESSED) 
     wprintw(_win, "Button4\n"); 
    else if (event.bstate & BUTTON5_PRESSED) // does not compile 
     wprintw(_win, "Button5\n"); 
    } 

мой фактический код размещен на GitHub https://github.com/Liroo/Nanotekspice/blob/master/lib/cli/mode/NcursesMode.cpp, проверить это, если вы получить мотивированный! (Кстати, использовать его с помощью этой команды, чтобы получить формат Ncurses: ./nanotekspice resources/basics/test.nts c=1 --mode=ncurses)

+0

не спам-теги. C не C++ не C! – Olaf

+1

Это поведение может быть закодировано в c, а также C++ ... Я думал, что могу использовать оба тега –

+0

Да, и в Python, Ruby и Brainfuck тоже. В чем смысл? Пометьте язык, который вы используете, а не другой. И на второй взгляд: почему вы также добавили теги оболочки? Вы здесь не новы, вы должны знать [спросить] и предоставить [mcve] ** как текст в самом вопросе **. – Olaf

ответ

0

коротко: нет, нет временного решения проблемы

длинных — Колесо мыши (по соглашению) посылает кнопку-4 и кнопка-5 до/вниз. ncurses не обеспечивает кодирование для обеих этих кнопок. Это расширение (от September 2005), который является стандартным Ncurses (August 2015):

Эти ноты для Ncurses 6.0, выпущенный 8 августа, 2015.

Этот релиз предназначен для источника - совместим с ncurses 5.0 до 5.9; обеспечивая новый двоичный интерфейс приложения (ABI). Хотя источник по-прежнему может быть сконфигурирован для поддержки Ncurses 5 ABI, намерение выпуска является обеспечение расширения, которые обычно являются полезными, но двоично-несовместима с Ncurses 5:

  • расширить структуру cchar_t, чтобы больше чем 16 цветов для кодирования.

  • Изменить кодировку состояния мыши, чтобы освободить место для 5-я кнопка мыши. Это позволяет использовать ncurses с колесной мышью с xterm или аналогичными эмуляторами X-терминалов.

Дальнейшее чтение:

+0

Спасибо за информацию, и вы знаете, есть ли пакет ncurses на apt-get/zypper, который поддерживает эту функцию? –

+0

Все, что говорит «ncurses6» или «ncurses-6.0» в названии пакета. Debian делает это при тестировании около года. Я не уверен в OpenSUSE ... –