Atajo de teclado para intercambiar botones del mouse

22

Uso mi mouse con ambas manos y me gusta cambiar de un lado a otro por razones de comodidad. Sin embargo, esto se dificulta al tener que pasar por un millón de capas de menús para intercambiar los botones cada vez. ¿Hay una manera fácil de crear un atajo de teclado único que intercambie los botones izquierdo y derecho del mouse?

Editar: mi sistema operativo es Windows 7.

dsimcha
fuente

Respuestas:

19

Como se mencionó en blsub6, puede cambiar un valor de registro (con un comando llamado desde un archivo por lotes):

REG ADD "HKCU\Control Panel\Mouse" /t REG_SZ /v SwapMouseButtons /d 1 /f

o

REG ADD "HKCU\Control Panel\Mouse" /t REG_SZ /v SwapMouseButtons /d 0 /f

Sin embargo, debe cerrar sesión antes de que surta efecto .

La mejor solución es hacer un pequeño .exe con C # para intercambiar la configuración, como se describe en las respuestas a esta pregunta .

Haga un archivo de texto al que pueda llamar swapmouse.cs, que contenga esto:

using System.Runtime.InteropServices;
using System;

class SwapMouse
{
    [DllImport("user32.dll")]
    public static extern Int32 SwapMouseButton(Int32 bSwap);

    static void Main(string[] args)
    {
        int rightButtonIsAlreadyPrimary = SwapMouseButton(1);
        if (rightButtonIsAlreadyPrimary != 0)
        {
            SwapMouseButton(0);  // Make the left mousebutton primary
        }
    }
}

Y compílelo swapmouse.execon este comando:

"%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc" swapmouse.cs

Luego, simplemente haga doble clic en un acceso directo a ese exe para intercambiar los botones del mouse. Hace efecto de inmediato.

mivk
fuente
3
Para iniciar el exe con un atajo de teclado :1. Right-click on the exe and select "Create Shortcut" 2. Move the shortcut to "C:\ProgramData\Microsoft\Windows\Start Menu" or the desktop 3. Right click on the shortcut, go to the Shorcut tab and select a shortcut key
Rad
5

Aquí hay una aplicación para eso: http://code.google.com/p/mouseswap/

Si tiene instalado AutoIt , aquí está el script para ejecutar en un archivo au3:

#NoTrayIcon

HotKeySet ("# a", "MouseSwap")

Botones globales $

Mientras 1
   Dormir (50)
Encaminarse a

Func MouseSwap ()
   Si los botones $ = 0 entonces
      DllCall ("user32.dll", "int", "SwapMouseButton", "int", 1)
      Botones $ = 1
      SplashTextOn ("", "E8", 280,180, -1, -1,33, "Wingdings", 80)
      Sueño (600)
      SplashOff ()
   Más
      DllCall ("user32.dll", "int", "SwapMouseButton", "int", 0)
      Botones $ = 0
      SplashTextOn ("", "8F", 280,180, -1, -1,33, "Wingdings", 80)
      Sueño (600)
      SplashOff ()
   Terminara si
EndFunc
Mica
fuente
4

El mejor código AHK:

Run, main.cpl
Send, {Space}{Enter}

También uso el mouse con ambas manos y también tengo Win7, ¡este código funciona bien!

Lady3Millennium
fuente
Esto es lo mejor para quicktypers.
Leonid Dworzanski
3

Forma del teclado de cambiar los botones del mouse en Windows Vista (quizás 7) y superior:

  1. Clave de Windows
  2. escriba "mouse"
  3. Barra espaciadora
  4. Entrar

Sí, son 8 pulsaciones de teclas pero no está mal ... Lo he hecho un montón

Kevin Driedger
fuente
5. ALT + F4 para cerrar la ventana de configuración del mouse
Przemyslaw Remin
2

Esta es la versión de Autohotkey (modificada / basada en https://github.com/jNizM/AHK_DllCall_WinAPI/blob/master/src/Mouse%20Input%20Functions/SwapMouseButton.ahk ).

; autohotkey code - mapped to F12
F12::
    buttonState := DllCall("user32.dll\SwapMouseButton", "UInt", 1)
    if buttonState <> 0
    {
        buttonState := DllCall("user32.dll\SwapMouseButton", "UInt", 0)
    }

Esto funciona bien con todos los Windows (incluido Windows 10). Normalmente lo asigno a una tecla de acceso rápido como la tecla "F12" en mi teclado (usando Autohotkey), y puedo alternar entre el botón izquierdo y derecho del mouse instantáneamente con solo presionar una tecla. No hay necesidad de cargar con el panel de control o configurar el registro / reinicio.

otter.pro
fuente
0

Algunas buenas sugerencias de Autohotkey aquí, pero esta intercambia los botones en Windows directamente y da una notificación emergente.

Es una copia del script Mouseswap Autoit mencionado por mica.

#a::
if button = 0
    {
    DllCall("SwapMouseButton", "int", 1)
    button = 1
    SplashTextOn, 120, 30, Mouse Button, Left handed
    Sleep 600
    SplashTextOff
    }
else
    {
    DllCall("SwapMouseButton", "int", 0)
    button = 0
    SplashTextOn, 120, 30, Mouse Button, Right handed
    Sleep 600
    SplashTextOff
    }
return

Una alternativa terser sin la ventana emergente:

Swapped := DllCall("SwapMouseButton", Int, 0)
if Swapped = 0
 DllCall("SwapMouseButton", Int, 1)
Iain
fuente
-1

No sé acerca de un atajo de teclado, pero puedes hacer dos archivos de registro que hagan lo que se describe aquí . Simplemente haga clic y listo.

Si realmente quiere volverse loco con él, configure un script AutoHotkey que active los archivos de registro

blsub6
fuente
Eso no es bueno, simplemente cambiar la entrada del registro no tiene ningún efecto; los botones permanecen sin cambios. Debería reiniciar o cerrar sesión y volver a iniciarla para que surtan efecto.
Synetech
-1

Me gusta evitar el uso de archivos exe aleatorios cuando sea posible, aquí hay una solución AutoHotKey basada en la solución de teclado mencionada anteriormente.

Haga un acceso directo en c: \ mouse.ink que abra la configuración del mouse.

Use este script AHK:

#a::
Run c:\mouse
sleep 250
send {Space}
Send {Enter}
return
Cuenta
fuente
El exe es solo un script compilado de AutoIt (similar a AutoHotkey). En lugar del exe, podrías ejecutar el au3.
Mica
-1

Como mencionó Mivk, esto es sencillo y funciona a las mil maravillas. Esto es lo que mencionó mivk

Cree un archivo de texto al que pueda llamar swapmouse.cs, que contenga esto:

using System.Runtime.InteropServices;
using System;

class SwapMouse
{
    [DllImport("user32.dll")]
    public static extern Int32 SwapMouseButton(Int32 bSwap);

    static void Main(string[] args)
    {
        int rightButtonIsAlreadyPrimary = SwapMouseButton(1);
        if (rightButtonIsAlreadyPrimary != 0)
        {
            SwapMouseButton(0);  // Make the left mousebutton primary
        }
    }
}

Y compílelo en swapmouse.exe con este comando:

"%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc" swapmouse.cs

Ahora puede crear una carpeta llamada C: \ Archivos de programa \ swapmouse y copiar swapmouse.exe en la carpeta recién creada.

Ahora cree un acceso directo para este archivo swapmouse.exe en su escritorio.

Bajo la propiedad del archivo de acceso directo, agregue una tecla de acceso directo, en este caso, usé "Ctrl + Alt + S" y aplique.

Ahora, cada vez que presione "Ctrl + Alt + S", se cambiará el botón del mouse.

Ya no hay dependencia del mouse para cambiar el botón del mouse.

Saad Faruque
fuente
1
¡Bienvenido a Super User! Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
-1

¿Has mirado en: https://www.eithermouse.com/

Este es un script compilado de autohotkey que le permite intercambiar botones de su bandeja de sistema, y ​​también le permite tener dos ratones simultáneamente. Tengo dos ratones que uso para alternar entre las manos izquierda y derecha. Y esto cambia automáticamente el ángulo del cursor y el botón del mouse.

piloto de jet
fuente
Esto sería más útil si hubiera incluido un script para hacerlo. De lo contrario, esto es mejor como comentario.
Synetech