AHK: Удобное добавление горячих клавиш(vk code для буквенных) в скрипт
Часто приходится добавлять горячие клавиши в скрипты.Иногда это буквенные клавиши, а поскольку используются 2 раскладки, хочется чтобы хоткей работал при любой.Приходится писать виртуальные коды, например vk43:: вместо с:: .Раньше запускал отдельную программу для определения этих кодов, теперь, чтобы не отвлекаться, сочинил автозамену:Пишем " vk@ ",например " +^g vk@ " → получаем →
2 Ответ от Alectric 2015-01-06 09:04:41 (изменено: Alectric, 2015-01-06 09:10:13)- Alectric
- Разработчик
- Неактивен
Неплохо было бы, если бы добавлялся комментарий (модификаторы - необязательно):
3 Ответ от stealzy 2015-01-06 12:03:52 (изменено: stealzy, 2015-01-06 12:18:28)- stealzy
- Разработчик
- Неактивен
Комментарий добавлен. Модификаторы придется запомнить, эт все ж не для простого пользователя скрипт:). Для простого serzh82saratov сделал ГПИ.----------------------------------------------
Кстати, интересно в каких редакторах народ пишет скрипты?У меня есть еще автозамены для NotePad++(Scintilla), выкладывать?
4 Ответ от ypppu 2015-01-06 12:28:39- ypppu
- Разработчик
- Неактивен
По простоте и надёжности я бы отдал предпочтение этому скрипту.
5 Ответ от stealzy 2015-01-06 12:52:45 (изменено: stealzy, 2015-01-06 13:34:13)- stealzy
- Разработчик
- Неактивен
О, спасибо, все уже придумано до нас оказывается.
Работоспособность проверял в NP++ и Sublime.У вас в буфер обмена ничего не попало, поэтому и пишет Unknown.Добавил проверку на изменение буфера обмена.Поделитесь, в каком редакторе проверяли, и работает ли в нем выделение по Ctrl+Shift+Left?
6 Ответ от ypppu 2015-01-06 13:23:43- ypppu
- Разработчик
- Неактивен
Проверяю в обычном Блокноте.Сейчас вообще какие-то глюки пошли. Пишу в Блокноте
Получаю перенос строки и табуляцию.
Пишу в Mozilla Firefox (сообщение на форуме)
То есть какие-то нелады с буфером. Предлагаю доработать вариант от YMP.
7 Ответ от stealzy 2015-01-06 13:50:55 (изменено: stealzy, 2015-01-06 13:56:37)- stealzy
- Разработчик
- Неактивен
Поправил.Оказалось, что простой Блокнот по Ctrl+Shift+Left Выделяет ":+g" полностью, не считая знаки +, ^ разделителями текста.В браузерах или других редакторах все ок.
Вы правда пишете код в notepad.exe(0_o)?
8 Ответ от ypppu 2015-01-06 14:31:56 (изменено: ypppu, 2015-01-06 14:34:47)- ypppu
- Разработчик
- Неактивен
Теперь вообще не преобразует в Блокноте.Пишу
9 Ответ от stealzy 2015-01-06 14:37:31 (изменено: stealzy, 2015-01-06 14:39:40)- stealzy
- Разработчик
- Неактивен
Специально для вас - в строке
уберите ^ не будет определяться имена клавиш, типа space или F1, но они и не нужны, вобщем.
10 Ответ от ypppu 2015-01-06 14:44:44- ypppu
- Разработчик
- Неактивен
Вылезает сообщение "Буква не скопировалась"
В буфере при этом остаётся
Может всё-таки просто доработать скрипт от YMP?
Тогда в описании скрипта нужно добавить пояснение для пользователей Блокнота.
11 Ответ от stealzy 2015-01-06 14:53:01 (изменено: stealzy, 2015-01-06 14:58:47)- stealzy
- Разработчик
- Неактивен
Простите, забыл, что метод Send посылает сочетания клавиш через пень-колоду.Добавил исключение для блокнота.Попробуйте сейчас.
12 Ответ от ypppu 2015-01-06 15:15:52- ypppu
- Разработчик
- Неактивен
Как быть с цифрами?
И как быть с NumPad-клавишами?
13 Ответ от Indomito 2015-01-06 15:18:50 (изменено: Indomito, 2015-01-06 15:29:15)- Indomito
- Участник
- Неактивен
stealzy не очень понял, но я только проснулся после работы
Мне бы по сути. да и многим нужно, может быть - нажал и получил в буфере обмена, нечто подобное:vkXX scXX ; клавиша, если такая записывается просто т.е.
Максимизировать автоматизацию не нужно, а то потом "концов не найдёшь"
P.S. Я пользуюсь скриптом
;-----Инициализация; Скрипт не выгружается#Persistent; Запрет повторного запуска#SingleInstance
hHookKeybd := DllCall("SetWindowsHookEx" , Int, WH_KEYBOARD_LL := 13 , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast") , Ptr, DllCall("GetModuleHandle", UInt, 0, "Ptr") , UInt, 0, "Ptr")Return
LowLevelKeyboardProc(nCode, wParam, lParam) return
Но у меня не получается заменить ToolTip на запись куда либо, кроме вывода на экран - может кто подскажет готовое решение или подскажет как занести данные в Буфер Обмена, а?
14 Ответ от stealzy 2015-01-06 15:25:35 (изменено: stealzy, 2015-01-06 16:37:55)- stealzy
- Разработчик
- Неактивен
yuppu, 1) не сработал бекспейс, изменил SendPlay на SendInput. Забавно, что у меня работает любой метод отправки, а у вас - нет. 2)Вы правы, нумпад не определить, просто у меня его нет, так что меня устраивает и так . Вы ведь сами предлагали вариант от YMP.
Indomito, то, как вы хотите выложено YMP_это_ссылка_сюда _можно_тыкатьпо сочетанию Esc+клавиша.Или это не то?
15 Ответ от Indomito 2015-01-06 15:31:28- Indomito
- Участник
- Неактивен
Indomito, то, как вы хотите сделано YMPпо сочетанию Esc+клавиша.Или это не то?
16 Ответ от Indomito 2015-01-06 15:41:11- Indomito
- Участник
- Неактивен
stealzy мой так не работает. ты про какой скрипт говорил то, т.е. дай линк. я хоть гляну.
17 Ответ от ypppu 2015-01-06 15:45:09- ypppu
- Разработчик
- Неактивен
Поправлюсь, выше я дал ссылку на код: автор F1-12, а поместил в Коллекцию YMP.
18 Ответ от Indomito 2015-01-06 15:53:18 (изменено: Indomito, 2015-01-06 15:53:58)- Indomito
- Участник
- Неактивен
Поправлюсь, выше я дал ссылку на код: автор F1-12, а поместил в Коллекцию YMP.
почти то что нужно, но
Сделан только для "букв", поскольку "буквенные" клавиши - самая стабильная часть клавиатуры и поэтому их целесообразно и достаточно задавать через виртуальный код.
. а как же всё остальное?
Просо мне нужно всё, т.е. все клавиши и VK и SC - иногда возникают проблемы.
19 Ответ от ypppu 2015-01-06 15:56:04- ypppu
- Разработчик
- Неактивен
Indomito, доработайте код F1-12. Будет реально полезная штука для новичков и не только.
20 Ответ от Indomito 2015-01-06 16:26:31 (изменено: Indomito, 2015-01-06 16:28:16)- Indomito
- Участник
- Неактивен
ypppu я бы доделал, но нужен инструмент для получения всех кодов - я пока смотрю на экран и ввожу, так что как доделаю скрип то сделаю.
А авторство скрипта VkScCode_64.ahk чьё? Он раньше назывался VkScCode.ahk(кажется, но не уверен)Правда я его немного поправил и доработал
P.S. Конечно можно всё сделать обычным КопиПасте, но проще иметь один универсальный скрипт (в рамках разумного)
21 Ответ от YMP 2015-01-06 17:06:15- YMP
- Разработчик
- Неактивен
а как же всё остальное?
Просо мне нужно всё, т.е. все клавиши и VK и SC - иногда возникают проблемы.
В той теме коды используются для клавиш, которые меняют имена при смене раскладки. Именно эта проблема и решается. Правда, для цифр это излишне. А все клавиши — зачем?
22 Ответ от stealzy 2015-01-06 17:11:34 (изменено: stealzy, 2015-01-06 17:16:31)- stealzy
- Разработчик
- Неактивен
+YMPТема называется "Удобное добавление горячих клавиш в скрипт",Что мой код(автозаменой), что код F1-12(хоткеем), решают эту проблему.Добавлены даже избыточные клавиши, не меняющиеся с раскладкой. Правда, мой вариант не различает клавиши цифрого блока.
23 Ответ от Indomito 2015-01-06 17:27:32- Indomito
- Участник
- Неактивен
YMP просто мне иногда требуется. может я исключение
24 Ответ от YMP 2015-01-06 17:43:03- YMP
- Разработчик
- Неактивен
YMP просто мне иногда требуется. может я исключение
В смысле, душа просит, а зачем — не знаю?
25 Ответ от Indomito 2015-01-06 18:04:36 (изменено: Indomito, 2015-01-06 18:05:08)- Indomito
- Участник
- Неактивен
YMP дело не в душе, дело в NumPad-кнопках
У них SC разное, а VK одинаковое — в зависимости от режима NumPad + у меня клавиатура с 7-ю режимами и надо как то это отлавливать, но это уже моё дело и я с этим разобрался.
Так что это не ради прикола
26 Ответ от YMP 2015-01-06 18:16:40- YMP
- Разработчик
- Неактивен
но это уже моё дело и я с этим разобрался.
Не у вас же одного такая клавиатура. Или это что-то уникальное, сделанное на заказ? И мастер поклялся, что ни в коем разе не будет делать подобного?
27 Ответ от Indomito 2015-01-06 18:32:48 (изменено: Indomito, 2015-01-06 18:34:27)- Indomito
- Участник
- Неактивен
Ну конечне не у меня одного(она не уникальная ), но моё решение понравится единицам. надо доп.скрипт писать на LUA, а вот NumPAD работает одинаково - 7 штук клавиатур проверил, правда все под Win 7 x64 Ult
28 Ответ от serzh82saratov 2015-01-06 19:04:04- serzh82saratov
- Разработчик
- Неактивен
Indomito так что именно нужно? В том коде в котором хук, правильно определять имена клавиш по кодам? Или из AutoHotkey-имён клавиш получить VK SC код, что навряд ли может потребоватся?
29 Ответ от serzh82saratov 2015-01-06 19:18:14- serzh82saratov
- Разработчик
- Неактивен
Насчёт печати кодами, я предлагал как то упростить, правда тогда всё перешло в срач. В принципе если всех устраивает, можно дополнить постом в той теме коллекции. Ну и клавиши модификаторы выглядят по моему как то надёжнее и удобнее автозамен.
30 Ответ от Indomito 2015-01-06 19:20:31- Indomito
- Участник
- Неактивен
Indomito так что именно нужно? В том коде в котором хук, правильно определять имена клавиш по кодам? Или из AutoHotkey-имён клавиш получить VK SC код, что навряд ли может потребоватся?
мне нужно модифицироваться тот скрип который корректно выдаёт всё что мне нужно. но это весьма тяжко я про
Две проблемы1. Занести в Clipboard2. Назначить сочетание для выхода, что оно не попало в Clipboard
Идейно я задачу решил, но получается "Почесать правой рукой левое ухо", а точнее "Почесать правой ногой левое ухо"
31 Ответ от serzh82saratov 2015-01-06 19:24:18- serzh82saratov
- Разработчик
- Неактивен
1. Занести в Clipboard2. Назначить сочетание для выхода, что оно не попало в Clipboard
1. Clipboard = то что нужно.2. Непонятно о чём.
До этого вообще речь была про NumPAD.
32 Ответ от Indomito 2015-01-06 19:35:32- Indomito
- Участник
- Неактивен
1. Занести в Clipboard2. Назначить сочетание для выхода, что оно не попало в Clipboard
1. Clipboard = то что нужно.2. Непонятно о чём.
До этого вообще речь была про NumPAD.
поясняю 1. Clipboard = то что нужно это получается.2. У меня на завершение было назначено сочетание Ctrl+Win+ESC но функция об этом не знает и заносит ESC в Clipboard3. Вставка из буфера без завершения скрипта. тоже не проходит Ctrl+V в Clipboard попадают коды V4. Про NumPAD это был просто ответ на вопрос
33 Ответ от serzh82saratov 2015-01-06 19:44:13- serzh82saratov
- Разработчик
- Неактивен
2. У меня на завершение было назначено сочетание Ctrl+Win+ESC
На завершение чего?
4. Про NumPAD это был просто ответ на вопрос
дело в NumPad-кнопках
У них SC разное, а VK одинаковое — в зависимости от режима NumPad
Это ответ, или вопрос?
34 Ответ от Indomito 2015-01-06 19:47:45- Indomito
- Участник
- Неактивен
serzh82saratov
35 Ответ от serzh82saratov 2015-01-06 20:13:42- serzh82saratov
- Разработчик
- Неактивен
Наврядли согласно ТЗ, это кому то сможет пригодится.
Очень всё запутано. Значит вопрос: зачем нужны VK и SC всех клавиш. Я вот и при наличии ответа, до сих пор непонимаю, зачем вам это?
36 Ответ от Indomito 2015-01-06 20:21:59 (изменено: Indomito, 2015-01-06 20:25:02)- Indomito
- Участник
- Неактивен
Я вот и при наличии ответа, до сих пор непонимаю, зачем вам это?
+Спасибо. я отстал и доволен
37 Ответ от Indomito 2015-01-06 20:56:44- Indomito
- Участник
- Неактивен
А вот и я. не работает фрагмент вставки из буфера обмена по Ctrl+V
Я поменял на скан-код - не помогло
38 Ответ от serzh82saratov 2015-01-06 20:59:31- serzh82saratov
- Разработчик
- Неактивен
Ещё бы хоть с пятого раза понять что требуется, что означает не работает, какой скан-код.
39 Ответ от Indomito 2015-01-06 21:11:52- Indomito
- Участник
- Неактивен
1. Нажимаем ну скажем на TAB, видим через ToolTip его sc и vk2. Нажимаем сочетание Ctrl+V3. В результате выводится блокнот или код Ctrl или код V
P.S. Копировал один к одному, я про скрипт.
40 Ответ от Indomito 2015-01-06 21:29:24- Indomito
- Участник
- Неактивен
Похоже я нашёл проблему, она заключена в том, что надо немного ждать. 1. Если нажата V ждать нажатия Ctrl2. Если нажата Ctrl ждать нажатия V
Ждать приблизительно 0.5 - 0.50 секунд в цикле While их можно сделать два, а можно и один.В данной функции Sleep допустим?
41 Ответ от serzh82saratov 2015-01-06 21:32:41- serzh82saratov
- Разработчик
- Неактивен
А коды модификаторов вообще нужны?
42 Ответ от Indomito 2015-01-06 21:57:41 (изменено: Indomito, 2015-01-06 22:34:00)- Indomito
- Участник
- Неактивен
А коды модификаторов вообще нужны?
ПОНЯЛ - Они Нужны
P.S. Отредактировал - убрал не нужное.
43 Ответ от Irbis 2015-01-06 21:59:32- Irbis
- Разработчик
- Неактивен
Indomito , ваш стиль изложения мыслей весь форум ставит в тупик. А фраза ' 0.5 - 0.50 секунд ' окончательно сломала мозг.
44 Ответ от serzh82saratov 2015-01-06 22:08:46- serzh82saratov
- Разработчик
- Неактивен
Indomito, я снова ничего непонял. Irbis +1.
45 Ответ от Indomito 2015-01-06 22:09:53 (изменено: Indomito, 2015-01-06 22:15:34)- Indomito
- Участник
- Неактивен
Извиняюсь.0.5 - 0.50 секунд - это я про время ожидания
Ёкарный Бабай. да уж написал. конечно 0.05 - 0.5 секундIrbis +1
46 Ответ от Indomito 2015-01-06 22:30:31- Indomito
- Участник
- Неактивен
Indomito, я снова ничего непонял.
Отвечаю - Модификаторы Нужны
47 Ответ от ypppu 2015-01-06 23:50:07- ypppu
- Разработчик
- Неактивен
Если уж колхозить. Вот скрипт, который даёт имеющиеся VK и SC коды, в том числе и мышки.
48 Ответ от Indomito 2015-01-08 01:34:47- Indomito
- Участник
- Неактивен
Прикольно. только в чём смысл скрипта то?
P.S. Я его не запускал.
49 Ответ от ekirhs 2015-04-24 23:36:54 (изменено: ekirhs, 2015-04-25 00:25:38)- ekirhs
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Для этого специальную функцию придумали
Тоже сделал себе удобное добавление. На две буквы удобней. Если с новой строки начинать, то комментарий сверху, а иначе справа.
50 Ответ от stealzy 2015-12-06 11:03:58 (изменено: stealzy, 2015-12-06 11:12:30)- stealzy
- Разработчик
- Неактивен
Еще в тему печатания сразу vk-кодами (без автозамен):
При зажатом Esc в окнах текстовых редакторов печатает vk-code вместо клавиши и добавляет комментарий в конец строки.Только для раскладко-зависимых клавиш.
51 Ответ от serzh82saratov 2015-12-06 13:31:39- serzh82saratov
- Разработчик
- Неактивен
Я как то приводил такой код, можно его переделать:
52 Ответ от stealzy 2016-08-05 23:12:45 (изменено: stealzy, 2016-08-07 12:46:20)- stealzy
- Разработчик
- Неактивен
Пришел сейчас к такому решению: функция, принимающая в параметрах:— ГК в виде "Ctrl + Shift + D" или "win lctrl z" (хотя бы один плюс или пробел, разделяющих клавиши, модификаторы вначале, буквенные клавиши в английской раскладке);— функцию, которую следует вызвать по ГК;— параметры вызываемой ф-ии.
53 Ответ от teadrinker 2016-08-06 02:41:14 (изменено: teadrinker, 2016-08-06 02:59:35)- teadrinker
- Администратор
- Неактивен
Сложновато у вас вышло.
Правда, оба варианта не учитывают префиксы
54 Ответ от stealzy 2016-08-06 21:09:37 (изменено: stealzy, 2016-08-07 12:47:38)- stealzy
- Разработчик
- Неактивен
1) Мой вариант учитывает префиксы.2) В моем варианте можно задавать хоткеи в формате ahk.3) В моем варианте правильно обрабатываются одиночные клавиши-модификаторы.
55 Ответ от teadrinker 2016-08-06 22:28:52 (изменено: teadrinker, 2016-08-07 15:13:18)- teadrinker
- Администратор
- Неактивен
Вот так, вроде, всё работает:
56 Ответ от stealzy 2016-08-07 12:56:53 (изменено: stealzy, 2016-08-07 13:05:28)- stealzy
- Разработчик
- Неактивен
Кобинацию "Shift + LWin" ваш скрипт превращает в "+<#sc15b", работает, конечно, но мне "+LWin" больше нравится.
57 Ответ от teadrinker 2016-08-07 15:13:32- teadrinker
- Администратор
- Неактивен
- teadrinker
- Администратор
- Неактивен
- serzh82saratov
- Разработчик
- Неактивен
Удобное добавление горячих клавиш
Так это же всё равно писать надо, не удобнее в блокноте нажать нужные клавиши, а они уже напечатаются в виде горячей клавиши.
60 Ответ от stealzy 2016-08-08 23:23:25- stealzy
- Разработчик
- Неактивен
Не надо держать запущенным скрипт для:
в блокноте нажать нужные клавиши, а они уже напечатаются в виде горячей клавиши
Понятнее код скрипта.Другой человек может изменить ГК под себя, отредактировав скрипт или ini (не нужно создавать GUI).
61 Ответ от serzh82saratov 2016-08-09 00:05:02- serzh82saratov
- Разработчик
- Неактивен
Не надо держать запущенным скрипт
Ну, мне показалось что тема про часть IDE, тогда что то всё равно запущено будет.
Другой человек может изменить ГК под себя, отредактировав скрипт или ini
Если речь о другом человеке, то он кто то из 2 групп, либо хотя бы знает синтаксис ГК или сможет одолеть простую памятку, либо вообще никак неразберётся. Захочется ему например какую нибудь мультимедиа клавишу или пробел, AppsKey, NumpadMult и.т.п., а как её указать (что у неё за имя) даже с наличием понимания куда её прописать, у него всё равно не удастся.Так что если писать сценарий для кого угодно с изменяемыми им ГК, то без GUI не знаю как.
П.С. Да и с раскладками во всех примерах непонятки, "Ё" например нельзя назначить при английской, или "." будет разной клавишей в раскладках, и если с "Ё" решаемо, то для "." опять же пользователю памятка нужна.