Changeset 139 in xpra
- Timestamp:
- 08/25/11 16:09:44 (21 months ago)
- Location:
- trunk/src/xpra
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/xpra/client.py
r136 r139 354 354 self._protocol = Protocol(conn, self.process_packet) 355 355 ClientSource(self._protocol) 356 357 self._remote_version = None 358 self._keymap_changing = False 359 self._keymap = gtk.gdk.keymap_get_default() 360 self._do_keys_changed() 356 361 self.send_hello() 357 362 358 self._remote_version = None359 self._keymap = gtk.gdk.keymap_get_default()360 363 self._keymap.connect("keys-changed", self._keys_changed) 361 self._do_keys_changed()362 363 364 self._xsettings_watcher = None 364 365 self._root_props_watcher = None … … 423 424 def _keys_changed(self, *args): 424 425 self._keymap = gtk.gdk.keymap_get_default() 425 self._do_keys_changed(True) 426 if not self._keymap_changing: 427 self._keymap_changing = True 428 gobject.timeout_add(500, self._do_keys_changed, True) 426 429 427 430 def _do_keys_changed(self, sendkeymap=False): 431 self._keymap_changing = False 428 432 self._modifier_map = grok_modifier_map(gtk.gdk.display_get_default()) 429 433 if sendkeymap: … … 431 435 self.query_xkbmap() 432 436 log.info("keys_changed") 433 self.send(["keymap-changed", self.xkbmap_print, self.xkbmap_query, self.xmodmap_data]) 437 (_, _, current_mask) = gtk.gdk.get_default_root_window().get_pointer() 438 self.send(["keymap-changed", self.xkbmap_print, self.xkbmap_query, self.xmodmap_data, self.mask_to_names(current_mask)]) 434 439 435 440 def update_focus(self, id, gotit): … … 468 473 if self.xmodmap_data: 469 474 capabilities_request["xmodmap_data"] = self.xmodmap_data 475 (_, _, current_mask) = gtk.gdk.get_default_root_window().get_pointer() 476 modifiers = self.mask_to_names(current_mask) 477 log.debug("sending modifiers=%s" % str(modifiers)) 478 capabilities_request["modifiers"] = modifiers 470 479 root_w, root_h = gtk.gdk.get_default_root_window().get_size() 471 480 capabilities_request["desktop_size"] = [root_w, root_h] -
trunk/src/xpra/server.py
r138 r139 677 677 def _calculate_capabilities(self, client_capabilities): 678 678 capabilities = {} 679 for cap in ("deflate", "__prerelease_version", "challenge_response", "jpeg", "keymap", "xkbmap_query", "xmodmap_data" ):679 for cap in ("deflate", "__prerelease_version", "challenge_response", "jpeg", "keymap", "xkbmap_query", "xmodmap_data", "modifiers"): 680 680 if cap in client_capabilities: 681 681 capabilities[cap] = client_capabilities[cap] … … 793 793 if "jpeg" in capabilities: 794 794 self._protocol.jpegquality = capabilities["jpeg"] 795 # clear the modifiers since this is a new client, if any are set they will be set on the next keypress796 self._make_keymask_match([])797 795 if "keymap" in capabilities: 798 796 self.xkbmap_print = capabilities["keymap"] 799 797 self.xkbmap_query = capabilities.get("xkbmap_query", None) 800 798 self.xmodmap_data = capabilities.get("xmodmap_data", None) 799 #always clear modifiers before setting a new keymap 800 self._make_keymask_match([]) 801 801 self.set_keymap() 802 # now we can set the modifiers to match the client 803 modifiers = capabilities.get("modifiers", []) 804 log.debug("setting modifiers to %s" % str(modifiers)) 805 self._make_keymask_match(modifiers) 802 806 # We send the new-window packets sorted by id because this sorts them 803 807 # from oldest to newest -- and preserving window creation order means … … 873 877 if len(packet)==3: 874 878 (_, self.xkbmap_print, self.xkbmap_query) = packet 875 elif len(packet)==4: 876 (_, self.xkbmap_print, self.xkbmap_query, self.xmodmap_data) = packet 879 elif len(packet)==5: 880 (_, self.xkbmap_print, self.xkbmap_query, self.xmodmap_data, modifiers) = packet 881 self._make_keymask_match([]) 877 882 self.set_keymap() 883 self._make_keymask_match(modifiers) 878 884 879 885 def _process_key_action(self, proto, packet):
Note: See TracChangeset
for help on using the changeset viewer.