2017-02-21 70 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 ... –