Проблема с горячими клавишами в секции [ShortcutsWin]

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Lazy Crazy
Сообщения: 400
Зарегистрирован: Вс янв 16, 2005 20:53

Сообщение Lazy Crazy »

Rodny писал(а):Flasher
Так это ты назначил. А по умолчанию Win+X открывает Центр мобильности, на мобильных девайсах, само собой ;)
Конечно и на настольных мог бы работать, если бы его поставили - только там сугубо ноутбучные параметры: настройка яркости экрана, вкл/выкл wi-fi и bluetooth, вывод изображения на внешний монитор и т.п. Производители любят стандартный центр расширять под свои девайсы…
Вахмурка писал(а):Большая просьба ко всем дискутирующим: кто обнаружит на бескрайних просторах информационной помойки по имени "интернет" список ВСЕХ системных горячих клавиш по ВСЕМ версиям Windows со ВСЕМИ необходимыми пояснениями типа "Навести курсор в угол", "Только для мобильных устройств" и пр.: поместите сюда ссылку, буду очень благодарен. И судя по оживленности обсуждения, не я один.
Столь полного списка не видел, но в дополнение к тому, что выкладывал выше (для windows 7), могу предложить опять-таки с первоисточника сочетания для windows xp, и для vista.
Изображение
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Но это не объясняет, что в Тотале нельзя назначить команду на Win+Y, например. Значит, есть какая-то операция в винде, повешенная на это сочетание. Если оно зарезервировано, контекстно зависимо или заблокировано потому, что мелкомягкому программисту просто не нравится буква Y, это должно быть указано в том перечне, который я ищу. Ведь не только Тотал позволяет вешать на клавиши свои команды.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Lazy Crazy писал(а):Конечно и на настольных мог бы работать, если бы его поставили - только там сугубо ноутбучные параметры: настройка яркости экрана, вкл/выкл wi-fi и bluetooth, вывод изображения на внешний монитор и т.п. Производители любят стандартный центр расширять под свои девайсы…
У меня Win+X на ультиматной винде работает и дома и на работе, и там и там нормальные компы, не портативные.
Вахмурка писал(а):Но это не объясняет, что в Тотале нельзя назначить команду на Win+Y, например. Значит, есть какая-то операция в винде, повешенная на это сочетание. Если оно зарезервировано, контекстно зависимо или заблокировано потому, что мелкомягкому программисту просто не нравится буква Y, это должно быть указано в том перечне, который я ищу. Ведь не только Тотал позволяет вешать на клавиши свои команды.
У меня по Win+Y срабатывает команда утилиты Volume Hotkey, значит, ей удалось зарегистрировать комбинацию, значит, она не занята.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):У меня по Win+Y срабатывает команда утилиты Volume Hotkey, значит, ей удалось зарегистрировать комбинацию, значит, она не занята.
Нет, это значит, что хоткей глобальный.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

2MVV, Flasher
Тогда почему Volume Hotkey позволено вешать на эту комбинацию свою конманду, а Тоталу - нет?
Впрочем, я догадываюсь. Видимо, и Volume Hotkey, и TWinKey "лезут" глубже в систему, соответственно, с бОльшим риском (об этом говорилось, например, здесь).
Так ли это?
И еще вопрос. Выходит, что комбинация Win+Y "свободна", и Win+A тоже. Но У Тотала с последней - никаких проблем, с первой - извините. Значит, Win+Y "менее свободна"? Почему? Выходит, по Оруэллу, все незанятые комбинации равны, но некоторые равнее других?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вахмурка писал(а):Так ли это?
Да. Но риск понятие растяжимое, для Твинки - это особый случай. И вообще глобальные хоткеи сопутствуют многим программам из трея (будь то скрипты, ланчбары, утилиты), спектр тут огромный. PowerPro возьми тот же.
Вахмурка писал(а):Выходит, что комбинация Win+Y "свободна"
Эта комбинация ждёт установку яху-мессенджера, который по ней и будет запускаться.
Аватара пользователя
Lazy Crazy
Сообщения: 400
Зарегистрирован: Вс янв 16, 2005 20:53

Сообщение Lazy Crazy »

MVV писал(а): У меня Win+X на ультиматной винде работает и дома и на работе, и там и там нормальные компы, не портативные.
Так я и говорю - будет работать, если поставят. Поставили или OEM-сборщики или авторы сборки windows… Изображение Если не секрет - этот центр кроме регулировки громкости и (возможно) параметров синхронизации с телефоном что-то даёт?
Изображение
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):Нет, это значит, что хоткей глобальный.
Глобальные хоткеи регистрируются функцией RegisterHotKey, а локальные - просто реакцией на посыл окну клавиши при нужных зажатых модификаторах. И, если глобальный хоткей зарегистрирован, окно не получает сообщения о зажатии клавиши, участвующей в хоткее.

Т.е., если винда зарегистрировала комбинацию Win+X, окно тотала не получит сообщение о зажатии клавиши X при зажатом модификаторе Win (получит только сообщение о зажатии модификатора). Следовательно, если глобальный хоткей зарегистрирован, его локальное использование невозможно, как впрочем и глобальное другим приложением (кто первый встал, того и тапки).

Проверить, получает ли тотал хоткей, легко. Берём Spy++ (входит в состав Visual Studio, наверняка можно найти отдельно) или любой другой сканер оконных сообщений, натравливаем на окно тотала, активируем окно тотала и нажимаем хоткей. Я сейчас проверял с калькулятором. При нажатии комбинации Win+' я вижу зажатия Win и ', при нажатии комбинации Win+R я вижу только зажатие Win, при комбинации Win+X или Win+Y я вижу зажатие Win и отжатие X или Y (интересно, почему в случае с Win+R я не вижу отжатия R, видимо потому, что калькулятор к тому моменту уже теряет фокус)...
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

окно тотала не получит сообщение о зажатии клавиши X при зажатом модификаторе Win (получит только сообщение о зажатии модификатора).
Тогда бы в Тотале вылезала стандартная Win-менюшка, как если нажать просто Win. А Тотал, наоборот, получает только Х.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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

А если тотал получает X, значит, комбинация никем не занята. Если бы была занята, тотал бы получал только Win, а X бы не получал (т.к. нажатие X при зажатой Win система бы обрабатывала сама, до того как сообщить об этом нажатии активному приложению).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):И, если глобальный хоткей зарегистрирован, окно не получает сообщения о зажатии клавиши, участвующей в хоткее.
Только в том случае, если этот хоткей сам не является глобальным. Впрочем, это никак не противоречит моему утверждению.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Аж интересно, как глобальный хоткей может не являться глобальным.

Если комбинация не зарегистрирована как глобальный хоткей, активное окно получает сообщение о зажатии и отжатии каждой клавиши, участвующей в комбинации. Т.е., на примере Win+X, зажатие Win, зажатие X, отжатие X, отжатие Win. И обрабатывается обычно такая комбинация на сообщение о зажатии X, при этом проверяется, что Win зажата.

Если же комбинация зарегистрирована как глобальный хоткей, активное окно получит лишь зажатие Win, возможно отжатие X и отжатие Win. Зажатия X окно не получит, система обработает его сама и сообщит о событии приложению, зарегистрировавшему глобальный хоткей.

Комбинация может быть зарегистрирована как глобальный хоткей только 1 раз, повторная регистрация не удастся.


Хе-хе, оказалось, у меня Win+X обрабатывала Volume Hotkey, а не проводник... Выгрузил - и комбинация перестала что-либо делать. И стала работать в тотале. А после запуска Volume Hotkey снова перестала работать в тотале, как и ожидалось.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Аж интересно, как глобальный хоткей может не являться глобальным.
MVV писал(а):зажатии клавиши, участвующей в хоткее
Я это воспринимаю, как хоткей иного приложения, не того, которым зарегистрирован глобальный.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Так на комбинации клавиш можно реагировать всего 2 способами: из оконной процедуры активного окна и по глобальному хоткею. Неактивные окна не получают никаких сообщений о нажатии клавиш. Теоретически, есть ещё хуки, которые вызываются перед оконной процедурой, но они вроде не могут блокировать дальнейшую передачу сообщения.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Неактивные окна не получают никаких сообщений о нажатии клавиш.
Если бы оно было так, то никаких AHK, сервисов драйверов клавиатуры, Listary, TLB, QTranslate, Volumouse, MediaKey и многих-многих других не было бы и в помине.
Ответить