Як увімкнути фокус слід мишкою в Windows 10


44

Мені б хотілося підвищити клацання і неохайний фокус-слід за мишкою в Windows 10, оскільки це налаштування, яке я використовую в Windows і Linux роками.

У Windows 10 я спробував змінити regdit Xmouse, згадані в цьому посиланні, які спочатку були призначені для Windows 8: http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- покажчик-особливість у вікнах-8-1-вікнах-8-і-вікнах-7 /

Однак у мене виникли такі проблеми:

  1. Коли ви відкриєте меню "Пуск" натисканням клавіші Windows, він не отримує введення з клавіатури.

  2. Коли ви відкриєте "Пуск", "Пошук" або "Сповіщення", натиснувши на них, вони закриються, перш ніж ви зможете з ними взаємодіяти.

Чи є в будь-якому випадку, щоб отримати корисний фокус слід миші?

Хтось успішно використовує Win10, як це?


Вирішення питання №1 - це натиснути на збільшувальне скло (пошук). Клавіша клавіш швидкого доступу для цього - Window + S.
andz

1
Ви можете уникнути випуску №2, встановивши ActiveWndTrkTimeout на більш високе значення. Тюнер WinAero Xmouse раніше мав мінімум 500 мс, але зараз він знижений до мінімуму 100 мс у програмі WinAero Tweaker через переважні запити. Знизити її до 100 мс досі неможливо, але це може бути вагомою причиною.
andz

Відповіді:


33

Використовуйте елементи керування X-Mouse , це найближче, що я виявив, щоб справжній фокус слідкував за мишею, і у нього є кілька варіантів налаштування. Це невелика утиліта з відкритим кодом, яка не потребує встановлення чи перезавантаження, і рятує вас від зміни реєстру самостійно.

Наскільки я експериментував, я можу використовувати клавіатуру для пошуку файлів / програм після натискання клавіші Win. Крім того, меню "Пуск" і "Сповіщення" не виходить, перш ніж я можу їх використовувати, навіть якщо ви не зможете скористатися цією опцією "підняти на курсор", оскільки ви можете встановити невелику затримку поведінки (достатньо однієї або двохсот мс), що дає вам більш ніж достатньо місця для переміщення вказівника на нове вікно.

Я використовував його деякий час, і я цілком задоволений цим, плюс менеджер вікон для плитки bug.n. Ця налаштування наближається до того, як я використовував dwm на unix.


24

Наступний скрипт повноважень повинен мати такий самий ефект, що і програма 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». Ви навіть можете додати його в Планувальник завдань для запуску при завантаженні.
Zurd

11

Зміни реєстру, зазначені у посиланні на запитання, працюють у Windows 10. Однак, мабуть, їх потрібно здійснити, коли в налаштуваннях доступності вибрано опцію «Активувати вікно, наведення курсор миші на нього». Цю опцію можна знайти в Панелі керування> Простота доступу> Змінити, як працює ваша миша .

Якщо у вас виникають ті самі проблеми, і прапорець встановлений , зніміть його, натисніть Застосувати, виберіть його знову і повторіть зміни. Миша повинна вести себе належним чином під час наступного входу.


3
Однак те, що підказує назва - піднімає вікна автоматично. ОП хоче, щоб воно НЕ піднімало, але все ж дозволяло зосередити увагу на фоновому вікні. Дотримуючись інструкцій Winaero Q (встановлення першого шестигранного коду до 9F) та входу та виходу, здається, працює нормально. Клавіша Win + typing = працює для пошуку. Кнопка Win за допомогою клавіші миші + набору = НЕ працює для пошуку, якщо фокус колись від зазначеної кнопки, але робить, якщо я тримаю курсор миші на кнопці. Вбивство explorer.exe та запуск userinit.exe не працювали для завантаження параметрів рег., Тому видача даних видається необхідною.
mpag

Застосування модифікацій реєстру зупиняє автоматичне підвищення.
aleixosk

6

Насправді в Windows є прапор, що дозволяє ввімкнути мишкою фокус-слідку ("активне відстеження вікон"), яку можна легко ввімкнути через жахливий виклик API "SystemParametersInfo" Win32. Існують сторонні програми для включення прапора, такі як X-Mouse Controls , або ви можете здійснювати дзвінок безпосередньо за допомогою PowerShell.

Документація не завжди надзвичайно чітка щодо того, як використовується pvParamаргумент, і деякі фрагменти посилань невірно передають вказівник на значення, а не на саме значення при встановленні цього конкретного прапора. Це в кінцевому підсумку завжди трактується як true, тобто вони випадково працюють над включенням прапора, але не для того, щоб його знову відключати.

Нижче представлений фрагмент Powerhell, який виконує виклик правильно. Це також включає належну перевірку помилок, і я намагався піти на чистоту, а не на стислість, щоб також було легше додавати обгортки для іншої функціональності 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
Чудово! Я радий бути вашим першим кандидатом, сподіваюся, що ще багато чого: D
DGoiko

1

Для тих, хто не зміг змусити його працювати, просто віднявши 40 з першого байта UserPreferencesMask, просто отримайте саму утиліту WinAero Tweaker за адресою http://winaero.com/download.php?view.1796

Зауважте, що випуск №1, як і раніше, все ще присутній, але його легко вирішити, просто використовуючи піктограму лупи (пошук) праворуч від меню "Пуск" (клавіша швидкого доступу Window + S). Невелика ціна, яку потрібно заплатити за отримання функціональності X-Mouse.

Я не відчуваю проблеми №2, коли використовую WinAero Tweaker.


1

Використовуючи метод для досягнення неохайної поведінки миші, до якої я так звик, з попередніх версій Windows та Linux з поста . Я не відчуваю проблеми №2, яка у вас виникає. Випуск №1, який ви і всі матимете при використанні цієї модифікації реєстру, не є проблемою. Це робиться точно так, як очікувалося, оскільки ви змінили спосіб обробки фокусу у Windows з цією модифікацією. Використовуючи клавішу Windows, миша вводить в меню "Пуск" не меню пошуку, тому фокус стає не меню пошуку. Отже, якщо ви бажаєте скористатись пошуком, натисніть на панель пошуку або на значок збільшення (залежно від налаштувань для його появи) або скористайтесь комбінацією клавіш Win+, Sі це зробить правильно.


0

Я ще не тестував Winaero, тому що:

  1. Мені не хочеться запускати невідоме програмне забезпечення з Інтернету.
  2. Коли я оновив усі ПК, які використовую з Windows 7 до Windows 10, Windows 7 "Активувати вікно, наведення курсор миші на нього" продовжує діяти в Windows 10, хоча, здається, немає способу встановивши це в графічному інтерфейсі Windows 10.

Я ще не знайшов цих способів вирішення в Інтернеті ніде, тому я буду документувати тут інших.

Використовуючи наступні способи вирішення, використання Windows 10 у режимі Xmouse є практичним:

  1. Перехід до іншого вікна, коли на піктограмі програми на панелі завдань доступно декілька вікон:

    НЕ клацніть піктограму програми на панелі завдань, перш ніж намагатися вибрати вікно. Якщо ви це зробите, як тільки ви перемістите вказівник миші над панеллю завдань, вікна зникнуть. Просто наведіть курсор миші на піктограму програми, доки не з’явиться вікно, тоді ви можете перемістити вказівник на потрібний.

  2. Перехід на інший віртуальний робочий стіл або додаток за допомогою кнопки перегляду завдань:

    • Натисніть кнопку перегляду задач.
    • Клацніть ще раз і утримуйте кнопку.
    • Перемістіть покажчик на потрібне завдання або віртуальний робочий стіл.
    • Відпустіть кнопку миші та натисніть ще раз.

Примітка. Налаштування Windows 10 "Прокручування неактивних вікон, коли я клацніть на них" - корисне доповнення (див. Пуск -> Налаштування -> Пристрої -> Миша та тачпад ). Це здається незалежним від функціональності Xmouse, і ON, здається, є типовим.


0

Встановіть Regkey HKCU \ Панель управління \ Desktop \ ActiveWndTrackTimeout на щось вище, ніж 0, щоб затримати налаштування, якщо інше вікно не активується


1
Виправити ключ; це Trk not Track; наприклад, ActiveWndTrkTimeout. Я поняття не маю, що робить трек, але зміна Trk - це те, що працює для мене.
грудочка

-2

Щоб вирішити питання №2 в Windows 10

2) Коли ви відкриваєте "Пуск", "Пошук" або "Сповіщення", натискаючи на них, вони закриваються, перш ніж ви зможете з ними взаємодіяти.

Все, що вам потрібно зробити, це:

  • Натисніть Windows+X
  • Панель управління
  • Легкість доступу
  • Змініть, як працює ваша миша
  • Увімкніть прапорець: Запобігайте автоматичному розташуванню вікон при переміщенні до краю екрана

Немає необхідності в сторонній програмі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.