<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5355</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5355&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: переключение раскладок клавиатуры по произвольным клавишам».]]></description>
		<lastBuildDate>Mon, 03 Mar 2025 20:27:27 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162017#p162017</link>
			<description><![CDATA[<p>Не очень внимательно прочитал. Большая часть скриптов, выложенных на этом форуме, работает под версию v1, если в заголовке темы не указано v2. Если скрипт большой, переписать под v2 его у новичка вряд ли получится (можно, конечно, попросить какую-нибудь нейросеть, но успех не гарантирован). Изменения между v1 и v2 перечислены в справке здесь: <a href="https://www.autohotkey.com/docs/v2/v2-changes.htm">Changes from v1.1 to v2.0</a>. Так что для запуска старых скриптов проще установить v1, но изучать на будущее v2 (её можно вместе с v1 установить, сначала v1, потом v2).</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 03 Mar 2025 20:27:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162017#p162017</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162015#p162015</link>
			<description><![CDATA[<p><strong>dx3dy</strong>, какое отношение ваш вопрос имеет к данному топику?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 03 Mar 2025 12:36:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162015#p162015</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162014#p162014</link>
			<description><![CDATA[<p>Здравствуйте.<br />Скачал AutoHotKey специально для того, чтобы модифицировать переключение раскладки клавиатуры. Скачал рекомендуемую на сайте версию 2. Пробую запускать скрипты из этого топика, получаю ошибку с предложением скачать и установить версию 1. Какие изменения в синтаксис скриптов нужно вносить, чтобы они заработали под второй версией? Или не придумывать ничего и установить первую?</p>]]></description>
			<author><![CDATA[null@example.com (dx3dy)]]></author>
			<pubDate>Mon, 03 Mar 2025 09:52:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162014#p162014</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=161947#p161947</link>
			<description><![CDATA[<p>Снова проблема. Поставил &quot;Adobe After effects&quot; - там без английского никак. Пришлось добавить третью раскладку для него, но удобного переключения - для каждого языка своя клавиша, теперь нет. Приходится по кругу перебирать, что жутко неудобно. Воспользовался старыми наработками и вот такое набросал:</p><div class="codebox"><pre><code>~vkA3 Up::
If (A_PriorKey = &quot;RControl&quot;  &amp;&amp; !Mouse)
	{
    WinExist(&quot;A&quot;)
    ControlGetFocus, CtrlFocus
    PostMessage, 0x50, 0, 0x04190419, %CtrlFocus%
    kbd_msg(&quot;RU&quot;) 
	}
Mouse := 0	
Return

~vkA2 Up::
If (A_PriorKey = &quot;LControl&quot; &amp;&amp; !Mouse)
	{
	WinExist(&quot;A&quot;)
    ControlGetFocus, CtrlFocus
    PostMessage, 0x050, 0, 0x04070407,%CtrlFocus%
    kbd_msg(&quot;DE&quot;)
	}
Mouse := 0	
Return

LCtrl &amp; LWin::
If (A_PriorKey = &quot;LControl&quot; &amp;&amp; !Mouse)
	{
	WinExist(&quot;A&quot;)
    ControlGetFocus, CtrlFocus
    PostMessage, 0x050, 0, 0x04090409,%CtrlFocus%
    kbd_msg(&quot;EN&quot;)
	}
Mouse := 0	
Return



Return


kbd_msg(text)
{
    no_detect_window := -1
    ToolTip, %text%, A_CaretX + 10, A_CaretY - 20
    SetTimer, KbdRemoveToolTip, -1000
    return
    
    KbdRemoveToolTip:
    ToolTip
    no_detect_window := 1
    return
}</code></pre></div><p> Не тут-то было - &quot;After effects&quot; виснет намертво. Подсмотрел, что у PuntoSwitcher есть в настройках, например, такие строки:<br /></p><div class="quotebox"><blockquote><p>&quot;use_hotkey_switching&quot;: {<br />			&quot;win10&quot;: [<br />				{ &quot;path&quot;: &quot;after effects&quot; },<br />				{ &quot;path&quot;: &quot;aftereffects&quot; },<br />				{ &quot;path&quot;: &quot;communicator.exe&quot; },<br />				{ &quot;path&quot;: &quot;devenv.exe&quot; },<br />				{ &quot;path&quot;: &quot;hipchat&quot; },<br />				{ &quot;path&quot;: &quot;jitsi&quot; },<br />				{ &quot;path&quot;: &quot;lync&quot; },<br />				{ &quot;path&quot;: &quot;Office16\\WINWORD.EXE&quot;, &quot;delay&quot;: 30 },<br />				{ &quot;path&quot;: &quot;outlook.exe&quot; },<br />				{ &quot;path&quot;: &quot;panotour&quot; },<br />				{ &quot;path&quot;: &quot;premiere&quot; },<br />				{ &quot;path&quot;: &quot;phped.exe&quot; },<br />				{ &quot;path&quot;: &quot;thunderbird&quot; },<br />				{ &quot;path&quot;: &quot;skype&quot; }<br />			],</p></blockquote></div><p> Он как-то учитывает горячие клавиши этих программ и зависания не происходит. Можно как-то устроить подобное для AHK?</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Fri, 31 Jan 2025 16:46:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=161947#p161947</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147157#p147157</link>
			<description><![CDATA[<p>Ок. Как вы советовали - забил. Поставил PuntoSwitcher - работает.</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Sun, 04 Apr 2021 06:44:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147157#p147157</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147156#p147156</link>
			<description><![CDATA[<p>Есть. Только не всё ясно. Например </p><div class="quotebox"><blockquote><p>To use the AutoHotkey library, you should copy `interception.dll` into this folder from `library\x64` in the Interception zip&nbsp; <br />YOU MAY ALSO NEED TO RUN UNBLOCKER.PS1 AS ADMIN!!</p></blockquote></div><p>&nbsp; Нет ни zip-а этого, ни dll. Как запускать .ps1 тоже пока не понял.</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Sun, 04 Apr 2021 06:25:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147156#p147156</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147151#p147151</link>
			<description><![CDATA[<p>Там же подробная инструкция есть.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 04 Apr 2021 01:54:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147151#p147151</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147148#p147148</link>
			<description><![CDATA[<p>Я бы забил, но Word нужен и к кнопкам этим я за 20 лет привык. Да и удобнее ничего не придумать.<br />Спасибо за подсказку. Скачал, пока ничего не понял.</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Sat, 03 Apr 2021 20:54:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147148#p147148</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147142#p147142</link>
			<description><![CDATA[<p>Я б на вашем месте забил, но если так уж заморочились, поставьте что-нибудь вроде <a href="https://github.com/evilC/AutoHotInterception">AutoHotInterception</a> и посылайте нажатия от драйвера.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 03 Apr 2021 14:08:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147142#p147142</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147141#p147141</link>
			<description><![CDATA[<p>Первое не помогло, второго у меня в реестре вообще нет. (</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Sat, 03 Apr 2021 14:05:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147141#p147141</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147140#p147140</link>
			<description><![CDATA[<p>Как всегда, оказалось что схожие проблемы бывали и других людей. Правда с KeySwitcher и PuntoSwitcher.<br />Рекомендация </p><div class="quotebox"><blockquote><p>В параметрах Word на вкладке Дополнительно убрать галочку напротив опции &quot;Использовать автозавершение&quot;.</p></blockquote></div><p>Мне вроде помогло, но пишут, что проблема не до конца решается. Тогда ещё:<br /></p><div class="quotebox"><blockquote><p>Идем в реестр<br />Пуск &gt; Выполнить &gt; Regedit!<br />HKEY_LOCAL_MACHINE &gt; SOFTWARE &gt; Microsoft &gt; CTF &gt; SystemShared<br />Выставить значение - &quot;CUAS&quot;=dword:00000001</p></blockquote></div><p> Позже отпишусь ещё.</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Sat, 03 Apr 2021 08:23:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147140#p147140</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147139#p147139</link>
			<description><![CDATA[<p>Оказывается и не в Ctrl дело - только что зависло по F12.</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Sat, 03 Apr 2021 07:44:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147139#p147139</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147134#p147134</link>
			<description><![CDATA[<p>Спасибо! Позже напишу, что вышло.<br />Переключает по кругу по правому контролу.<br />Немецкий - 0x4070407</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Fri, 02 Apr 2021 14:21:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147134#p147134</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147130#p147130</link>
			<description><![CDATA[<div class="quotebox"><cite>Foma пишет:</cite><blockquote><p>а в саму панель переключения языка</p></blockquote></div><p>Как я понимаю раскладка переключается именно в &quot;контроле окна&quot; (ControlGetFocus) с которым работает пользователь.</p><div class="quotebox"><cite>Foma пишет:</cite><blockquote><p>Rctrl и по нему задумано переключение по кругу?</p></blockquote></div><p>Нет не по кругу. Переключение на указанную в скобках.<br />Чтобы переключалось по кругу нужно оставить скобки пустыми.</p><p>Попробуй этот код и посмотри какой &quot;LocaleId&quot; покажет когда у тебя текущая раскладка немецкий.<br />То значение нужно будет указать в Locale_DE.<br /></p><div class="codebox"><pre><code>#SingleInstance,Force
#NoEnv
AutoTrim,Off
CoordMode,Mouse,Screen
CoordMode,ToolTip
CoordMode,Caret,Screen
DetectHiddenWindows,On
SendMode,Input
SetBatchLines,-1
SetControlDelay,-1
SetKeyDelay,-1
SetTitleMatchMode,2
SetWinDelay,-1



~vkA3 Up::
SwitchInputLayout()
return



RemoveToolTip:
tooltip,,,,3
return


SwitchInputLayout(switch=&quot;&quot;)
{
  static Locale_RU:=0x04190419, Locale_DE:=0x0407
  ControlGetFocus,CtrlFocus,A
  ControlGet,id,hwnd,,%CtrlFocus%,A
  MouseGetPos,DF_X,DF_Y
  if !id
    ID:=WinExist(&quot;A&quot;)
  ThreadID:=DllCall(&quot;GetWindowThreadProcessId&quot;,Ptr,id,Int,0,ptr)
  Locale:=GetLayot(ThreadID)
tooltip,% &quot;LocaleId=&quot; format(&quot;0x{:02x}&quot;,Locale),0
  if (switch=&quot;DE&quot;)
    Locale:=Locale_RU
  else if (switch=&quot;Rus&quot;)
    Locale:=Locale_DE
  sendMessage,0x50,,% Locale=Locale_RU ? Locale_DE : Locale_RU,,ahk_id %ID%
  if (Locale=GetLayot(ThreadID))
  {
    send,{alt down}{shift down}{alt up}{shift up}
    sleep,10
    if (Locale=GetLayot(ThreadID))
    {
      if !isWindowFullScreen()
      {
        ToolTip,Невозможно переключить раскладку.,% A_CaretX=0 ? DF_X : A_CaretX+10,% A_CaretY=0 DF_Y ? : A_CaretY-20,3
        SetTimer,RemoveToolTip,-1100
      }
      return 1
    }
  }
  if !isWindowFullScreen()
  {
    ToolTip,% GetLayot(ThreadID)=Locale_RU ? &quot;Русский&quot; : &quot;Немецкий&quot;,% A_CaretX=0 ? DF_X : A_CaretX+10,% A_CaretY=0 DF_Y ? : A_CaretY-20,3
    SetTimer,RemoveToolTip,-1100
  }
}
GetLayot(ThreadID)
{
  return DllCall(&quot;GetKeyboardLayout&quot;,ptr,ThreadID,ptr)
}

isWindowFullScreen(WinID=&quot;&quot;)
{
  if !WinID
    WinGet,WinID,id,A
;  WinGet,WinMinMax,MinMax,ahk_id %WinID%
  WinGetPos,WinX,WinY,WinW,WinH,ahk_id %WinID%
;tooltip,% (WinMinMax=0) &quot;`n&quot; WinX &quot;`n&quot; WinY &quot;`n&quot; WinW &quot;`n&quot; WinH
  if ((WinX=0 and WinY=0 and (WinW&gt;=A_ScreenWidth-1 and WinW&lt;=A_ScreenWidth+1) and (WinH&gt;=A_ScreenHeight-1 and WinH&lt;=A_ScreenHeight+1))) ; or WinMinMax!=0)
  {
    WinGetClass,WinClass,ahk_id %WinID%
    WinGet,WinProcessName,ProcessName,ahk_id %WinID%
    SplitPath,WinProcessName,,,WinProcessExt
    if (WinClass!=&quot;Progman&quot; and WinClass!=&quot;WorkerW&quot; and WinProcessExt!=&quot;scr&quot;)
      return 1
  }
  return 0
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 02 Apr 2021 13:17:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147130#p147130</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: переключение раскладок клавиатуры по произвольным клавишам]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147100#p147100</link>
			<description><![CDATA[<p>А можно подойти к проблеме с другой стороны? Отправлять нажатия не в сам Word, а в саму панель переключения языка ввода?</p>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Thu, 01 Apr 2021 08:23:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147100#p147100</guid>
		</item>
	</channel>
</rss>
