Что нового

Постоянная точка NUMPAD

Maximill

Новичок
Сообщения
16
Репутация
0
Приветствую!
Описание: При любой раскладке (RU или EN) при нажатии на клавишу с точкой, на цифровом блоке клавиатуры (NUMPAD) всегда печаталась только точка.
Примечания: На ENG раскладке при нажатии на клавишу с точкой печатается точка, а на RU раскладке - запятая.

Это очень облегчит работу на клавиатуре, когда нужно напечатать точку, и не заморачиваешься, какая раскладка сейчас активна.

На форуме нашел несколько подобных тема1, тема2 , тема3

P.S.Если задача реализуема, прошу объединить код в один из этой темы (чтобы оба кода выполнялись при запуске одного скрипта).
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
По идее должно работать так:
Код:
#include <WinAPISys.au3>
HotKeySet('{NUMPADDOT}', '_Dot')

Global $iUB, $aMedia, $aLayoutList, $iLayout, $iLayoutPrev
Global $aMedia[2] = [@WindowsDir & '\media\Speech Off.wav', _ ; Массив звуков
        @WindowsDir & '\media\Speech On.wav']

$aLayoutList = _WinAPI_GetKeyboardLayoutList()
If @error Then Exit 1
$iUB = UBound($aMedia)

Global $aLayoutMedia[$aLayoutList[0] + 1][2]
$aLayoutMedia[0][0] = $aLayoutList[0]
For $i = 1 To $aLayoutList[0]
    $aLayoutMedia[$i][0] = $aLayoutList[$i]
    If $i <= $iUB Then $aLayoutMedia[$i][1] = $aMedia[$i - 1]
Next
$iLayoutPrev = _WinAPI_GetKeyboardLayout(WinGetHandle(''))

While Sleep(500)
    $iLayout = _WinAPI_GetKeyboardLayout(WinGetHandle(''))
    If $iLayout And $iLayout <> $iLayoutPrev Then
        For $i = 1 To $aLayoutMedia[0][0]
            If $iLayout = $aLayoutMedia[$i][0] Then
                SoundPlay($aLayoutMedia[$i][1])
                ExitLoop
            EndIf
        Next
        $iLayoutPrev = $iLayout
    EndIf
WEnd

Func _Dot()
    Send('{ASC 046}')
EndFunc
(Проверить нет возможности)
 
Верх