summaryrefslogtreecommitdiff
path: root/hw/xfree86/utils/xorgcfg/mouse-cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xfree86/utils/xorgcfg/mouse-cfg.c')
-rw-r--r--hw/xfree86/utils/xorgcfg/mouse-cfg.c417
1 files changed, 0 insertions, 417 deletions
diff --git a/hw/xfree86/utils/xorgcfg/mouse-cfg.c b/hw/xfree86/utils/xorgcfg/mouse-cfg.c
deleted file mode 100644
index d74321e58..000000000
--- a/hw/xfree86/utils/xorgcfg/mouse-cfg.c
+++ /dev/null
@@ -1,417 +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>
-
-/*
- * Prototypes
- */
-static void MouseDeviceCallback(Widget, XtPointer, XtPointer);
-static void MouseProtocolCallback(Widget, XtPointer, XtPointer);
-static void MouseEmulateCallback(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;
-}
-
-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);
-
- 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(&current, 1, NULL, NULL, &mouse_dp, 1);
- current = mouse_dp;
-}