2017-02-21 71 views
0

我的問題是我無法計算如何向下滾動使用ncurses5和鼠標事件。鼠標滾動向上(Ncurses/C++)

我知道這是ncurses5.6 +的一個特性,但在那裏我無法知道我是否可以從打包程序獲取此版本。

即使我可以得到它,zsh,bash,sh等都可以在每個終端上很好地滾動(如何?),這個硬件功能是什麼?我可以在我的C++程序中獲得我自己的版本,而不需要添加比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月8日公佈,2015年

此版本被設計成源 - 與ncurses 5.0到5.9兼容;提供新的應用程序二進制接口(ABI)。儘管源仍然可以被配置爲支持的ncurses 5 ABI,釋放的目的是提供附加信息,其通常是有用的,但與ncurses的5二進制不相容:

  • 擴展所述cchar_t結構以允許更多的比16種顏色要編碼。

  • 修改鼠標狀態的編碼,騰出空間給第5個鼠標按鈕。這使得人們可以使用帶有xterm或類似X終端仿真器的滾輪鼠標來使用ncurses。

延伸閱讀:

+0

感謝您的信息,並且您是否知道是否在支持此功能的apt-get/zypper上有ncurses包? –

+0

軟件包名稱中包含「ncurses6」或「ncurses-6.0」的任何內容。Debian一直在測試大約一年的時間,我不確定OpenSUSE ... –