Beispiel #1
0
void
xf86KbdGetMapping (KeySymsPtr pKeySyms, CARD8 *pModMap)
{
  KeySym        *k;
  char          type;
  int           i, j;

  readKernelMapping(pKeySyms, pModMap);

  /*
   * Apply the special key mapping specified in XF86Config 
   */
  for (k = map, i = MIN_KEYCODE;
       i < (NUM_KEYCODES + MIN_KEYCODE);
       i++, k += 4) {
    switch (k[0]) {
      case XK_Alt_L:
        j = K_INDEX_LEFTALT;
        break;
      case XK_Alt_R:
        j = K_INDEX_RIGHTALT;
        break;
      case XK_Scroll_Lock:
        j = K_INDEX_SCROLLLOCK;
        break;
      case XK_Control_R:
        j = K_INDEX_RIGHTCTL;
        break;
      default:
        j = -1;
    }
    if (j >= 0)
      switch (xf86Info.specialKeyMap[j]) {
        case KM_META:
          if (k[0] == XK_Alt_R)
            k[1] = XK_Meta_R;
          else {
            k[0] = XK_Alt_L;
            k[1] = XK_Meta_L;
          }
          break;
        case KM_COMPOSE:
          k[0] = XK_Multi_key;
          break;
        case KM_MODESHIFT:
          k[0] = XK_Mode_switch;
          k[1] = NoSymbol;
          break;
        case KM_MODELOCK:
          k[0] = XK_Mode_switch;
          k[1] = XF86XK_ModeLock;
          break;
        case KM_SCROLLLOCK:
          k[0] = XK_Scroll_Lock;
          break;
        case KM_CONTROL:
          k[0] = XK_Control_R;
          break;
      }
  }

  /*
   * compute the modifier map
   */
  for (i = 0; i < MAP_LENGTH; i++)
    pModMap[i] = NoSymbol;  /* make sure it is restored */
  
  for (k = map, i = MIN_KEYCODE;
       i < (NUM_KEYCODES + MIN_KEYCODE);
       i++, k += 4)
    
    switch(*k) {
      
    case XK_Shift_L:
    case XK_Shift_R:
      pModMap[i] = ShiftMask;
      break;
      
    case XK_Control_L:
    case XK_Control_R:
      pModMap[i] = ControlMask;
      break;
      
    case XK_Caps_Lock:
      pModMap[i] = LockMask;
      break;
      
    case XK_Alt_L:
    case XK_Alt_R:
      pModMap[i] = AltMask;
      break;
      
    case XK_Num_Lock:
      if (!xf86Info.serverNumLock) pModMap[i] = NumLockMask;
      break;

    case XK_Scroll_Lock:
      pModMap[i] = ScrollLockMask;
      break;

      /* kana support */
    case XK_Kana_Lock:
    case XK_Kana_Shift:
      pModMap[i] = KanaMask;
      break;

      /* alternate toggle for multinational support */
    case XK_Mode_switch:
      pModMap[i] = AltLangMask;
      break;

    }
  
  xf86Info.kbdType =
    ioctl(xf86Info.consoleFd, KDGKBTYPE, &type) != -1 ? type : KB_101;

  pKeySyms->map        = map;
  pKeySyms->mapWidth   = GLYPHS_PER_KEY;
  pKeySyms->minKeyCode = MIN_KEYCODE;
  if (xf86Info.serverNumLock)
    pKeySyms->maxKeyCode = MAX_KEYCODE; 
  else
    pKeySyms->maxKeyCode = MAX_STD_KEYCODE;

}
Beispiel #2
0
void
KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
{
    KeySym        *k;
    int           i;

    readKernelMapping(pInfo, pKeySyms, pModMap);

    /*
     * compute the modifier map
     */
    for (i = 0; i < MAP_LENGTH; i++)
        pModMap[i] = NoSymbol;  /* make sure it is restored */

    for (k = map, i = MIN_KEYCODE;
            i < (NUM_KEYCODES + MIN_KEYCODE);
            i++, k += 4)

        switch(*k) {

        case XK_Shift_L:
        case XK_Shift_R:
            pModMap[i] = ShiftMask;
            break;

        case XK_Control_L:
        case XK_Control_R:
            pModMap[i] = ControlMask;
            break;

        case XK_Caps_Lock:
            pModMap[i] = LockMask;
            break;

        case XK_Alt_L:
        case XK_Alt_R:
            pModMap[i] = AltMask;
            break;

        case XK_Num_Lock:
            pModMap[i] = NumLockMask;
            break;

        case XK_Scroll_Lock:
            pModMap[i] = ScrollLockMask;
            break;

        /* kana support */
        case XK_Kana_Lock:
        case XK_Kana_Shift:
            pModMap[i] = KanaMask;
            break;

        /* alternate toggle for multinational support */
        case XK_Mode_switch:
            pModMap[i] = AltLangMask;
            break;

        }

    pKeySyms->map        = map;
    pKeySyms->mapWidth   = GLYPHS_PER_KEY;
    pKeySyms->minKeyCode = MIN_KEYCODE;
    pKeySyms->maxKeyCode = MAX_KEYCODE;
}
Beispiel #3
0
void
LinuxKeyboardLoad (void)
{
    readKernelMapping ();
}