185 return res |
186 return res |
186 elif c == curses.KEY_MOUSE: |
187 elif c == curses.KEY_MOUSE: |
187 res += self._process_mouse() |
188 res += self._process_mouse() |
188 elif c == curses.KEY_RESIZE: |
189 elif c == curses.KEY_RESIZE: |
189 self.size.h, self.size.w = self.stdscr.getmaxyx() |
190 self.size.h, self.size.w = self.stdscr.getmaxyx() |
190 res += [('resize', self.size.w, self.size.h)] |
191 res.append(ResizeEvent(self.size.w, self.size.h)) |
191 elif isinstance(c, int): |
192 elif isinstance(c, int): |
192 keyname, mod = self._split_keyname_mod(self.key_map[c]) |
193 keyname, mods = self._split_keyname_mods(self.key_map[c]) |
193 res += [('keypress', keyname, None, mod)] |
194 res.append(KeypressEvent(keyname, None, mods)) |
194 else: |
195 else: |
195 keyname = self.key_names.get(c) |
196 keyname = self.key_names.get(c) |
196 res += [('keypress', keyname, c, set())] |
197 res.append(KeypressEvent(keyname, c, set())) |
197 |
198 |
198 return res |
199 return res |
199 |
200 |
200 def _process_mouse(self): |
201 def _process_mouse(self): |
201 out = [] |
202 out = [] |
238 if len(out) > 0 and out[-1][0] in ('mousedown', 'mouseup'): |
239 if len(out) > 0 and out[-1][0] in ('mousedown', 'mouseup'): |
239 self._mouse_last_pos = (None, None) |
240 self._mouse_last_pos = (None, None) |
240 |
241 |
241 return out |
242 return out |
242 |
243 |
243 def _split_keyname_mod(self, keyname): |
244 def _split_keyname_mods(self, keyname): |
244 """Parse keynames in form "shift+tab", return (keyname, mod).""" |
245 """Parse keynames in form "shift+tab", return (keyname, mod).""" |
245 mod_set = set() |
246 mod_set = set() |
246 if '+' in keyname: |
247 if '+' in keyname: |
247 parts = keyname.split('+') |
248 parts = keyname.split('+') |
248 for mod in parts[:-1]: |
249 for mod in parts[:-1]: |