Отключить (отменить привязку) горячие клавиши Win + Arrows по умолчанию, чтобы их можно было использовать в других приложениях

9

В Windows 7 я хотел бы отменить привязку по умолчанию Win+ Up/ Down/ Left/, Rightчтобы их можно было напрямую связать * в других приложениях. Как это может быть сделано?

Эти горячие клавиши могут быть легко отключены с помощью:

  1. Переходя в центр легкого доступа ,
  2. выбрав Сделать клавиатуру проще в использовании , и
  3. Установите флажок Запретить автоматическое расположение окон при перемещении к краю экрана :

    настройка

Но даже при использовании этого параметра и отключении горячих клавиш (они ничего не делают), горячие клавиши все равно не могут быть связаны в других приложениях.


Я пробовал следующие способы и ни одна из этих работ :

  1. Внесение вышеуказанных изменений в центр удобства доступа
  2. Включение политики Отключите горячие клавиши Windows + X , что соответствует значению: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoWinKeysto 1. (С одной только этой настройкой рассматриваемые горячие клавиши все еще работают как обычно.)
  3. Отключение ключа Windows, как описано в KB216893, с помощью настройки System\CurrentControlSet\Control\Keyboard Layout\Scancode Map. Это полностью отключает ключ Windows, так что его нельзя никуда связывать или использовать.
  4. Включение политики Отключение Windows Mobility Center


Некоторый поиск в Google показал этот пост :

комбинации клавиш Win + Arrow - одна из нескольких (наряду с Win + P, Win + U и Win + L), которые как-то «супер-зарегистрированы / зарезервированы» в Windows 7. Я пытался отследить, где и когда они зарезервированы, но пока пустуют. Я также пробовал различные приемы, чтобы зарезервировать их до того, как у Windows появится шанс, но пока ничего не работает. Эти комбинации клавиш просто привязаны к Windows на глубоком внутреннем уровне независимо от того, используете ли вы их на самом деле.

Этот парень не нашел пути, но, возможно, некоторые из вас знают больше. Может быть, есть какая-нибудь dll / exe, которую мы можем легко исправить. ;-)

*) Я бы не хотел использовать другие инструменты, такие как AutoHotKey, чтобы перехватить горячую клавишу и переназначить ее на что-то еще, что можно связать в обычных приложениях.

Qtax
источник
Вы пытались изменить HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \ NoWinKeys? Ваш вопрос сказал, что вы изменили один в HKCU. Создайте ключ, если его нет, перезагрузите компьютер и посмотрите, имеет ли он какой-либо эффект.
Зак Б

Ответы:

7

Этот парень не нашел пути, но, возможно, некоторые из вас знают больше.

Скорее всего, не. Я пытался найти способ, чтобы Windows Vista + не включала горячие клавиши с момента их появления .

Дело в том, что в отличие от большинства горячих клавиш Windows, которые можно отключить с помощью этого NoWinKeysпараметра, есть несколько, которые не зарегистрированы через проводник Windows. Вместо этого, CSRSS более высокого (более низкого?) Уровня регистрирует несколько горячих клавиш в начале процесса загрузки, поэтому вы не только не можете сначала их зарегистрировать, но и не существует настроек, позволяющих их не использовать. Эти ключи специально обрабатываются:

Win + P
Win + L
Win + U
Win + G
Win + X
Ctrl + Shift + Esc
Ctrl + Alt + Del

Они могут быть переопределены некоторыми программами, такими как AutoHotkey, но не так, как вы ищете (что позволяет программам регистрировать их глобально).

Может быть, есть какая-нибудь dll / exe, которую мы можем легко исправить. ;-)

Это также маловероятно. Это потребует взлома основных компонентов Windows, и даже если место, где зарегистрированы горячие клавиши, будет найдено и исправлено, это будет означать, что вам придется запретить программному обеспечению безопасности рассматривать исправление как инфекцию и обязательно повторять его применение после каждого Центр обновления Windows.


Вы можете попробовать Windows Hotkey Explorer, который использует хуки Windows для определения источника глобальных горячих клавиш. К сожалению, эти специальные комбинации показаны только как зарезервированные System, то есть они загружены ядром Windows. Что еще более интересно с WHE, это то, что он говорит то же самое для этих ключей даже в Windows XP, где они не используются. Это подразумевает, что они на самом деле не читаются как другие, а вместо того, чтобы жестко кодироваться, что, к сожалению, означает, что даже с низкоуровневыми хуками Windows, WHE не может напрямую получить к ним доступ. Это делает особенно маловероятным, что может быть сделан какой-либо простой патч, драйвер и т. Д., Чтобы они не были связаны.


К сожалению, лучшим и наиболее эффективным решением было бы оставить отзыв Microsoft и надеяться, что они изменят его в будущем обновлении, но это редко, если вообще работает.

В моем случае я просто сдался и изменил свои горячие клавиши XMPlay, чтобы вместо них использовать клавиши со стрелками на цифровой клавиатуре.

Synetech
источник
Слегка связано: я нашел эту тему "RegisterHotkey - list?" в нем есть некоторая информация, которая интересна и, возможно, может помочь найти, где установлена ​​горячая клавиша. Если я правильно понимаю в Vista (и Win7, я полагаю), есть _gphkHashTableфункция ядра, которую вы можете использовать для получения списков зарегистрированных горячих клавиш. Поиск в Google находит только некоторые китайские сайты - я думаю, что только некоторые парни в Китае любят играть с этим. ;-)
Qtax
Это является возможным, но вы должны установить крюк , чтобы получить на информацию, а затем написать и установить драйвер для загрузки в начале процесса загрузки , чтобы исправить код в памяти , чтобы избежать исправления файла на диске.
Synetech
0

Для этого есть как минимум два инструмента.

Во-первых, Microsoft Keyboard Layout Creator

введите описание изображения здесь

Второй KeyTweak

введите описание изображения здесь

Для получения дополнительной информации по связанному вопросу: Запрограммировать перепрограммирование моей клавиатуры?

climenole
источник
1
Как переназначение клавиш помогает отсоединить горячие клавиши? Как это отвечает на вопрос?
Qtax
Единственное, что вы можете сделать с этим «решением», это переназначить клавиатуру, чтобы не было клавиши Windows, заменив ее другим кодом сканирования, а затем сопоставить эту клавишу. НЕ хорошее решение, поскольку все, что пытается использовать ключ Win для чего-либо, было бы непригодным для использования.
Майкл Кохне
Просто угадайте здесь, но теоретически вы можете создать фальшивый WinKey, зарегистрировать свой обработчик, чтобы получить все связанные события, и просто перебросить события с помощью реального ключа Windows. Это дало бы вам возможность настроить любое отображение, связанное с WinKey, как вы пожелаете ... Хотя, не знаю, если это возможно ...
Вайк Хермеч
0

AutoHotkey может переопределять и делать все что угодно с помощью сочетаний клавиш Windows.
См. Эту документацию: переопределение или отключение горячих клавиш .

AutoHotkey также может выполнять свои действия в зависимости от текущего окна или процесса, фактически привязывая ключи по-разному к различным процессам. Смотрите, например, Активация и манипулирование окнами .

Для получения дополнительной информации об AutoHotkey см .:

Учебник и обзор
Документация AutoHotkey

harrymc
источник
3
Они четко сказали, что не хотят использовать AutoHotkey. Если вы не знаете, как AHK позволяет другим программам связывать эти ключи, тогда я не понимаю, как это относится к вопросу.
Synetech
Вы можете подключить горячие клавиши в AutoHotkey, чтобы они ничего не делали или не выполняли какие-либо действия в AHK, но это не позволяет вам связывать эти горячие клавиши в любом другом приложении, о чем и шла речь. (Вот почему я заявил в вопросе, что ответы AHK не представляют большого интереса.)
Qtax
@Qtax: привязка ключей для каждого окна / процесса AutoHotkey казалась мне решением проблемы. Почему это не работает для вас?
Harrymc
1
@harrymc, потому что, если, например, он хотел использовать Winamp Win+Leftдля перемотки, у AutoHotkey нет способа сделать это. Я полагаю, что вы могли бы подделать его, если бы Winamp использовал другую клавишу, скажем, Win+Aдля перемотки, а затем написал сценарий AHK, который определяет, когда эта клавиша нажата, когда окно Winamp активно, а затем отправляет Winamp Win+A, но это бессмысленно, потому что весь смысл глобальным горячим клавишам - заставить их работать независимо от того, какое окно активно.
Synetech
1
@Qtax: я не знаю лучшего решения. Приношу свои извинения, если я предположил отсутствие знаний о AHK с вашей стороны.
Harrymc
0

Вы можете добавить следующий реестр [WIN + R -> regedit.exe]:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System + справа, создайте новую 32-битную DWORD + дважды щелкните по вновь созданной записи DisableLockWorkstation и измените ее значение с 0 (ноль) на 1 (один).

Ссылка http://www.intowindows.com/how-to-disable-windowsl-shortcut-key-in-windows-78-1/

PS. Нет необходимости в перезагрузке xD

aemonge
источник
Статья и настройка говорят о горячей клавише Win + L. Отвязывает ли это клавиши win + arrow?
Qtax
Нет, это на самом деле только отвяжите выигрыш + L. Но, видя, что это возможно, я уверен, что есть способ для стрелок.
августа