Atalho do teclado para trocar os botões do mouse

22

Uso o mouse com as duas mãos e gosto de alternar por motivos de conforto. No entanto, isso é dificultado pela necessidade de passar por um zilhão de camadas de menus para trocar os botões a cada vez. Existe uma maneira fácil de criar um único atalho de teclado que troque meu botão esquerdo e direito do mouse?

Editar: Meu SO é Windows 7.

dsimcha
fonte

Respostas:

19

Como o blsub6 mencionado, você pode alterar um valor do registro (com um comando chamado de um arquivo em lotes):

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

ou

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

No entanto, você precisa fazer logout antes que ele entre em vigor .

A melhor solução é criar um pequeno .exe com C # para trocar a configuração, conforme descrito nas respostas a esta pergunta .

Faça um arquivo de texto que você possa chamar swapmouse.cs, contendo o seguinte:

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
        }
    }
}

E compile-o swapmouse.execom este comando:

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

Depois, basta clicar duas vezes em um atalho para o exe para trocar os botões do mouse. Entra em vigor imediatamente.

mivk
fonte
3
Para iniciar o exe por um atalho 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

Aqui está um aplicativo para isso: http://code.google.com/p/mouseswap/

Se você tiver o AutoIt instalado, eis o script para executar em um arquivo au3:

#NoTrayIcon

HotKeySet ("# a", "MouseSwap")

Botões globais $

Enquanto 1
   Sono (50)
WEnd

Func MouseSwap ()
   Se $ Buttons = 0 Então
      DllCall ("user32.dll", "int", "SwapMouseButton", "int", 1)
      Botões $ = 1
      SplashTextOn ("", "E8", 280,180, -1, -1,33, "Wingdings", 80)
      Sono (600)
      SplashOff ()
   Outro
      DllCall ("user32.dll", "int", "SwapMouseButton", "int", 0)
      Botões $ = 0
      SplashTextOn ("", "8F", 280,180, -1, -1,33, "Wingdings", 80)
      Sono (600)
      SplashOff ()
   Fim se
EndFunc
Mica
fonte
4

O melhor código AHK:

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

Eu também uso o mouse com as duas mãos e também tenho o Win7, esse código funciona bem!

Lady3Millennium
fonte
Este é o melhor para quicktypers.
Leonid Dworzanski 6/06
3

Maneira do teclado de alternar os botões do mouse no Windows Vista (talvez 7) e acima:

  1. Chave do Windows
  2. digite "mouse"
  3. Barra de espaço
  4. Entrar

Sim, são 8 pressionamentos de tecla, mas não é tão ruim ... Eu fiz um monte

Kevin Driedger
fonte
5. ALT + F4 para fechar janela do mouse configurações
Przemyslaw Remin
2

Esta é a versão da Autohotkey (modificada / baseada em 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)
    }

Isso funciona bem com todo o Windows (incluindo o Windows 10). Normalmente mapeio-o para uma tecla de atalho como a tecla "F12" no teclado (usando a tecla Autohot) e posso alternar entre os botões esquerdo e direito do mouse instantaneamente pressionando uma tecla. Não há necessidade de mexer no carregamento do painel de controle ou na configuração do registro / reinicialização.

otter.pro
fonte
0

Algumas boas sugestões de Autohotkey aqui, mas essa troca os botões diretamente no Windows e fornece uma notificação pop-up.

É uma cópia do 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

Uma alternativa de terser sem o pop-up:

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

Não sei quanto a um atalho de teclado, mas você pode criar dois arquivos reg que fazem o que é descrito aqui . Basta clicar e ir embora.

Se você realmente quer ficar louco com isso, configure um script AutoHotkey que dispara os arquivos reg

blsub6
fonte
Isso não é bom, simplesmente alterar a entrada do registro não tem efeito; os botões permanecem inalterados. Você precisaria reiniciar ou sair e fazer login novamente para que eles entrem em vigor.
Synetech
-1

Eu gosto de evitar o uso de arquivos exe aleatórios quando possível, eis uma solução AutoHotKey baseada na solução de teclado mencionada anteriormente.

Faça um atalho chamado c: \ mouse.ink que abre as configurações do mouse.

Use este script AHK:

#a::
Run c:\mouse
sleep 250
send {Space}
Send {Enter}
return
Conta
fonte
O exe é apenas um script AutoIt compilado (semelhante ao AutoHotkey). Em vez do exe, você pode executar o au3.
Mica
-1

Como mivk mencionou, isso é direto e funciona como um encanto. Isto é o que mivk mencionou

Crie um arquivo de texto que você possa chamar de swapmouse.cs, contendo este:

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
        }
    }
}

E compile-o para swapmouse.exe com este comando:

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

Agora você pode criar uma pasta chamada C: \ Arquivos de Programas \ swapmouse e copiar o swapmouse.exe para a pasta recém-criada.

Agora crie um atalho para esse arquivo swapmouse.exe na área de trabalho.

Sob a propriedade do arquivo de atalho, adicione uma tecla de atalho, neste caso, usei "Ctrl + Alt + S" e apliquei.

Agora, toda vez que você pressionar "Ctrl + Alt + S", o botão do mouse será trocado.

Não há dependência do mouse para alterar mais o botão do mouse.

Saad Faruque
fonte
11
Bem-vindo ao Super Usuário! Isso duplica outra resposta e não adiciona novo conteúdo. Não poste uma resposta, a menos que você realmente tenha algo novo para contribuir.
DavidPostill
-1

Você já viu: https://www.eithermouse.com/

Este é um script de autohotkey compilado que permite trocar botões da bandeja do sistema e também permite que você tenha dois mouses simultaneamente. Eu tenho dois ratos que eu uso para alternar entre as mãos esquerda e direita. E isso muda automaticamente o ângulo do cursor e do botão do mouse.

piloto de jato
fonte
Isso seria mais útil se você tivesse incluído um script para fazer isso. Caso contrário, isso é melhor como um comentário.
Synetech