title: Autohotkey make hotstrings trigger unconditionally
body: <p>Because times to times, I need to translate text into different languages using special characters not present on the keyboard, like <code>ı</code>, <code>ş</code>, <code>ñ</code>, <code>ğ</code>.</p>
  
  <p>I created a script with <code>AutoHotKey</code>, transforming the combination of <code>^ + ^ + s</code> -> into <code>ş</code>, in the same way for the others characters.</p>
  
  <p>The script is working fine, but only working if the character preceding the first <code>^</code> is a space or the first letter. For example, when typing <code>ma^^n</code> &lt;- this will not transform my character, whereas <code>^^n</code> &lt;- will transform it.  </p>
  
  <p>Here is the script, I specify that I only learned this language when creating the script:  </p>
  
  <pre><code>:*c:^^S::
  SendUnicodeChar(0x015E)
  Return
  
  :*c:^^s::
  SendUnicodeChar(0x015F)
  Return
  
  :*c:^^i::
  SendUnicodeChar(0x131)
  Return
  
  :*c:^^I::
  SendUnicodeChar(0x130)
  Return
  
  :*c:^^g::
  SendUnicodeChar(0x011F)
  Return
  
  :*c:^^G::
  SendUnicodeChar(0x011E)
  Return
  
  :*c:^^n::
  SendUnicodeChar(0x00F1)
  Return
  
  :*c:^^N::
  SendUnicodeChar(0x00D1)
  Return
  
  :*c:^^c::
  SendUnicodeChar(0x00E7)
  Return
  
  :*c:^^C::
  SendUnicodeChar(0x00C7)
  Return
  
  ; Find the corresponding letter from the unicode
  ; and send the input back
  SendUnicodeChar(charCode)
  {
      VarSetCapacity(ki, 28 * 2, 0)
      EncodeInteger(&amp;ki + 0, 1)
      EncodeInteger(&amp;ki + 6, charCode)
      EncodeInteger(&amp;ki + 8, 4)
      EncodeInteger(&amp;ki +28, 1)
      EncodeInteger(&amp;ki +34, charCode)
      EncodeInteger(&amp;ki +36, 4|2)
  
      DllCall("SendInput", "UInt", 2, "UInt", &amp;ki, "Int", 28)
  }
  
  EncodeInteger(ref, val)
  {
      DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
  }  
  </code></pre>