1

我正在尝试通过在 Mac OS X 10.10.3 上运行的 python curses 检索鼠标事件。我一直在关注另一个问题(Python curses.getmouse()),它有一个简单的例子,但它并没有为我产生预期的结果。我认为这与我的终端和/或操作系统有关,但我不确定。

这是我正在使用的代码:

import curses 

screen = curses.initscr() 
#curses.noecho() 
curses.curs_set(0) 
screen.keypad(1) 
curses.mousemask(1)

screen.addstr("This is a Sample Curses Script\n\n") 

while True:
    event = screen.getch() 
    if event == ord("q"):
        screen.addstr(20, 10, "Q") 
    if event == curses.KEY_MOUSE:
        a = curses.getmouse()
        screen.addstr(20, 10, a)
    screen.refresh()

curses.endwin()

有谁知道为什么 curses.KEY_MOUSE 事件似乎永远不会出现?

编辑:我已经检查了 mousemask 的返回值,当它最初运行时,它按预期返回元组 (1, 0)。

4

2 回答 2

1

Mac OS X 上的默认终端应用程序(“Terminal.app”)不支持鼠标事件。您需要使用另一个终端应用程序,例如iTerm来获取这些事件。

于 2015-06-25T03:19:39.820 回答
1

如前所述,Terminal.app 本身不支持鼠标事件。之前有人问过这个问题,建议使用另一个终端仿真器。或者,至少有一个附加程序可以提供帮助,如OS X 的终端应用程序支持鼠标吗?建议 iTerm 和iTerm2,但也提到MouseTerm(附加组件)。Mac OS X 终端中给出了相同的信息:鼠标支持?

最初的问题是在 2015 年 6 月提出并回答的。Apple 提供了更新版本Terminal.app,见于当年晚些时候的El Capitan OSX(后来重命名为 macOS)10.11,在 ncurses 中记录为nsterm-build361(参见10 月的注释2015 年)。

于 2015-06-25T08:36:43.857 回答