2017-02-21 6 views
0

내 문제는 ncurses5 및 마우스 이벤트를 사용하여 아래로 스크롤하는 방법을 이해할 수 없다는 것입니다.마우스 스크롤 위로 (Ncurses/C++)

나는 이것이 ncurses5.6 +의 기능이라고 알고 있지만 거기에서이 버전을 packagers에서 얻을 수 있는지 없는지 알 수 없습니다.

zsh, bash, sh 등을 얻을 수 있다고하더라도 각 터미널에서 스크롤 할 수 있습니다 (어떻게?),이 하드웨어 기능입니까? ncurses, c stantard 및 std보다 lib를 추가하지 않고도 내 C++ 프로그램에서 내 자신을 얻을 수 있습니까?

이 코드는 아래로 스크롤하는 데는 효과적이지만 내 ncurses 버전으로 인해 BUTTON5_PRESSED를 통합하려고하면 컴파일되지 않습니다.

그래서 실제로는 스크롤을 처리 할 수 ​​있지만 위쪽 스크롤은 처리 할 수 ​​없습니다. 둘 다 처리 할 수있는 방법이 있습니까?

// 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에서 호스팅! (BTW, ncurses의 형식을 얻기 위해이 명령을 사용 ./nanotekspice resources/basics/test.nts c=1 --mode=ncurses)

+0

이 스팸 태그를 수행합니다. C는 C++이 아닙니다! – Olaf

+1

이 동작은 C 및 C++로 코딩 할 수 있습니다 ... 두 태그를 모두 사용할 수 있다고 생각했습니다. –

+0

예, Python, Ruby 및 Brainfuck에서도 마찬가지입니다. 점은 무엇인가? 다른 언어가 아니라 사용하는 언어에 태그를 지정하십시오. 그리고 두 번째 광경에서 쉘 태그를 추가 한 이유는 무엇입니까? 당신은 여기서 새롭지 않습니다. 당신은 질문하고 그 질문 자체에 [mcve] **를 텍스트로 제공해야합니다 **. – Olaf

답변

0

짧은 : 아니,

오랫동안 해결 방법을 없다 — (관례) 휠 마우스를 전송 업을위한 버튼 4 버튼 5/down 이벤트. 은이 두 단추에 대한 인코딩을 제공하지 않습니다. 이 릴리스 될 수 있도록 설계되어 2015 년

이 노트 8 월 (8) 발표 ncurses를 6.0위한 소스 : 즉 ncurses를 6 (August 2015)과 표준 (September 2005에서) 확장입니다 ncurses 5.0 ~ 5.9와 호환 가능; 새로운 애플리케이션 바이너리 인터페이스 (ABI)를 제공합니다. 소스가 여전히 ncurses를 5 ABI를 지원하도록 구성 할 수 있지만, 릴리스의 의도는 일반적으로 유용한 확장 기능을 제공하는 것입니다,하지만 ncurses를 5 이진 호환되지 않는 :

  • 더 허용하도록 cchar_t 구조를 확장 인코딩 할 16 색보다

  • 다섯 번째 마우스 버튼에 대한 공간을 만들기 위해 마우스 상태의 인코딩을 수정하십시오. 이를 통해 xterm이나 유사한 X 터미널 에뮬레이터가있는 휠 마우스에서 ncurses를 사용할 수 있습니다.

추가 읽기 :

+0

정보를 주셔서 감사 드리며이 기능을 지원하는 apt-get/zypper에 ncurses 패키지가 있는지 알고 계십니까? –

+0

패키지 이름에 "ncurses6"또는 "ncurses-6.0"이라고 쓰여있는 것은 무엇이든 데비안은 약 1 년 동안이 테스트를 해왔습니다. OpenSUSE에 대한 확신이 없습니다 ... –