Como você habilita o foco segue o mouse no Windows 10

44

Gostaria de aumentar o clique e o foco superficial segue o mouse no Windows 10, porque essa é a configuração que uso no Windows e Linux há anos.

No Windows 10, tentei as alterações regedit do Xmouse mencionadas neste link que foram originalmente criadas para o Windows 8: http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- ponteiro-recurso-no-windows-8-1-windows-8-e-windows-7 /

No entanto, tive os seguintes problemas:

  1. Quando você abre o Menu Iniciar pressionando a tecla Windows, ele não recebe entrada do teclado.

  2. Quando você abre Iniciar, Pesquisa ou Notificações, clicando neles, eles são fechados antes que você possa interagir com eles.

Existe alguma maneira de obter foco utilizável segue mouse?

Alguém está usando o Win10 com sucesso assim?

Gordon Wrigley
fonte
Uma solução alternativa para o problema nº 1 é clicar na lupa (pesquisar). A tecla de atalho para isso é Window + S.
andz
11
Você pode evitar o problema nº 2 definindo ActiveWndTrkTimeout para um valor mais alto. O WinAero Xmouse Tuner costumava ter um mínimo de 500ms, mas agora é reduzido para um mínimo de 100ms no WinAero Tweaker devido a solicitações esmagadoras. Ainda não é possível abaixá-lo para menos de 100 ms, mas pode haver uma boa razão para isso.
e Z

Respostas:

33

Usar X-Mouse Controls , é o mais próximo que eu encontrei do verdadeiro Focus Follows Mouse, e tem algumas opções para ajustar. É um pequeno utilitário de código aberto que não requer instalação ou reinicialização, e evita que você altere o registro por conta própria.

Tanto quanto experimentei, posso usar o teclado para procurar arquivos / programas depois de pressionar a tecla Win. Além disso, o menu Iniciar e Notificações não desaparece antes que eu possa usá-los, mesmo com a opção de aumento de foco, pois você pode definir um pequeno atraso para o comportamento (cem ou duzentos ms serão suficientes), o que fornece espaço suficiente para mover o ponteiro para a nova janela.

Eu o uso há um tempo e estou muito feliz com isso, além do gerenciador de janelas bug.n lado a lado. Essa configuração está tão perto quanto eu de usar o dwm no unix.

ArthurChamz
fonte
24

O script do PowerShell a seguir deve ter o mesmo efeito que o programa XMouse ... sem precisar executar um binário de terceiros

Código:

$signature = @"
[DllImport("user32.dll")]
public static extern bool SystemParametersInfo(int uAction, int uParam, ref 
int lpvParam, int flags );
"@

$systemParamInfo = Add-Type -memberDefinition  $signature -Name SloppyFocusMouse -passThru

[Int32]$newVal = 1
$systemParamInfo::SystemParametersInfo(0x1001, 0, [REF]$newVal, 2)

Constantes recuperadas daqui

golvok
fonte
Isso funciona lindamente, melhor do que qualquer outra coisa que eu tentei. Apenas salve isso em um arquivo .ps1, clique com o botão direito do mouse e escolha Executar com o PowerShell. Você pode até adicioná-lo no Agendador de tarefas para iniciar na inicialização.
precisa saber é
11

As modificações do registro mencionadas no link da pergunta funcionam no Windows 10. No entanto, parece que elas precisam ser feitas quando a opção “Ativar uma janela passando o mouse sobre ela com o mouse” é selecionada nas configurações de acessibilidade. Essa opção pode ser encontrada em Painel de controle> Facilidade de acesso> Alterar como o mouse funciona .

Se você estiver enfrentando os mesmos problemas e a caixa de seleção estiver marcada, desmarque-a, clique em Aplicar, selecione-a novamente e refaça as modificações. O mouse deve se comportar corretamente na próxima vez que você efetuar login.

aleixosk
fonte
3
No entanto, isso faz o que o nome sugere - eleva as janelas automaticamente. O OP deseja que NÃO aumente, mas ainda permita o foco em uma janela de plano de fundo. Seguindo as instruções do Q do Winaero (definindo o primeiro código hexadecimal como 9F) e o login e o logout parecem estar funcionando bem. Tecla Win + digitação = funciona para pesquisa. Ganhar botão com o mouse + digitar = NÃO funciona na pesquisa se o foco estiver longe do botão, mas funciona se o mouse estiver sobre o botão. Matar o explorer.exe e executar userinit.exe não funcionou para carregar as configurações de registro; portanto, o logoff parece necessário.
mpag 8/09/17
A aplicação das modificações no registro interrompe o aumento automático.
Alemanhak 9/09
6

O Windows realmente possui um sinalizador para habilitar o foco segue o mouse ("rastreamento ativo da janela"), que pode ser ativado facilmente através da monstruosa chamada da API do Win32 "SystemParametersInfo" . Existem programas de terceiros para habilitar o sinalizador, como X-Mouse Controls , ou você pode executar a chamada diretamente usando o PowerShell.

A documentação nem sempre é super clara sobre como o pvParamargumento é usado, e alguns trechos do PowerShell transmitem incorretamente um ponteiro para o valor, em vez do próprio valor, ao definir esse sinalizador em particular. Isso acaba sempre sendo interpretado comotrue , ou seja, eles trabalham acidentalmente para ativar a bandeira, mas não para desativá-la novamente.

Abaixo está um trecho do PowerShell que executa a chamada corretamente. Ele também inclui a verificação de erros adequada, e eu tentei buscar a limpeza em vez da brevidade, para facilitar a adição de wrappers para outras funcionalidades doSystemParametersInfo , caso encontre algo que lhe interesse.

Grite para pinvoke.net por ser um recurso útil para coisas como esta.

Add-Type -TypeDefinition @'
    using System;
    using System.Runtime.InteropServices;
    using System.ComponentModel;

    public static class Spi {
        [System.FlagsAttribute]
        private enum Flags : uint {
            None            = 0x0,
            UpdateIniFile   = 0x1,
            SendChange      = 0x2,
        }

        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool SystemParametersInfo(
            uint uiAction, uint uiParam, UIntPtr pvParam, Flags flags );

        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool SystemParametersInfo(
            uint uiAction, uint uiParam, out bool pvParam, Flags flags );

        private static void check( bool ok ) {
            if( ! ok )
                throw new Win32Exception( Marshal.GetLastWin32Error() );
        }

        private static UIntPtr ToUIntPtr( this bool value ) {
            return new UIntPtr( value ? 1u : 0u );
        }

        public static bool GetActiveWindowTracking() {
            bool enabled;
            check( SystemParametersInfo( 0x1000, 0, out enabled, Flags.None ) );
            return enabled;
        }

        public static void SetActiveWindowTracking( bool enabled ) {
            // note: pvParam contains the boolean (cast to void*), not a pointer to it!
            check( SystemParametersInfo( 0x1001, 0, enabled.ToUIntPtr(), Flags.SendChange ) );
        }
    }
'@

# check if mouse-focus is enabled
[Spi]::GetActiveWindowTracking()

# disable mouse-focus (default)
[Spi]::SetActiveWindowTracking( $false )

# enable mouse-focus
[Spi]::SetActiveWindowTracking( $true )
Matthijs
fonte
2
Olá, bem-vindo ao superusuário. Por favor, ao fazer novas contribuições, tente dar algumas explicações anexadas ao seu código. Embora sua resposta pareça correta, seria melhor se você explicasse POR QUE funciona, portanto, se alguém quiser fazer algo um pouco diferente, poderá obter um ponto de partida para sua resposta. De qualquer forma, obrigado por compartilhar seu conhecimento conosco!
DGoiko
Lá, eu expliquei a explicação.
Matthijs
11
Ótimo! Estou feliz por ser seu primeiro
voto positivo
1

Para aqueles que não conseguiram fazê-lo, subtraindo apenas 40 do primeiro byte de UserPreferencesMask, basta obter o próprio utilitário WinAero Tweaker em http://winaero.com/download.php?view.1796

Observe que o problema nº 1 acima ainda está presente, mas é fácil solucionar o problema usando o ícone de lupa (pesquisa) à direita do menu Iniciar (tecla de atalho Janela + S). Um pequeno preço a pagar pela obtenção da funcionalidade X-Mouse.

Não encontro o problema nº 2 quando uso o WinAero Tweaker.

andz
fonte
1

Usando o método para obter o comportamento desleixado do mouse, com o qual estou tão acostumado, nas versões anteriores do Windows e Linux do post . Não tenho o problema nº 2 que você está tendo. O problema nº 1 que você e todos terão ao usar essa modificação do registro não é um problema. Faz exatamente o esperado, porque você alterou a maneira como o foco é tratado nas janelas com esta modificação. O uso da tecla Windows coloca o mouse no menu Iniciar, não no menu de pesquisa, para que ele se concentre, não no menu de pesquisa. Portanto, se você deseja usar a pesquisa, clique na barra de pesquisa ou no ícone de ampliação (dependendo das configurações para sua aparência) ou use a combinação de teclas Win+ Se ela fará a coisa certa.

sudo
fonte
0

Ainda não testei o Winaero porque:

  1. Não estou interessado em executar softwares desconhecidos da Internet.
  2. Como atualizei todos os PCs que utilizo do Windows 7 para o Windows 10, a configuração do Windows 7 "Ativar uma janela passando o mouse sobre ela com o mouse" continuou em vigor no Windows 10, mesmo que pareça não haver um método de definindo isso na GUI do Windows 10.

Ainda não encontrei essas soluções alternativas em nenhum lugar da Internet, portanto, documentarei aqui para outras pessoas.

Usando as seguintes soluções alternativas, torna prático o uso do Windows 10 no modo Xmouse:

  1. Mudar para outra janela quando houver várias janelas disponíveis através do ícone do aplicativo na barra de tarefas:

    NÃO clique no ícone do aplicativo na barra de tarefas antes de tentar selecionar uma janela. Se o fizer, assim que você mover o ponteiro do mouse acima da barra de tarefas, as janelas desaparecerão. Basta passar o mouse sobre o ícone do aplicativo até que as janelas apareçam, e você pode mover o ponteiro para o que precisa.

  2. Alternando para outro desktop ou aplicativo virtual usando o botão de exibição de tarefas:

    • Clique no botão de exibição de tarefas.
    • Clique novamente e mantenha o botão pressionado.
    • Mova o ponteiro para a tarefa ou área de trabalho virtual necessária.
    • Solte o botão do mouse e clique novamente.

Nota: a configuração do Windows 10 "Rolar janelas inativas quando passar o mouse sobre elas" é uma adição útil (consulte Iniciar -> Configurações -> Dispositivos -> Mouse e Touchpad ). Isso parece independente da funcionalidade do Xmouse e ON parece ser o padrão.

Chris Good
fonte
0

Defina Regkey HKCU \ Painel de Controle \ Desktop \ ActiveWndTrackTimeout para algo maior que 0 para Atraso na instalação, a menos que outra janela fique ativa

Volker
fonte
11
Conserte sua chave; é Trk, não Track; por exemplo, ActiveWndTrkTimeout. Não tenho idéia do que o Track one faz, mas mudar o Trk é o que funciona para mim.
Lumpynose #
-2

Para resolver o problema nº 2 no Windows 10

2) Quando você abre Iniciar, Pesquisa ou Notificações, clicando neles, eles fecham antes que você possa interagir com eles.

Tudo que você precisa fazer é:

  • Pressione Windows+X
  • Painel de controle
  • Facilidade de acesso
  • Mude o funcionamento do mouse
  • Ative a caixa de seleção: Impedir que as janelas sejam organizadas automaticamente quando movidas para a borda da tela

Não há necessidade de software de terceiros.

Vincent Ho
fonte