Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

chum2000

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

   
 
Актуальная версия: AutoHotkey 2.0.5 от 12 августа 2023
Версия для Windows XP | Changes from v1.1 to v2.0
 
Официальный сайт | Англоязычный форум | Архивный форум | Русскоязычный форум
Документация (англ.) | Документация и статьи (рус.) | История изменений
 
Подборка полезных скриптов | AutoHotkey + Total Commander
 

Цитата:
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить выполнение повторяющихся задач.
 
AutoHotkey позволяет изменить интерфейс практически любой программы. Имеет собственный скриптовый язык, специально нацеленный на лёгкое назначение и переназначение горячих клавиш.
 
AutoHotkey можно использовать для запуска программ, отправки текста, имитации мыши. Скриптовый язык позволяет управлять окнами, файлами и папками. Команды могут быть активированы горячими клавишами.
 
Также имеются возможности создания GUI, работы с реестром, использования собственного API окон для вызова DLL-файлов. Скрипты можно скомпилировать в EXE-файл и запускать на любом компьютере с Windows соответствующей версии.
 
Наиболее частое применение AutoHotkey:
- переназначение клавиш (глобально или у отдельных программ)
- управление мышью с помощью клавиатуры или джойстика
- слежение за системой, автоматическое выполнение некоторых действий по желанию пользователя, таких как напоминание, сканирование или резервное копирование
 

Всего записей: 505 | Зарегистр. 04-03-2004 | Отправлено: 00:28 02-06-2005 | Исправлено: Egor2020, 10:08 21-09-2023
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@adapters
Как-то так.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 11:53 06-08-2014 | Исправлено: OnMyDSeeAtAll, 12:05 06-08-2014
maks61



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krot66
 
Замени #e на #vk45
 
Спасибо за подсказку.

Всего записей: 759 | Зарегистр. 18-01-2013 | Отправлено: 11:27 07-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В широко известной лет 10-15 программе переключения раскладок клавиатуры Keyboard Ninja (по слухам, она до сих пор работает на некоторых машинах) была в числе прочего опция для удобного вызова команд меню в англоязычном интерфейсе. Предположим, текущей раскладкой является русская. Нажимаем и удерживаем клавишу [Alt], другим пальцем наживаем, например, клавишу [Q/Й] – и, опа, срабатывает команда меню [Q]uit (то есть, с клавиатурным акселератором [Q], несмотря на текущую русскую раскладку). После этого просто отпускаем клавишу Alt – и продолжаем печатать по-русски.
Не знаю, как это было там реализовано. Может быть, так, что нажатие Alt переключало текущую раскладку на английскую, а отпускание Alt переключало опять на русскую?
 
Подскажите, можно ли при помощи AutoHotkey сделать что-то похожее?
 
Спасибо!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 17:25 15-08-2014 | Исправлено: oshizelly, 17:30 15-08-2014
Krot66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно, только Alt Для этого не хорош, поскольку на него повешены меню или подчеркивание его пунктов. Можно повесить на правый Ctrl, как в Punto сделано переключение раскладки, но не думаю что удастся сделать это идеально работающим, "для жизни"

Всего записей: 1218 | Зарегистр. 10-12-2007 | Отправлено: 21:35 15-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
Вот здесь 3 пункт поковырять... что-то я такое делал, но неудобно показалось, так что скрипт стер
И, если не путаю, на этом же форуме где-то комбинированный большой скрипт с такой опцией..

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 22:12 15-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 21:12 15-08-2014  
Цитата:
Вот здесь 3 пункт поковырять...

Действительно, заголовок пункта 3: "Действие от удерживаемого нажатия клавиши".
Вот только речь в той статье вообще, в пункте 3, в частности, идёт о мышиных кнопках, а я спрашивал за клавиатуру.
Впрочем, даже если бы это и перенести на клавиатуру, всё равно пока не понимаю, как можно было бы решить описанную мной задачу с временным переключением раскладок клавиатуры

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 17:36 16-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly

Код:
LAlt::
  PostMessage, 0x50, 2,,, A  
  KeyWait, LAlt              
  PostMessage, 0x50, 2,,, A    
Return

Автор скрипта - YMP

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 23:30 16-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 22:30 16-08-2014  
Цитата:
LAlt::  
   PostMessage, 0x50, 2,,, A    
   KeyWait, LAlt                
   PostMessage, 0x50, 2,,, A    
 Return  

Спасибо, конечно, но... вы сами случайно этот скрипт не проверяли? Если да, то работает ли он у вас так, как я описал?  
 
Я сейчас попробовал у себя, ничего похожего: примитивная циклическая переключалка раскладок по одиночной клавише Alt. Причём, поскольку одиночный левый <Alt> мы переназначили на переключение раскладок, то он внезапно перестаёт работать как <Alt> также и в любых комбинациях с другими клавишами, например, отваливается системный хоткей Alt+Tab.
 
Неужели у вас это происходит иначе?    

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 00:08 17-08-2014 | Исправлено: oshizelly, 00:08 17-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly

Цитата:
Может быть, так, что нажатие Alt переключало текущую раскладку на английскую, а отпускание Alt переключало опять на русскую?

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

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 00:45 17-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 23:45 16-08-2014  
Цитата:

Цитата:
Может быть, так, что нажатие Alt переключало текущую раскладку на английскую, а отпускание Alt переключало опять на русскую?

ну, вот как у Вас написано, так оно у меня и работает..  

Прошу прощения, я, похоже, не очень внятно сформулировал проблему (просьбу).  
 
Одна часть задачи действительно была в том, чтобы при удержании заданной клавиши-модификатора (а данном случае <LeftAlt>) включалась другая раскладка клавиатуры, а при отпускании этой клавиши опять переключалась на предыдущую (или на следующую, если в системе установлено больше двух раскладок).
По аналогии с использованием Shift для временного переключения другой регистр букв. Это очень удобная и полезная штука, и именно это ваш скрипт делает. За что в любом случае огромное спасибо за  
 
Однако более важный (для меня) элемент задачи был в том, чтобы можно было с использованием этого трюка при текущей русской раскладке вызывать с клавиатуры команды английского меню через их акселераторы:
Цитата:
Предположим, текущей раскладкой является русская. Нажимаем и удерживаем клавишу [Alt], другим пальцем наживаем, например, клавишу [Q/Й] – и, опа, срабатывает команда меню [Q]uit (то есть, с клавиатурным акселератором [Q], несмотря на текущую русскую раскладку).

 
И вот этого, более важного элемента задачи данный скрипт, к сожалению, не решает. При текущей русской раскладке нажимаем и удерживаем клавишу <Alt>, затем нажимаем клавишу <Й/Q>... и ничего не происходит И это как раз вполне понятно: для вызова команды главного меню приложение ожидает от нас ввода буквы <Q/Й> одновременно с клавишей <Alt>. А мы как раз переназначили через AHK клавишу <Alt> на переключение раскладок, поэтому она больше не работает по своего природному назначению как собственно клавиша <Alt>. Так что приложение получает от нас только ввод буквы <Q/Й>, но без клавиши <Alt> - и поэтому вместо запуска команды [Q]uit просто вводит в активное текстовое поле (если это, к примеру, редактор) букву <Q> или <Й>.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 01:37 17-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
 погуглил тут малеха.. хм.. клавиатурный акселератор - вооще просто горячая клавиша. Ну, может быть, имеется в виду меню прогрммы (какой-то) и выбор опций меню (типа у firefox - New_tab = Ctrl+T)... вообще интересно. Первый раз слышу, что работа этих вещей зависит от раскладки. Потыкал тут - как-то по- барабану. А, если не секрет, что за прога?  

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 02:21 17-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 01:21 17-08-2014  
Цитата:
погуглил тут малеха.. хм.. клавиатурный акселератор - вооще просто горячая клавиша.

Гугл - ф топку Разница в принципах использования клавы в акселератора и в хоткеях просто огромная, и особенно как раз в плане клавиатурных раскладок.
Если интересно, почитайте, например, тут.
 
У вас текстовый процессор Notepad установлен? Откройте его и нажмите клавишу <LeftAlt> или лучше комбинацию <LeftAlt> + <F>. Видите, там буковки подчёркнуты в названии каждой команды? Вот это и есть клавиатурные акселераторы (keyboard accelerators). Так, нажав последовательно Alt+F => A => E вызываете диалог сохранения файла, а там попадаете в поле выбора выходной кодировки.
 

Цитата:
А, если не секрет, что за прога?

Так любая же! То, что я указывал команду [Q]uit с акселераторм [Q] - это просто пример. Откройте окно любого приложения (ну, почти любого).

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 02:45 17-08-2014 | Исправлено: oshizelly, 02:49 17-08-2014
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@oshizelly
Так Вам подойдёт?

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 19:51 18-08-2014 | Исправлено: OnMyDSeeAtAll, 22:01 22-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll 18:51 18-08-2014  
Цитата:
Так [?] Вам подойдёт?

Спасибо, но у меня этот скрипт работает так же, как гораздо более простой вот этот скрипт.  
То есть, нажатие одиночного Alt просто переключает раскладку на другую, но не временно, а постоянно.  
А если жать Alt одновременно с буквой, и при этом текущей раскладкой является русская, а меню - английское, то вообще ничего не происходит, как если бы этого скрипта и не было
 
А у вас этот скрипт работает правильно?

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 01:22 19-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Buuu... РРРРРРРРРРРРРРРРР..
Была тупая идея по поводу задачи oshizelly
типа:  

Код:
$!vk46:: !f

подразумевалось, что независимо от раскладки при нажатии на Alt+буква будет посылать Alt+латинский символ. Ну и поставить такие соответствия для всех букв алфавита
но по факту эта зараза делает так:
при включенной английской раскладке - все ок, при русской раскладке - печатается латинский символ, как будто Alt и не нажимали... Где бы мне подучить эту тему? Как-то совсем мутно все..
Шит!!! Хотел сделать костыль, так и тут засада:
кто-нибудь знает, как отключить включение caps-lock по Alt+CapsLock? Может, скрипт как-то родить?

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 19:03 19-08-2014 | Исправлено: vadim3sh, 19:28 19-08-2014
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly 01:22 19-08-2014
Цитата:
...нажатие одиночного Alt просто переключает раскладку на другую, но не временно, а постоянно.
По логике моего кода использование одиночного нажатия не предусмотрено (хотя и возможно), но если такое и происходит, такого явления не было замечено.
Цитата:
Q.1: ...если жать Alt одновременно с буквой, и при этом текущей раскладкой является русская, а меню - английское, то вообще ничего не происходит...
Q.2: ...у вас этот скрипт работает правильно?
A.1: По логике делаете правильно, и тут как вариант может быть такая ситуация: скрипт и приложение имеуют разные уровни прав (если проложение запущено от имени администратора, а скрипт нет, то он не будет работь в этом приложении). Добавил в код условие, чтобы скрипт запускался с правом администратора.
A.2: У меня данный код работает без нареканий в: блокноте, редакторе SciTE-Ru, калькуляторе, Audacity, VirtualDubMod (дальше проверять не стал). Согласно замечанию (GetMenu()) в окнах с не стандартным меню, плавающих окнах либо где меню вообще нет - код работать не будет, таким образом у меня не работает в: Total Commander, Photoshop, 3ds Max, Chrome, Opera (далее не смотрел).
@vadim3sh
Если я правильно понял вопрос.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 04:33 20-08-2014 | Исправлено: OnMyDSeeAtAll, 04:39 20-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll

Цитата:
Если я правильно
Правильно, правильно! Спасибо опять и снова большое! Еслиб еще первую часть вопроса кто-то просветил..
 
oshizelly
глянте на костыль пока... может, что-то измените уже по месту..

Код:
CapsLock::  
   PostMessage, 0x50, 2,,, A    
   KeyWait, CapsLock                
   PostMessage, 0x50, 2,,, A    
 Return  
Alt & CapsLock::SetCapsLockState, Off
return  

 
Типа... зажимаем CapsLock (esli on nagruzki ne neset) а потом как и в англ раскладке  -  Alt+....
У меня работает. Вродебы как.

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 18:18 20-08-2014 | Исправлено: vadim3sh, 18:19 20-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 17:18 20-08-2014  
Цитата:
 глянте на костыль пока... может, что-то измените уже по месту.. У меня работает. Вродебы как.

Огромное спасибо (а также и OnMyDSeeAtAll за идейную поддержку), жить стало легче и, конечно же, веселей. Поначалу нажимал по привычке первой клавишу <Alt>, потом уже <Capslock> - и оно, естественно, не работало. Только потом сообразил (вернее, прочёл более внимательно), что сначала надо зажимать именно <Capslock>, а потом уже <Alt> с буквой-акселератором.
 
Кроме исходной задачи (вызов команд английского меню при текущей русской раскладке) имеем также очень полезную дополнительную фичу. Можно, зажав CapsLock, но не переключая раскладку полностью, ввести несколько символов на альтернативной раскладке: при активной русской раскладке ввести пару символов английских символов (или наоборот, хотя обычно этого не требуется). Вроде как ввод нескольких заглавных букв с зажатым шифтом. Ну просто очень удобно! :hands: (Эта фича, кстати, тоже была в старинном Keyboard Ninja)
 
Тем не менее, остаётся пара проблем.
 
1) У меня оно работает для вызова команд главного меню, но почему-то не работает для навигации внутри модальных окон диалогов, как я описывал несколькими постами выше. А у вас? Может, я что-то не так делаю?
 
2) При обычном вводе текста с зажатым <Capslock> можно нажать дополнительно клавишу <Shift> - и тогда буквы из альтернативной раскладки будут вводиться заглавными (что очень хорошо и логично). Однако почему-то нажатие клавиши <Shift> не воздействует на некоторые клавиши. А ещё, с зажатым шифтом вообще не удаётся ввести некоторые буквы, например, букву <S>/<Ы> - ни строчную, ни заглавную (возможно, есть и ещё такие буквы, все не проверял).  
То же самое с клавишей, расположенной в предпоследнем ряду между левым шифтом и клавишей <Z> (она не на всех клавиатурах присутствует): одиночный Capslock воздействует на неё вполне правильно, то есть, вводится символ нижнего регистра из альтернативной раскладки, но с нажатой клавишей <Shift> ничего не вводится вообще. (А это, кстати, очень нужная клавиша, так как, например, в немецкой и скандинавской раскладке именно эта клавиша с шифтом вводит правую треугольную скобку >, а на русской раскладке - не менее нужный косой слэш /.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 15:01 23-08-2014
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А ещё временное переключение раскладок по <Capslock> почему-то не работает в некоторых окнах текстового ввода некоторых приложений, например, в приложении HyperSnap при вписывании текста в textbox, в приложении QTranslate.
 

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 17:30 23-08-2014 | Исправлено: oshizelly, 17:56 23-08-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
Догадываюсь, что сча буду бит OnMyDSeeAtAll, но PostMessage у меня почему-то часто барахлит.. Поэтому сам я использую еще один костыль.. Попробуйте, мож помож..
Зайдите в языковые настройки и там проверьте, чтобы циклич перекл раскладки было на алт+шифт. Можно и на контрл+щифт, но надо скрипт корректировать. А потом потестите такую кракозяблу:

Код:
CapsLock::  
   Send {Shift Down} {Alt} {Shift Up}
   KeyWait, CapsLock                
   Send {Shift Down} {Alt} {Shift Up}
 Return  
Alt & CapsLock::SetCapsLockState, Off
return  

Вот это: {Shift Down} {Alt} {Shift Up} - очень коряво, сейчас как-то лучше нажатие двух клавиш записывают, но у меня что-то не срослось..
По поводу второй части вопроса (про   шифт) - они явно косячат из-за того, что в винде shift+capslock=capslock. С этим отдельно надо разбираться...

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 01:30 24-08-2014 | Исправлено: vadim3sh, 01:37 24-08-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru