View previous topic :: View next topic |
Author |
Message |
meowsqueak Veteran
Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Mon Oct 20, 2003 4:17 am Post subject: X/Mouse Extra Buttons HOWTO |
|
|
EDIT: This post formed the basis for the following Gentoo Wiki article: http://gentoo-wiki.com/HOWTO_Advanced_Mouse
Got one of those Microsoft Explorer/Intellimouse mice with the extra buttons? Ever wondered how to get those buttons working in X? Wonder no more...
(This has been tested with a Microsoft Intellimouse Optical and should work with the Explorer too. I would like people to try this out for themselves please and report back on what other mice work or don't work with this method).
A typical configuration for such mice often looks like this [XF86Config]:
Code: | Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "ImPS/2"
Option "Device" "/dev/mouse"
Option "ZAxisMapping" "4 5"
EndSection |
This typically gives you the usual three-button X mouse and a scroll wheel. On my Intellimouse Optical I have two extra buttons, one on each side. I call these 'side buttons' in this HOWTO. With the above configuration, they do nothing, and don't even generate X events.
If you haven't met it already, let me introduce you to a program called 'xev'. Fire it up, move the mouse over the window that pops up, and try hitting a few keys, clicking buttons, etc. If you click the side buttons and nothing happens, read on.
First, you need to change your XF86Config file to use a newer protocol called ExplorerPS/2. I need some input here from people with USB mice - what can you use for USB? You also need to tell the mouse driver that there are now seven buttons in total (left, middle, right, wheelup, wheeldown, side-left, side-right) and this is important too - map the ZAxisMapping to buttons six and seven, NOT four and five:
Code: | Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/mouse"
Option "Buttons" "7"
Option "ZAxisMapping" "6 7"
EndSection |
Ok, now restart your X server and you should be able to get something happening with xev and those side buttons. You'll probably also notice that the side buttons perform the same functions that the mouse wheel used to. This is because of the new ZAxisMapping.
[side note - you might think you could leave ZAxisMapping set to "4 5" but for some reason this doesn't work]
Now we need to fix the button mapping. The best way to do this is to invoke this command when X starts somewhere (e.g. in your .xinitrc):
Code: | xmodmap -e "pointer = 1 2 3 6 7 4 5" |
Note the order of the numbers - we've swapped 6 and 7 with 4 and 5. After you run this, you'll find your mouse wheel works properly again. Now, returning to xev, you'll see that the side buttons now produce events. So we've got somewhere. Good.
Now emerge a useful little program called 'imwheel'. Create a file called ~/.imwheelrc and put this into it:
Code: | ".*"
None, Up, Alt_L|Left
None, Down, Alt_L|Right |
If you read the man page for imwheel, you'll see that ".*" matches any window (although for me it doesn't seem to match the root window, don't know why - anyone know?) and the next two lines instruct imwheel on what to do when the buttons are pressed. Button 6 is 'down' and button 7 is 'up' - this doesn't relate to the action of pressing and releasing a button, it is actually because X maps these buttons onto a sort of virtual mousewheel or 'joystick'.
You can replace Alt_L|Left etc with whatever you want. These settings invoke forward/backward browsing in mozilla.
Now, the final step is to fire up the imwheel program:
Code: | $ imwheel -k -b "67" |
Or run it straight after your xmodmap command wherever that may be...
You can do some pretty fancy stuff with this. I have a slightly enhanced .imwheelrc:
Code: | "mozilla*"
None, Up, Alt_L|Left
None, Down, Alt_L|Right
"XTerm"
None, Up, Alt_L|Control_L|S
None, Down, Alt_L|Control_L|T
# this should be last
".*"
None, Up, Alt_L|Control_L|P
None, Down, Alt_L|Control_L|O |
Just remember to put the ".*" entry LAST since imwheel stops looking once it matches an entry.
Those longish Alt_L|Control_L|... sequences match settings in my fluxbox/keys file, which do various things such as open new xterms, ffwd xmms, or open the selected URL in Mozilla.
If you've read this far, hopefully everything has worked and you now have all the buttons on your mouse working. Please contribute to this thread if you have further details, or wish to point out errors or inconsistencies.
And as an added bonus, here's a nice little script you can bind to one of your mouse buttons with your window manager. It opens the currently selected text (usually a URL) in a new mozilla tab:
Code: | #!/bin/bash
# opens a new tab at selected URL
if mozilla -remote 'ping()' \;
then
mozilla -remote "openURL(`xclip -o`, new-tab)"
else
mozilla `xclip -o`
fi |
Happy mousing!
--
meowsqueak
Last edited by meowsqueak on Mon Jul 03, 2006 10:58 pm; edited 1 time in total |
|
Back to top |
|
|
tomchuk Guru
Joined: 23 Mar 2003 Posts: 317 Location: Brooklyn, NY
|
Posted: Mon Oct 20, 2003 5:43 am Post subject: |
|
|
You also might have to add
Code: |
"(null)"
None, Up, Alt_L|Left
None, Down, Alt_L|Right
|
to you ~/.imwheelrc to make this work with some wm's and some apps - Gnome/Metacity being the biggie.
And you'll either have to chmod +s /usr/bin/imwheel or use the -p option when starting it or it'll complain about the pid file.
For some troubleshooting use imwheel -D which will report a whole bunch of stuff that you can use to nail down a problem:
Code: |
thomas@dualie $ imwheel -D
PidFile=/tmp/imwheel.pid
INFO: imwheel started (pid=10363)
display=:0.0
getRC:filename="/home/thomas/.imwheelrc"
uid=1000 euid=0
gid=100 egid=0
/home/thomas/.imwheelrc: No such file or directory
/home/thomas/.imwheelrc: file permissions for your REAL user do not allow you to read it!
getRC:filename="/etc/X11/imwheelrc"
uid=1000 euid=0
gid=100 egid=0
/etc/X11/imwheelrc: stats.st_uid=0 stats.st_gid=0 stats.st_mode=1ed
getRC:pre:line:
"(null)"
getRC:win:line:""(null)""
id="(null)"
getRC:pre:line:
None, Up, Alt_L|Left
getRC:mod:line:"None,Up,Alt_L|Left"
Priority: 0
Keysym mask: "None"
0) "None" "(null)"
Button: "Up"
=4
Keysyms Out: "Alt_L|Left"
0) "Alt_L" "Left"
1) "Left" "(null)"
getRC:pre:line:
None, Down, Alt_L|Right
getRC:mod:line:"None,Down,Alt_L|Right"
Priority: 0
Keysym mask: "None"
0) "None" "(null)"
Button: "Down"
=5
Keysyms Out: "Alt_L|Right"
0) "Alt_L" "Right"
1) "Right" "(null)"
getRC:pre:line:
getRC:pre:line:
".*"
getRC:win:line:"".*""
id=".*"
getRC:pre:line:
None, Up, Alt_L|Left
getRC:mod:line:"None,Up,Alt_L|Left"
Priority: 0
Keysym mask: "None"
0) "None" "(null)"
Button: "Up"
=4
Keysyms Out: "Alt_L|Left"
0) "Alt_L" "Left"
1) "Left" "(null)"
getRC:pre:line:
None, Down, Alt_L|Right
getRC:mod:line:"None,Down,Alt_L|Right"
Priority: 0
Keysym mask: "None"
0) "None" "(null)"
Button: "Down"
=5
Keysyms Out: "Alt_L|Right"
0) "Alt_L" "Right"
1) "Right" "(null)"
WinAction (0x8056f50):
Priority : 0
Window Regex : "(null)"
Keysyms Mask (0x8056e38):
"None"
Button : 4
Keysyms Out (0x8056e58) :
"Alt_L"
"Left"
Reps: 1
Rep Delay: 0
Key Up Delay: 0
WinAction (0x8056f70):
Priority : 0
Window Regex : "(null)"
Keysyms Mask (0x8056f00):
"None"
Button : 5
Keysyms Out (0x8056f20) :
"Alt_L"
"Right"
Reps: 1
Rep Delay: 0
Key Up Delay: 0
WinAction (0x8056f90):
Priority : 0
Window Regex : ".*"
Keysyms Mask (0x8056e98):
"None"
Button : 4
Keysyms Out (0x8056eb8) :
"Alt_L"
"Left"
Reps: 1
Rep Delay: 0
Key Up Delay: 0
WinAction (0x8056fb0):
Priority : 0
Window Regex : ".*"
Keysyms Mask (0x8057008):
"None"
Button : 5
Keysyms Out (0x8057028) :
"Alt_L"
"Right"
Reps: 1
Rep Delay: 0
Key Up Delay: 0
Grab buttons!
Grabbing Button 4...
Grabbing Button 5...
Grabbing Button 6...
Grabbing Button 7...
Grabbing Button 8...
Grabbing Button 9...
starting loop...
|
xmodmap -pp can also help to make sure that your buttons are being mapped correctly:
Code: |
root@dualie # xmodmap -pp
There are 7 pointer buttons defined.
Physical Button
Button Code
1 1
2 2
3 3
4 6
5 7
6 4
7 5
|
|
|
Back to top |
|
|
ecatmur Advocate
Joined: 20 Oct 2003 Posts: 3595 Location: Edinburgh
|
Posted: Wed Oct 22, 2003 5:15 am Post subject: |
|
|
Good stuff. I've decided to map the side buttons to buttons 8 and 9 - I only have one scroll wheel but this way I can tell imwheel to detect them as 'Thumb1' and 'Thumb2'. (Plus it leaves buttons 6 and 7 open for when I do get a horizontal scrollwheel...)
So, I use Code: | Option "Buttons" "9"
Option "ZAxisMapping" "6 7 8 9" | in XF86Config, and use an xmodmap of Code: | pointer = 1 2 3 8 9 4 5 6 7 |
Note that you can dump that line in /etc/X11/Xmodmap and symlink to that from /etc/X11/xinit/.Xmodmap, and the X startup scripts will execute it automatically (a Gentoo feature, I think).
Also, I use Code: | # Start imwheel
if [ -x "`which imwheel`" ]; then
imwheel -b 000089 -f
fi | to start imwheel - I've put it in /etc/X11/xinit/xinitrc and in /etc/X11/gdm/gnomerc. "-b 000089" means to grab only buttons 8 and 9, and -f seems to work best with the Metacity window manager.
Finally, here's some of my imwheelrc: Code: | "^XMMS_Player$"
None, Thumb1, Left # 5 sec back
None, Thumb2, Right # 5 sec fwd
"^XMMS_Playlist$"
None, Thumb1, Z # Previous song
None, Thumb2, B # Next song
"^XMMS_Equalizer$"
None, Thumb1, Left # Balance left
None, Thumb2, Right # Balance right
"^Gvim$"
#None, Thumb1, Control_L|Shift_L|W, 2 # Previous window - doesn't work
None, Thumb1, Control_L|W|K # Window above
None, Thumb2, Control_L|W, 2 # Next window
"^Epiphany-bin$"
None, Thumb1, Alt_L|Left # Go back
None, Thumb2, Alt_L|Right # Go forward
Shift_L, Thumb1, Control_L|Page_Up # Previous tab
Shift_L, Thumb2, Control_L|Page_Down # Next tab
"^GV$"
None, Thumb1, Page_Up # Previous page
None, Thumb2, Page_Down # Next page
".*"
@Priority=-1000
@Exclude
@Repeat
"\(null\)"
@Priority=-1000
@Exclude
@Repeat | The last two blocks prevent the imwheel defaults being used on unmatched windows, just in case there are any apps out there that know what to do with buttons 8 and 9... Oh, and - before I forget - thanks!
Last edited by ecatmur on Wed Oct 22, 2003 12:32 pm; edited 1 time in total |
|
Back to top |
|
|
nico-- n00b
Joined: 29 Jul 2002 Posts: 59
|
Posted: Wed Oct 22, 2003 5:23 am Post subject: |
|
|
Would this method also work for mice with even more buttons? Like those new ones that have 'web' buttons on them. _________________ Quidquid latine dictum sit, altum viditur. |
|
Back to top |
|
|
ecatmur Advocate
Joined: 20 Oct 2003 Posts: 3595 Location: Edinburgh
|
Posted: Wed Oct 22, 2003 5:30 am Post subject: |
|
|
Maybe someone will correct me, but I can't see any way to use more than 9 buttons in total with imwheel and xmodmap. Might be time for someone to make a patch - I probably would if I had such a mouse.
By the way, how do they fit more than 9 logical buttons onto a mouse anyway? What does the Windows software do with the actions? Can you link to a product page? |
|
Back to top |
|
|
meowsqueak Veteran
Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Wed Oct 22, 2003 5:42 am Post subject: |
|
|
No problem.
Do you know how to match the root window btw? I'd love to have my buttons work on the root window - but imwheel doesn't match it with ".*" - is there a special ID for it? |
|
Back to top |
|
|
ecatmur Advocate
Joined: 20 Oct 2003 Posts: 3595 Location: Edinburgh
|
Posted: Wed Oct 22, 2003 12:00 pm Post subject: |
|
|
Sorry, I don't - xprop -root doesn't give a window name or class. The imwheel manpage mentions the Window Resource Name - I've forgotten what that is for the root window though. Alternatively you could match on "\(null\)" I guess, and hope it doesn't match any other windows. |
|
Back to top |
|
|
meowsqueak Veteran
Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Wed Oct 22, 2003 7:20 pm Post subject: |
|
|
Unfortunately, it seems neither "(null)" or "\(null\)" match the root window. When I used imwheel -D, it seems that the last window that had focus is checked when clicking on the root window - I wonder if that's because the root window is never actually selected in fluxbox. |
|
Back to top |
|
|
ecatmur Advocate
Joined: 20 Oct 2003 Posts: 3595 Location: Edinburgh
|
Posted: Fri Oct 24, 2003 1:47 am Post subject: |
|
|
Eh, that sucks. (You could always I guess use a desktop program without anything on it...) |
|
Back to top |
|
|
marienZ Retired Dev
Joined: 02 Jul 2003 Posts: 30 Location: the Netherlands
|
Posted: Fri Oct 24, 2003 10:59 am Post subject: |
|
|
Thanks, now I just have to figure out what to do with the extra button...
I'm using a logitech mx300, which has just one extra button, and your howto works just fine. I think it's a bit odd I have to use the ExplorerPS/2 driver for this mouse, but what the heck, it works (apparently, logitech and microsoft are using the same protocol here, or the linux usb hid driver is, i'm not sure). |
|
Back to top |
|
|
nico-- n00b
Joined: 29 Jul 2002 Posts: 59
|
Posted: Sat Oct 25, 2003 10:45 pm Post subject: |
|
|
ecatmur wrote: | Maybe someone will correct me, but I can't see any way to use more than 9 buttons in total with imwheel and xmodmap. Might be time for someone to make a patch - I probably would if I had such a mouse.
By the way, how do they fit more than 9 logical buttons onto a mouse anyway? What does the Windows software do with the actions? Can you link to a product page? |
Here is one mouse with more than 9... two buttons + the wheel (3) + the two thumb buttons + the three buttons near the wheel. _________________ Quidquid latine dictum sit, altum viditur. |
|
Back to top |
|
|
greenbob n00b
Joined: 24 Jun 2003 Posts: 48 Location: Charlotte, NC
|
Posted: Sun Oct 26, 2003 5:42 pm Post subject: Wheel works but side buttons don't |
|
|
I have followed all the instructions I can find but am still unable to get my side buttons to work.
The wheel works fine in mozilla but the side buttons only scroll up in mozilla
I use startx to start gnome, and placed these lines in /etc/X11/Sessions/Gnome:
Code: | xmodmap -e "pointer = 1 2 3 6 7 4 5"
imwheel -k -b 67 |
my .imwheelrc looks like this:
Code: | "mozilla*"
None, Up, Alt_L|Left
None, Down, Alt_L|Right
"XTerm"
None, Up, Alt_L|Control_L|S
None, Down, Alt_L|Control_L|T
# this should be last
".*"
None, Up, Alt_L|Control_L|P
None, Down, Alt_L|Control_L|O
|
and my XF86Config looks like this:
Code: | Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/input/mice"
Option "Buttons" "7"
Option "ZAxisMapping" "6 7" |
|
|
Back to top |
|
|
tomchuk Guru
Joined: 23 Mar 2003 Posts: 317 Location: Brooklyn, NY
|
Posted: Sun Oct 26, 2003 5:52 pm Post subject: |
|
|
The window title in quotes in the imwheelrc file is evaluated as a RegEx. So when you say "mozilla", what imwheel is doing is matching to window titles that are "mozilla" and "mozilla" only. If you want to match a window title that has mozilla in it, use "^<window name>$" as in ecatmur's example. So for mozilla it would be "^mozilla-bin$" as /usr/bin/mozilla is just a script to run /usr/lib/mozilla/mozilla-bin. Use ps to check for what is actually running. ie. xterm is not "Xterm", but "xterm". So to match all xterm windows you'd use "^xterm$"
Also, when specifying buttons with the -b option with imwheel, the should be in quotes, like "67" instead of just 67
Make those 2 changes and everything should be working for you. |
|
Back to top |
|
|
greenbob n00b
Joined: 24 Jun 2003 Posts: 48 Location: Charlotte, NC
|
Posted: Sun Oct 26, 2003 8:40 pm Post subject: Working Now, How to scroll faster? |
|
|
I followed the instructions exactly and now have the mouse working correctly, however, I was wondering, is there any way to speed up the scrolling speed of the mouse? |
|
Back to top |
|
|
tomchuk Guru
Joined: 23 Mar 2003 Posts: 317 Location: Brooklyn, NY
|
Posted: Sun Oct 26, 2003 9:11 pm Post subject: |
|
|
I believe scrolling behavior is managed by the window manager. For instance in KDE (kwin) you can change the options in control center -> peripherals -> mouse -> advanced -> "mouse wheel scrolls by".
But there is nothing stopping you from using imwheel to map buttons 4 and 5 (your wheel) to PgUp and PgDn if you want a little more scroll. |
|
Back to top |
|
|
RedBeard0531 Guru
Joined: 21 Sep 2002 Posts: 415 Location: maryland
|
Posted: Mon Oct 27, 2003 1:40 am Post subject: |
|
|
Why arnt apps writen to natively take advantage of these buttons, as opposed to such (IMO) dirty hacks. I realize that UNIX traditionaly supported 3 buttons, but come on! They were able to allow for the wheel after all. These are not a passing tchnology "fad". I think that linux devs need to get with the times, instead of sticking to old standerds. _________________ OH MY GOD! Kenny just killed Kenny!
That Basterd! |
|
Back to top |
|
|
meowsqueak Veteran
Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Mon Oct 27, 2003 7:42 pm Post subject: |
|
|
Mouse handling in X has nothing to do with 'UNIX'.
X has the concept of 'events' (as does Windows) and a control heirarchy - peripherals such as your mouse and keyboard generate events that are passed down the heirarchy in different ways. First, the input stimulus received by the kernel (via a driver) and is passed to user-space and converted to an X event by an X input driver. Then this event is passed up to an application. This application may be a window manager, an app like something like Mozilla, or it may be something in a slightly different role, like imwheel.
When you consider that these extra buttons do NOT work in Windows by default (you need a special driver installed, which recently is there by default I think, but it wasn't always - I'm thinking of that scroll feature) then it's not so bad to have a separate program manage these events. It provides far more flexibility, as well as reducing the amount of work a particular developer has to go through to make his app work with every possible button event. Consider that button X on one mouse might make sense as a 'Browser Forward' instruction but on another it might generate the mousewheel-down event.
I agree it could be better - most of the really nifty and powerful things you can do in *nix are the result of similar 'ugly hacks'. You can't even begin to do the same sort of stuff in Windows without writing your own mouse hook handler - and that is ugly! But I know what you're saying - emulating keyboard presses isn't exactly elegant.
But if it works... then what's the problem? |
|
Back to top |
|
|
ck42 l33t
Joined: 31 Jul 2003 Posts: 789
|
Posted: Thu Oct 30, 2003 8:50 pm Post subject: |
|
|
Still trying to figure out how to make my side (thumb) button do something like minimize a window (my fav. for the thumb button in windoze).
Is this even possible? Can you specify actions like this? |
|
Back to top |
|
|
meowsqueak Veteran
Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Thu Oct 30, 2003 10:56 pm Post subject: |
|
|
imwheel only sends keyboard 'events', but if you configure 'minimise window' to some key combo in your window manager, then yes, it's possible.
In time, you'll come to realise that anything is possible in Linux, however the required time and effort to implement certain things is unbounded... Unless you want to reverse engineer certain other operating systems, you can argue that certain things are impossible with those. |
|
Back to top |
|
|
tommythecat n00b
Joined: 31 Oct 2003 Posts: 1 Location: Pittsburgh PA
|
Posted: Fri Oct 31, 2003 5:59 pm Post subject: |
|
|
Hey thanks for the guide. But I have a very newbish question
First:
Im a complete and total linux newb just trying to get my feet wet.
Second:
I am running redhat 9
I was pointed to this link by a friend because I am trying to get all of my mouse buttons to work.
I went through your instuctions and everything seems to be working fine up to getting the line: xmodmap -e "pointer = 1 2 3 6 7 4 5" to run automatically at start up.
Everything works great if I run that line from a terminal each time I boot, but I can't seem to get it to run automatically, so I figured that before i mess things up fumbling around with things I know nothing about I should probably come here and ask the experts. Can anyone here give me specific (remember im a complete newb to linux) instructions on how to get that line to run automatically each time I satrt X-windows?
Any help will be greatly apreciated.
Thank you. |
|
Back to top |
|
|
ecatmur Advocate
Joined: 20 Oct 2003 Posts: 3595 Location: Edinburgh
|
Posted: Sat Nov 01, 2003 12:33 am Post subject: |
|
|
Sorry, but the correct way to get xmodmap to swap the buttons will likely differ between distros. You would be better off asking that question in a Red Hat support forum or a general Linux forum. |
|
Back to top |
|
|
sarumont Tux's lil' helper
Joined: 31 Oct 2002 Posts: 94 Location: /dev/urandom
|
Posted: Sat Nov 01, 2003 5:09 pm Post subject: |
|
|
I have an Intellimouse Trackball Explorer (7 buttons). The wheel is working and the two extra buttons are working, but for some reason Mozilla Firebird doesn't go back and forward with my settings:
Code: | "konsole"
None, Up, Shift_L|Left
None, Down, Shift_L|Right
".*"
None, Up, Alt_L|Left
None, Down, Alt_L|Right
|
And under the "Go" menu it says that Alt+Left/Right will produce Back/Forward...and using the actual physical keys will do that. Anyone know why this isn't working with the buttons on my trackball? _________________ ~Sarumont
"Time is an illusion. Lunchtime doubly so." |
|
Back to top |
|
|
greenbob n00b
Joined: 24 Jun 2003 Posts: 48 Location: Charlotte, NC
|
Posted: Sat Nov 08, 2003 2:36 am Post subject: Scrolling within inner boxes |
|
|
Is there a way to get the scroll wheel to scroll withing boxes or frames on a webpage, (similar to in windows) rather than always scrolling the entire page? |
|
Back to top |
|
|
genoob n00b
Joined: 02 Nov 2003 Posts: 8
|
Posted: Sun Nov 09, 2003 1:30 am Post subject: |
|
|
To get the side buttons working in xfce4, you need to make a little script (and set it as executable) in your ~/Desktop/Autostart/ directory:
Code: |
#!/bin/sh
xmodmap -e "pointer = 1 2 3 6 7 4 5" &
imwheel -k -b "67" -p
|
The rest of the settings for the imwheelrc and XFConfig files are the same as explained already. |
|
Back to top |
|
|
DeepThoughts n00b
Joined: 02 Nov 2003 Posts: 43 Location: The Northern Part of Sweden (Piteå)
|
Posted: Sun Nov 09, 2003 4:40 pm Post subject: |
|
|
Hi!
Im very new to Linux (1½ week) and I can't get this to work... I can do it manualy but I can't get it to work automaticly.
My problems are that I don't seem to have an .xinitrc file and I don't know how to execute 'xmodmap -e "pointer = 1 2 3 6 7 4 5"' trough .xinitrc or any other file...
Hope this makes sense...
I'm running kernel 2.4.20-r8 and Gnome 2.4
//Stefan |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|