/[rdesktop]/sourceforge.net/trunk/rdesktop/xwin.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/xwin.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 867 by stargo, Wed Mar 23 12:25:54 2005 UTC revision 949 by astrand, Tue Aug 2 15:07:35 2005 UTC
# Line 1227  ui_create_window(void) Line 1227  ui_create_window(void)
1227          }          }
1228    
1229          input_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |          input_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
1230                  VisibilityChangeMask | FocusChangeMask;                  VisibilityChangeMask | FocusChangeMask | StructureNotifyMask;
1231    
1232          if (g_sendmotion)          if (g_sendmotion)
1233                  input_mask |= PointerMotionMask;                  input_mask |= PointerMotionMask;
# Line 1341  xwin_toggle_fullscreen(void) Line 1341  xwin_toggle_fullscreen(void)
1341          }          }
1342  }  }
1343    
1344  /* Process all events in Xlib queue  /* Process events in Xlib queue
1345     Returns 0 after user quit, 1 otherwise */     Returns 0 after user quit, 1 otherwise */
1346  static int  static int
1347  xwin_process_events(void)  xwin_process_events(void)
# Line 1350  xwin_process_events(void) Line 1350  xwin_process_events(void)
1350          KeySym keysym;          KeySym keysym;
1351          uint16 button, flags;          uint16 button, flags;
1352          uint32 ev_time;          uint32 ev_time;
         key_translation tr;  
1353          char str[256];          char str[256];
1354          Status status;          Status status;
1355            int events = 0;
1356    
1357          while (XPending(g_display) > 0)          while ((XPending(g_display) > 0) && events++ < 20)
1358          {          {
1359                  XNextEvent(g_display, &xevent);                  XNextEvent(g_display, &xevent);
1360    
# Line 1402  xwin_process_events(void) Line 1402  xwin_process_events(void)
1402                                                        str, sizeof(str), &keysym, NULL);                                                        str, sizeof(str), &keysym, NULL);
1403                                  }                                  }
1404    
1405                                  DEBUG_KBD(("KeyPress for (keysym 0x%lx, %s)\n", keysym,                                  DEBUG_KBD(("KeyPress for keysym (0x%lx, %s)\n", keysym,
1406                                             get_ksname(keysym)));                                             get_ksname(keysym)));
1407    
1408                                  ev_time = time(NULL);                                  ev_time = time(NULL);
1409                                  if (handle_special_keys(keysym, xevent.xkey.state, ev_time, True))                                  if (handle_special_keys(keysym, xevent.xkey.state, ev_time, True))
1410                                          break;                                          break;
1411    
1412                                  tr = xkeymap_translate_key(keysym,                                  xkeymap_send_keys(keysym, xevent.xkey.keycode, xevent.xkey.state,
1413                                                             xevent.xkey.keycode, xevent.xkey.state);                                                    ev_time, True);
   
                                 if (tr.scancode == 0)  
                                         break;  
   
                                 save_remote_modifiers(tr.scancode);  
                                 ensure_remote_modifiers(ev_time, tr);  
                                 rdp_send_scancode(ev_time, RDP_KEYPRESS, tr.scancode);  
                                 restore_remote_modifiers(ev_time, tr.scancode);  
   
1414                                  break;                                  break;
1415    
1416                          case KeyRelease:                          case KeyRelease:
# Line 1427  xwin_process_events(void) Line 1418  xwin_process_events(void)
1418                                  XLookupString((XKeyEvent *) & xevent, str,                                  XLookupString((XKeyEvent *) & xevent, str,
1419                                                sizeof(str), &keysym, NULL);                                                sizeof(str), &keysym, NULL);
1420    
1421                                  DEBUG_KBD(("\nKeyRelease for (keysym 0x%lx, %s)\n", keysym,                                  DEBUG_KBD(("\nKeyRelease for keysym (0x%lx, %s)\n", keysym,
1422                                             get_ksname(keysym)));                                             get_ksname(keysym)));
1423    
1424                                  ev_time = time(NULL);                                  ev_time = time(NULL);
1425                                  if (handle_special_keys(keysym, xevent.xkey.state, ev_time, False))                                  if (handle_special_keys(keysym, xevent.xkey.state, ev_time, False))
1426                                          break;                                          break;
1427    
1428                                  tr = xkeymap_translate_key(keysym,                                  xkeymap_send_keys(keysym, xevent.xkey.keycode, xevent.xkey.state,
1429                                                             xevent.xkey.keycode, xevent.xkey.state);                                                    ev_time, False);
   
                                 if (tr.scancode == 0)  
                                         break;  
   
                                 rdp_send_scancode(ev_time, RDP_KEYRELEASE, tr.scancode);  
1430                                  break;                                  break;
1431    
1432                          case ButtonPress:                          case ButtonPress:
# Line 1598  xwin_process_events(void) Line 1584  xwin_process_events(void)
1584                          case PropertyNotify:                          case PropertyNotify:
1585                                  xclip_handle_PropertyNotify(&xevent.xproperty);                                  xclip_handle_PropertyNotify(&xevent.xproperty);
1586                                  break;                                  break;
1587                            case MapNotify:
1588                                    rdp_send_client_window_status(1);
1589                                    break;
1590                            case UnmapNotify:
1591                                    rdp_send_client_window_status(0);
1592                                    break;
1593                  }                  }
1594          }          }
1595          /* Keep going */          /* Keep going */

Legend:
Removed from v.867  
changed lines
  Added in v.949

  ViewVC Help
Powered by ViewVC 1.1.26