int XkbDDXPrivate(DeviceIntPtr dev,KeyCode key,XkbAction *act) { XkbAnyAction *xf86act = &(act->any); char msgbuf[XkbAnyActionDataSize+1]; if (xf86act->type == XkbSA_XFree86Private) { memcpy(msgbuf, xf86act->data, XkbAnyActionDataSize); msgbuf[XkbAnyActionDataSize]= '\0'; if (strcasecmp(msgbuf, "-vmode")==0) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL); else if (strcasecmp(msgbuf, "+vmode")==0) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL); else if (strcasecmp(msgbuf, "prgrbs")==0) { DeviceIntPtr tmp; xf86Msg(X_INFO, "Printing all currently active device grabs:\n"); for (tmp = inputInfo.devices; tmp; tmp = tmp->next) if (tmp->deviceGrab.grab) PrintDeviceGrabInfo(tmp); xf86Msg(X_INFO, "End list of active device grabs\n"); } else if (strcasecmp(msgbuf, "ungrab")==0) UngrabAllDevices(FALSE); else if (strcasecmp(msgbuf, "clsgrb")==0) UngrabAllDevices(TRUE); else if (strcasecmp(msgbuf, "prwins")==0) PrintWindowTree(); } return 0; }
int XkbDDXTerminateServer(DeviceIntPtr dev, KeyCode key, XkbAction *act) { if (dev != inputInfo.keyboard) xf86ProcessActionEvent(ACTION_TERMINATE, NULL); return 0; }
int XkbDDXSwitchScreen(DeviceIntPtr dev,KeyCode key,XkbAction *act) { #ifdef XF86DDXACTIONS { int scrnnum = XkbSAScreen(&act->screen); if (act->screen.flags & XkbSA_SwitchApplication) { if (act->screen.flags & XkbSA_SwitchAbsolute) xf86ProcessActionEvent(ACTION_SWITCHSCREEN,(void *) &scrnnum); else { if (scrnnum < 0) xf86ProcessActionEvent(ACTION_SWITCHSCREEN_PREV,NULL); else xf86ProcessActionEvent(ACTION_SWITCHSCREEN_NEXT,NULL); } } } #endif return 1; }
int XkbDDXPrivate(DeviceIntPtr dev,KeyCode key,XkbAction *act) { #ifdef XF86DDXACTIONS XkbAnyAction *xf86act = &(act->any); char msgbuf[XkbAnyActionDataSize+1]; if (xf86act->type == XkbSA_XFree86Private) { memcpy(msgbuf, xf86act->data, XkbAnyActionDataSize); msgbuf[XkbAnyActionDataSize]= '\0'; if (_XkbStrCaseCmp(msgbuf, "-vmode")==0) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL); else if (_XkbStrCaseCmp(msgbuf, "+vmode")==0) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL); else if (_XkbStrCaseCmp(msgbuf, "ungrab")==0) xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL); else if (_XkbStrCaseCmp(msgbuf, "clsgrb")==0) xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL); else xf86ProcessActionEvent(ACTION_MESSAGE, (void *) msgbuf); } #endif return 0; }
int XkbDDXTerminateServer(DeviceIntPtr dev,KeyCode key,XkbAction *act) { #ifdef NXAGENT_SERVER return 0; #else #ifdef XF86DDXACTIONS xf86ProcessActionEvent(ACTION_TERMINATE, NULL); #else GiveUp(1); #endif return 0; #endif /* NXAGENT_SERVER */ }
int XkbDDXTerminateServer(DeviceIntPtr dev,KeyCode key,XkbAction *act) { xf86ProcessActionEvent(ACTION_TERMINATE, NULL); return 0; }
_X_HIDDEN void sunPostKbdEvent(int sun_ktype, Firm_event *event) { Bool down; KeyClassRec *keyc = ((DeviceIntPtr)xf86Info.pKeyboard)->key; Bool updateLeds = FALSE; xEvent kevent; KeySym *keysym; int keycode; static int lockkeys = 0; /* Give down a value */ if (event->value == VKEY_DOWN) down = TRUE; else down = FALSE; #if defined(KB_USB) if(sun_ktype == KB_USB) keycode = usbmap[event->id]; else #endif keycode = map[event->id]; /* * and now get some special keysequences */ #ifdef XKB if (((xf86Info.ddxSpecialKeys == SKWhenNeeded) && (!xf86Info.ActionKeyBindingsSet)) || noXkbExtension || (xf86Info.ddxSpecialKeys == SKAlways)) #endif { if (!(ModifierDown(ShiftMask)) && ((ModifierDown(ControlMask | AltMask)) || (ModifierDown(ControlMask | AltLangMask)))) { switch (keycode) { /* * The idea here is to pass the scancode down to a list of * registered routines. There should be some standard conventions * for processing certain keys. */ case KEY_BackSpace: xf86ProcessActionEvent(ACTION_TERMINATE, NULL); break; /* * Check grabs */ case KEY_KP_Divide: xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL); break; case KEY_KP_Multiply: xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL); break; /* * Video mode switches */ case KEY_KP_Minus: /* Keypad - */ if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL); if (!xf86Info.dontZoom) return; break; case KEY_KP_Plus: /* Keypad + */ if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL); if (!xf86Info.dontZoom) return; break; } } } /* * Now map the scancodes to real X-keycodes ... */ if (keycode == KEY_NOTUSED) { xf86MsgVerb(X_INFO, 0, "raw code %d mapped to KEY_NOTUSED -- please report\n", event->id); return; } if (keycode == KEY_UNKNOWN) { xf86MsgVerb(X_INFO, 0, "raw code %d mapped to KEY_UNKNOWN -- please report\n", event->id); return; } keycode += MIN_KEYCODE; keysym = keyc->curKeySyms.map + (keyc->curKeySyms.mapWidth * (keycode - keyc->curKeySyms.minKeyCode)); #ifdef XKB if (noXkbExtension) #endif { /* * Toggle lock keys. */ #define CAPSFLAG 0x01 #define NUMFLAG 0x02 #define SCROLLFLAG 0x04 #define MODEFLAG 0x08 if (down) { /* * Handle the KeyPresses of the lock keys. */ switch (keysym[0]) { case XK_Caps_Lock: if (lockkeys & CAPSFLAG) { lockkeys &= ~CAPSFLAG; return; } lockkeys |= CAPSFLAG; updateLeds = TRUE; xf86Info.capsLock = down; break; case XK_Num_Lock: if (lockkeys & NUMFLAG) { lockkeys &= ~NUMFLAG; return; } lockkeys |= NUMFLAG; updateLeds = TRUE; xf86Info.numLock = down; break; case XK_Scroll_Lock: if (lockkeys & SCROLLFLAG) { lockkeys &= ~SCROLLFLAG; return; } lockkeys |= SCROLLFLAG; updateLeds = TRUE; xf86Info.scrollLock = down; break; } } else { /* * Handle the releases of the lock keys. */ switch (keysym[0]) { case XK_Caps_Lock: if (lockkeys & CAPSFLAG) return; updateLeds = TRUE; xf86Info.capsLock = down; break; case XK_Num_Lock: if (lockkeys & NUMFLAG) return; updateLeds = TRUE; xf86Info.numLock = down; break; case XK_Scroll_Lock: if (lockkeys & SCROLLFLAG) return; updateLeds = TRUE; xf86Info.scrollLock = down; break; } } if (updateLeds) xf86KbdLeds(); /* * If this keycode is not a modifier key, and its down initiate the * autorepeate sequence. (Only necessary if not using XKB). * * If its not down, then reset the timer. */ if (!keyc->modifierMap[keycode]) { if (down) { startautorepeat(keycode); } else { TimerFree(sunTimer); sunTimer = NULL; } } } xf86Info.lastEventTime = kevent.u.keyButtonPointer.time = GetTimeInMillis(); /* * And now send these prefixes ... * NOTE: There cannot be multiple Mode_Switch keys !!!! */ ENQUEUE(&kevent, keycode, (down ? KeyPress : KeyRelease), XE_KEYBOARD); }