Changeset 131 in xpra
- Timestamp:
- 08/15/11 15:06:24 (22 months ago)
- File:
-
- 1 edited
-
trunk/src/xpra/server.py (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/xpra/server.py
r128 r131 272 272 if (is_override_redirect(window) and is_mapped(window)): 273 273 self._add_new_or_window(window) 274 275 ## These may get set by the client: 276 self.xkbmap_print = None 277 self.xkbmap_query = None 274 278 275 279 ### Set up keymap: … … 339 343 self.add_listen_socket(sock) 340 344 341 def set_keymap(self , xkbmap_print, xkbmap_query):345 def set_keymap(self): 342 346 """ xkbmap_print is the output of setxkbmap -print on the client 343 347 xkbmap_query is the output of setxkbmap -query on the client … … 352 356 log.info("error calling 'setxkbmap %s': %s" % (str(args), e)) 353 357 #First we try to use data from setxkbmap -query 354 if xkbmap_query:358 if self.xkbmap_query: 355 359 """ The xkbmap_query data will look something like this: 356 360 rules: evdev … … 366 370 settings = {} 367 371 opt_re = re.compile("(\w*):\s*(.*)") 368 for line in xkbmap_query.splitlines():372 for line in self.xkbmap_query.splitlines(): 369 373 m = opt_re.match(line) 370 374 if m: … … 380 384 if "options" in settings: 381 385 exec_setxkbmap(["-option", "", "-option", settings.get("options")]) 382 elif xkbmap_print:386 elif self.xkbmap_print: 383 387 #try to guess the layout by parsing "setxkbmap -print" 384 388 try: 385 389 sym_re = re.compile("\s*xkb_symbols\s*{\s*include\s*\"([\w\+]*)") 386 for line in xkbmap_print.splitlines():390 for line in self.xkbmap_print.splitlines(): 387 391 m = sym_re.match(line) 388 392 if m: … … 394 398 log.info("error setting keymap: %s" % e) 395 399 396 if xkbmap_print:400 if self.xkbmap_print: 397 401 try: 398 returncode = self.signal_safe_exec(["xkbcomp", "-", os.environ.get("DISPLAY")], xkbmap_print)402 returncode = self.signal_safe_exec(["xkbcomp", "-", os.environ.get("DISPLAY")], self.xkbmap_print) 399 403 if returncode==0: 400 404 log.info("xkbcomp successfully applied new keymap") … … 552 556 def _keycode(self, keycode, string, keyval, keyname, group=0, level=0): 553 557 log.debug("keycode(%s,%s,%s,%s,%s,%s)" % (keycode, string, keyval, keyname, group, level)) 554 if keycode: 555 """ versions 0.0.7.24 and above give us the raw keycode """ 558 if keycode and self.xkbmap_print is not None: 559 """ versions 0.0.7.24 and above give us the raw keycode, 560 we can only use this if we have applied the same keymap - if the client sent one 561 """ 556 562 return keycode 557 563 # fallback code for older versions: … … 783 789 self._protocol.jpegquality = capabilities["jpeg"] 784 790 if "keymap" in capabilities: 785 self.set_keymap(capabilities["keymap"], capabilities.get("xkbmap_query", None)) 791 self.xkbmap_print = capabilities["keymap"] 792 self.xkbmap_query = capabilities.get("xkbmap_query", None) 793 self.set_keymap() 786 794 # We send the new-window packets sorted by id because this sorts them 787 795 # from oldest to newest -- and preserving window creation order means … … 856 864 def _process_keymap(self, proto, packet): 857 865 (_, keymap, xkbmap_query) = packet 858 self.set_keymap(keymap, xkbmap_query) 866 self.xkbmap_print = keymap 867 self.xkbmap_query = xkbmap_query 868 self.set_keymap() 859 869 860 870 def _process_key_action(self, proto, packet):
Note: See TracChangeset
for help on using the changeset viewer.