📄 xf86misc.c
字号:
msetype = MTYPE_XQUEUE;#endif#if defined(USE_OSMOUSE) || defined(OSMOUSE_ONLY) if (xf86Info.mouseDev->mseProc == xf86OsMouseProc) msetype = MTYPE_OSMOUSE;#endif reopen = 0; if (stuff->mousetype != msetype) if (stuff->mousetype == MTYPE_XQUEUE || stuff->mousetype == MTYPE_OSMOUSE || msetype == MTYPE_XQUEUE || msetype == MTYPE_OSMOUSE) return miscErrorBase + XF86MiscBadMouseProtocol; else { reopen++; msetype = stuff->mousetype; } if (stuff->flags & MF_REOPEN) { reopen++; stuff->flags &= ~MF_REOPEN; } if (stuff->mousetype != MTYPE_OSMOUSE && stuff->mousetype != MTYPE_XQUEUE && stuff->mousetype != MTYPE_PS_2 && stuff->mousetype != MTYPE_BUSMOUSE && stuff->mousetype != MTYPE_IMPS2 && stuff->mousetype != MTYPE_THINKINGPS2 && stuff->mousetype != MTYPE_MMANPLUSPS2 && stuff->mousetype != MTYPE_GLIDEPOINTPS2 && stuff->mousetype != MTYPE_NETPS2 && stuff->mousetype != MTYPE_NETSCROLLPS2 && stuff->mousetype != MTYPE_SYSMOUSE) { if (stuff->baudrate < 1200) return miscErrorBase + XF86MiscBadMouseBaudRate; if (stuff->baudrate % 1200 != 0 || stuff->baudrate < 1200 || stuff->baudrate > 9600) return miscErrorBase + XF86MiscBadMouseBaudRate; if (xf86Info.mouseDev->baudRate != stuff->baudrate) { reopen++; baudrate = stuff->baudrate; } } if (stuff->flags & (MF_CLEAR_DTR|MF_CLEAR_RTS)) if (stuff->mousetype != MTYPE_MOUSESYS) return miscErrorBase + XF86MiscBadMouseFlags; else if (xf86Info.mouseDev->mouseFlags != stuff->flags) { reopen++; flags = stuff->flags; } if (stuff->mousetype != MTYPE_OSMOUSE && stuff->mousetype != MTYPE_XQUEUE && stuff->mousetype != MTYPE_BUSMOUSE) { if (stuff->samplerate < 0) return BadValue; if (xf86Info.mouseDev->sampleRate != stuff->samplerate) { reopen++; samplerate = stuff->samplerate; } } if (stuff->resolution < 0) return BadValue; if (xf86Info.mouseDev->resolution != stuff->resolution) { reopen++; resolution = stuff->resolution; }#if 0 /* Ignore the buttons field */ if (xf86Info.mouseDev->buttons != stuff->buttons) /* we cannot change this field on the fly... */ return BadValue;#endif if (stuff->chordmiddle) if (stuff->emulate3buttons || !(stuff->mousetype == MTYPE_MICROSOFT || stuff->mousetype == MTYPE_LOGIMAN) ) return miscErrorBase + XF86MiscBadMouseCombo; xf86Info.mouseDev->chordMiddle = stuff->chordmiddle!=0; xf86Info.mouseDev->emulate3Buttons = stuff->emulate3buttons!=0; xf86Info.mouseDev->emulate3Timeout = stuff->emulate3timeout; if (reopen && msetype != MTYPE_OSMOUSE && msetype != MTYPE_XQUEUE) { (xf86Info.mouseDev->mseProc)(xf86Info.pMouse, DEVICE_CLOSE); xf86Info.mouseDev->mseType = msetype; xf86Info.mouseDev->mouseFlags = flags; xf86Info.mouseDev->baudRate = baudrate; xf86Info.mouseDev->sampleRate = samplerate; xf86Info.mouseDev->resolution = resolution; xf86Info.pMouse->public.on = FALSE; xf86AllowMouseOpenFail = TRUE; xf86MouseInit(xf86Info.mouseDev); (xf86Info.mouseDev->mseProc)(xf86Info.pMouse, DEVICE_ON); } if (xf86Verbose) ErrorF("SetMouseSettings - Succeeded\n"); return (client->noClientException);}static intProcXF86MiscSetKbdSettings(client) register ClientPtr client;{ REQUEST(xXF86MiscSetKbdSettingsReq); REQUEST_SIZE_MATCH(xXF86MiscSetKbdSettingsReq); if (xf86Verbose) ErrorF("SetKbdSettings - type: %d rate: %d delay: %d snumlk: %d\n", stuff->kbdtype, stuff->rate, stuff->delay, stuff->servnumlock); if (stuff->rate < 0) return BadValue; if (stuff->delay < 0) return BadValue; if (stuff->kbdtype < KTYPE_UNKNOWN || stuff->kbdtype > KTYPE_XQUEUE) return miscErrorBase + XF86MiscBadKbdType; if (xf86Info.kbdRate!=stuff->rate || xf86Info.kbdDelay!=stuff->delay) { char rad; xf86Info.kbdRate = stuff->rate; xf86Info.kbdDelay = stuff->delay; if (xf86Info.kbdDelay <= 375) rad = 0x00; else if (xf86Info.kbdDelay <= 625) rad = 0x20; else if (xf86Info.kbdDelay <= 875) rad = 0x40; else rad = 0x60; if (xf86Info.kbdRate <= 2) rad |= 0x1F; else if (xf86Info.kbdRate >= 30) rad |= 0x00; else rad |= ((58/xf86Info.kbdRate)-2); xf86SetKbdRepeat(rad); }#if 0 /* Not done yet */ xf86Info.kbdType = stuff->kbdtype; xf86Info.serverNumLock = stuff->servnumlock!=0;#endif if (xf86Verbose) ErrorF("SetKbdSettings - Succeeded\n"); return (client->noClientException);}static intProcXF86MiscDispatch (client) register ClientPtr client;{ REQUEST(xReq); switch (stuff->data) { case X_XF86MiscQueryVersion: return ProcXF86MiscQueryVersion(client); case X_XF86MiscGetSaver: return ProcXF86MiscGetSaver(client); case X_XF86MiscSetSaver: return ProcXF86MiscSetSaver(client); case X_XF86MiscGetMouseSettings: return ProcXF86MiscGetMouseSettings(client); case X_XF86MiscGetKbdSettings: return ProcXF86MiscGetKbdSettings(client); default: if (!xf86MiscModInDevEnabled) return miscErrorBase + XF86MiscModInDevDisabled; if (xf86MiscModInDevAllowNonLocal || LocalClient (client)) { switch (stuff->data) { case X_XF86MiscSetMouseSettings: return ProcXF86MiscSetMouseSettings(client); case X_XF86MiscSetKbdSettings: return ProcXF86MiscSetKbdSettings(client); default: return BadRequest; } } else return miscErrorBase + XF86MiscModInDevClientNotLocal; }}static intSProcXF86MiscQueryVersion(client) register ClientPtr client;{ register int n; REQUEST(xXF86MiscQueryVersionReq); swaps(&stuff->length, n); return ProcXF86MiscQueryVersion(client);}static intSProcXF86MiscGetSaver(client) ClientPtr client;{ register int n; REQUEST(xXF86MiscGetSaverReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xXF86MiscGetSaverReq); swaps(&stuff->screen, n); return ProcXF86MiscGetSaver(client);}static intSProcXF86MiscSetSaver(client) ClientPtr client;{ register int n; REQUEST(xXF86MiscSetSaverReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xXF86MiscSetSaverReq); swaps(&stuff->screen, n); swapl(&stuff->suspendTime, n); swapl(&stuff->offTime, n); return ProcXF86MiscSetSaver(client);}static intSProcXF86MiscGetMouseSettings(client) ClientPtr client;{ register int n; REQUEST(xXF86MiscGetMouseSettingsReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xXF86MiscGetMouseSettingsReq); return ProcXF86MiscGetMouseSettings(client);}static intSProcXF86MiscGetKbdSettings(client) ClientPtr client;{ register int n; REQUEST(xXF86MiscGetKbdSettingsReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xXF86MiscGetKbdSettingsReq); return ProcXF86MiscGetKbdSettings(client);}static intSProcXF86MiscSetMouseSettings(client) ClientPtr client;{ register int n; REQUEST(xXF86MiscSetMouseSettingsReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xXF86MiscSetMouseSettingsReq); swapl(&stuff->mousetype, n); swapl(&stuff->baudrate, n); swapl(&stuff->samplerate, n); swapl(&stuff->resolution, n); swapl(&stuff->buttons, n); swapl(&stuff->emulate3timeout, n); swapl(&stuff->flags, n); return ProcXF86MiscSetMouseSettings(client);}static intSProcXF86MiscSetKbdSettings(client) ClientPtr client;{ register int n; REQUEST(xXF86MiscSetKbdSettingsReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xXF86MiscSetKbdSettingsReq); swapl(&stuff->kbdtype, n); swapl(&stuff->rate, n); swapl(&stuff->delay, n); return ProcXF86MiscSetKbdSettings(client);}static intSProcXF86MiscDispatch (client) register ClientPtr client;{ REQUEST(xReq); switch (stuff->data) { case X_XF86MiscQueryVersion: return SProcXF86MiscQueryVersion(client); case X_XF86MiscGetSaver: return SProcXF86MiscGetSaver(client); case X_XF86MiscSetSaver: return SProcXF86MiscSetSaver(client); case X_XF86MiscGetMouseSettings: return SProcXF86MiscGetMouseSettings(client); case X_XF86MiscGetKbdSettings: return SProcXF86MiscGetKbdSettings(client); default: if (!xf86MiscModInDevEnabled) return miscErrorBase + XF86MiscModInDevDisabled; if (xf86MiscModInDevAllowNonLocal || LocalClient (client)) { switch (stuff->data) { case X_XF86MiscSetMouseSettings: return SProcXF86MiscSetMouseSettings(client); case X_XF86MiscSetKbdSettings: return SProcXF86MiscSetKbdSettings(client); default: return BadRequest; } } else return miscErrorBase + XF86MiscModInDevClientNotLocal; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -