0
  initscr();
  cbreak();
  noecho();
  assert(OK==keypad(stdscr,TRUE));   
  mousemask(BUTTON1_PRESSED|BUTTON1_RELEASED,NULL));
  assert(has_mouse());
  assert(166==mouseinterval(1));
  refresh();
  for(;;){
    int ch=wgetch(stdscr);
    // Detect mouse event and print coordinates
  }  
  endwin();

在终端仿真器(alacritty)中,鼠标坐标通常在单击左键后报告。但是,如果我systemctl start gpm然后在 tty(vt) 中运行它,则无论单击鼠标,都没有任何响应。

我怎样才能让它在 tty(vt) 中也能工作?

4

1 回答 1

2

ncurses必须配置(编译时)才能与gpm一起使用。如果你自己编译,那可能没有配置。如果您正在评论预构建的包,您的问题应该包括相关信息(系统和包版本)。

一条注释指向Arch Linux 的 package,它没有明确打开gpmgpm功能默认未启用(提示:INSTALL文件显示该功能为)--with-gpm,并且缺少其他线索,不太可能成为包的一部分,除非 gpm 的开发包恰好安装在构建服务器上。

进一步的评论提到了午夜指挥官。不管它是否真的使用 ncurses午夜指挥官已经有一段时间没有使用 ncurses 的鼠标支持了。其中一些在关于 ncurses 与俚语(S-Lang)的评论中进行了讨论

你可以通过自己编译包(使用--with-gpm,注意安装开发头文件和库)来完成这项工作(ncurses+gpm),或者向 Arch 的错误报告可能会改变这种情况。

于 2020-06-13T13:26:31.020 回答