我的问题是我无法想象如何使用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");
}
)
答案 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。
进一步阅读: