/[rdesktop]/sourceforge.net/trunk/rdesktop/xkeymap.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/xkeymap.c

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

revision 115 by astrand, Wed Sep 11 09:52:30 2002 UTC revision 121 by matthewc, Sat Sep 14 11:48:44 2002 UTC
# Line 177  xkeymap_read(char *mapname) Line 177  xkeymap_read(char *mapname)
177                          MASK_ADD_BITS(modifiers, MapLocalStateMask);                          MASK_ADD_BITS(modifiers, MapLocalStateMask);
178                  }                  }
179    
180                    if (strstr(line_rest, "inhibit"))
181                    {
182                            MASK_ADD_BITS(modifiers, MapInhibitMask);
183                    }
184    
185                  add_to_keymap(keyname, scancode, modifiers, mapname);                  add_to_keymap(keyname, scancode, modifiers, mapname);
186    
187                  if (strstr(line_rest, "addupper"))                  if (strstr(line_rest, "addupper"))
# Line 197  xkeymap_read(char *mapname) Line 202  xkeymap_read(char *mapname)
202    
203  /* Before connecting and creating UI */  /* Before connecting and creating UI */
204  void  void
205  xkeymap_init1(void)  xkeymap_init(void)
206  {  {
207            unsigned int max_keycode;
208          int i;          int i;
209    
         /* Zeroing keymap */  
         for (i = 0; i < KEYMAP_SIZE; i++)  
         {  
                 keymap[i].scancode = 0;  
                 keymap[i].modifiers = 0;  
         }  
   
210          if (strcmp(keymapname, "none"))          if (strcmp(keymapname, "none"))
         {  
211                  xkeymap_read(keymapname);                  xkeymap_read(keymapname);
         }  
212    
213            XDisplayKeycodes(display, &min_keycode, (int *) &max_keycode);
214  }  }
215    
216  /* After connecting and creating UI */  /* Handles, for example, multi-scancode keypresses (which is not
217  void     possible via keymap-files) */
218  xkeymap_init2(void)  BOOL
219    handle_special_keys(KeySym keysym, uint32 ev_time, BOOL pressed)
220  {  {
221          unsigned int max_keycode;          switch (keysym)
222          XDisplayKeycodes(display, &min_keycode, (int *) &max_keycode);          {
223                    case XK_Break:  /* toggle full screen */
224                            if (pressed && (get_key_state(XK_Alt_L) || get_key_state(XK_Alt_R)))
225                            {
226                                    toggle_fullscreen();
227                                    return True;
228                            }
229                            break;
230    
231                    case XK_Meta_L: /* Windows keys */
232                    case XK_Super_L:
233                    case XK_Hyper_L:
234                    case XK_Meta_R:
235                    case XK_Super_R:
236                    case XK_Hyper_R:
237                            if (pressed)
238                            {
239                                    rdp_send_scancode(ev_time, RDP_KEYPRESS, SCANCODE_CHAR_LCTRL);
240                                    rdp_send_scancode(ev_time, RDP_KEYPRESS, SCANCODE_CHAR_ESC);
241                            }
242                            else
243                            {
244                                    rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_ESC);
245                                    rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LCTRL);
246                            }
247                            return True;
248                            break;
249            }
250            return False;
251  }  }
252    
253    
# Line 231  xkeymap_translate_key(KeySym keysym, uns Line 258  xkeymap_translate_key(KeySym keysym, uns
258    
259          tr = keymap[keysym & KEYMAP_MASK];          tr = keymap[keysym & KEYMAP_MASK];
260    
261            if (tr.modifiers & MapInhibitMask)
262            {
263                    DEBUG_KBD(("Inhibiting key\n"));
264                    tr.scancode = 0;
265                    return tr;
266            }
267    
268          if (tr.modifiers & MapLocalStateMask)          if (tr.modifiers & MapLocalStateMask)
269          {          {
270                  /* The modifiers to send for this key should be obtained                  /* The modifiers to send for this key should be obtained
# Line 298  get_ksname(KeySym keysym) Line 332  get_ksname(KeySym keysym)
332          return ksname;          return ksname;
333  }  }
334    
 BOOL  
 inhibit_key(KeySym keysym)  
 {  
         switch (keysym)  
         {  
                 case XK_Caps_Lock:  
                         return True;  
                         break;  
                 case XK_Multi_key:  
                         return True;  
                         break;  
                 case XK_Num_Lock:  
                         return True;  
                         break;  
                 default:  
                         break;  
         }  
         return False;  
 }  
335    
336  void  void
337  ensure_remote_modifiers(uint32 ev_time, key_translation tr)  ensure_remote_modifiers(uint32 ev_time, key_translation tr)

Legend:
Removed from v.115  
changed lines
  Added in v.121

  ViewVC Help
Powered by ViewVC 1.1.26