#include <GUIConstantsEx.au3>
#include <Misc.au3>
Dim $aLetter[11][3] = [[10],['q', 'й'],['w', 'ц'],['e', 'у'],['r', 'к'],['t', 'е'], _
['y', 'н'],['u', 'г'],['i', 'ш'],['o', 'щ'],['p', 'з']]
$fUp = False
GUICreate('Test', 310, 145)
$nCheckBoxUp = GUICtrlCreateCheckbox('Caps Lock', 230, 10, 70, 20)
$nLabel = GUICtrlCreateLabel('Рус', 10, 10, 40, 18)
$nButtonRU_EN = GUICtrlCreateButton('Включить Eng', 110, 10, 90, 30)
For $i = 1 To $aLetter[0][0]
$aLetter[$i][2] = GUICtrlCreateButton($aLetter[$i][1], 5 + 30 * ($i - 1), 50, 25, 25)
Next
$nButtonSpace = GUICtrlCreateButton('S P A C E', 80, 80, 150, 25)
$nInput = GUICtrlCreateInput('', 5, 115, 300, 20)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nCheckBoxUp
If GUICtrlRead($nCheckBoxUp) = $GUI_CHECKED Then
$fUp = True
Else
$fUp = False
EndIf
Case $nButtonRU_EN
If StringInStr(GUICtrlRead($nButtonRU_EN), 'Eng') Then
GUICtrlSetData($nButtonRU_EN, 'Включить Рус')
GUICtrlSetData($nLabel, 'Eng')
For $i = 1 To $aLetter[0][0]
GUICtrlSetData($aLetter[$i][2], $aLetter[$i][0])
Next
Else
GUICtrlSetData($nButtonRU_EN, 'Включить Eng')
GUICtrlSetData($nLabel, 'Рус')
For $i = 1 To $aLetter[0][0]
GUICtrlSetData($aLetter[$i][2], $aLetter[$i][1])
Next
EndIf
Case $nButtonSpace
GUICtrlSetData($nInput, GUICtrlRead($nInput) & ' ')
EndSwitch
For $i = 1 To $aLetter[0][0]
If $nMsg = $aLetter[$i][2] Then
If _IsPressed('11') Or $fUp Then ;если нажат Ctrl
GUICtrlSetData($nInput, GUICtrlRead($nInput) & StringUpper(GUICtrlRead($aLetter[$i][2])))
Else
GUICtrlSetData($nInput, GUICtrlRead($nInput) & GUICtrlRead($aLetter[$i][2]))
EndIf
EndIf
Next
WEnd