鼠标向上滚动(Ncurses / C ++)

时间:2017-02-21 00:02:17

标签: c++ ncurses

我的问题是我无法想象如何使用ncurses5和鼠标事件向下和向上滚动。

我知道这是ncurses5.6 +的一个功能,但是我无法知道我是否可以从包装商处获得此版本。

即使我能得到它,zsh,bash,sh等也可以在每个终端上滚动得很好(怎么样?),这个硬件功能是什么?如果不添加比ncurses,c stantard和std更多的lib,我可以在我的c ++程序中获得自己的吗?

此代码适用于向下滚动,但在我尝试集成BUTTON5_PRESSED时(由于我的ncurses版本)无法编译。

所以,实际上我可以处理向下滚动而不是向上滚动。有没有办法处理这两个?

mysql> SELECT OWNER_THREAD_ID FROM performance_schema.metadata_locks
    -> WHERE OBJECT_TYPE='USER LEVEL LOCK'
    -> AND OBJECT_NAME='foobarbaz';
+-----------------+
| OWNER_THREAD_ID |
+-----------------+
|              35 |
+-----------------+
1 row in set (0.00 sec)

mysql> SELECT PROCESSLIST_ID FROM performance_schema.threads
    -> WHERE THREAD_ID=35;
+----------------+
| PROCESSLIST_ID |
+----------------+
|             10 |
+----------------+
1 row in set (0.00 sec)

mysql> KILL 10;
Query OK, 0 rows affected (0.00 sec)

我的实际代码托管在github https://github.com/Liroo/Nanotekspice/blob/master/lib/cli/mode/NcursesMode.cpp上,如果你有动力,请查看它! (顺便说一句,使用此命令获取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"); }

1 个答案:

答案 0 :(得分:1)

简短:不,没有解决方法

长 - 滚轮鼠标(按照惯例)发送按钮4和按钮5用于上/下事件。 ncurses 5 不为这两个按钮提供编码。这是一个扩展名(来自September 2005),标准是ncurses 6 August 2015):

  

这些笔记适用于2015年8月8日发布的ncurses 6.0。

     

此版本旨在与ncurses 5.0到5.9源代码兼容;提供新的应用程序二进制接口(ABI)。虽然源仍然可以配置为支持ncurses 5 ABI,但是发布的目的是提供通常有用的扩展,但二进制与ncurses 5不兼容:

     
      
  • 扩展cchar_t结构以允许编码超过16种颜色。

  •   
  • 修改鼠标状态的编码,为第5个鼠标按钮腾出空间。这允许人们使用带有xterm或类似X终端模拟器的滚轮鼠标的ncurses。

  •   

进一步阅读: