<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%EA%B0%80%EC%83%81%ED%82%A4%EB%B3%B4%EB%93%9C</id>
	<title>Autoit 가상키보드 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%EA%B0%80%EC%83%81%ED%82%A4%EB%B3%B4%EB%93%9C"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%EA%B0%80%EC%83%81%ED%82%A4%EB%B3%B4%EB%93%9C&amp;action=history"/>
	<updated>2026-04-04T04:26:15Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Autoit_%EA%B0%80%EC%83%81%ED%82%A4%EB%B3%B4%EB%93%9C&amp;diff=173&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: == Autoit 가상키보드 ==  &lt;source lang=autoit&gt; #NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=1295599487_Gnome-Input-Keyboard-64.ico #AutoIt3Wrapper_OutFile=Virtual_Keyboard.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Description=Virtual Keyboard with Anti - KeyLogger #AutoIt3Wrapper_Res_FileVersion=1.1.0.6 #AutoIt3Wrapper_Res_Language=1033 #AutoIt3Wrapper_Res_Field=ProductName|Virtual Keyboard with Anti - KeyLogger #Au...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%EA%B0%80%EC%83%81%ED%82%A4%EB%B3%B4%EB%93%9C&amp;diff=173&amp;oldid=prev"/>
		<updated>2024-10-04T17:23:51Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == Autoit 가상키보드 ==  &amp;lt;source lang=autoit&amp;gt; #NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=1295599487_Gnome-Input-Keyboard-64.ico #AutoIt3Wrapper_OutFile=Virtual_Keyboard.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Description=Virtual Keyboard with Anti - KeyLogger #AutoIt3Wrapper_Res_FileVersion=1.1.0.6 #AutoIt3Wrapper_Res_Language=1033 #AutoIt3Wrapper_Res_Field=ProductName|Virtual Keyboard with Anti - KeyLogger #Au...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Autoit 가상키보드 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
#NoTrayIcon&lt;br /&gt;
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
#AutoIt3Wrapper_Icon=1295599487_Gnome-Input-Keyboard-64.ico&lt;br /&gt;
#AutoIt3Wrapper_OutFile=Virtual_Keyboard.exe&lt;br /&gt;
#AutoIt3Wrapper_Compression=4&lt;br /&gt;
#AutoIt3Wrapper_Res_Description=Virtual Keyboard with Anti - KeyLogger&lt;br /&gt;
#AutoIt3Wrapper_Res_FileVersion=1.1.0.6&lt;br /&gt;
#AutoIt3Wrapper_Res_Language=1033&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=ProductName|Virtual Keyboard with Anti - KeyLogger&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=InternalName|VirtualKeyboard.exe&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=ProductVersion|1.1.0.6&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=OriginalFilename|VirtualKeyboard.exe&lt;br /&gt;
#AutoIt3Wrapper_Run_Tidy=y&lt;br /&gt;
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ButtonConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WindowsConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;StaticConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;IE.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opt(&amp;quot;WinWaitDelay&amp;quot;, 0)&lt;br /&gt;
Opt(&amp;quot;SendKeyDelay&amp;quot;, 0)&lt;br /&gt;
Opt(&amp;quot;SendKeyDownDelay&amp;quot;, 0)&lt;br /&gt;
Opt(&amp;quot;Sendcapslockmode&amp;quot;, 0)&lt;br /&gt;
Opt(&amp;quot;TrayIconHide&amp;quot;, 1)&lt;br /&gt;
Opt(&amp;quot;GUICloseOnESC&amp;quot;, 0)&lt;br /&gt;
&lt;br /&gt;
Global $fLeftShiftHolden = False&lt;br /&gt;
Global $fLeftAltHolden = False&lt;br /&gt;
Global $fLeftCtrlHolden = False&lt;br /&gt;
Global $fRightShiftHolden = False&lt;br /&gt;
Global $fRightAltHolden = False&lt;br /&gt;
Global $fRightCtrlHolden = False&lt;br /&gt;
Global Const $VK_NUMLOCK = 0x90&lt;br /&gt;
Global Const $VK_SCROLL = 0x91&lt;br /&gt;
Global Const $VK_CAPITAL = 0x14&lt;br /&gt;
Global $ctrlstatus = 0, $altstatus = 0, $shiftstatus = 0&lt;br /&gt;
;&lt;br /&gt;
Global $_NOACTIVATE = 0x08000000&lt;br /&gt;
Global $MA_NOACTIVATE = 3&lt;br /&gt;
Global $MA_NOACTIVATEANDEAT = 4&lt;br /&gt;
Global $keyStroke_Array[68] = [&amp;#039;{SPACE}&amp;#039;, &amp;#039;{ENTER}&amp;#039;, &amp;#039;{ALT}&amp;#039;, &amp;#039;{BS}&amp;#039;, &amp;#039;{BACKSPACE}&amp;#039;, &amp;#039;{DEL}&amp;#039;, &amp;#039;{UP}&amp;#039;, &amp;#039;{DOWN}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{LEFT}&amp;#039;, &amp;#039;{RIGHT}&amp;#039;, &amp;#039;{HOME}&amp;#039;, &amp;#039;{END}&amp;#039;, &amp;#039;{ESC}&amp;#039;, &amp;#039;{INS}&amp;#039;, &amp;#039;{PGUP}&amp;#039;, &amp;#039;{PGDN}&amp;#039;, &amp;#039;{F1}&amp;#039;, &amp;#039;{F2}&amp;#039;, &amp;#039;{F3}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{F4}&amp;#039;, &amp;#039;{F5}&amp;#039;, &amp;#039;{F6}&amp;#039;, &amp;#039;{F7}&amp;#039;, &amp;#039;{F8}&amp;#039;, &amp;#039;{F9}&amp;#039;, &amp;#039;{F10}&amp;#039;, &amp;#039;{F11}&amp;#039;, &amp;#039;{F12}&amp;#039;, &amp;#039;{TAB}&amp;#039;, &amp;#039;{PRINTSCREEN}&amp;#039;, &amp;#039;{LWIN}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{RWIN}&amp;#039;, &amp;#039;{BREAK}&amp;#039;, &amp;#039;{PAUSE}&amp;#039;, &amp;#039;{NUMPADMULT}&amp;#039;, &amp;#039;{NUMPADADD}&amp;#039;, &amp;#039;{NUMPADSUB}&amp;#039;, &amp;#039;{NUMPADDIV}&amp;#039;, &amp;#039;{NUMPADDOT}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{NUMPADENTER}&amp;#039;, &amp;#039;{APPSKEY}&amp;#039;, &amp;#039;{LALT}&amp;#039;, &amp;#039;{RALT}&amp;#039;, &amp;#039;{LCTRL}&amp;#039;, &amp;#039;{RCTRL}&amp;#039;, &amp;#039;{LSHIFT}&amp;#039;, &amp;#039;{RSHIFT}&amp;#039;, &amp;#039;{SLEEP}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{NUMPAD0}&amp;#039;, &amp;#039;{NUMPAD1}&amp;#039;, &amp;#039;{NUMPAD2}&amp;#039;, &amp;#039;{NUMPAD3}&amp;#039;, &amp;#039;{NUMPAD4}&amp;#039;, &amp;#039;{NUMPAD5}&amp;#039;, &amp;#039;{NUMPAD6}&amp;#039;, &amp;#039;{NUMPAD7}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{NUMPAD8}&amp;#039;, &amp;#039;{NUMPAD9}&amp;#039;, &amp;#039;{ALTDOWN}&amp;#039;, &amp;#039;{SHIFTDOWN}&amp;#039;, &amp;#039;{CTRLDOWN}&amp;#039;, &amp;#039;{ALTUP}&amp;#039;, &amp;#039;{CTRLUP}&amp;#039;, &amp;#039;{SHIFTUP}&amp;#039;, &amp;#039;{CAPSLOCK}&amp;#039;, _&lt;br /&gt;
		&amp;#039;{INSERT}&amp;#039;, &amp;#039;{DELETE}&amp;#039;, &amp;#039;{Escape}&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
_ArraySort($keyStroke_Array)&lt;br /&gt;
&lt;br /&gt;
HotKeySet(&amp;quot;{Esc}&amp;quot;, &amp;quot;Quit&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$ProductVersion = &amp;quot;v0.1&amp;quot;&lt;br /&gt;
$MainGUITitle = &amp;quot;Virtual Keyboard &amp;quot; &amp;amp; $ProductVersion &amp;amp; &amp;quot; - &amp;quot;&lt;br /&gt;
$Form1 = GUICreate($MainGUITitle, 722, 194, 300, 300, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $_NOACTIVATE)) ;$WS_POPUPWINDOW;BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))&lt;br /&gt;
$Esc = GUICtrlCreateButton(&amp;quot;Esc&amp;quot;, 0, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F1 = GUICtrlCreateButton(&amp;quot;F1&amp;quot;, 48, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F2 = GUICtrlCreateButton(&amp;quot;F2&amp;quot;, 80, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F3 = GUICtrlCreateButton(&amp;quot;F3&amp;quot;, 112, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F4 = GUICtrlCreateButton(&amp;quot;F4&amp;quot;, 144, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F5 = GUICtrlCreateButton(&amp;quot;F5&amp;quot;, 184, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F6 = GUICtrlCreateButton(&amp;quot;F6&amp;quot;, 216, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F7 = GUICtrlCreateButton(&amp;quot;F7&amp;quot;, 248, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F8 = GUICtrlCreateButton(&amp;quot;F8&amp;quot;, 280, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F9 = GUICtrlCreateButton(&amp;quot;F9&amp;quot;, 320, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F10 = GUICtrlCreateButton(&amp;quot;F10&amp;quot;, 352, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F11 = GUICtrlCreateButton(&amp;quot;F11&amp;quot;, 385, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$F12 = GUICtrlCreateButton(&amp;quot;F12&amp;quot;, 417, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$PrintScreen = GUICtrlCreateButton(&amp;quot;prtscr&amp;quot;, 488, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$ScrollLock = GUICtrlCreateButton(&amp;quot;scr lo&amp;quot;, 520, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$PauseBreak = GUICtrlCreateButton(&amp;quot;pa br&amp;quot;, 552, 0, 33, 25, $WS_GROUP)&lt;br /&gt;
$Igel = GUICtrlCreateButton(&amp;quot;`&amp;quot;, 0, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$One = GUICtrlCreateButton(&amp;quot;1&amp;quot;, 32, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Two = GUICtrlCreateButton(&amp;quot;2&amp;quot;, 64, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Three = GUICtrlCreateButton(&amp;quot;3&amp;quot;, 96, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Four = GUICtrlCreateButton(&amp;quot;4&amp;quot;, 128, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Five = GUICtrlCreateButton(&amp;quot;5&amp;quot;, 160, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Six = GUICtrlCreateButton(&amp;quot;6&amp;quot;, 192, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Seven = GUICtrlCreateButton(&amp;quot;7&amp;quot;, 224, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Eight = GUICtrlCreateButton(&amp;quot;8&amp;quot;, 256, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Nine = GUICtrlCreateButton(&amp;quot;9&amp;quot;, 288, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Zero = GUICtrlCreateButton(&amp;quot;0&amp;quot;, 320, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Minus = GUICtrlCreateButton(&amp;quot;-&amp;quot;, 352, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Equal = GUICtrlCreateButton(&amp;quot;=&amp;quot;, 384, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Back = GUICtrlCreateButton(&amp;quot;&amp;lt;-------&amp;quot;, 416, 32, 65, 33, $WS_GROUP)&lt;br /&gt;
$Insert = GUICtrlCreateButton(&amp;quot;Insert&amp;quot;, 488, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Home = GUICtrlCreateButton(&amp;quot;Home&amp;quot;, 520, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$PageUp = GUICtrlCreateButton(&amp;quot;PgUp&amp;quot;, 552, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberLock = GUICtrlCreateButton(&amp;quot;NmLo&amp;quot;, 592, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPadSlash = GUICtrlCreateButton(&amp;quot;/&amp;quot;, 624, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPadX = GUICtrlCreateButton(&amp;quot;*&amp;quot;, 656, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPadMinus = GUICtrlCreateButton(&amp;quot;-&amp;quot;, 688, 32, 33, 33, $WS_GROUP)&lt;br /&gt;
$Tab = GUICtrlCreateButton(&amp;quot;Tab&amp;quot;, 0, 64, 41, 33, $WS_GROUP)&lt;br /&gt;
$q = GUICtrlCreateButton(&amp;quot;Q&amp;quot;, 40, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$w = GUICtrlCreateButton(&amp;quot;W&amp;quot;, 72, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$e = GUICtrlCreateButton(&amp;quot;E&amp;quot;, 104, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$r = GUICtrlCreateButton(&amp;quot;R&amp;quot;, 136, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$t = GUICtrlCreateButton(&amp;quot;T&amp;quot;, 168, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$y = GUICtrlCreateButton(&amp;quot;Y&amp;quot;, 200, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$u = GUICtrlCreateButton(&amp;quot;U&amp;quot;, 232, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$i = GUICtrlCreateButton(&amp;quot;I&amp;quot;, 264, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$o = GUICtrlCreateButton(&amp;quot;O&amp;quot;, 296, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$p = GUICtrlCreateButton(&amp;quot;P&amp;quot;, 328, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$LeftBrackets = GUICtrlCreateButton(&amp;quot;[&amp;quot;, 360, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$RightBrackets = GUICtrlCreateButton(&amp;quot;]&amp;quot;, 392, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$Enter = GUICtrlCreateButton(&amp;quot;Enter&amp;quot;, 424, 64, 57, 65, $WS_GROUP)&lt;br /&gt;
$Delete = GUICtrlCreateButton(&amp;quot;Del&amp;quot;, 488, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$End = GUICtrlCreateButton(&amp;quot;End&amp;quot;, 520, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$PageDown = GUICtrlCreateButton(&amp;quot;PgDn&amp;quot;, 552, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad7 = GUICtrlCreateButton(&amp;quot;7&amp;quot;, 592, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad8 = GUICtrlCreateButton(&amp;quot;8&amp;quot;, 624, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad9 = GUICtrlCreateButton(&amp;quot;9&amp;quot;, 656, 64, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPadPlus = GUICtrlCreateButton(&amp;quot;+&amp;quot;, 688, 64, 33, 65, $WS_GROUP)&lt;br /&gt;
$CapsLock = GUICtrlCreateButton(&amp;quot;CapsLck&amp;quot;, 0, 96, 49, 33, $WS_GROUP)&lt;br /&gt;
$a = GUICtrlCreateButton(&amp;quot;A&amp;quot;, 48, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$s = GUICtrlCreateButton(&amp;quot;S&amp;quot;, 80, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$d = GUICtrlCreateButton(&amp;quot;D&amp;quot;, 112, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$f = GUICtrlCreateButton(&amp;quot;F&amp;quot;, 144, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$g = GUICtrlCreateButton(&amp;quot;G&amp;quot;, 176, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$h = GUICtrlCreateButton(&amp;quot;H&amp;quot;, 208, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$j = GUICtrlCreateButton(&amp;quot;J&amp;quot;, 240, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$k = GUICtrlCreateButton(&amp;quot;K&amp;quot;, 272, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$l = GUICtrlCreateButton(&amp;quot;L&amp;quot;, 304, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$Colon = GUICtrlCreateButton(&amp;quot;;&amp;quot;, 336, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$Apostrophe = GUICtrlCreateButton(&amp;quot;&amp;#039;&amp;quot;, 368, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$RightSlash = GUICtrlCreateButton(&amp;quot;\&amp;quot;, 400, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad4 = GUICtrlCreateButton(&amp;quot;4&amp;quot;, 592, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad5 = GUICtrlCreateButton(&amp;quot;5&amp;quot;, 624, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad6 = GUICtrlCreateButton(&amp;quot;6&amp;quot;, 656, 96, 33, 33, $WS_GROUP)&lt;br /&gt;
$LeftShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 0, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$LeftSlash = GUICtrlCreateButton(&amp;quot;\&amp;quot;, 32, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$z = GUICtrlCreateButton(&amp;quot;Z&amp;quot;, 64, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$x = GUICtrlCreateButton(&amp;quot;X&amp;quot;, 96, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$c = GUICtrlCreateButton(&amp;quot;C&amp;quot;, 128, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$v = GUICtrlCreateButton(&amp;quot;V&amp;quot;, 160, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$b = GUICtrlCreateButton(&amp;quot;B&amp;quot;, 192, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$n = GUICtrlCreateButton(&amp;quot;N&amp;quot;, 224, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$m = GUICtrlCreateButton(&amp;quot;M&amp;quot;, 256, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$Comma = GUICtrlCreateButton(&amp;quot;,&amp;quot;, 288, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$Dot = GUICtrlCreateButton(&amp;quot;.&amp;quot;, 320, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$QuestionMark = GUICtrlCreateButton(&amp;quot;/&amp;quot;, 352, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$RightShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 384, 128, 97, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad1 = GUICtrlCreateButton(&amp;quot;1&amp;quot;, 592, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad2 = GUICtrlCreateButton(&amp;quot;2&amp;quot;, 624, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad3 = GUICtrlCreateButton(&amp;quot;3&amp;quot;, 656, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
$NumberPadEnter = GUICtrlCreateButton(&amp;quot;Enter&amp;quot;, 688, 128, 33, 65, $WS_GROUP)&lt;br /&gt;
$LeftCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 0, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
$LeftWindows = GUICtrlCreateButton(&amp;quot;Win&amp;quot;, 40, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
$LeftAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 80, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
$Space = GUICtrlCreateButton(&amp;quot;Space&amp;quot;, 120, 160, 201, 33, $WS_GROUP)&lt;br /&gt;
$RightAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 320, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
$RightWindows = GUICtrlCreateButton(&amp;quot;Win&amp;quot;, 360, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
$RightCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 400, 160, 81, 33, $WS_GROUP)&lt;br /&gt;
$NumberPad0 = GUICtrlCreateButton(&amp;quot;0&amp;quot;, 592, 160, 65, 33, $WS_GROUP)&lt;br /&gt;
$NumberPadDot = GUICtrlCreateButton(&amp;quot;.&amp;quot;, 656, 160, 33, 33, $WS_GROUP)&lt;br /&gt;
$LeftArrow = GUICtrlCreateButton(&amp;quot;&amp;lt;&amp;quot;, 488, 160, 33, 33, $WS_GROUP)&lt;br /&gt;
$DownArrow = GUICtrlCreateButton(&amp;quot;|&amp;quot;, 520, 160, 33, 33, $WS_GROUP)&lt;br /&gt;
$RightArrow = GUICtrlCreateButton(&amp;quot;&amp;gt;&amp;quot;, 552, 160, 33, 33, $WS_GROUP)&lt;br /&gt;
$UpArrow = GUICtrlCreateButton(&amp;quot;^&amp;quot;, 520, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
;Pictures:&lt;br /&gt;
$NumberLockOnPic = GUICtrlCreatePic(&amp;quot;on.bmp&amp;quot;, 600, 3, 18, 26, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))&lt;br /&gt;
$NumberLockOffPic = GUICtrlCreatePic(&amp;quot;off.bmp&amp;quot;, 600, 3, 18, 26, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))&lt;br /&gt;
$CapsLockOnPic = GUICtrlCreatePic(&amp;quot;on.bmp&amp;quot;, 624, 3, 18, 26, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))&lt;br /&gt;
$CapsLockOffPic = GUICtrlCreatePic(&amp;quot;off.bmp&amp;quot;, 624, 3, 18, 26, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))&lt;br /&gt;
$ScrollLockOnPic = GUICtrlCreatePic(&amp;quot;on.bmp&amp;quot;, 648, 3, 18, 26, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))&lt;br /&gt;
$ScrollLockOffPic = GUICtrlCreatePic(&amp;quot;off.bmp&amp;quot;, 648, 3, 18, 26, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))&lt;br /&gt;
&lt;br /&gt;
;Setting Pictures:&lt;br /&gt;
_GetNumLock()&lt;br /&gt;
_GetCapsLock()&lt;br /&gt;
_GetScrollLock()&lt;br /&gt;
If _GetNumLock() = 1 Then&lt;br /&gt;
	$NumberLockOn = True&lt;br /&gt;
Else&lt;br /&gt;
	GUICtrlSetState($NumberLockOnPic, $GUI_HIDE)&lt;br /&gt;
	$NumberLockOn = False&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
If _GetCapsLock() = 1 Then&lt;br /&gt;
	$CapsLockOn = True&lt;br /&gt;
Else&lt;br /&gt;
	GUICtrlSetState($CapsLockOnPic, $GUI_HIDE) ;;&lt;br /&gt;
	$CapsLockOn = False&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
If _GetScrollLock() = 1 Then&lt;br /&gt;
	$ScrollLockOn = True&lt;br /&gt;
Else&lt;br /&gt;
	GUICtrlSetState($ScrollLockOnPic, $GUI_HIDE)&lt;br /&gt;
	$ScrollLockOn = False&lt;br /&gt;
EndIf&lt;br /&gt;
;Current focused window will remain focused even after the keyboard GUI is up:&lt;br /&gt;
;~ GUISetState()&lt;br /&gt;
GUISetState(@SW_HIDE)&lt;br /&gt;
GUIRegisterMsg($WM_MOUSEACTIVATE, &amp;#039;WM_EVENTS&amp;#039;)&lt;br /&gt;
$WGT = WinGetTitle(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
GUISetState(@SW_SHOWNOACTIVATE)&lt;br /&gt;
WinActivate($WGT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While 1&lt;br /&gt;
	If WinActive($Form1) = False Then&lt;br /&gt;
		WinSetTitle($Form1, &amp;quot;&amp;quot;, $MainGUITitle &amp;amp; WinGetTitle(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;))&lt;br /&gt;
	EndIf&lt;br /&gt;
	$nMsg = GUIGetMsg()&lt;br /&gt;
	Switch $nMsg&lt;br /&gt;
		Case $GUI_EVENT_CLOSE&lt;br /&gt;
			Exit&lt;br /&gt;
		Case $ScrollLock&lt;br /&gt;
			_ScrollLockPushed()&lt;br /&gt;
		Case $NumberLock&lt;br /&gt;
			_NumberLockPushed()&lt;br /&gt;
		Case $CapsLock&lt;br /&gt;
			_CapsLockPushed()&lt;br /&gt;
		Case $Esc&lt;br /&gt;
			PressButton(&amp;quot;{Escape}&amp;quot;, 0)&lt;br /&gt;
		Case $F1&lt;br /&gt;
			PressButton(&amp;quot;{F1}&amp;quot;, 0)&lt;br /&gt;
		Case $F2&lt;br /&gt;
			PressButton(&amp;quot;{F2}&amp;quot;, 0)&lt;br /&gt;
		Case $F3&lt;br /&gt;
			PressButton(&amp;quot;{F3}&amp;quot;, 0)&lt;br /&gt;
		Case $F4&lt;br /&gt;
			PressButton(&amp;quot;{F4}&amp;quot;, 0)&lt;br /&gt;
		Case $F5&lt;br /&gt;
			PressButton(&amp;quot;{F5}&amp;quot;, 0)&lt;br /&gt;
		Case $F6&lt;br /&gt;
			PressButton(&amp;quot;{F6}&amp;quot;, 0)&lt;br /&gt;
		Case $F7&lt;br /&gt;
			PressButton(&amp;quot;{F7}&amp;quot;, 0)&lt;br /&gt;
		Case $F8&lt;br /&gt;
			PressButton(&amp;quot;{F8}&amp;quot;, 0)&lt;br /&gt;
		Case $F9&lt;br /&gt;
			PressButton(&amp;quot;{F9}&amp;quot;, 0)&lt;br /&gt;
		Case $F10&lt;br /&gt;
			PressButton(&amp;quot;{F10}&amp;quot;, 0)&lt;br /&gt;
		Case $F11&lt;br /&gt;
			PressButton(&amp;quot;{F11}&amp;quot;, 0)&lt;br /&gt;
		Case $F12&lt;br /&gt;
			PressButton(&amp;quot;{F12}&amp;quot;, 0)&lt;br /&gt;
		Case $PrintScreen&lt;br /&gt;
			GUISetState(@SW_HIDE)&lt;br /&gt;
			PressButton(&amp;quot;{PrintScreen}&amp;quot;, 0)&lt;br /&gt;
			GUISetState(@SW_SHOW)&lt;br /&gt;
		Case $PauseBreak&lt;br /&gt;
			PressButton(&amp;quot;{PAUSE}&amp;quot;, 0)&lt;br /&gt;
		Case $Igel&lt;br /&gt;
			PressButton(&amp;quot;`&amp;quot;, 0)&lt;br /&gt;
		Case $One&lt;br /&gt;
			PressButton(&amp;quot;1&amp;quot;, 0)&lt;br /&gt;
		Case $Two&lt;br /&gt;
			PressButton(&amp;quot;2&amp;quot;, 0)&lt;br /&gt;
		Case $Three&lt;br /&gt;
			PressButton(&amp;quot;3&amp;quot;, 0)&lt;br /&gt;
		Case $Four&lt;br /&gt;
			PressButton(&amp;quot;4&amp;quot;, 0)&lt;br /&gt;
		Case $Five&lt;br /&gt;
			PressButton(&amp;quot;5&amp;quot;, 0)&lt;br /&gt;
		Case $Six&lt;br /&gt;
			PressButton(&amp;quot;6&amp;quot;, 0)&lt;br /&gt;
		Case $Seven&lt;br /&gt;
			PressButton(&amp;quot;7&amp;quot;, 0)&lt;br /&gt;
		Case $Eight&lt;br /&gt;
			PressButton(&amp;quot;8&amp;quot;, 0)&lt;br /&gt;
		Case $Nine&lt;br /&gt;
			PressButton(&amp;quot;9&amp;quot;, 0)&lt;br /&gt;
		Case $Zero&lt;br /&gt;
			PressButton(&amp;quot;0&amp;quot;, 0)&lt;br /&gt;
		Case $Minus&lt;br /&gt;
			PressButton(&amp;quot;-&amp;quot;, 0)&lt;br /&gt;
		Case $Equal&lt;br /&gt;
			PressButton(&amp;quot;=&amp;quot;, 0)&lt;br /&gt;
		Case $Back&lt;br /&gt;
			PressButton(&amp;quot;{Backspace}&amp;quot;, 0)&lt;br /&gt;
		Case $Insert&lt;br /&gt;
			PressButton(&amp;quot;{Insert}&amp;quot;, 0)&lt;br /&gt;
		Case $Home&lt;br /&gt;
			PressButton(&amp;quot;{Home}&amp;quot;, 0)&lt;br /&gt;
		Case $PageUp&lt;br /&gt;
			PressButton(&amp;quot;{PgUp}&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPadSlash&lt;br /&gt;
			PressButton(&amp;quot;/&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPadX&lt;br /&gt;
			PressButton(&amp;quot;*&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPadMinus&lt;br /&gt;
			PressButton(&amp;quot;-&amp;quot;, 0)&lt;br /&gt;
		Case $Tab&lt;br /&gt;
			PressButton(&amp;quot;{Tab}&amp;quot;, 0)&lt;br /&gt;
		Case $q&lt;br /&gt;
			PressButton(&amp;quot;q&amp;quot;, 0)&lt;br /&gt;
		Case $w&lt;br /&gt;
			PressButton(&amp;quot;w&amp;quot;, 0)&lt;br /&gt;
		Case $e&lt;br /&gt;
			PressButton(&amp;quot;e&amp;quot;, 0)&lt;br /&gt;
		Case $r&lt;br /&gt;
			PressButton(&amp;quot;r&amp;quot;, 0)&lt;br /&gt;
		Case $t&lt;br /&gt;
			PressButton(&amp;quot;t&amp;quot;, 0)&lt;br /&gt;
		Case $y&lt;br /&gt;
			PressButton(&amp;quot;y&amp;quot;, 0)&lt;br /&gt;
		Case $u&lt;br /&gt;
			PressButton(&amp;quot;u&amp;quot;, 0)&lt;br /&gt;
		Case $i&lt;br /&gt;
			PressButton(&amp;quot;i&amp;quot;, 0)&lt;br /&gt;
		Case $o&lt;br /&gt;
			PressButton(&amp;quot;o&amp;quot;, 0)&lt;br /&gt;
		Case $p&lt;br /&gt;
			PressButton(&amp;quot;p&amp;quot;, 0)&lt;br /&gt;
		Case $LeftBrackets&lt;br /&gt;
			PressButton(&amp;quot;[&amp;quot;, 0)&lt;br /&gt;
		Case $RightBrackets&lt;br /&gt;
			PressButton(&amp;quot;]&amp;quot;, 0)&lt;br /&gt;
		Case $Enter&lt;br /&gt;
			PressButton(&amp;quot;{Enter}&amp;quot;, 0)&lt;br /&gt;
		Case $Delete&lt;br /&gt;
			PressButton(&amp;quot;{Delete}&amp;quot;, 0)&lt;br /&gt;
		Case $End&lt;br /&gt;
			PressButton(&amp;quot;{End}&amp;quot;, 0)&lt;br /&gt;
		Case $PageDown&lt;br /&gt;
			PressButton(&amp;quot;{PgDn}&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad7&lt;br /&gt;
			PressButton(&amp;quot;7&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad8&lt;br /&gt;
			PressButton(&amp;quot;8&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad9&lt;br /&gt;
			PressButton(&amp;quot;9&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPadPlus&lt;br /&gt;
			PressButton(&amp;quot;+&amp;quot;, 0)&lt;br /&gt;
		Case $a&lt;br /&gt;
			PressButton(&amp;quot;a&amp;quot;, 0)&lt;br /&gt;
		Case $s&lt;br /&gt;
			PressButton(&amp;quot;s&amp;quot;, 0)&lt;br /&gt;
		Case $d&lt;br /&gt;
			PressButton(&amp;quot;d&amp;quot;, 0)&lt;br /&gt;
		Case $f&lt;br /&gt;
			PressButton(&amp;quot;f&amp;quot;, 0)&lt;br /&gt;
		Case $g&lt;br /&gt;
			PressButton(&amp;quot;g&amp;quot;, 0)&lt;br /&gt;
		Case $h&lt;br /&gt;
			PressButton(&amp;quot;h&amp;quot;, 0)&lt;br /&gt;
		Case $j&lt;br /&gt;
			PressButton(&amp;quot;j&amp;quot;, 0)&lt;br /&gt;
		Case $k&lt;br /&gt;
			PressButton(&amp;quot;k&amp;quot;, 0)&lt;br /&gt;
		Case $l&lt;br /&gt;
			PressButton(&amp;quot;l&amp;quot;, 0)&lt;br /&gt;
		Case $Colon&lt;br /&gt;
			PressButton(&amp;quot;;&amp;quot;, 0)&lt;br /&gt;
		Case $Apostrophe&lt;br /&gt;
			PressButton(&amp;quot;&amp;#039;&amp;quot;, 0)&lt;br /&gt;
		Case $RightSlash&lt;br /&gt;
			PressButton(&amp;quot;\&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad4&lt;br /&gt;
			PressButton(&amp;quot;4&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad5&lt;br /&gt;
			PressButton(&amp;quot;5&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad6&lt;br /&gt;
			PressButton(&amp;quot;6&amp;quot;, 0)&lt;br /&gt;
		Case $LeftSlash&lt;br /&gt;
			PressButton(&amp;quot;\&amp;quot;, 0)&lt;br /&gt;
		Case $z&lt;br /&gt;
			PressButton(&amp;quot;z&amp;quot;, 0)&lt;br /&gt;
		Case $x&lt;br /&gt;
			PressButton(&amp;quot;x&amp;quot;, 0)&lt;br /&gt;
		Case $c&lt;br /&gt;
			PressButton(&amp;quot;c&amp;quot;, 0)&lt;br /&gt;
		Case $v&lt;br /&gt;
			PressButton(&amp;quot;v&amp;quot;, 0)&lt;br /&gt;
		Case $b&lt;br /&gt;
			PressButton(&amp;quot;b&amp;quot;, 0)&lt;br /&gt;
		Case $n&lt;br /&gt;
			PressButton(&amp;quot;n&amp;quot;, 0)&lt;br /&gt;
		Case $m&lt;br /&gt;
			PressButton(&amp;quot;m&amp;quot;, 0)&lt;br /&gt;
		Case $Comma&lt;br /&gt;
			PressButton(&amp;quot;,&amp;quot;, 0)&lt;br /&gt;
		Case $Dot&lt;br /&gt;
			PressButton(&amp;quot;.&amp;quot;, 0)&lt;br /&gt;
		Case $QuestionMark&lt;br /&gt;
			PressButton(&amp;quot;/&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad1&lt;br /&gt;
			PressButton(&amp;quot;1&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad2&lt;br /&gt;
			PressButton(&amp;quot;2&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad3&lt;br /&gt;
			PressButton(&amp;quot;3&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPadEnter&lt;br /&gt;
			PressButton(&amp;quot;{Enter}&amp;quot;, 0)&lt;br /&gt;
		Case $LeftWindows&lt;br /&gt;
			PressButton(&amp;quot;{Lwin}&amp;quot;, 0)&lt;br /&gt;
		Case $Space&lt;br /&gt;
			PressButton(&amp;quot;{Space}&amp;quot;, 0)&lt;br /&gt;
		Case $RightWindows&lt;br /&gt;
			PressButton(&amp;quot;{Rwin}&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPad0&lt;br /&gt;
			PressButton(&amp;quot;0&amp;quot;, 0)&lt;br /&gt;
		Case $NumberPadDot&lt;br /&gt;
			PressButton(&amp;quot;.&amp;quot;, 0)&lt;br /&gt;
		Case $LeftArrow&lt;br /&gt;
			PressButton(&amp;quot;{Left}&amp;quot;, 0)&lt;br /&gt;
		Case $DownArrow&lt;br /&gt;
			PressButton(&amp;quot;{Down}&amp;quot;, 0)&lt;br /&gt;
		Case $RightArrow&lt;br /&gt;
			PressButton(&amp;quot;{Right}&amp;quot;, 0)&lt;br /&gt;
		Case $UpArrow&lt;br /&gt;
			PressButton(&amp;quot;{Up}&amp;quot;, 0)&lt;br /&gt;
		Case $LeftShift&lt;br /&gt;
			If $fLeftShiftHolden = False And $fRightShiftHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{SHIFTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fLeftShiftHolden = True&lt;br /&gt;
				GUICtrlDelete($LeftShift)&lt;br /&gt;
				$LeftShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 0, 128, 33, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
			ElseIf $fLeftShiftHolden = True And $fRightShiftHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{SHIFTUP}&amp;quot;, 1)&lt;br /&gt;
				$fLeftShiftHolden = False&lt;br /&gt;
				GUICtrlDelete($LeftShift)&lt;br /&gt;
				$LeftShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 0, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
			ElseIf $fLeftShiftHolden = False And $fRightShiftHolden = True Then&lt;br /&gt;
				PressButton(&amp;quot;{SHIFTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fRightShiftHolden = False&lt;br /&gt;
				$fLeftShiftHolden = True&lt;br /&gt;
				GUICtrlDelete($LeftShift)&lt;br /&gt;
				GUICtrlDelete($RightShift)&lt;br /&gt;
				$LeftShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 0, 128, 33, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
				$RightShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 384, 128, 97, 33, $WS_GROUP)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Case $RightShift&lt;br /&gt;
			If $fRightShiftHolden = False And $fLeftShiftHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{SHIFTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fRightShiftHolden = True&lt;br /&gt;
				GUICtrlDelete($RightShift)&lt;br /&gt;
				$RightShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 384, 128, 97, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
			ElseIf $fRightShiftHolden = True And $fLeftShiftHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{SHIFTUP}&amp;quot;, 1)&lt;br /&gt;
				$fRightShiftHolden = False&lt;br /&gt;
				GUICtrlDelete($RightShift)&lt;br /&gt;
				$RightShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 384, 128, 97, 33, $WS_GROUP)&lt;br /&gt;
			ElseIf $fRightShiftHolden = False And $fLeftShiftHolden = True Then&lt;br /&gt;
				PressButton(&amp;quot;{SHIFTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fLeftShiftHolden = False&lt;br /&gt;
				$fRightShiftHolden = True&lt;br /&gt;
				GUICtrlDelete($RightShift)&lt;br /&gt;
				GUICtrlDelete($LeftShift)&lt;br /&gt;
				$RightShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 384, 128, 97, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
				$LeftShift = GUICtrlCreateButton(&amp;quot;Shift&amp;quot;, 0, 128, 33, 33, $WS_GROUP)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Case $LeftCtrl&lt;br /&gt;
			If $fLeftCtrlHolden = False And $fRightCtrlHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{CTRLDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fLeftCtrlHolden = True&lt;br /&gt;
				GUICtrlDelete($LeftCtrl)&lt;br /&gt;
				$LeftCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 0, 160, 41, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
			ElseIf $fLeftCtrlHolden = True And $fRightCtrlHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{CTRLUP}&amp;quot;, 1)&lt;br /&gt;
				$fLeftCtrlHolden = False&lt;br /&gt;
				GUICtrlDelete($LeftCtrl)&lt;br /&gt;
				$LeftCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 0, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
			ElseIf $fLeftCtrlHolden = False And $fRightCtrlHolden = True Then&lt;br /&gt;
				PressButton(&amp;quot;{CTRLDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fRightCtrlHolden = False&lt;br /&gt;
				$fLeftCtrlHolden = True&lt;br /&gt;
				GUICtrlDelete($LeftCtrl)&lt;br /&gt;
				GUICtrlDelete($RightCtrl)&lt;br /&gt;
				$LeftCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 0, 160, 41, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
				$RightCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 400, 160, 81, 33, $WS_GROUP)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Case $RightCtrl&lt;br /&gt;
			If $fRightCtrlHolden = False And $fLeftCtrlHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{CTRLDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fRightCtrlHolden = True&lt;br /&gt;
				GUICtrlDelete($RightCtrl)&lt;br /&gt;
				$RightCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 400, 160, 81, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
			ElseIf $fRightCtrlHolden = True And $fLeftCtrlHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{CTRLUP}&amp;quot;, 1)&lt;br /&gt;
				$fRightCtrlHolden = False&lt;br /&gt;
				GUICtrlDelete($RightCtrl)&lt;br /&gt;
				$RightCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 400, 160, 81, 33, $WS_GROUP)&lt;br /&gt;
			ElseIf $fRightCtrlHolden = False And $fLeftCtrlHolden = True Then&lt;br /&gt;
				PressButton(&amp;quot;{CTRLDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fLeftCtrlHolden = False&lt;br /&gt;
				$fRightCtrlHolden = True&lt;br /&gt;
				GUICtrlDelete($RightCtrl)&lt;br /&gt;
				GUICtrlDelete($LeftCtrl)&lt;br /&gt;
				$RightCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 400, 160, 81, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
				$LeftCtrl = GUICtrlCreateButton(&amp;quot;Ctrl&amp;quot;, 0, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Case $LeftAlt&lt;br /&gt;
			If $fLeftAltHolden = False And $fRightAltHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{ALTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fLeftAltHolden = True&lt;br /&gt;
				GUICtrlDelete($LeftAlt)&lt;br /&gt;
				$LeftAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 80, 160, 41, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
			ElseIf $fLeftAltHolden = True And $fRightAltHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{ALTUP}&amp;quot;, 1)&lt;br /&gt;
				$fLeftAltHolden = False&lt;br /&gt;
				GUICtrlDelete($LeftAlt)&lt;br /&gt;
				$LeftAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 80, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
			ElseIf $fLeftAltHolden = False And $fRightAltHolden = True Then&lt;br /&gt;
				PressButton(&amp;quot;{ALTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fRightAltHolden = False&lt;br /&gt;
				$fLeftAltHolden = True&lt;br /&gt;
				GUICtrlDelete($LeftAlt)&lt;br /&gt;
				GUICtrlDelete($RightAlt)&lt;br /&gt;
				$LeftAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 80, 160, 41, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
				$RightAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 320, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Case $RightAlt&lt;br /&gt;
			If $fRightAltHolden = False And $fLeftAltHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{ALTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fRightAltHolden = True&lt;br /&gt;
				GUICtrlDelete($RightAlt)&lt;br /&gt;
				$RightAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 320, 160, 41, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
			ElseIf $fRightAltHolden = True And $fLeftAltHolden = False Then&lt;br /&gt;
				PressButton(&amp;quot;{ALTUP}&amp;quot;, 1)&lt;br /&gt;
				$fRightAltHolden = False&lt;br /&gt;
				GUICtrlDelete($RightAlt)&lt;br /&gt;
				$RightAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 320, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
			ElseIf $fRightAltHolden = False And $fLeftAltHolden = True Then&lt;br /&gt;
				PressButton(&amp;quot;{ALTDOWN}&amp;quot;, 1)&lt;br /&gt;
				$fLeftAltHolden = False&lt;br /&gt;
				$fRightAltHolden = True&lt;br /&gt;
				GUICtrlDelete($RightAlt)&lt;br /&gt;
				GUICtrlDelete($LeftAlt)&lt;br /&gt;
				$RightAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 320, 160, 41, 33, $WS_GROUP, $WS_EX_CLIENTEDGE)&lt;br /&gt;
				$LeftAlt = GUICtrlCreateButton(&amp;quot;Alt&amp;quot;, 80, 160, 41, 33, $WS_GROUP)&lt;br /&gt;
			EndIf&lt;br /&gt;
	EndSwitch&lt;br /&gt;
WEnd&lt;br /&gt;
&lt;br /&gt;
Func PressButton($_Key, $_HoldNeeded)&lt;br /&gt;
	Local $ctrl&lt;br /&gt;
	$ReplacedString = StringReplace(WinGetTitle($Form1), &amp;quot;Virtual Keyboard v0.1 - &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	$ctrl = ControlGetFocus($ReplacedString)&lt;br /&gt;
	$ie_handle = WinWaitActive(WinGetTitle(&amp;#039;&amp;#039;, &amp;#039;&amp;#039;))&lt;br /&gt;
	If WinActivate($ReplacedString) Then&lt;br /&gt;
		If _ArrayBinarySearch($keyStroke_Array, $_Key) &amp;lt;&amp;gt; -1 And $_Key &amp;lt;&amp;gt; &amp;quot;{TAB}&amp;quot; Then&lt;br /&gt;
			Select&lt;br /&gt;
				Case $_Key == &amp;#039;{SHIFTDOWN}&amp;#039;&lt;br /&gt;
					$shiftstatus = 1&lt;br /&gt;
				Case $_Key == &amp;#039;{SHIFTUP}&amp;#039;&lt;br /&gt;
					$shiftstatus = 0&lt;br /&gt;
				Case $_Key == &amp;#039;{CTRLDOWN}&amp;#039;&lt;br /&gt;
					$ctrlstatus = 1&lt;br /&gt;
				Case $_Key == &amp;#039;{CTRLUP}&amp;#039;&lt;br /&gt;
					$ctrlstatus = 0&lt;br /&gt;
				Case $_Key == &amp;#039;{ALTUP}&amp;#039;&lt;br /&gt;
					$altstatus = 0&lt;br /&gt;
				Case $_Key == &amp;#039;{ALTDOWN}&amp;#039;&lt;br /&gt;
					$altstatus = 1&lt;br /&gt;
				Case StringLower($_Key) == StringLower(&amp;#039;{BS}&amp;#039;)&lt;br /&gt;
					ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
					ControlSend($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;{ASC 008}&amp;quot;)&lt;br /&gt;
				Case StringLower($_Key) == StringLower(&amp;#039;{BACKSPACE}&amp;#039;)&lt;br /&gt;
					ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
					ControlSend($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;{ASC 008}&amp;quot;)&lt;br /&gt;
				Case Else&lt;br /&gt;
					Send($_Key)&lt;br /&gt;
			EndSelect&lt;br /&gt;
		Else&lt;br /&gt;
			If $shiftstatus == 1 And $CapsLockOn == False And $ctrlstatus == 0 And $altstatus == 0 And $_Key &amp;lt;&amp;gt; &amp;quot;{TAB}&amp;quot; Then&lt;br /&gt;
;~ Send(&amp;#039;0&amp;#039;)&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				If $ie_handle &amp;lt;&amp;gt; 0 And StringInStr($ctrl, &amp;#039;Internet Explorer_Server&amp;#039;, 0) &amp;gt; 0 Then&lt;br /&gt;
					get_keyboard_focus($ie_handle, $ctrl, StringUpper($_Key))&lt;br /&gt;
				Else&lt;br /&gt;
					ControlCommand($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;EditPaste&amp;quot;, StringUpper($_Key))&lt;br /&gt;
				EndIf&lt;br /&gt;
			ElseIf $shiftstatus == 0 And $CapsLockOn == True And $ctrlstatus == 0 And $altstatus == 0 And $_Key &amp;lt;&amp;gt; &amp;quot;{TAB}&amp;quot; Then&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				If $ie_handle &amp;lt;&amp;gt; 0 And StringInStr($ctrl, &amp;#039;Internet Explorer_Server&amp;#039;, 0) &amp;gt; 0 Then&lt;br /&gt;
					get_keyboard_focus($ie_handle, $ctrl, StringUpper($_Key))&lt;br /&gt;
				Else&lt;br /&gt;
					ControlCommand($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;EditPaste&amp;quot;, StringUpper($_Key))&lt;br /&gt;
				EndIf&lt;br /&gt;
			ElseIf $shiftstatus == 1 And $CapsLockOn == True And $ctrlstatus == 0 And $altstatus == 0 And $_Key &amp;lt;&amp;gt; &amp;quot;{TAB}&amp;quot; Then&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				If $ie_handle &amp;lt;&amp;gt; 0 And StringInStr($ctrl, &amp;#039;Internet Explorer_Server&amp;#039;, 0) &amp;gt; 0 Then&lt;br /&gt;
					get_keyboard_focus($ie_handle, $ctrl, $_Key)&lt;br /&gt;
				Else&lt;br /&gt;
					ControlCommand($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;EditPaste&amp;quot;, $_Key)&lt;br /&gt;
				EndIf&lt;br /&gt;
			ElseIf $shiftstatus == 0 And $CapsLockOn == False And $ctrlstatus == 0 And $altstatus == 0 And $_Key &amp;lt;&amp;gt; &amp;quot;{TAB}&amp;quot; Then&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				If $ie_handle &amp;lt;&amp;gt; 0 And StringInStr($ctrl, &amp;#039;Internet Explorer_Server&amp;#039;, 0) &amp;gt; 0 Then&lt;br /&gt;
					get_keyboard_focus($ie_handle, $ctrl, $_Key)&lt;br /&gt;
				Else&lt;br /&gt;
					ControlCommand($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;EditPaste&amp;quot;, $_Key)&lt;br /&gt;
				EndIf&lt;br /&gt;
			ElseIf $ctrlstatus == 1 And $altstatus == 0 Then&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				If $ie_handle &amp;lt;&amp;gt; 0 And StringInStr($ctrl, &amp;#039;Internet Explorer_Server&amp;#039;, 0) &amp;gt; 0 Then&lt;br /&gt;
					get_keyboard_focus($ie_handle, $ctrl, $_Key)&lt;br /&gt;
				Else&lt;br /&gt;
					ControlSend($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;#039;^&amp;#039; &amp;amp; $_Key)&lt;br /&gt;
				EndIf&lt;br /&gt;
			ElseIf $ctrlstatus == 0 And $altstatus == 1 Then&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				ControlSend($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;#039;!&amp;#039; &amp;amp; $_Key)&lt;br /&gt;
			Else&lt;br /&gt;
				ControlFocus($ReplacedString, &amp;quot;&amp;quot;, $ctrl)&lt;br /&gt;
				ControlSend($ReplacedString, &amp;quot;&amp;quot;, $ctrl, &amp;quot;{ASC 0x09}&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
	If $_HoldNeeded = 1 Then&lt;br /&gt;
		SoundPlay(&amp;quot;Hold.wav&amp;quot;)&lt;br /&gt;
	Else&lt;br /&gt;
		SoundPlay(&amp;quot;Type.wav&amp;quot;)&lt;br /&gt;
		SoundSetWaveVolume(10) ;Set volume for both Hold.wav and Type.wav&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;PressButton&lt;br /&gt;
&lt;br /&gt;
Func get_keyboard_focus($ie_handle, $control_class_namenn, $key)&lt;br /&gt;
	_IEErrorHandlerRegister(&amp;quot;MyErrFunc&amp;quot;)&lt;br /&gt;
	$oIE = _IEAttach($ie_handle, &amp;#039;Embedded&amp;#039;)&lt;br /&gt;
	If IsObj($oIE) Then&lt;br /&gt;
		$oIE.document.activeElement.name&lt;br /&gt;
		If @error == 0 Then&lt;br /&gt;
			$oRange = $oIE.document.selection.createRange()&lt;br /&gt;
			$oRange.text = $key&lt;br /&gt;
			Return&lt;br /&gt;
		Else&lt;br /&gt;
			ConsoleWrite($key)&lt;br /&gt;
			ControlSend(&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, $key)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;get_keyboard_focus&lt;br /&gt;
&lt;br /&gt;
Func MyErrFunc()&lt;br /&gt;
	SetError(1, 1, 1)&lt;br /&gt;
	Return&lt;br /&gt;
EndFunc   ;==&amp;gt;MyErrFunc&lt;br /&gt;
&lt;br /&gt;
Func _GetNumLock() ; By GaryFrost&lt;br /&gt;
	Local $ret&lt;br /&gt;
	$ret = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;GetKeyState&amp;quot;, &amp;quot;long&amp;quot;, $VK_NUMLOCK)&lt;br /&gt;
	Return $ret[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetNumLock&lt;br /&gt;
&lt;br /&gt;
Func _GetScrollLock() ; By GaryFrost&lt;br /&gt;
	Local $ret&lt;br /&gt;
	$ret = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;GetKeyState&amp;quot;, &amp;quot;long&amp;quot;, $VK_SCROLL)&lt;br /&gt;
	Return $ret[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetScrollLock&lt;br /&gt;
&lt;br /&gt;
Func _GetCapsLock() ; By GaryFrost&lt;br /&gt;
	Local $ret&lt;br /&gt;
	$ret = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;GetKeyState&amp;quot;, &amp;quot;long&amp;quot;, $VK_CAPITAL)&lt;br /&gt;
	Return $ret[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetCapsLock&lt;br /&gt;
&lt;br /&gt;
Func Quit()&lt;br /&gt;
	GUIDelete($Form1)&lt;br /&gt;
	Exit&lt;br /&gt;
EndFunc   ;==&amp;gt;Quit&lt;br /&gt;
&lt;br /&gt;
Func _NumberLockPushed()&lt;br /&gt;
	If $NumberLockOn = True Then&lt;br /&gt;
		GUICtrlSetState($NumberLockOnPic, $GUI_HIDE)&lt;br /&gt;
		PressButton(&amp;quot;{NumLock}&amp;quot;, 1)&lt;br /&gt;
		$NumberLockOn = False&lt;br /&gt;
	Else&lt;br /&gt;
		GUICtrlSetState($NumberLockOnPic, $GUI_SHOW)&lt;br /&gt;
		PressButton(&amp;quot;{NumLock}&amp;quot;, 1)&lt;br /&gt;
		$NumberLockOn = True&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NumberLockPushed&lt;br /&gt;
&lt;br /&gt;
Func _ScrollLockPushed()&lt;br /&gt;
	If $ScrollLockOn = True Then&lt;br /&gt;
		GUICtrlSetState($ScrollLockOnPic, $GUI_HIDE)&lt;br /&gt;
		PressButton(&amp;quot;{ScrollLock}&amp;quot;, 1)&lt;br /&gt;
		$ScrollLockOn = False&lt;br /&gt;
	Else&lt;br /&gt;
		GUICtrlSetState($ScrollLockOnPic, $GUI_SHOW)&lt;br /&gt;
		PressButton(&amp;quot;{ScrollLock}&amp;quot;, 1)&lt;br /&gt;
		$ScrollLockOn = True&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_ScrollLockPushed&lt;br /&gt;
&lt;br /&gt;
Func _CapsLockPushed()&lt;br /&gt;
	If $CapsLockOn = True Then&lt;br /&gt;
		GUICtrlSetState($CapsLockOnPic, $GUI_HIDE)&lt;br /&gt;
		PressButton(&amp;quot;{CapsLock}&amp;quot;, 1)&lt;br /&gt;
		$CapsLockOn = False&lt;br /&gt;
	Else&lt;br /&gt;
		GUICtrlSetState($CapsLockOnPic, $GUI_SHOW)&lt;br /&gt;
		PressButton(&amp;quot;{CapsLock}&amp;quot;, 1)&lt;br /&gt;
		$CapsLockOn = True&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_CapsLockPushed&lt;br /&gt;
&lt;br /&gt;
Func WM_EVENTS($hWndGUI$hWndGUI$hWndGUI, $MsgID, $WParam, $LParam)&lt;br /&gt;
	Switch $hWndGUI&lt;br /&gt;
		Case $Form1&lt;br /&gt;
			Switch $MsgID&lt;br /&gt;
				Case $WM_MOUSEACTIVATE&lt;br /&gt;
					; Check mouse position&lt;br /&gt;
					Local $aMouse_Pos = GUIGetCursorInfo($Form1)&lt;br /&gt;
					If $aMouse_Pos[4] &amp;gt; 0 Then&lt;br /&gt;
						Local $word = _WinAPI_MakeLong($aMouse_Pos[4], $BN_CLICKED)&lt;br /&gt;
						_SendMessage($Form1, $WM_COMMAND, $word, GUICtrlGetHandle($aMouse_Pos[4]))&lt;br /&gt;
					ElseIf $aMouse_Pos[1] &amp;lt; 0 And $aMouse_Pos[0] &amp;gt; 700 Then&lt;br /&gt;
						Quit()&lt;br /&gt;
					Else&lt;br /&gt;
						WinActivate($Form1)&lt;br /&gt;
					EndIf&lt;br /&gt;
					Return $MA_NOACTIVATEANDEAT&lt;br /&gt;
			EndSwitch&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Return $GUI_RUNDEFMSG&lt;br /&gt;
EndFunc   ;==&amp;gt;WM_EVENTS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[category:autoit]]&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>