web-dev-qa-db-ja.com

Windows 10でどのようにフォーカスを有効にしますか

これは私が何年もの間WindowsとLinuxで使ってきた設定だからです。

Windows 10では、私はもともとWindows 8向けのもので、このリンクに書かれていたregedit Xmouseの変更を試しました。 http://winaero.com/blog/turn-on-xmouse-active-window -tracking-focus-follow-mouse-pointer-windows-8-1-windows-8-and-windows-7 /

しかし、私は以下の問題を経験しました。

  1. Windowsキーを押してスタートメニューを開いても、キーボード入力は受け付けられません。

  2. 開始、検索、または通知をクリックして開くと、それらが対話する前に閉じます。

マウスに追従して使えるフォーカスを取得する方法はありますか。

誰もがこのようにWin10をうまく使っていますか?

37
Gordon Wrigley

Xマウスコントロール を使用してください。これは私が本当のFocus Follows Mouseに最も近いと思うもので、Tweakにはいくつかオプションがあります。インストールや再起動を必要としない小さなオープンソースのユーティリティで、レジストリを自分で変更する手間が省けます。

私が実験した限りでは、Winキーを押した後にキーボードを使ってファイル/プログラムを検索することができます。また、立ち上げ時の通知オプションメニューを使用しても、[開始]メニューと[通知]メニューが表示されなくなることはありません。新しいウィンドウにポインタを移動するのに十分な余地があります。

私はしばらくそれを使っていて、それにとても満足しています、そして bug.n のタイリングウィンドウマネージャ。この設定は私がUNIXでdwmを使っていたのと同じくらい近いです。

27
ArthurChamz

次のPowerShellスクリプトは、XMouseプログラムと同じ効果があるはずです。

コード:

$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)

ここから取得した定数

22
golvok

質問のリンクに記載されているレジストリの変更は、Windows 10で機能します。ただし、ユーザー補助の設定で[マウスを使ってウィンドウをアクティブにする]オプションを選択した場合は、変更が必要です。このオプションは、[コントロールパネル]> [使いやすさ]> [マウスの動作の変更]の下にあります。

同じ問題が発生し、チェックボックスが選択されている場合は、選択を解除して適用をクリックし、もう一度選択して変更をやり直します。次回のログイン時には、マウスは正しく動作するはずです。

9
aleixosk

Windowsには実際にフォーカスフォローフォローマウス( "アクティブウィンドウトラッキング")を有効にするフラグがあります。これはmonstrous "SystemParametersInfo" Win32で簡単に有効にできます。 API呼び出し X-Mouse Controls のように、フラグを有効にするサードパーティ製プログラムがあります。または、PowerShellを使用して直接呼び出しを実行することもできます。

pvParam引数がどのように使用されるかについてのドキュメントは必ずしも明確ではありません、そしてこの特別な設定をするとき、いくつかのpowershellスニペットは誤って値自体ではなくポインタを渡しますフラグこれはつねにtrueとして解釈されることになります。つまり、誤ってフラグを有効にするために機能しますが、再び無効にするためには機能しません。

以下は、呼び出しを正しく実行するためのPowerShellスニペットです。また、適切なエラーチェックも含まれています。興味のある人が見つかった場合は、SystemParametersInfoの他の機能のラッパーを追加しやすくするために、簡潔さよりも清潔さを追求しました。

このようなもののための有用なリソースであるために pinvoke.net に叫ぶ。

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 )
2
Matthijs

UserPreferencesMaskの最初のバイトから40を引くだけではうまくいかない場合は、WinAero Tweakerユーティリティ自体を http://winaero.com/download.phpから入手してください。 view.1796

上記の問題#1はまだ存在していますが、スタートメニュー(ショートカットキーWindow + S)の右側にある虫眼鏡(検索)アイコンを使用するだけで簡単に回避できます。 X-Mouseの機能を手に入れるために払うべき小さな価格。

WinAero Tweakerを使用しても問題#2は発生しません。

1
andz

この方法を使用してずさんなマウスの動作を実現します。これは、以前のバージョンのWindowsおよびLinuxの post から慣れています。あなたが抱えている問題#2は経験していません。このレジストリの変更を使用するときにあなたとすべてが持つことになる問題#1は問題ではありません。この変更により、ウィンドウでフォーカスが処理される方法が変更されたため、これはまったく予想どおりに機能します。 windowsキーを使用すると、検索メニューではなくスタートメニューにマウスが移動するため、検索メニューではなくフォーカスが移動します。そのため、検索を使用する場合は、検索バーまたは拡大アイコン(外観の設定に応じて)をクリックするか、 Win+S キーコンボとそれは正しいことをします。

1
sudo

私はまだWinaeroをテストしていません。

  1. インターネットから未知のソフトウェアを実行することに熱心ではありません。
  2. 使用しているすべてのPCをWindows 7からWindows 10にアップグレードしたため、Windows 10ではWindows 7の[マウスを使ってウィンドウをアクティブにする]設定が有効になっています。これをWindows 10のGUIで設定します。

私はまだインターネット上のどこにもこれらの回避策を見つけていないので、他の人のためにここで文書化するつもりです。

以下の回避策を使用すると、XマウスモードでWindows 10を使用することが実用的になります。

  1. タスクバーのアプリアイコンから利用できるウィンドウが複数あるときに別のウィンドウに切り替える:

    ウィンドウを選択する前に、タスクバーのアプリアイコンをクリックしないでください。そうすると、マウスポインタをタスクバーの上に移動するとすぐにウィンドウが消えます。ウィンドウが表示されるまでアプリのアイコンの上にマウスを移動すると、ポインタを必要な場所に移動できます。

  2. タスクビューボタンを使用して別の仮想デスクトップまたはアプリに切り替える:

    • タスクビューボタンをクリックしてください。
    • もう一度クリックしてボタンを押したままにします。
    • 必要なタスクまたは仮想デスクトップにポインタを移動してください。
    • マウスボタンを離して、もう一度クリックします。

注:Windows 10の「無効になっているウィンドウをマウスオーバーしたときにスクロールする」設定は便利な追加機能です( Start - > Settings - >を参照)。 Devices - > Mouse&Touchpad )。これはXmouseの機能からは独立しているように見え、ONがデフォルトのようです。

0
Chris Good

他のウィンドウがアクティブにならない限り、Regkey HKCU\Control Panel\Desktop\ActiveWndTrackTimeoutを0より大きい値に設定します。

0
Volker