ncurses检测鼠标何时离开窗口
ncurses detect when mouse leaves window
当我研究鼠标与ncurses的接口时,我看到了很多选项,但我看不到任何方法可以检测鼠标何时离开程序窗口。该窗口是终端模拟器的窗口,而不是ncurses窗口。
这不在ncurses的鼠标界面的曲目中,但对于某些终端,您可以设置它们发送xterm的离开并输入窗口控制序列,您的程序可以使用getch
逐字节读取这些序列,或者使用define_key
将响应关联为"函数键"。
XTerm控制序列在FocusIn/FocusOut:部分列出
FocusIn/FocusOut可以与任何鼠标事件组合,因为它使用不同的协议。设置后,当终端获得焦点时,它会导致xterm发送
CSI
I
,当终端失去焦点时,发送CSI
O
。
使用启用
CSI ? Pm h
DEC Private Mode Set (DECSET).
...
Ps = 1 0 0 4 -> Send FocusIn/FocusOut events, xterm.
例如
printf(" 33[?1004h");
fflush(stdout);
(其他一些终端实现了这一点,但由于它们没有记录自己的行为,您必须进行实验,以确定这是否适用于您碰巧使用的终端)。
在ncurses中,您可以将响应与define_key
相关联,例如
#define KEY_FOCUS_IN 1001
#define KEY_FOCUS_OUT 1002
define_key(" 33[I", KEY_FOCUS_IN);
define_key(" 33[O", KEY_FOCUS_OUT);
和(如果启用了keypad
),则在程序中检测这些值作为getch
的返回值。
相关文章:
- 何时在引用或唯一指针上使用移动语义
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- 何时提供默认参数作为模板参数
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- C++-明确何时以及如何调用析构函数
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- ncurses检测鼠标何时离开窗口
- 如何检测鼠标何时在窗口外移动
- 检测窗口何时停止移动
- 有什么方法可以判断分叉/执行Qt应用程序的主窗口何时显示?
- 检测窗口何时被来自相同或不同进程的另一个窗口重叠
- 如何知道EnumWindows何时完成其窗口列表