4

Есть ли способ определить горячую клавишу условно в AutoHotKey? Я хочу сделать разные раскладки клавиатуры для разных машин с разными физическими клавиатурами.

Вот что я хочу сделать:

RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
If ( ComputerName = BDWELLE-DIM8300 ) 
{
 #Include %A_ScriptDir%\Mappings-BDWELLE-DIM8300.ahk
}

ИЛИ ЖЕ

RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
If ( ComputerName = BDWELLE-DIM8300 ) 
{
 LWin::LAlt
    [more hotkey definitions that only apply to this machine]
}

но поскольку AHK анализирует определения горячих клавиш и операторы #Include ДО интерпретации операторов If, определения горячих клавиш (вне зависимости от того, скрыты они в #Include или нет) не соответствуют условию If.

Спасибо, что указали мне на AutoHotKey_L!

У вас есть конкретный пример того, как условно определить горячую клавишу? Синтаксис очень запутанный. Вот что я пытаюсь (после установки AutoHotKey_L.exe вместо AutoHotKey.exe):

RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName 
#If ( ComputerName = BDWELLE-DIM8300 ) 
LWin::LAlt 

но это не похоже на работу ...

5 ответов5

2

Это старый вопрос, я знаю, но я просто должен был сделать это сегодня утром, и вот как я заставил его работать в AutoHotkey_L:

#If %computername% = work-computer
^h::MsgBox Work
#If

#If %computername% != work-computer
^h::MsgBox Not at Work
#If

Ключевым моментом является то, что имя вашего компьютера не указано. Это сбило меня с толку довольно долго.

Надеюсь, это кому-нибудь поможет!

1

Lifehacker представил скрипт AHK AutoInclude, который поможет вам выбрать, какие скрипты использовать на разных компьютерах. Это достигается путем текстовой конкатенации скриптов в один файл и последующего запуска этого файла.

Отказ от ответственности: я не использовал это.

1

Я решил эту проблему, создав отдельные сценарии для каждого ПК, содержащие специальные клавиши для ПК, включая общий сценарий для общих клавиш быстрого доступа, и с помощью отдельного сценария для запуска соответствующего сценария.

Common.ahk

; Common hotkeys go here

[Имя ПК] .ahk

#Include %A_ScriptDir%\Common.ahk

; PC-specific hotkeys go here

Load.ahk

If FileExist(A_ScriptDir . "\" . A_ComputerName . ".ahk")
    Run "autohotkey.exe" %A_ScriptDir%\%A_ComputerName%.ahk
Else
    Run "autohotkey.exe" %A_ScriptDir%\Common.ahk
1

Посмотрите на команду Hotkey - она может динамически создавать или изменять HK в любом месте скрипта.

0

Вы можете дать Autohotkey L шанс. Среди прочего, у него есть оператор #If, который работает так же, как #IfWinActive, но для произвольного кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .