When using Chaco with the QT backend on OS X, the control key gets mapped to QT's meta key. Would it be possible to add meta to Enable's list of modifier keys?
Below are some patches to add the meta modifier. This seems to work for the Qt backend. Something similar to the diff for qt4_backend/window.py (final diff below) would need to be done for wx_backend/window.py.
P.S. Supposedly, the command key in OS X is mapped to QT's control keys. Unfortunately, this only seems to work immediately after switching windows in Spaces; i.e. it's really buggy. Has anyone else come across this problem?
P.P.S. To answer the question "# what is this??" (see first diff below) Event.event is the original event object from the GUI backend (e.g. it's a Qt event object when using Qt as the backend).
--- enthought/enable/events.py (revision 25642)
+++ enthought/enable/events.py (working copy)
@@ -146,6 +146,7 @@
# high-bit and control characters. (See subpackage wx.window.key_map)
character = ReadOnly
alt_down = ReadOnly
+ meta_down = ReadOnly
control_down = ReadOnly
shift_down = ReadOnly
event = ReadOnly # what is this??
--- enthought/enable/base_tool.py (revision 25642)
+++ enthought/enable/base_tool.py (working copy)
@@ -35,6 +35,7 @@
self.key = key
mods = [m.lower() for m in modifiers]
self.alt = "alt" in mods
+ self.meta = "meta" in mods
self.shift = "shift" in mods
self.control = "control" in mods
@@ -46,6 +47,7 @@
if (self.key == getattr(event, 'character',None)) and \
(self.alt == event.alt_down) and \
+ (self.meta == event.meta_down) and \
(self.control == event.control_down) and \
(self.shift == event.shift_down):