 <p>Your first script seems to work just fine with the latest Unicode version of AutoHotkey. Get latest version @ ahkscript.org</p> <p>Added a check for "ы" in the code below:</p> <pre><code>~LWin Up:: Input, key, L1 if (key = "n" or key = "ы") { Run, Notepad.exe } else if (key = "s") { Run, cmd.exe } return </code></pre> <p>Make sure to Encode your with script UTF-8 (not UTF-8 without BOM) </p> <p>Edit: </p> <p>Okay I think I found an Answer that doesn't require you to Add "ы" but instead relies on SC codes produced by the Keyboard, meaning it's Layout independent.</p> <p><a href="http://ahkscript.org/docs/commands/Input.htm" rel="nofollow">Relevant info from Input command from the Docs:</a></p> <blockquote> <p>E [v1.1.20+]: Handle single-character end keys by character code instead of by keycode. This provides more consistent results if the active window's keyboard layout is different to the script's keyboard layout. It also prevents key combinations which don't actually produce the given end characters from ending input; for example, if @ is an end key, on the US layout Shift+2 will trigger it but Ctrl+Shift+2 will not (if the E option is used). If the C option is also used, the end character is case-sensitive.</p> <p>EndKeys A list of zero or more keys, any one of which terminates the Input when pressed (the EndKey itself is not written to OutputVar). When an Input is terminated this way, ErrorLevel is set to the word EndKey followed by a colon and the name of the EndKey. Examples: EndKey:., EndKey:Escape.</p> <p>The EndKey list uses a format similar to the Send command. For example, specifying {Enter}.{Esc} would cause either ENTER, period (.), or ESCAPE to terminate the Input. To use the braces themselves as end keys, specify {{} and/or {}}.</p> <p>To use Control, Alt, or Shift as end-keys, specify the left and/or right version of the key, not the neutral version. For example, specify {LControl}{RControl} rather than {Control}.</p> <p>Although modified keys such as Control-C (^c) are not supported, certain characters that require the shift key to be held down -- namely punctuation marks such as ?!:@&amp;{} -- are supported in v1.0.14+. Other characters are supported with the E option described above, in v1.1.20+.</p> <p>An explicit virtual key code such as {vkFF} may also be specified. This is useful in the rare case where a key has no name and produces no visible character when pressed. Its virtual key code can be determined by following the steps at the bottom fo the key list page.</p> </blockquote> <pre><code>~LWin Up:: Input, key, L1 E, {SC031}.{SC01F} ; {n}.{s} if (Errorlevel = "EndKey:SC031") { Run, Notepad.exe } If (Errorlevel = "EndKey:SC01f") { Run, cmd.exe } return </code></pre> <p>Also, I wasn't able to reproduce an issue where Windows key was held down?</p>