Computer Mice
|
! Note !
More notes and images on computer mice
that are suitable for fast-and-easy text paste
editing operations may be added
--- if/when I re-visit this page.
INTRODUCTION: In the 1999 to 2005 timeframe (pre-retirement), I was working on Silicon Graphics Unix workstations that were equipped with computer mice with a middle-mouse-button. I used that middle-mouse-button hundreds of times per day to paste text into code (or documents) in a text editor window --- after selecting text from another window with a 'swipe' of the left-mouse-button. After my retirement started on 2005 January 01, I was working on home computers, and at that time the 'scroll-wheel' --- in the place of a 'middle-mouse-button' --- had become popular on computer mice for 'personal computers'. It was impossible to find a mouse with a middle-button instead of a middle-scroll-wheel. In 2009, I migrated to using Linux on my home computers. Around that time, I resolved to find a mouse that I could use for 'pasting text' --- without having to press on a scroll-wheel --- and while preserving the usual use of the left and right mouse buttons, for selecting items and for invoking pop-up menus for special functions. In 2013, I described one mouse that looked promising on a web page titled Logitech 'Zone Touch' Mouse T400. (On that page, I described my frustration in trying to do 'text-paste' with a scroll wheel.) It turned out that it was difficult to use a middle-mouse-button on the 'Zone Touch' mouse without accidentally touching a middle-touch-area of the mouse that was used for scrolling. In addition, the mouse was a wireless mouse with batteries, and I kept forgetting to use an on/off button on the underside of the mouse to reduce battery consumption --- and I did not like to deal with batteries. I tried some mice with extra programmable buttons on the side of the mouse --- like the Logitech M510 (wireless) --- but I found that when I pressed on a side-button to paste text, invariably the mouse would move a little bit, and I would paste the text in the wrong spot.
NOTE: Mice with extra buttons on top: So I started looked around for mice with extra buttons on top of the mouse --- programmable buttons. I even devised a Mouse-Button-Configurator using the Tcl-Tk scripting language to make a nice GUI. I originally posted the code (and description and screenshot images) at wiki.tcl.tk. Later, I incorporated this utility into a 'tkGooies' system that I offer on a Freedom Environment software web site (freedomenv.com), and I provided the code and description and screenshots on a 'tkPointerSettings' web page. This 'tkPointerSettings' utility uses the Unix/Linux X-windows command 'xinput' to perform 're-mapping' of button functions of computer mice. I intended to find a mouse that I like and then use the 'tkPointerSettings' utility (or the 'xinput' command) to map one (or more) of the extra buttons to do the 'text paste' function. Near the bottom of those 'tkPointerSettings' web pages, there are some images of mice that look like they have 'top buttons' that might be usable for the 'easy, trouble-free text pasting' that I hoped to achieve --- like in my old Silicon Graphics days. Unfortunately, I found that NONE of the mice manufacturers provide information on which of the extra buttons on their mice are programmable. The manufacturers may provide some software to configure the mice ... software for Microsoft Windows or for Apple Mac, but NOT for Linux. But they do not reveal the technical specifications of their mice to the extent that I could be assured that I could program at least one of the extra buttons to do a 'text paste'. In fact, sometimes the extra buttons are 'hard-wired' to send a certain control code, and it is not possible to re-program those buttons to 're-map' its function to a 'standard mouse-button-2 paste-text' function. In some cases, it is possible to change the function of the 'hard-wired' buttons, BUT it requires additional Linux software beyond the 'xinput' command. I did not want to get into that much 'monkey business'. Because of the poor documentation of the mouse-manufacturers in regard to the technical specifications of the mouse buttons, I found that I would usually have to buy a promising looking mouse, plug the mouse into one of my Linux computers, and use the query facility of the 'xinput' command to determine the default mappings of the mouse buttons --- and determine whether the top-button(s) that I wanted to use are 're-mappable'. By the way, I prefer to use a 'wired' mouse, because I don't like to deal with batteries in 'batteried' mice --- and because I have had bad experiences with 'wireless' mice performing 'flakily' --- probably because of electromagnetic intererence in my house, from cordless phones, a microwave oven, a wireless router, or other electro-magnetic-wave-generating devices. I found one mouse (the Logitech G300 wired Gaming Mouse) that has the features that I want. And I have found several other mice that I plan to test with the 'xinput' command and document how their extra top-buttons can be used to 'paste text', including:
I include the USB Game Controller because it was available at a local Walmart store, for less than $40, and it may be interesting to experiment with it --- in regard to using the game controller for other things besides games --- such as 'text pasting'. I plan to add my button-mapping documentation to the help-text available in the 'tkPointerSettings' utility. That text is available via the 'Help' button on the GUI. In addition to that, here is some button-mapping documentation ... below. How to Change Mouse Button Functions : (using 'xinput') The basic steps are:
To get the 'Device-ID': You can use the 'xinput list' command to get the device-name of your mouse. Example output: |
$ xinput list
"Virtual core pointer" id=0 [XPointer]
Num_buttons is 32
Num_axes is 2
Mode is Relative
Motion_buffer is 256
Axis 0 :
Min_value is -1
Max_value is -1
Resolution is 0
Axis 1 :
Min_value is -1
Max_value is -1
Resolution is 0
"Virtual core keyboard" id=1 [XKeyboard]
Num_keys is 248
Min_keycode is 8
Max_keycode is 255
"AT Translated Set 2 keyboard" id=2 [XExtensionKeyboard]
Type is KEYBOARD
Num_keys is 248
Min_keycode is 8
Max_keycode is 255
"UVC Camera (046d:0807)" id=3 [XExtensionKeyboard]
Type is KEYBOARD
Num_keys is 248
Min_keycode is 8
Max_keycode is 255
"Logitech Gaming Mouse G300" id=4 [XExtensionKeyboard]
Type is KEYBOARD
Num_keys is 248
Min_keycode is 8
Max_keycode is 255
"Power Button" id=5 [XExtensionKeyboard]
Type is KEYBOARD
Num_keys is 248
Min_keycode is 8
Max_keycode is 255
"Power Button" id=6 [XExtensionKeyboard]
Type is KEYBOARD
Num_keys is 248
Min_keycode is 8
Max_keycode is 255
"Macintosh mouse button emulation" id=7 [XExtensionPointer]
Type is MOUSE
Num_buttons is 5
Num_axes is 2
Mode is Relative
Motion_buffer is 256
Axis 0 :
Min_value is -1
Max_value is -1
Resolution is 1
Axis 1 :
Min_value is -1
Max_value is -1
Resolution is 1
"Logitech Gaming Mouse G300" id=8 [XExtensionPointer]
Type is MOUSE
Num_buttons is 24
Num_axes is 2
Mode is Relative
Motion_buffer is 256
Axis 0 :
Min_value is -1
Max_value is -1
Resolution is 1
Axis 1 :
Min_value is -1
Max_value is -1
Resolution is 1
In this case, the device-name for this mouse is 'Logitech Gaming Mouse G300'. However, the name appears twice --- as type 'KEYBOARD' and type 'MOUSE'. So, in this case, I need to use the ID-number for the mouse ... 8. To get the default mapping: Once you determine the DeviceID, you can use the 'get-button-map' command xinput get-button-map 8 which will display a sequence of integers such as 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 The length of this sequence will depend on the number of button functions of the mouse. To get the numbers of the buttons to re-map: Use the command xinput test DeviceID in a terminal window. This command will display 'events' from the specified device. The command starts an endless loop, displaying events received. You can close the terminal window (or use Ctl-C) to end the loop. For any motion of the mouse/pointer-device and for any action, like a button press, text will appear in the terminal window to indicate the event. Here is some sample output from 'xinput test 8':
motion a[1]=-4 When I pressed the buttons labelled 'G4' and 'G5' on the G300 mouse, the 'button press 8' and 'button press 9' text appeared. If the user plans to assign a function to a button (or other 'protrusion' or 'sensor' or 'wire' of the pointer device), it may not be clear (from the almost useless manufacturer mouse documentation) what number that button/sensor/wire has been assigned. So you can use the 'xinput test DeviceID' command to determine the appropriate 'xinput' numbers corresponding to each button (or 'wire'). Button presses (and other actions) will show a button number. Hence you can determine button numbers for 'protuberances' or 'sensors' or 'wires' of the pointer device. To change the function-mapping: Typically you will want to make a little two line script that executes the 'xinput set-button-map DeviceID' command. Also supply the string of numbers for the 'map-list' that will work for you. Example script to switch the left-and-right button functions, for a left-handed person:
#!/bin/sh You could put these lines in a file named 'my_xinput_mapping.sh' in your home directory or in some sub-directory of the home directory. Then you can call on that script to execute ... from a login or shell 'run control' file --- such as $HOME/.bashrc or $HOME/.bash_aliases or $HOME/.profile or $HOME/.kshrc or ... where $HOME represents your home directory. Find information for your operating system on which file is best to modify. There you have it (you Linux users --- and maybe Apple Mac users) ... a way to change the functions of the buttons on your mouse. Some Text-Paste-Friendly Mice : (specifications) Before doing button-mapping experiments with various mice, I collected (below) the pathetic manufacturer's mouse documentation (PDF files) for these mice --- even though their documentation is for the most part useless for determining how to make use of the extra, programmable buttons. I have included some images of the mice below, to show where the mouse buttons are located. I also include some 'WEB SEARCH' links, to make it easy to look for additional information on the mice. Who knows. Someone may provide some documentation on how to re-map the buttons on these mice --- even if the manufacturers never do so. I provide a function re-mapping for 'top-button-text-paste' with the G300 mouse. As I do experiments with the other mice, I will provide suitable mappings (with the 'xinput' command) for those mice as well.
Logitech G300 mouse:
A sample 'top-button-text-paste' re-mapping for both buttons G4 and G5 on the Logitech G300 mouse (which are known to 'xinput' as buttons 8 and 9):
#!/bin/sh Note the '2 2' in locations 8 and 9 of the string of mapping integers. This mapping changes the functions of buttons 8 and 9 ('G4' and 'G5' on the top left of the G300 mouse) to do the '2-function' (paste) --- and deactivates the paste function of the scroll-wheel by using zero in mapping-location 2. It will probably be helpful to deactivate the paste-function of the scroll-wheel, because, if you accidentally press too hard on the scroll-wheel, you may cause a 'paste' to occur when you did not want to do that. NOTE: Pushing down on button 8 or 9 (labelled 'G4' and 'G5' on the G300) to do a paste does not move the mouse sideways --- and I still have the scrollwheel for fast up and down scrolling. This 'G4' and 'G5' paste works in all three 'profiles' of the G300. (The 'G8' button in the middle of the mouse cycles the mouse through 'red', 'green', and 'blue' profiles. A plastic strip on each side of the mouse glows red, green, or blue.) 'xinput test' does not show button numbers when I press on the two buttons on the right of the G300 (labelled 'G6' and 'G7'), no matter which of the 3 profiles I am in. It looks like I cannot de-activate or re-map those buttons ... with 'xinput'. They act like 'Ctl-V' and 'Ctl-C' when in 'blue' mode. If one does NOT use 'blue' mode, then one won't accidentally do a paste --- or go into copy-mode --- if one accidentally presses the upper-right buttons of this mouse.
Logitech G402 Hyperion Fury mouse:
Logitech G502 Proteus Core mouse:
Logitech Trackman Marble mouse:
Logitech Trackball M570 mouse:
SteelSeries, WorldOfWarcraft, Legendary Edition, mouse:
|
Either (or both) of the circled buttons
on this SteelSeries mouse are possible
candidates for the 'paste text' function.
SteelSeries 3GC USB Rumble PC Game Controller: |
My intent is to perform some button-remapping-and-paste-text experiments with these mice (pointer devices) --- and report back here with the results. |
Bottom of this
To return to a previously visited web page location, click on the
Back button of your web browser, a sufficient number of times.
OR, use the History-list option of your web browser.
< Go to Top of Page, above. >
|