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 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891
|
<HTML><HEAD><TITLE>Manpage of IMWheel</TITLE>
</HEAD><BODY>
<H1>IMWheel</H1>
Section: User Commands (1)<BR>Updated: September 8 2002<BR><A HREF="#index">Index</A>
<A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi">Return to Main Contents</A><HR>
<A NAME="lbAB"> </A>
<H2>NAME</H2>
imwheel - a mouse wheel and stick interpreter for X Windows
<A NAME="lbAC"> </A>
<H2>SYNOPSIS</H2>
<B>imwheel</B> [ <I>options</I> ]
<BR>
<A NAME="lbAD"> </A>
<H2>DESCRIPTION</H2>
<I>IMWheel</I> is a universal mouse wheel and mouse stick translator for the X
Windows System. Using either a special version of gpm and it's /dev/gpmwheel
FIFO, or the support for a ZAxis on the mouse built into some servers, such as
XFree86. Utilizing the input from gpm or X Windows, imwheel translates mouse
wheel and mouse stick actions into keyboard events using the XTest extension to
X. Use <I>xdpyinfo</I> for information on the supported extensions in your X
server.
<P>
<A NAME="lbAE"> </A>
<H2>COMMAND LINE OPTIONS</H2>
Available command line options are as follows:
<DL COMPACT>
<DT><B>-4, --flip-buttons</B><DD>
Flips the mouse buttons so that 4 is 5 and 5 is 4, reversing
the Up and Down actions. This would make 4 buttons somewhat useful!
This is the similar to using "-b 54678", see the <B>-b</B> option.
See also <A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1+xmodmap">xmodmap</A>(1).
<DT><B>-b, --buttons</B> <I>button-spec</I><DD>
Remap buttons in <I>button-spec</I> to interpreted wheel/thumb input.
Also limits the button grab to the specified buttons when using the ZAxis method.
(see "X WINDOWS ZAXIS METHOD" below)
the <I>button-spec</I> may specify any of up to five buttons.
the <I>button-spec</I> is decoded in the following order for wheel input:
<DL COMPACT><DT><DD>
<DL COMPACT><DT><DD>
<PRE>
Index Interpreted As Button Number
<BR>
1 Wheel Up 4
<BR>
2 Wheel Down 5
<BR>
3 Wheel Left 6
<BR>
4 Wheel Right 7
<BR>
5 Thumb Button 1 8
<BR>
6 Thumb Button 2 9
</PRE>
</DL>
A <I>button-spec</I> of "45" will limit the grabbed buttons for only wheel up and down.
<BR>
A <I>button-spec</I> of "67" may be useful to use actual buttons 6 and 7 as wheel up
and down, and limit the grab to only those two buttons.
<BR>
A <I>button-spec</I> of "0" turns off any defined mapping, thus allowing for skips in
the <I>button-spec</I> for something that doesn't exist on your mouse.
<BR>
A <I>button-spec</I> of "45006" may be for normal wheel up/down and a thumb button 1, but
no horizontal wheel axis.
<BR>
The default <I>button-spec</I> is "456789".
<BR>
See also <A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1+xmodmap">xmodmap</A>(1).
</DL>
<DT><B>-c, --config</B><DD>
Popup to configuration helper window imediately.
<BR>
See also <B>CONFIGURATION HELPER</B>
<DT><B>-D, --debug</B><DD>
Show all possible debug info while running. This spits out alot and I also
suggest using the <B>-d</B> option to prevent imwheel from detaching from the
controlling terminal.
<DT><B>-d, --detach</B><DD>
Actually this does the opposite of it's name, it prevents detachment from the
controlling terminal. (no daemon...) Control-C stops, etc...
<DT><B>-f, --focus</B><DD>
Forces the X event subwindow to be used instead of the original hack that would
replace the subwindow in the X event with a probed focus query (XGetInputFocus).
This should fix some compatability problems with some window managers, such as
window maker, and perhaps enlightenment. If nothing seems to be working right,
try toggling this on or off...
<DT><B>-g, --focus-events</B><DD>
Disable the use of focus events for button grabs. If your <B>@Excluded</B> windows
are not regrabbing the mouse buttons when exited, try toggling this on or off...
<DT><B>-h, --help</B><DD>
Short help on options plus version/author info.
<DT><B>-k, --kill</B><DD>
Attempts to kill old imwheel (useful only for <B>--wheel-fifo</B> method.)
Pidfile must be created for this to work (no <B>-p</B> or <B>--pid</B> option on
the previous imwheel invocation). Process IDs are
tested using /proc/${pid}/status Name: field ?= imwheel.
If /proc is not mounted then this fails everytime!
Otherwise, this ensures that the wrong process is not killed.
<DT><B>-p, --pid</B><DD>
Don't write a pid file for gpmwheel FIFO method. This is the only
method that uses the pid file. XGrab doesn't need it, so it just
issues a warning about starting multiple imwheels on the same
display. Some people really prefer this, especially when they are
not using a SUID root imwheel executable.
<DT><B>-q, --quit</B><DD>
Quit imwheel before entering event loop. Usful in killing an
imwheel running in gpmwheel FIFO mode after exiting XWindows,
if you're using pid files that is.
<BR>
Example: `imwheel -k -q' = kill and quit (option order doesn't matter)
<DT><B>-s, --sensitivity</B> <I>sum-min</I><DD>
(Stick mice, Wheel FIFO method only)
<BR>
like <B>-t</B> only this sets a minimum total amount of movment of the
stick or marble, before any action is taken. This works good
with the Marble type devices.
This should be a multiple of the threshhold as given by the <B>-t</B> option.
The default is 0, meaning that there is no sensitivity testing,
all input spawns an event.
See the <B>-t</B> option also.
(see "STICK SENSITIVITY SETTINGS" below)
<DT><B>-t, --threshhold</B> <I>minimum-pressure</I><DD>
Used with gpm only and then only with recognized stick mice.
stick mice send a pressure value ranging from 0(no pressure) to
7(hard push). This sets the minimum required pressure for
input to be registered. Setting it to zero will cause realtime sticking,
which is usually too much action for X to keep up. (max rate i saw was
100 events a second!). Once input is registered, it is summed up per axis,
and then it must equal or exceed the sensitivity setting to pass as an input.
See the <B>-s</B> option also, for sensitivity.
<BR>
The default is 2, to avoid slight presses on the 90-degree direction of the
intended while still getting to the intended direction. Setting this to 7 is
insane, because it requires the user to push as hard as possible everytime they
want something to happen! However it may not be so insane for people using
trackballs for input, as they may spin much faster per sample...
<BR>
(see "STICK SENSITIVITY SETTINGS" below)
<DT><B>-W, --wheel-fifo</B> <I>fifo</I><DD>
Use the gpm/jamd wheel fifo instead of XGrabMouse. See <B>GPM/JAMD WHEEL FIFO METHOD</B>
section. This method allows only one X display to be used. This is required
for the gpm method to work. This method only works with the imwheel version
of gpm and with jamd. To find out if you are running the imwheel version of gpm
use the following command and look for "(imwheel)" in the title:
<DL COMPACT><DT><DD>
<DL COMPACT><DT><DD>
<PRE>
gpm -v
</PRE>
</DL>
<I>fifo</I> names the named pipe (FIFO) created by gpm. It defaults to
"/dev/gpmwheel" (for <B>--wheel-fifo</B> only). The FIFO must exist before
running imwheel in this mode. using jamd requires you to name the correct fifo
because it doesn't use /dev/gpmwheel, but rather one of the /dev/jam_imwheel:0.0
named fifos created by jamd's imwheel module.
<BR>
<B>@Exclude</B> commands in the rc file are unused in this mode.
</DL>
<DT><B>-X, --display</B> <I>display</I><DD>
Use XServer at a specified <I>display</I> in standard X form.
Using this option is usful for multiple displays in the X Window ZAxis Method.
<DT><B>-x, --transpose</B><DD>
<P>
This swaps the X and Y axis of movement for stick input from a wheel-fifo.
</DL>
<P>
<A NAME="lbAF"> </A>
<H2>X WINDOWS ZAXIS METHOD</H2>
This method is the only method that works with multiple X displays, using
multiple imwheels. Use multiple imwheels by either setting the DISPLAY
environment variable before running each imwheel, or use the <B>-X</B> or
<B>--display</B> options to specify a different display for each imwheel.
Running multiple imwheels on the same display is not recommended, but is
allowed, and may cause strange things to happen while using the stick or wheel.
<P>
Edit the XF86Config and add/edit the following lines in the
"Pointer"(XFree86 3.3) or
"InputDevice"(XFree86 4.x)
section:
<P>
1 axis (vertical wheel):
<DL COMPACT><DT><DD>
<PRE>
(XFree86 3.3)
<DL COMPACT><DT><DD>Buttons 5
ZAxisMapping 4 5
</DL>
(XFree86 4.x)
<DL COMPACT><DT><DD>Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
</DL>
</PRE>
</DL>
<P>
2 axis (1 stick or 2 perpendicular wheels):
<DL COMPACT><DT><DD>
<PRE>
(XFree86 3.3)
<DL COMPACT><DT><DD>Buttons 7
ZAxisMapping 4 5 6 7
</DL>
(XFree86 4.x)
<DL COMPACT><DT><DD>Option "Buttons" "7"
Option "ZAxisMapping" "4 5 6 7"
</DL>
</PRE>
</DL>
<P>
The Buttons option may be greater than stated above if you have thumb
buttons, or other extras that qualify as buttons.
<P>
Make sure your Protocol is set to either "IMPS/2" for a PS/2 mouse
or for serial mice set it to "IntelliMouse" or "Auto".
This is for IntelliMouse compatible mice, other protocols may be required for other mice.
Then while running X Windows run imwheel <I>without</I> the <B>--wheel-fifo</B>
or <B>-W</B> options.
<P>
<B>NOTE</B>
<BR>
The <B>@Exclude</B> command must be used for clients that either use the ZAxis
for themselves and have no keyboard translations to cause the same desired
effect. The <B>@Exclude</B> command must also be added for any client requiring
mouse and/or mouse button grabs and that don't specify specific buttons to
grab. These clients fail when they try to grab the mouse because the buttons 4
and 5 are already grabbed by imwheel. XV is an example of a client that
requires these types of grabs to succeed. KDE clients use the ZAxis for their
own purposes. The supplied imwheelrc included and exclusion for XV already.
See the IMWheelRC section for more information.
<P>
Also pid files are not used for this method. Thus the <B>-p</B> and <B>--pid</B>
options have no effect, and are ignored.
<P>
<A NAME="lbAG"> </A>
<H2>GPM/JAMD WHEEL FIFO METHOD</H2>
This method is REQUIRED for any X Windows server without wheel
mouse support built in. This method will currently support mice as supported
through gpm or jamd.
<P>
In the Pointer section of your XF86Config (or the equivalent configuration file
for your X server) change your mouse Protocol to be "MouseSystems"
(or the equivelant...), also change the Device file that the mouse is read from
to "/dev/gpmdata", then restart X Windows if it is running.
jamd will replicate to /dev/jam_ps2:0.0 or some other devices as well,
make sure to use the right X Mouse protocol in this case,
like the jamd_ps2 device is X mouse protocol PS/2,
and the jamd_imps2 device is X mouse protocol IMPS/2.
<P>
Before starting X Windows (re)start gpm with the <B>-W</B> option. Make sure
you are using a supported wheel or stick mouse as stated in the gpm man page.
<P>
After starting X Windows run imwheel as follows adding options as desired:
<P>
for gpm you can use the following option to imwheel
<P>
<B>--wheel-fifo</B>
<P>
jamd requires you specify the fifo name as one of the /dev/jamd_imwheel:0.0
named fifos. Run
<P>
<B>ls -al /dev/jam_imwheel*</B>
<P>
to see what is available.
In this example I would use
<P>
<B>-W /dev/jam_imwheel:0.0</B>
<P>
as the option to imwheel.
<P>
I usually add the <B>-k</B> option to kill off any old imwheel processes left
over, as imwheel doesn't exit with the server, but rather it will only die if a
wheel or stick action occurs when an X server is not connected, such as when X
is dead or the DISPLAY environment variable is setup wrong, or the <B>-X</B> or
<B>--display</B> variables connected imwheel to a now defunct X server.
<P>
gpm or jamd, and/or imwheel can be restarted at any time, imwheel can sense when
gpm of jamd is not there, and gpm nor jamd doesn't give a hoot about imwheel
being up or not.
<P>
<B>NOTE</B>
<BR>
The @Exclude command has no bearing in this method, it is ignored. No Focus
change events are received in this method. Thus KDE and other clients that
support X based wheel events through the ZAxis are not going to work except
through normal imwheel keypress translation of wheel and stick actions.
<BR>
XV will function fine, as will any client that grabs the mouse and/or mouse
buttons. This mode doesn't use any grabs to function.
<P>
<A NAME="lbAH"> </A>
<H2>STICK SENSITIVITY SETTINGS</H2>
The <B>-s</B> and <B>-t</B> options specify a sensitivity and threshhold.
each movement of a stick, or trackball, must equal or exceed the threshhold to
be added to the respective axis sum. In other words if you puch the stick up
hard enough to exceed the threshhold then the Y axis sum would be increased by
however much you pressed up.
<P>
Next the summed X and Y axis movement is each compared to the sensitivity setting.
If the sensitivity setting is equalled or exceeded, then one imwheel event is spawned,
thus after pressing up for a bit, the Y sum exceeds the sensitivity and a wheel up
event is interpreted by imwheel into an action such as a PageUp key.
<P>
The sensitivity therefore must be greater than the threshhold for it to have any
bearing on the input. Pseudo code such as the following may explain:
<DL COMPACT><DT><DD>
<PRE>
if(input >= threshhold)
<DL COMPACT><DT><DD>sum = sum + input
</DL>
if(sum >= sensitivity) {
<DL COMPACT><DT><DD>do an imwheel action
sum = 0
</DL>
}
</PRE>
</DL>
<A NAME="lbAI"> </A>
<H2>IMWHEELRC</H2>
IMWheel uses, optionally, two configuration files. One called /etc/X11/imwheelrc,
which is used for everybody. The other is $HOME/.imwheelrc, used only for one
user. One is supplied and should have been installed automatically in /etc
if not also in the installing users $HOME as well. All whitespace is ignored
in the files except for within the window names' double quotes.
<P>
The configuration file consists of window names and event translations and/or
imwheel commands that begin with an `@' (at) symbol. Each window name starts a
section that is it's configuration. The window names a priortized as first
come first served, so more generic matches should always occur later in the
configuration file.
<P>
Comments are started with a pound (#) and extend to the end of the line.
<P>
<A NAME="lbAJ"> </A>
<H2>IMWHEELRC WINDOW SECTION HEADERS</H2>
Window name section headers are actually one of four things:
<P>
<PRE>
Window Title
Window Class Name
Window Resource Name
(null) which matches "\(null\)" in the imwheelrc
</PRE>
<P>
Most of these are probe-able using fvwm2's FvwmIdent module or the configurator
(see the <B>CONFIGURATION HELPER</B> section). Other window managers may have their
own method of identifying windows' attributes.
<BR>
Each window name is matched as a regex string. Thus any window is matched using
the regex pattern ".*" as a window name. This pattern should be the last
section in your configuration file, or it will override the other window
configurations in the file for matched wheel/stick actions.
<BR>
There is one special header noted as "(null)" which matches windows that have a
null string in the three attributes. This makes it possible to assign actions
to even Quake3, which has no info for it's window. Just make sure that you
realize that the keys used should not be keys that may conflict with other
key actions in the game or application you are aiming to make work!
The included imwheelrc file has a "(null)" section included to demonstrate, and
it should work with Quake3.
<BR>
Each window/class/resource name <I>must</I> be enclosed in double quotes (") on a line by
itself.
<P>
Inside each window section is any number of translation definitions or commands.
Each translation definition or command must be on a line by itself. The window section doesn't have to be terminated, as it is terminated by either starting
another window section or the end of the configuration file.
<P>
<A NAME="lbAK"> </A>
<H2>IMWHEELRC TRANSLATION DEFINITIONS</H2>
Mouse wheel/stick translations each take up a line after a window section has
been started. Each argument is seperated by commas(,) whitespace is ignored.
KeySyms are used to specify the keyboard input and outputs. pipes (|) are used
to join multiple keys into one input/output.
The format is as follows:
<P>
<B>REQUIRED</B>
<BR>
The following arguments a required to make a minimum translation definition.
<DL COMPACT>
<DT><I>Key Modifiers Input</I><DD>
X KeySyms joined by pipes that indicate the required keys pressed when the
mouse action is made in order for this translation to be used. Alt, Meta,
Control, and Shift keys are typical modifiers, but are stated slightly different
than just `Shift' but rather `Shift_L' or `Shift_R', differentiating between
left and right shift keys. See the KeySyms section for more.
<P>
`<B>None</B>' is a special KeySym used by imwheel, it is used to indicate no
modifiers. A blank entry is also acceptable in this case, but less descriptive
of what is going on! If `<B>None</B>' is used then there can be no modifiers
in use during the wheel action. If the field is blank then <I>any</I> modifier
will match, so put these last in their window section.
<DT><I>Mouse Action Input</I><DD>
This is the input from the mouse wheel or stick. It is one of the following and
<I>only</I> one:
<P>
<PRE>
Up
Down
Left
Right
Thumb
</PRE>
<P>
These are self explanatory. If you have trouble use the configurator!
<DT><I>Key Action Output</I><DD>
Out KeySyms are placed here. See KeySyms section for more on all available
KeySyms. Join KeySyms using pipes. Output keys are pressed in order and
released, in reverse order, only after all have been pressed, likely making
them all combined as in `Control_L|C' which would be a `^C' (control-c)
keypress.
</DL>
<P>
<B>OPTIONAL</B>
<BR>
The following options are optional, but to use one you must fill in all the
preceding arguments.
<DL COMPACT>
<DT><I>Output Repetitions</I><DD>
How many times should the Output KeySyms be pressed in a row.
<P>
Default is 1.
<DT><I>Delay Before KeyUp Event</I><DD>
How long in microseconds until we release all the Output KeySyms in one Output
Repetition.
<P>
Default is 0.
<DT><I>Delay Before Next KeyPress Event</I><DD>
How long in microseconds until we press the next the Output KeySyms.
Ths delay occurs after the Output KeySyms are released.
<P>
Default is 0.
</DL>
<P>
<A NAME="lbAL"> </A>
<H2>IMWHEELRC COMMANDS</H2>
Commands start with the `@' character. Commands are as follows:
<DL COMPACT>
<DT><B>@Exclude</B><DD>
Exclude this window from imwheel grabing mouse events. imwheel will ungrab
the mouse when these windows are entered and not regrab the mouse until focus
is changed to a non-excluded window. This allows the ZAxis button events to
pass through normally and mouse grabs to succeed.
<BR>
XV and KDE clients need this for the X Windows Method.
<BR>
This command has no effect in the GPM Method. The mouse isn't grabbed, nor are
ZAxis button events created by the server.
<DT><B>@Repeat</B><DD>
Repeat the mouse button to the window. This cause a mouse button to be generated
in the current window. It does not use XSendEvent so the mouse button presses
are indistiguishable from the real thing. This mode is not compatible with the
XGrabButtons method of imwheel, otherwise listed as the ZAxis Method in this manpage.
<BR>
Motions are mapped as follows:
<DL COMPACT><DT><DD>
<DL COMPACT><DT><DD>
<PRE>
Up is button 4
Down is button 5
Left is button 6
Right is button 7
Thumb1 is button 8
Thumb2 is button 9
</PRE>
</DL>
</DL>
<DT><B>@Priority</B>=<I>priority</I><DD>
Using this is allowed in each window/class/resource section.
Higher <I>priority</I> values take precedence over lower ones.
Equal priorities on sections make the imwheelrc file parsed from top to bottom
to find the first match.
Thus <B>@Priority</B> can be used to make the file search for matches out of order,
then you dont have to keep the entries in order if you so please.
the supplied imwheelrc file contains extensive comments and examples of the
<B>@Priority</B> function.
<BR>
The default <I>priority</I> for any new section is 0.
The last <B>@Priority</B> command in a section overrides all previous priorities
for that section. Thus each section has only one <I>priority</I> setting in the end.
Priorities are kept as an int, thus range from INT_MAX to INT_MIN.
(see /usr/include/limits.h for these values on your system)
</DL>
<P>
<A NAME="lbAM"> </A>
<H2>CONFIGURATION HELPER</H2>
IMWheel contains a semi-hidden configuration helper which can be brought up
by rolling/sticking up and down a few times in the root window of the X server.
Inside this window you can find out possible window names to use in your
imwheelrc file. Press on the mini-screen capture to grab another window,
including the root window (whole screen).
<P>
Mouse wheel and stick actions can be grabbed along with
active modifier keys on the keyboard. The mouse wheel/stick action is displayed
and the X KeySyms are displayed beneath it. All this information can be
directly entered into an imwheelrc as desired.
<P>
IMWheel can be restarted to read in a changed imwheelrc file or the
configurator can be canceled causing imwheel to resume oprations without
reading the configuration file. To restart imwheel execs itself as called by
the user in the first place but adding the <B>-R</B> option to indicate to
itself that this is a restarted imwheel. The <B>-R</B> is not for use by the
user, as it bypasses some configuration of imwheel.
<P>
<A NAME="lbAN"> </A>
<H2>KEYSYMS</H2>
The program expects combinations of keysyms to be used by using pipe(|)
characters to combine them together.
<P>
Example:
<DL COMPACT><DT><DD>
<PRE>
Alt_R|Shift_R
</PRE>
Means right alt <I>and</I> right shift together, not just either one or the
other! And not one after the other, they are both pressed at the same time
essentially.
</DL>
<P>
For FIFO users, it is possible to send a real mouse button event, using
the special <B>Button#</B> syntax. An imwheelrc keysym of Button1 would
send a real Mouse button 1 (left mouse button) event. Mouse4 is what you'd want
for a MouseWheelUp type event. Mouse5 is what you want to MouseWheelDown event.
Many applications will understand the meaning of mouse button 4 and 5, but most don't
go beyond that. So <I>Mouse6 and greater have no "standardized" meaning</I>. The Button# syntax
can be combined with regular keysyms, to send keys and mouse buttons at the same time.
<P>
Example:
<DL COMPACT><DT><DD>
<PRE>
Shift_L|Button4
- meaning left shift and wheel up.
Button5
- meaning wheel down.
</PRE>
</DL>
<P>
Other button to imwheel meaniful references:
<DL COMPACT><DT><DD>
<PRE>
KeySym IMWheel Input Real Mouse
------ ------------- ----------
Button1 (none) Left Mouse Button
Button2 (none) Middle Mouse Button
Button3 (none) Right Mouse Button
Button4 Up Mouse Wheel Up
Button5 Down Mouse Wheel Down
Button6 Left Mouse Wheel Left
Button7 Right Mouse Wheel Right
Button8 Thumb1 Side Mouse Button 1 (left/up)
Button9 Thumb2 Side Mouse Button 2 (right/down)
</DL>
Common Modifier Keysym names used in X:
Shift_L Shift_R
Control_L Control_R
Alt_L Alt_R
</PRE>
<P>
These are probably not currently assigned any keys, unless you <I>xmodmap</I> them in:
<P>
<PRE>
Meta_L Meta_R (Actually, Sun keyboards have this...)
Super_L Super_R
Hyper_L Hyper_R
</PRE>
<P>
And here's some that you may use, and they are <I>somewhere</I> on your keyboard:Here's where they were on my keyboard, again, this is not universal.
Use the <I>xev</I> program to test your own keys on your keyboard!
<P>
<PRE>
Caps_Lock = The Caps Lock key!
(This still turns on and off caps lock!)
Num_Lock = The Num Lock key!
(This is not good to use...
for the same reasons as Caps_Lock)
Multi_key = The Scroll Lock key!
(Go figure!)
Mode_switch = Right Alt...for me anyways.
(This mean I cannot use Alt_R)
</PRE>
<P>
The windows keys may not be assigned any KeySyms, but they will have numbers.
<I>xmodmap</I> can be used to assign them to a real KeySym.
<P>
To find keysym names for any keys available see the
<B>/usr/include/X11/keysymdef.h</B> file, and for any define in that file
remove the "XK_" for the usable KeySym name in the configuration file.
The path to this file may differ for you.
<P>
Remember, there's always the configurator.
And <B>xev</B> will also help here too!
<P>
<A NAME="lbAO"> </A>
<H2>WHEEL OR STICK AS MIDDLE BUTTON IN X</H2>
Configure the XF86Config without "Emulate3Buttons" and increase "Buttons" if it is 2
in the Ponter or InputDevice section. The wheel or stick will act as a real
middle button and the outer two buttons will act as separate buttons (1 and 3),
even when pressed together.
<P>
Of course if your wheel keeps clicking middle button while you're trying to use the
wheel you may want to activate the Emulate3Buttons option to disable the wheel button!
And donn't forget to reduce the Buttons argument to 2!
<P>
<A NAME="lbAP"> </A>
<H2>LEFTY BUTTON MAPPING IN X WINDOWS</H2>
For those of you lefties out there using method #1, the non-gpm method this
command may help you get the buttons set up correctly in XWindows for both
left handed and imwheel use.
<P>
<DL COMPACT><DT><DD>
<PRE>
xmodmap -e "pointer = 3 2 1 4 5"
<I>or</I>
xmodmap -e "pointer = 3 2 1 4 5 6 7"
<I>etc...</I>
xmodmap -e "pointer = 3 2 1 4 5 6 7 8 9"
NOTE: most of these are NOT going to work, because of all the limits in X.
</PRE>
</DL>
<P>
add more numbers to the end of this line if you have more buttons!
<P>
<A NAME="lbAQ"> </A>
<H2>BUGS</H2>
Of course...but most of the time it's just that you haven't read everything I've written here and in the files of the distribution itself. Even then, you may be giving up too easily. Keep trying, it's not that hard. I am always working on reducing strange behavior. This is still a beta, as indicated by the leading 0 in the version number.
<P>
<B>Real Bugs</B>
<P>
imwheel doesn't get along with itself on the same X display or using the same
gpmwheel FIFO. - This will always be your fault :-/
<P>
Stick mice are still a pain in the butt to use. - This is the manufacturer's fault.
Or X Windows fault, for not having a method to easily use such devices in all applications.
<P>
Keyboard focus isn't changed automatically to input keys into Window mouse is
over. This only occurs with Click-to-Focus type focus managment in window managers.
I use sloppy focus in fvwm2, which always works for me. - Whose fault <I>is</I> this?
(Switch focus modes and/or window managers, or try the <B>-f</B> option on imwheel)
<P>
Configuration file is not validated for correctness nicely...although it does
get preparsed before the main program starts, thus stopping you before you run
with an invalid configuration file. I just have never made a bad configuration
file, so I guess I'll have to try and do that to see what happens. Just don't
make any mistakes and you'll be fine. - This is my fault?! ;)
<P>
<A NAME="lbAR"> </A>
<H2>HOMEPAGE</H2>
<PRE>
<A HREF="http://jonatkins.org/imwheel">http://jonatkins.org/imwheel</A>
</PRE>
<P>
<P>
<A NAME="lbAS"> </A>
<H2>AUTHOR</H2>
Jonathan Atkins <<A HREF="mailto:jcatki@jonatkins.org">jcatki@jonatkins.org</A>>
<P>
<P>
<A NAME="lbAT"> </A>
<H2>FILES</H2>
<PRE>
$HOME/.imwheelrc
The users configuration file.
/etc/X11/imwheelrc
The global location for the configuration
file, it is always loaded. Overided by
the users configuration file.
/dev/gpmwheel
The default wheel FIFO from gpm, if used.
/dev/jam_imwheel:0.0 (or other numbers...)
A wheel FIFO from jamd, if used, must be specified.
jamd allows more than on FIFO, and thus allows more than
one instance of imwheel to be running on the same computer
when running imwheel on multiple displays
using the Wheel FIFO method.
/tmp/imwheel.pid
The public area for imwheel's pid file.
/var/run/imwheel.pid
The private area for imwheel's pid file.
</PRE>
<P>
<P>
<A NAME="lbAU"> </A>
<H2>SEE ALSO</H2>
<PRE>
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1+jamd">jamd</A>(1)</B>
Jon Atkins Mouse - a replacement/augmentation for/to gpm.
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1x+xwheel">xwheel</A>(1x)</B>
The new replacement for imwheel. Uses jamd instead of gpm or ZAxis.
(may not be available yet)
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1x+xdpyinfo">xdpyinfo</A>(1x)</B>
X Display information, including extensions.
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?8+gpm">gpm</A>(8)</B>
General Purpose Mouse, imwheel edition required.
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1x+FvwmIdent">FvwmIdent</A>(1x)</B>
FVWM2's Identify module, for probing windows.
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?7+regex">regex</A>(7)</B>
POSIX 1003.2 Regular Expressions.
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1x+xmodmap">xmodmap</A>(1x)</B>
Utility for modifying keymap & button mappings in X.
<B><A HREF="http://jcatki.dhs.org/cgi-bin/man2html.cgi?1x+xev">xev</A>(1x)</B>
Print contents of X events.
<B>/usr/include/X11/keysymdef.h</B>
X11 KeySym definitions.
<B>/usr/include/limits.h</B>
INT_MIN and INT_MAX definitions.
</PRE>
<P>
<HR>
<A NAME="index"> </A><H2>Index</H2>
<DL>
<DT><A HREF="#lbAB">NAME</A><DD>
<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT><A HREF="#lbAE">COMMAND LINE OPTIONS</A><DD>
<DT><A HREF="#lbAF">X WINDOWS ZAXIS METHOD</A><DD>
<DT><A HREF="#lbAG">GPM/JAMD WHEEL FIFO METHOD</A><DD>
<DT><A HREF="#lbAH">STICK SENSITIVITY SETTINGS</A><DD>
<DT><A HREF="#lbAI">IMWHEELRC</A><DD>
<DT><A HREF="#lbAJ">IMWHEELRC WINDOW SECTION HEADERS</A><DD>
<DT><A HREF="#lbAK">IMWHEELRC TRANSLATION DEFINITIONS</A><DD>
<DT><A HREF="#lbAL">IMWHEELRC COMMANDS</A><DD>
<DT><A HREF="#lbAM">CONFIGURATION HELPER</A><DD>
<DT><A HREF="#lbAN">KEYSYMS</A><DD>
<DT><A HREF="#lbAO">WHEEL OR STICK AS MIDDLE BUTTON IN X</A><DD>
<DT><A HREF="#lbAP">LEFTY BUTTON MAPPING IN X WINDOWS</A><DD>
<DT><A HREF="#lbAQ">BUGS</A><DD>
<DT><A HREF="#lbAR">HOMEPAGE</A><DD>
<DT><A HREF="#lbAS">AUTHOR</A><DD>
<DT><A HREF="#lbAT">FILES</A><DD>
<DT><A HREF="#lbAU">SEE ALSO</A><DD>
</DL>
</BODY>
</HTML>
|