小编tes*_*che的帖子

如何在终端/ terminfo条目中实现适当的鼠标支持?

我已经实现了一个终端模拟器和一个相应的terminfo条目,允许我运行像emacs,mc(午夜指挥官)或tig(git浏览器)这样的ncurses程序.我想为终端添加鼠标支持,最值得注意的是通过点击窗口将光标定位在emacs中.经过大量的谷歌搜索和一些关于stackoverflow的帮助后,我了解了所需的terminfo字段(最值得注意的是)和控制(例如)和"key"()序列,并在终端中实现了鼠标按钮事件.我写了一个小的ncurses程序,它是这样的:kmous\E[?1000h\E[M...

initscr ();
clear ();
noecho ();
cbreak ();

keypad (stdscr, TRUE);

mousemask (ALL_MOUSE_EVENT, NULL);

if (has_mouse ())
{
  while (1)
  {
    switch (getch ())
    {
    case KEY_MOUSE:
      if (getmouse (&event) == OK)
      {
        printf ("mouse event 0x%x at %i,%i\n", event.bstate, event.x, event.y);
Run Code Online (Sandbox Code Playgroud)

这个程序在xterm和我的终端上运行正常,所以我的终端和它的terminfo条目都不能完全错误.

但是,mc似乎无法识别终端中的鼠标支持,甚至没有发出任何\E[?1000h序列来激活它,因此我的终端发送的鼠标按钮事件(即使没有\E[?1000h激活)也完全混淆了.

我错过了什么?

ncurses xterm terminfo

5
推荐指数
1
解决办法
988
查看次数

标签 统计

ncurses ×1

terminfo ×1

xterm ×1