Python 在 Mac OS X 上诅咒鼠标事件

Python curses mouse event on Mac OS X

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

这是我正在使用的代码:

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 的 return 值,当它最初是 运行 时,它 return 是元组 (1, 0),正如预期的那样。

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

如前所述,Terminal.app 本身不支持鼠标事件。之前有人问过这个问题,建议使用另一个终端仿真器。或者,至少有一个附加程序可以提供帮助,如 Does OS X's terminal app support mouse? suggests iTerm and iTerm2, but also mentions MouseTerm (an add-on). The same information is given in Mac OS X Terminal: mouse support?

中所述

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