summaryrefslogtreecommitdiffstats
path: root/source/a/gpm/setup.mouse
blob: 4703671ff1056b6c16e20c5b67c7b5d7bd646092 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/sh
#BLURB="Configure the console mouse support (GPM)."
T_PX=$1
TMP=/var/log/setup/tmp
GPM=/usr/sbin/gpm
# If the mouse is USB, we can autodetect it:
if [ -r /proc/bus/input/devices ]; then
 if grep -B3 Handlers=mouse /proc/bus/input/devices | grep Phys=usb 1>/dev/null 2>/dev/null; then
  MOUSE_TYPE=usb
  MTYPE="imps2"
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf input/mice mouse )
 fi
fi

if [ "$MOUSE_TYPE" = "" ]; then
 dialog --title "MOUSE CONFIGURATION" --default-item "imps2" --menu \
"This part of the configuration \
process will create a /dev/mouse link pointing to your default mouse device. \
You can change the /dev/mouse link later if the mouse doesn't work, or if \
you switch to a different type of pointing device. We will also use the \
information about the mouse to set the correct protocol for gpm, the Linux \
mouse server. Please select a mouse type \
from the list below:" 20 76 8 \
 "ps2" "PS/2 port mouse (most desktops and laptops)" \
 "usb" "USB connected mouse" \
 "imps2" "Microsoft PS/2 Intellimouse" \
 "exps2" "Intellimouse Explorer PS/2" \
 "bare" "2 button Microsoft compatible serial mouse" \
 "ms" "3 button Microsoft compatible serial mouse" \
 "mman" "Logitech serial MouseMan and similar devices" \
 "msc" "MouseSystems serial (most 3 button serial mice)" \
 "pnp" "Plug and Play (serial mice that do not work with ms)" \
 "ms3" "Microsoft serial Intellimouse" \
 "netmouse" "Genius Netmouse on PS/2 port" \
 "logi" "Some serial Logitech devices" \
 "logim" "Make serial Logitech behave like msc" \
 "atibm" "ATI XL busmouse (mouse card)" \
 "inportbm" "Microsoft busmouse (mouse card)" \
 "logibm" "Logitech busmouse (mouse card)" \
 "ncr" "A pointing pen (NCR3125) on some laptops" \
 "twid" "Twiddler keyboard, by HandyKey Corp" \
 "genitizer" "Genitizer tablet (relative mode)" \
 "js" "Use a joystick as a mouse" \
 "wacom" "Wacom serial graphics tablet" \
 2> $TMP/mtype
 if [ ! $? = 0 ]; then
  rm -f $TMP/mtype
  exit
 fi
 if [ -f $TMP/mtype ]; then
  MOUSE_TYPE="`cat $TMP/mtype`"
 else
  unset MOUSE_TYPE
 fi
 rm -f $TMP/mtype
 if [ "$MOUSE_TYPE" = "bare" -o "$MOUSE_TYPE" = "ms" \
 -o "$MOUSE_TYPE" = "mman" -o "$MOUSE_TYPE" = "msc" \
 -o "$MOUSE_TYPE" = "genitizer" \
 -o "$MOUSE_TYPE" = "pnp" -o "$MOUSE_TYPE" = "ms3" \
 -o "$MOUSE_TYPE" = "logi" -o "$MOUSE_TYPE" = "logim" \
 -o "$MOUSE_TYPE" = "wacom" -o "$MOUSE_TYPE" = "twid" ]; then
  dialog --title "SELECT SERIAL PORT" --menu "Your mouse requires a \
serial port.  Which one would you like to use?" 12 50 4 \
  "/dev/ttyS0" "(COM1: under DOS)" \
  "/dev/ttyS1" "(COM2: under DOS)" \
  "/dev/ttyS2" "(COM3: under DOS)" \
  "/dev/ttyS3" "(COM4: under DOS)" 2> $TMP/mport
  if [ ! $? = 0 ]; then
   rm -f $TMP/mport
   exit
  fi
  MDEVICE="`cat $TMP/mport`"
  SHORT_MDEVICE=`basename $MDEVICE`
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf $SHORT_MDEVICE mouse )
  # For the serial mice, the protocol is the same as the mouse type:
  MTYPE=$MOUSE_TYPE
  rm -f $TMP/mport
 elif [ "$MOUSE_TYPE" = "ps2" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
  MTYPE="ps2"
 elif [ "$MOUSE_TYPE" = "ncr" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
  MTYPE="ncr"
 elif [ "$MOUSE_TYPE" = "exps2" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
  MTYPE="exps2"
 elif [ "$MOUSE_TYPE" = "imps2" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
  MTYPE="imps2"
 elif [ "$MOUSE_TYPE" = "logibm" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf logibm mouse )
  MTYPE="ps2"
 elif [ "$MOUSE_TYPE" = "atibm" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf atibm mouse )
  MTYPE="ps2"
 elif [ "$MOUSE_TYPE" = "inportbm" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf inportbm mouse )
  MTYPE="bm"
 elif [ "$MOUSE_TYPE" = "js" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf js0 mouse )
  MTYPE="js"
 elif [ "$MOUSE_TYPE" = "usb" ]; then
  ( cd $T_PX/dev ; rm -f mouse ; ln -sf input/mice mouse )
  MTYPE="imps2"
 fi
fi

# OK, we know enough now to create a sample rc.gpm:
cat << EOF > $T_PX/etc/rc.d/rc.gpm-sample
#!/bin/sh
# Start/stop/restart the GPM mouse server:

if [ "\$1" = "stop" ]; then
  echo "Stopping gpm..."
  $GPM -k
elif [ "\$1" = "restart" ]; then
  echo "Restarting gpm..."
  $GPM -k
  sleep 1
  $GPM -m /dev/mouse -t $MTYPE
else # assume \$1 = start:
  echo "Starting gpm:  $GPM -m /dev/mouse -t $MTYPE"
  $GPM -m /dev/mouse -t $MTYPE
fi

# There is another way to run GPM, where it acts as a repeater outputting a
# virtual MouseSystems mouse on /dev/gpmdata. This is useful for feeding
# gpm's data to X, especially if you've got a busmouse (in that situation X
# and gpm may not coexist without using a repeater). To try running a GPM
# repeater for X, change the gpm command line to look like this:
# $GPM -R msc -m /dev/mouse -t $MTYPE
# Then, make sure that the mouse configuration in your XF86Config file refers
# to the repeater device (/dev/gpmdata) and a MouseSystems mouse type. If you
# edit the file directly, you'll want the lines to look like this (minus the
# comment marks '#' shown here, of course):
#Section "Pointer"
#    Protocol    "MouseSystems"
#    Device      "/dev/gpmdata"

EOF
chmod 755 $T_PX/etc/rc.d/rc.gpm-sample
# Now ask if this should be the new rc.gpm:
 dialog --title "GPM CONFIGURATION" --yesno \
"The gpm program allows you to cut and paste text on\n\
the virtual consoles using a mouse. If you choose to\n\
run it at boot time, this line will be added to your\n\
/etc/rc.d/rc.gpm:\n\
\n\
  $GPM -m /dev/mouse -t $MTYPE \n\
\n\
Shall we load the gpm program at boot time?" 12 58 
 if [ $? = 0 ]; then
   mv $T_PX/etc/rc.d/rc.gpm-sample $T_PX/etc/rc.d/rc.gpm
 fi