diff options
Diffstat (limited to 'xorg-server/hw/xfree86/utils/xorgcfg/mouse-cfg.c')
-rw-r--r-- | xorg-server/hw/xfree86/utils/xorgcfg/mouse-cfg.c | 449 |
1 files changed, 0 insertions, 449 deletions
diff --git a/xorg-server/hw/xfree86/utils/xorgcfg/mouse-cfg.c b/xorg-server/hw/xfree86/utils/xorgcfg/mouse-cfg.c deleted file mode 100644 index 24aec6ae4..000000000 --- a/xorg-server/hw/xfree86/utils/xorgcfg/mouse-cfg.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * CONECTIVA LINUX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Except as contained in this notice, the name of Conectiva Linux shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from - * Conectiva Linux. - * - * Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br> - * - */ - -#include "xf86config.h" -#include "mouse-cfg.h" -#include <X11/Xaw/AsciiText.h> -#include <X11/Xaw/Label.h> -#include <X11/Xaw/List.h> -#include <X11/Xaw/Form.h> -#include <X11/Xaw/Toggle.h> -#include <X11/Xaw/Viewport.h> -#include <X11/extensions/xf86misc.h> - -/* - * Prototypes - */ -static void MouseDeviceCallback(Widget, XtPointer, XtPointer); -static void MouseProtocolCallback(Widget, XtPointer, XtPointer); -static void MouseEmulateCallback(Widget, XtPointer, XtPointer); -static void MouseApplyCallback(Widget, XtPointer, XtPointer); -static Bool MouseConfigCheck(void); - -/* - * Initialization - */ -static struct MouseProtocol { - char *name; - int type; -} protocols[] = { -#ifdef __SCO__ - {"OsMouse", MTYPE_AUTOMOUSE}, -#endif -#ifdef WSCONS_SUPPORT - {"wsmouse", MTYPE_AUTOMOUSE}, -#endif - {"Auto", MTYPE_AUTOMOUSE}, - {"SysMouse", MTYPE_SYSMOUSE}, - {"MouseSystems", MTYPE_MOUSESYS}, - {"BusMouse", MTYPE_BUSMOUSE}, - {"PS/2", MTYPE_PS_2}, - {"Microsoft", MTYPE_MICROSOFT}, -#ifndef __FreeBSD__ - {"ImPS/2", MTYPE_IMPS2}, - {"ExplorerPS/2", MTYPE_EXPPS2}, - {"GlidePointPS/2", MTYPE_GLIDEPOINTPS2}, - {"MouseManPlusPS/2", MTYPE_MMANPLUSPS2}, - {"NetMousePS/2", MTYPE_NETPS2}, - {"NetScrollPS/2", MTYPE_NETSCROLLPS2}, - {"ThinkingMousePS/2", MTYPE_THINKINGPS2}, -#endif - {"AceCad", MTYPE_ACECAD}, - {"GlidePoint", MTYPE_GLIDEPOINT}, - {"IntelliMouse", MTYPE_IMSERIAL}, - {"Logitech", MTYPE_LOGITECH}, - {"MMHitTab", MTYPE_MMHIT}, - {"MMSeries", MTYPE_MMSERIES}, - {"MouseMan", MTYPE_LOGIMAN}, - {"ThinkingMouse", MTYPE_THINKING}, -}; - -static Widget text; -static char *device, *protocol; -static Bool emulate; -static XF86ConfInputPtr current_input; - -/* - * Implementation - */ -/*ARGSUSED*/ -XtPointer -MouseConfig(XtPointer config) -{ - XF86ConfInputPtr mouse = (XF86ConfInputPtr)config; - XF86OptionPtr option; - char mouse_name[32]; - Arg args[1]; - - static char *Device = "Device", *Protocol = "Protocol", - *Emulate3Buttons = "Emulate3Buttons", - *Emulate3Timeout = "Emulate3Timeout"; - - current_input = mouse; - - if (mouse != NULL) { - emulate = xf86findOption(mouse->inp_option_lst, - Emulate3Buttons) != NULL; - if ((option = xf86findOption(mouse->inp_option_lst, Device)) != NULL) - device = option->opt_val; - else - device = NULL; - if ((option = xf86findOption(mouse->inp_option_lst, Protocol)) != NULL) - protocol = option->opt_val; - else - protocol = NULL; - - XtSetArg(args[0], XtNstring, mouse->inp_identifier); - XtSetValues(ident_widget, args, 1); - } - else { - XF86ConfInputPtr input = XF86Config->conf_input_lst; - int nmouses = 0; - - while (input != NULL) { - if (strcasecmp(input->inp_driver, "mouse") == 0) - ++nmouses; - input = (XF86ConfInputPtr)(input->list.next); - } - do { - XmuSnprintf(mouse_name, sizeof(mouse_name), "Mouse%d", nmouses); - ++nmouses; - } while (xf86findInput(mouse_name, - XF86Config->conf_input_lst)); - - XtSetArg(args[0], XtNstring, mouse_name); - XtSetValues(ident_widget, args, 1); - - emulate = True; - device = NULL; - protocol = NULL; - } - - xf86info.cur_list = MOUSE; - XtSetSensitive(back, xf86info.lists[MOUSE].cur_function > 0); - XtSetSensitive(next, xf86info.lists[MOUSE].cur_function < - xf86info.lists[MOUSE].num_functions - 1); - (xf86info.lists[MOUSE].functions[xf86info.lists[MOUSE].cur_function]) - (&xf86info); - - if (ConfigLoop(MouseConfigCheck) == True) { - XtSetArg(args[0], XtNstring, &device); - XtGetValues(text, args, 1); - if (mouse == NULL) { - mouse = XtNew(XF86ConfInputRec); - mouse->list.next = NULL; - mouse->inp_identifier = XtNewString(ident_string); - mouse->inp_driver = XtNewString("mouse"); - mouse->inp_option_lst = xf86newOption(XtNewString(Device), - XtNewString(device)); - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Protocol), XtNewString(protocol)); - if (emulate) { - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Emulate3Buttons), NULL); - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Emulate3Timeout), - XtNewString("50")); - } - mouse->inp_comment = NULL; - } - else { - if ((option = xf86findOption(mouse->inp_option_lst, Device)) != NULL) { - XtFree(option->opt_val); - option->opt_val = XtNewString(device); - XtFree(option->opt_comment); - } - else { - if (mouse->inp_option_lst == NULL) - mouse->inp_option_lst = xf86newOption(XtNewString(Device), - XtNewString(device)); - else - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Device), XtNewString(device)); - } - - if ((option = xf86findOption(mouse->inp_option_lst, Protocol)) != NULL) { - XtFree(option->opt_val); - option->opt_val = XtNewString(protocol); - XtFree(option->opt_comment); - } - else - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Protocol), XtNewString(protocol)); - - if (emulate == False) { - xf86removeOption(&(mouse->inp_option_lst), Emulate3Buttons); - xf86removeOption(&(mouse->inp_option_lst), Emulate3Timeout); - } - else if (emulate) { - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Emulate3Buttons), NULL); - xf86addNewOption(mouse->inp_option_lst, - XtNewString(Emulate3Timeout), XtNewString("50")); - } - } - if (strcasecmp(mouse->inp_identifier, ident_string)) - xf86renameInput(XF86Config, mouse, ident_string); - - return ((XtPointer)mouse); - } - - return (NULL); -} - -static Bool -MouseConfigCheck(void) -{ - Arg args[1]; - XF86ConfInputPtr mouse = XF86Config->conf_input_lst; - - XtSetArg(args[0], XtNstring, &device); - XtGetValues(text, args, 1); - - if (ident_string == NULL || strlen(ident_string) == 0 || - device == NULL || strlen(device) == 0 || protocol == NULL) - return (False); - while (mouse != NULL) { - if (mouse != current_input && - strcasecmp(ident_string, mouse->inp_identifier) == 0) - return (False); - mouse = (XF86ConfInputPtr)(mouse->list.next); - } - - return (True); -} - -static void -MouseDeviceCallback(Widget w, XtPointer user_data, XtPointer call_data) -{ - XawListReturnStruct *info = (XawListReturnStruct *)call_data; - Arg args[1]; - - XtSetArg(args[0], XtNstring, info->string); - XtSetValues((Widget)user_data, args, 1); - XawTextSetInsertionPoint((Widget)user_data, strlen(info->string)); -} - -static void -MouseProtocolCallback(Widget w, XtPointer user_data, XtPointer call_data) -{ - XawListReturnStruct *info = (XawListReturnStruct *)call_data; - - protocol = info->string; -} - -static void -MouseEmulateCallback(Widget w, XtPointer user_data, XtPointer call_data) -{ - emulate = (Bool)(long)call_data; -} - -static void -MouseApplyCallback(Widget w, XtPointer user_data, XtPointer call_data) -{ - int i; - XF86MiscMouseSettings mouse; - - XF86MiscGetMouseSettings(XtDisplay(w), &mouse); - XtFree(mouse.device); - - if (mouse.baudrate == 0 || mouse.baudrate < 0 || mouse.baudrate > 9600 || - mouse.baudrate % 1200) - mouse.baudrate = 1200; - - mouse.type = MTYPE_AUTOMOUSE; - for (i = 0; i < sizeof(protocols) / sizeof(protocols[0]); i++) - if (strcmp(protocols[i].name, protocol) == 0) { - mouse.type = protocols[i].type; - break; - } - - mouse.emulate3buttons = emulate; - mouse.flags |= MF_REOPEN; - - mouse.device = device; - - XFlush(XtDisplay(w)); - XF86MiscSetMouseSettings(XtDisplay(w), &mouse); -} - -void -MouseDeviceAndProtocol(XF86SetupInfo *info) -{ - static int first = 1, ndevices; - static Widget mouse_dp, listD, listP, emul3, apply; - static char **devices; - static char *dirs[] = { - "/dev", -#ifdef __linux__ - "/dev/input" -#endif - }; - static char *patterns[] = { -#ifdef WSCONS_SUPPORT - "wsmouse", -#endif - "cuaa", - "mice", - "mouse", - "ps", - "sysmouse", - "ttyS", - }; - Arg args[2]; - int i; - - if (first) { - Widget viewport; - struct dirent *ent; - DIR *dir; - char **list; - int count; - - first = 0; - - mouse_dp = XtCreateWidget("mouseDP", formWidgetClass, - configp, NULL, 0); - - /* DEVICE */ - for (count = 0; count < sizeof(dirs) / sizeof(dirs[0]); count++) { - if ((dir = opendir(dirs[count])) != NULL) { - int i, len, xlen = strlen(dirs[count]) + 2; - - (void)readdir(dir); - (void)readdir(dir); - while ((ent = readdir(dir)) != NULL) { - for (i = 0; i < sizeof(patterns) / sizeof(patterns[0]); i++) { - len = strlen(patterns[i]); - - if (strncmp(patterns[i], ent->d_name, len) == 0) { - len = strlen(ent->d_name) + xlen; - - devices = (char**)XtRealloc((XtPointer)devices, - sizeof(char*) * ++ndevices); - devices[ndevices - 1] = XtMalloc(len); - XmuSnprintf(devices[ndevices - 1], len, "%s/%s", - dirs[count], ent->d_name); - } - } - } - closedir(dir); - } - } - - (void) XtCreateManagedWidget("labelD", labelWidgetClass, - mouse_dp, NULL, 0); - text = XtVaCreateManagedWidget("device", asciiTextWidgetClass, - mouse_dp, - XtNeditType, XawtextEdit, - NULL); - viewport = XtCreateManagedWidget("viewportD", viewportWidgetClass, - mouse_dp, NULL, 0); - - listD = XtVaCreateManagedWidget("listD", listWidgetClass, - viewport, - XtNlist, devices, - XtNnumberStrings, ndevices, - NULL); - XtAddCallback(listD, XtNcallback, MouseDeviceCallback, (XtPointer)text); - - /* PROTOCOL */ - (void) XtCreateManagedWidget("labelP", labelWidgetClass, - mouse_dp, NULL, 0); - viewport = XtCreateManagedWidget("viewportP", viewportWidgetClass, - mouse_dp, NULL, 0); - - list = (char**)XtMalloc(sizeof(char*) * - sizeof(protocols)/sizeof(protocols[0])); - for (count = 0; count < sizeof(protocols)/sizeof(protocols[0]); count++) - list[count] = XtNewString(protocols[count].name); - listP = XtVaCreateManagedWidget("listP", listWidgetClass, - viewport, - XtNlist, list, - XtNnumberStrings, count, - NULL); - XtAddCallback(listP, XtNcallback, MouseProtocolCallback, NULL); - - emul3 = XtVaCreateManagedWidget("emulate3", toggleWidgetClass, - mouse_dp, XtNstate, True, NULL); - XtAddCallback(emul3, XtNcallback, MouseEmulateCallback, NULL); - apply = XtCreateManagedWidget("apply", commandWidgetClass, - mouse_dp, NULL, 0); - XtAddCallback(apply, XtNcallback, MouseApplyCallback, NULL); - - XtRealizeWidget(mouse_dp); - } - - if (device != NULL) { - for (i = 0; i < ndevices; i++) - if (strcmp(device, devices[i]) == 0) { - XtSetArg(args[0], XtNstring, device); - XtSetValues(text, args, 1); - XawListHighlight(listD, i); - break; - } - - if (i >= ndevices) { - devices = (char**)XtRealloc((XtPointer)devices, - sizeof(char*) * ++ndevices); - devices[ndevices - 1] = XtNewString(device); - XawListHighlight(listD, ndevices - 1); - XtSetArg(args[0], XtNlist, devices); - XtSetArg(args[1], XtNnumberStrings, ndevices); - XtSetValues(listD, args, 2); - } - device = devices[i]; - } - else { - XtSetArg(args[0], XtNstring, ""); - XtSetValues(text, args, 1); - XawListUnhighlight(listD); - } - - if (protocol != NULL) { - for (i = 0; i < sizeof(protocols) / sizeof(protocols[0]); i++) - if (strcasecmp(protocol, protocols[i].name) == 0) { - protocol = protocols[i].name; - XawListHighlight(listP, i); - break; - } - } - else { - /* "Auto" is the default */ - protocol = protocols[0].name; - XawListHighlight(listP, 0); - } - - XtSetArg(args[0], XtNstate, emulate); - XtSetValues(emul3, args, 1); - - XtChangeManagedSet(¤t, 1, NULL, NULL, &mouse_dp, 1); - current = mouse_dp; -} |