Что нового

[Мышь, клавиатура] Индикатор режимов клавиатуры для нетбуков

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Встречаются нетбуки, у которых нет аппаратных индикаторов переключения режимов NumLock и CapsLock...
Предлагаю простой скрипт для реализации индикатора в области уведомления на панели задач:

Код:
; НАЧАЛО

; Всплывающая подсказка

 TraySetToolTip("Индикатор режимов клавиатуры")

; Проверка текущего состояния NumLock и CapsLock

 FCAPSLOCK()
 FNUMLOCK()

; Регистрация комбинаций клавиш

 HotKeySet("{NUMLOCK}","FNUMLOCK")
 HotKeySet("{CAPSLOCK}","FCAPSLOCK")

; Бесконечный цикл MessageLoop

 While Sleep(100)
 WEnd

; Функция, следящая за режимом NumLock

 Func FNUMLOCK()

  $STATE=DllCall('user32.dll','int','GetKeyState','int',0x90)

  If BitAND($STATE[0],1)=0 Then
   TraySetState(8)
  Else
   TraySetState(4)
  EndIf

 EndFunc

; Функция, следящая за режимом CapsLock

 Func FCAPSLOCK()

  DllCall('user32.dll','int','keybd_event','int',0x14,'int',0,'int',0x02,'ptr',0)
  $STATE=DllCall('user32.dll','int','GetKeyState','int',0x14)

  If BitAND($STATE[0],1)=0 Then
   $Icon=75
  Else
   $Icon=73
  EndIf
 
  TraySetIcon("shell32.dll",-($Icon+($Icon>-1)))

 EndFunc

; КОНЕЦ
 
Автор
snoitaleR

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Исправил казус, возникающий при установке "горячей клавиши" на клавишу CapsLock...
Оказывается, если установить "горячую клавишу" на клавишу CapsLock с помощью функции HotKeySet() , то блокируется основная функция этой клавиши - переключение режима "Строчные - Прописные"...

Проблема решена эмуляцией нажатия на клавишу CapsLock:

Код:
DllCall('user32.dll','int','keybd_event','int',0x14,'int',0,'int',0x02,'ptr',0)


Также удивительно, что при установке "горячей клавиши" на клавишу NumLock с помощью функции HotKeySet(), не просходит блокирования основной функции этой клавиши - переключения режима дополнительной клавиатуры НЕТБУКА "Цифры - Буквы"...
 

pleaseQQ

Новичок
Сообщения
1
Репутация
0
помогите плиз.
такой вопрос.
играю в ла2 . играю не на Фках, а на клаве, и нада скрипт на нажатие клавиши R.
тобиш , нажал клавишу R, отпустил, и скил кастуется до тех пор, пока я не нажму её ещё раз.
зарание спасибо.

зы.и вопрос.. будет ли сбиватся даный скрипт(даное действие, тобиш кастование скила), когда я буду ещё что то нажимать на клавиатуре????будет даное действие перерыватся?
 
Верх