Bagaimana Anda mengaktifkan fokus mengikuti mouse di Windows 10

44

Saya ingin meningkatkan-pada-klik dan fokus-mengikuti-ceroboh pada Windows 10 karena ini adalah pengaturan yang telah saya gunakan di Windows dan Linux selama bertahun-tahun.

Di bawah Windows 10, saya mencoba perubahan regedit Xmouse yang disebutkan dalam tautan ini yang semula dimaksudkan untuk Windows 8: http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- pointer-feature-in-windows-8-1-windows-8-and-windows-7 /

Namun, saya mengalami masalah berikut:

  1. Ketika Anda membuka Start Menu dengan menekan tombol Windows, itu tidak menerima input keyboard.

  2. Ketika Anda membuka Mulai, Cari, atau Pemberitahuan dengan mengkliknya, mereka menutup sebelum Anda dapat berinteraksi dengannya.

Apakah ada cara untuk mendapatkan fokus yang dapat digunakan mengikuti mouse?

Adakah yang berhasil menggunakan Win10 seperti ini?

Gordon Wrigley
sumber
Solusi untuk masalah # 1 adalah dengan mengklik kaca pembesar (pencarian). Kunci pintas untuk ini adalah Window + S.
andz
1
Anda mungkin dapat menghindari Masalah # 2 dengan mengatur ActiveWndTrkTimeout ke nilai yang lebih tinggi. WinAero Xmouse Tuner dulu memiliki minimum 500 ms, tetapi sekarang diturunkan ke minimum 100 ms di WinAero Tweaker karena permintaan yang luar biasa. Masih tidak mungkin untuk menurunkannya di bawah 100 ms tetapi mungkin ada alasan bagus untuk itu.
andz

Jawaban:

33

Gunakan Kontrol X-Mouse , ini adalah yang paling dekat yang saya temukan dengan Mouse Fokus Sejati, dan ia memiliki beberapa opsi untuk mengubah. Ini adalah utilitas open-source kecil yang tidak memerlukan instalasi atau reboot, dan menyelamatkan Anda dari mengubah registri sendiri.

Sejauh yang saya telah bereksperimen, saya dapat menggunakan keyboard untuk mencari file / program setelah menekan tombol Win. Juga, menu Mulai dan Pemberitahuan tidak hilang sebelum saya dapat menggunakannya, bahkan dengan opsi kenaikan-naik-turun, karena Anda dapat mengatur penundaan kecil untuk perilaku (satu atau dua ratus ms sudah cukup), yang memberi Anda lebih dari cukup ruang untuk memindahkan pointer ke jendela baru.

Saya telah menggunakannya untuk sementara waktu dan saya cukup senang dengan itu, ditambah manajer window bug.n. Pengaturan ini sedekat saya pernah menggunakan DWM di unix.

ArthurChamz
sumber
24

Skrip PowerShell berikut harus memiliki efek yang sama dengan program XMouse ... tanpa harus menjalankan biner pihak ke-3

Kode:

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

Konstanta diambil dari sini

golvok
sumber
Itu bekerja dengan indah, lebih baik daripada yang pernah saya coba. Simpan saja ini dalam file .ps1, klik kanan dan pilih Jalankan dengan Powershell. Anda bahkan dapat menambahkannya di Penjadwal Tugas untuk memulai saat boot.
Zurd
11

Modifikasi registri yang disebutkan dalam tautan pertanyaan berfungsi pada Windows 10. Namun, tampaknya harus dibuat ketika opsi "Aktifkan jendela dengan mengarahkan mouse dengan mouse" dipilih dalam pengaturan aksesibilitas. Opsi ini dapat ditemukan di bawah Panel Kontrol> Kemudahan Akses> Ubah Cara Kerja Mouse Anda .

Jika Anda mengalami masalah yang sama dan kotak centang yang dipilih, unselect itu, klik apply, pilih lagi dan mengulang modifikasi. Mouse harus berperilaku dengan benar saat lain kali Anda masuk.

aleixosk
sumber
3
Namun, itu sesuai dengan namanya - menaikkan jendela secara otomatis. OP ingin TIDAK naik, tetapi masih memungkinkan fokus pada jendela latar belakang. Mengikuti instruksi Winaero dari Q (mengatur kode hex pertama ke 9F) dan masuk dan keluar sepertinya berfungsi dengan baik. Tombol Win + mengetik = berfungsi untuk pencarian. Tombol menang dengan mouse + mengetik = TIDAK bekerja untuk pencarian jika fokus jauh dari tombol tersebut, tetapi apakah jika saya menjaga mouse tetap di atas tombol. Membunuh explorer.exe dan menjalankan userinit.exe tidak berfungsi untuk memuat pengaturan reg, jadi sepertinya logoff diperlukan.
mpag
Menerapkan modifikasi registri berhenti menaikkan otomatis.
aleixosk
6

Windows sebenarnya memiliki bendera untuk mengaktifkan fokus-mengikuti-mouse ("pelacakan jendela aktif"), yang dapat diaktifkan dengan mudah melalui panggilan API "SystemParametersInfo" Win32 yang luar biasa. Ada program pihak ketiga untuk mengaktifkan bendera, seperti Kontrol X-Mouse , atau Anda dapat melakukan panggilan secara langsung menggunakan PowerShell.

Dokumentasi tidak selalu super jelas tentang bagaimana pvParamargumen digunakan, dan beberapa cuplikan PowerShell secara keliru melewatkan pointer ke nilai, bukan nilai itu sendiri, ketika mengatur flag tertentu ini. Ini akhirnya selalu ditafsirkan sebagai true, yaitu mereka secara tidak sengaja berfungsi untuk mengaktifkan bendera, tetapi tidak untuk menonaktifkannya lagi.

Di bawah ini adalah cuplikan PowerShell yang melakukan panggilan dengan benar. Ini juga termasuk pemeriksaan kesalahan yang tepat, dan saya sudah mencoba untuk kebersihan daripada singkatnya, juga membuatnya lebih mudah untuk menambahkan pembungkus untuk fungsi lain SystemParametersInfo, jika Anda menemukan beberapa yang menarik bagi Anda.

Shout-out ke pinvoke.net karena menjadi sumber yang bermanfaat untuk hal-hal seperti ini.

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
sumber
2
Halo, selamat datang di superuser. Tolong, ketika Anda memberikan kontribusi baru, cobalah untuk memberikan beberapa penjelasan yang terlampir pada kode Anda. Meskipun jawaban Anda tampaknya benar, akan lebih baik jika Anda menjelaskan MENGAPA berfungsi, jadi jika seseorang ingin membuat sesuatu yang sedikit berbeda mereka bisa mendapatkan titik awal pada jawaban Anda. Bagaimanapun, terima kasih telah berbagi pengetahuan Anda dengan kami!
DGoiko
Di sana, saya telah menyempurnakan penjelasannya.
Matthijs
1
Besar! Saya senang menjadi upvote pertama Anda, berharap lebih banyak akan datang: D
DGoiko
1

Bagi mereka yang tidak bisa menjalankannya dengan hanya mengurangi 40 dari byte pertama UserPreferencesMask, cukup dapatkan utilitas WinAero Tweaker sendiri di http://winaero.com/download.php?view.1796

Perhatikan bahwa masalah # 1 di atas masih ada, tetapi mudah ditangani dengan hanya menggunakan ikon kaca pembesar (pencarian) di sebelah kanan menu mulai (tombol pintas Jendela + S). Harga kecil yang harus dibayar untuk mendapatkan fungsionalitas X-Mouse.

Saya tidak mengalami masalah # 2 ketika saya menggunakan WinAero Tweaker.

andz
sumber
1

Menggunakan metode untuk mencapai perilaku mouse yang ceroboh, yang saya sudah terbiasa, dari versi sebelumnya dari windows dan linux dari posting . Saya tidak mengalami masalah # 2 yang Anda alami. Masalah # 1 yang Anda dan semua akan miliki saat menggunakan modifikasi registri ini bukan masalah. Itu tidak persis seperti yang diharapkan karena Anda telah mengubah cara fokus ditangani di windows dengan modifikasi ini. Menggunakan tombol windows membawa mouse ke menu mulai bukan menu pencarian sehingga mendapat fokus, bukan menu pencarian. Jadi, jika Anda ingin menggunakan pencarian, klik di bilah pencarian atau ikon perbesaran (tergantung pada pengaturan penampilan Anda) atau gunakan kombo tombol Win+ Sdan itu akan melakukan hal yang benar.

sudo
sumber
0

Saya belum menguji Winaero karena:

  1. Saya tidak tertarik menjalankan perangkat lunak yang tidak dikenal dari internet.
  2. Karena saya telah memutakhirkan semua PC yang saya gunakan dari Windows 7 ke Windows 10, Windows 7 "Aktifkan jendela dengan mengarahkan kursor itu dengan mouse" pengaturan terus berlaku di Windows 10, meskipun tampaknya tidak ada metode pengaturan ini di GUI Windows 10.

Saya belum menemukan solusi ini di internet, jadi saya akan mendokumentasikannya untuk orang lain.

Menggunakan solusi berikut ini, menjadikan penggunaan Windows 10 dalam mode Xmouse praktis:

  1. Beralih ke jendela lain saat ada beberapa jendela yang tersedia melalui ikon aplikasi di bilah tugas:

    JANGAN klik ikon aplikasi di bilah tugas sebelum mencoba memilih jendela. Jika Anda melakukannya, segera setelah Anda memindahkan pointer mouse di atas taskbar, windows akan hilang. Arahkan kursor ke atas ikon aplikasi hingga jendela muncul, maka Anda dapat memindahkan pointer ke yang Anda butuhkan.

  2. Beralih ke desktop atau aplikasi virtual lain menggunakan tombol tampilan tugas:

    • Klik pada tombol tampilan tugas.
    • Klik lagi dan tahan tombol.
    • Pindahkan pointer ke tugas yang diperlukan atau desktop virtual.
    • Lepaskan tombol mouse, lalu klik lagi.

Catatan: pengaturan Windows 10 "Gulir jendela tidak aktif ketika saya mengarahkan mouse" adalah tambahan yang berguna (lihat Mulai -> Pengaturan -> Perangkat -> Mouse & Touchpad ). Ini tampaknya independen dari fungsionalitas Xmouse dan ON tampaknya menjadi default.

Chris Bagus
sumber
0

Setel Regkey HKCU \ Control Panel \ Desktop \ ActiveWndTrackTimeout ke sesuatu yang lebih tinggi dari 0 hingga Setup delay kecuali jendela lain menjadi aktif

Volker
sumber
1
Perbaiki kunci Anda; Trk bukan Track; misalnya ActiveWndTrkTimeout. Saya tidak tahu apa yang dilakukan Track satu tetapi mengubah Trk satu adalah yang bekerja untuk saya.
lumpynose
-2

Untuk mengatasi masalah # 2 di Windows 10

2) Ketika Anda membuka Mulai, Cari atau Pemberitahuan dengan mengkliknya, mereka menutup sebelum Anda dapat berinteraksi dengannya.

Yang perlu Anda lakukan adalah:

  • Tekan Windows+X
  • Panel kendali
  • Akses mudah
  • Ubah cara kerja mouse Anda
  • Aktifkan kotak centang: Cegah jendela agar tidak diatur secara otomatis saat dipindahkan ke tepi layar

Tidak perlu perangkat lunak pihak ketiga.

Vincent Ho
sumber