Windows 10でマウスに従うフォーカスを有効にする方法


44

Windows 10でクリックしてレイズし、フォーカスをたどるマウスをフォローしたいのは、これがWindowsとLinuxで長年使用してきたセットアップだからです。

Windowsの10の下で、私はもともとWindowsの8のために意味された。このリンクに記載されたregeditをxmouseプロパティの変更を試してみました:http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- pointer-feature-in-windows-8-1-windows-8-and-windows-7 /

ただし、次の問題が発生しました。

  1. Windowsキーを押して[スタート]メニューを開くと、キーボード入力を受け取りません。

  2. [スタート]、[検索]、または[通知]をクリックして開くと、操作する前に閉じます。

とにかくマウスに続いて使用可能なフォーカスを取得する方法はありますか?

誰かがこのようにWin10を正常に使用していますか?


問題#1の回避策は、代わりに虫眼鏡(検索)をクリックすることです。このショートカットキーは、Window + Sです。
andz

1
ActiveWndTrkTimeoutをより高い値に設定することで、問題#2を回避できる場合があります。以前はWinAero Xmouse Tunerの最小値は500ミリ秒でしたが、現在では圧倒的なリクエストのためにWinAero Tweakerで最小値100ミリ秒に下げられています。それでも100ミリ秒未満に下げることはできませんが、それには十分な理由があるかもしれません。
-andz

回答:


33

X-Mouse Controlsを使用してください。これは、Focus Follows Mouseに最も近いもので、微調整するオプションがいくつかあります。これは、インストールや再起動を必要としない小さなオープンソースのユーティリティであり、自分でレジストリを変更する必要がありません。

私が試した限りでは、Winキーを押した後、キーボードを使用してファイル/プログラムを検索できます。また、動作のわずかな遅延を設定できるため(100ミリ秒または200ミリ秒で十分です)、[開始]および[通知]メニューは使用する前に消えません。ポインタを新しいウィンドウに移動するのに十分なスペースがあります。

私はしばらくそれを使用してきましたが、それとbug.nのタイルウィンドウマネージャーに非常に満足しています。このセットアップは、UNIXでdwmを使用するのとほぼ同じです。


24

次の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)

ここから取得し定数


これは、私が試した他のどの製品よりも美しく機能します。これを.ps1ファイルに保存し、右クリックして[Powershellで実行]を選択します。タスクスケジューラに追加して、起動時に開始することもできます。
ズールド

11

質問のリンクに記載されているレジストリの変更は、Windows 10で動作します。ただし、アクセシビリティ設定で「マウスでホバリングしてウィンドウをアクティブ化する」オプションが選択されている場合、変更する必要があります。このオプションは、 [コントロールパネル]> [アクセスのしやすさ]> [マウスの動作の変更]にあります。

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


3
しかし、それは名前が示唆することを行います-ウィンドウを自動的に上げます。OPは、レイズしないことを望みますが、それでもバックグラウンドウィンドウにフォーカスを許可します。QのWinaeroの指示(最初の16進コードを9Fに設定)およびログインとログアウトは正常に機能しているようです。勝利キー+タイピング=検索に使用できます。マウスボタンを押しながら「Win」ボタンを押すと、フォーカスがボタンから離れている場合は検索できませんが、ボタンの上にマウスを置いたままにすると機能します。explorer.exeを強制終了し、userinit.exeを実行してもreg設定をロードできなかったため、ログオフが必要なようです。
mpag

レジストリの変更を適用すると、自動発生が停止します。
アレイソスク

6

Windowsには、実際にはフォーカス追跡マウス(「アクティブウィンドウトラッキング」)を有効にするフラグがあります。これは、巨大な「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
こんにちは、スーパーユーザーへようこそ。新しい貢献をするときは、コードに添付された説明をいくつか試してください。あなたの答えは正しいように見えますが、なぜそれが機能するのかを説明した方が良いでしょう。とにかく、私たちとあなたの知識を共有してくれてありがとう!
DGoiko

そこで、説明を具体化しました。
マティイス

1
すばらしいです!私はあなたの最初の
賛成票

1

UserPreferencesMaskの最初のバイトから40を減算するだけでは機能しない場合は、http: //winaero.com/download.php?view.1796でWinAero Tweakerユーティリティ自体を取得してください。

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

WinAero Tweakerを使用すると、問題2は発生しません。


1

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


0

Winaeroをまだテストしていません。理由は次のとおりです。

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

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

次の回避策を使用すると、XmouseモードでのWindows 10の使用が実用的になります。

  1. タスクバーのアプリアイコンを介して複数のウィンドウを使用できる場合に別のウィンドウに切り替える:

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

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

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

注:Windows 10の「ホバーしたときに非アクティブなウィンドウをスクロールする」設定は便利な追加機能です(スタート -> 設定 -> デバイス -> マウスとタッチパッドを参照)。これはXmouse機能から独立しているようで、ONがデフォルトのようです。


0

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


1
キーを修正してください。トラックではなくTrkです。例:ActiveWndTrkTimeout。Track 1が何をするのかわかりませんが、Trk 1を変更することが私にとって有効です。
ルンピノース

-2

Windows 10で問題#2を解決するには

2)[スタート]、[検索]、または[通知]をクリックして開くと、操作する前に閉じます。

あなたがする必要があるのは:

  • Windows+を押すX
  • コントロールパネル
  • アクセスのしやすさ
  • マウスの動作を変更する
  • チェックボックスを有効にする:画面の端に移動したときにウィンドウが自動的に配置されないようにします

サードパーティのソフトウェアは必要ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.