Вчера в процессе базара через аську с Виталей возникла мысль о том, что при наличии фритрека POV перестал использоваться. А это фактически ещё 8 "кнопок" на джое. Надо как-то задействовать. Дома поигравшись я понял, что на самом деле не 8, а 4, т.к. только в 4 положения мне чётко удаётся "попасть" - вертикальные и горизонтальные. Диагональные положения почти всегда "проходят" через одно из вертикальных или горизонтальных. Если в полёте при манипуляции одним органом управления случайно зацепишь другой, то это может быть опасно. Поэтому я диагональные положения рассматривать не стал.
В результате я назначил POV таким образом: вперёд-назад - триммер, влево-вправо - короткие взгляды на левое и правое крыло соответственно (с фритреком работает). Освободившиеся кнопки триммера, которые у меня были на рукоятке газа, я назначил на управление закрылками. Протестил, оказалось очень удобно. Надо только чуть привыкнуть. Вот мой скрипт для автохоткея (там ещё есть мои назначения кнопок - они все описаны):
;=============================================================================
; Кусок отработки POV взят из хелп-файла ahk
; Т.к. POV используется для «несвойственных ему функций», то
; управление видами от POV в Кондоре должно быть выключено
;
; Назначение позиций POV:
; Вперёд – триммер вниз (более естественно получается, когда отклонение POV
; в том же направлении, что и ручка, вызывает то же действие) – “Ins”
; Назад – триммер вверх – “Del”
; Влево – короткий взгляд влево – “Numpad 7”
; Вправо – короткий взгляд вправо – “Numpad 9”
;
;=============================================================================
SetTimer, WatchPOV, 10
return
WatchPOV:
GetKeyState, POV, JoyPOV ; Get position of the POV control.
KeyToHoldDownPrev = %KeyToHoldDown% ; Prev now holds the key that was down before (if any).
; Some joysticks might have a smooth/continous POV rather than one in fixed increments.
; To support them all, use a range:
if POV < 0 ; No angle to report
KeyToHoldDown =
else if POV > 31500 ; 315 to 360 degrees: Ins (триммер вниз)
KeyToHoldDown = Ins
else if POV between 0 and 4500 ; 0 to 45 degrees: Ins (триммер вниз)
KeyToHoldDown = Ins
else if POV between 4501 and 13500 ; 45 to 135 degrees: Numpad9 (короткий взгляд вправо)
KeyToHoldDown = Numpad9
else if POV between 13501 and 22500 ; 135 to 225 degrees: Del (триммер вверх)
KeyToHoldDown = Del
else ; 225 to 315 degrees: Numpad7 (короткий взгляд влево)
KeyToHoldDown = Numpad7
if KeyToHoldDown = %KeyToHoldDownPrev% ; The correct key is already down (or no key is needed).
return ; Do nothing.
; Otherwise, release the previous key and press down the new key:
SetKeyDelay -1 ; Avoid delays between keystrokes.
if KeyToHoldDownPrev ; There is a previous key to release.
Send, {%KeyToHoldDownPrev% up} ; Release it.
if KeyToHoldDown ; There is a key to press down.
Send, {%KeyToHoldDown% down} ; Press it down.
return
;=============================================================================
; Это назначение кнопки #6 джоя на левый Ctrl. У меня это PTT тимспика.
; (PTT – Push To Talk – кнопка при нажатии которой выполняется передача в эфир)
; У меня кнопка 6 – это средняя кнопка под большим пальцем на ручке сектора газа
; Этот кусок тоже из хелп-файла ahk.
;=============================================================================
Joy6::
Send {LCtrl down} ; Hold down the LCtrl
SetTimer, WaitForButtonUp6, 10
return
WaitForButtonUp6:
if GetKeyState("Joy6") ; The button is still, down, so keep waiting.
return
; Otherwise, the button has been released.
Send {LCtrl up} ; Release the LCtrl
SetTimer, WaitForButtonUp6, off
return
;=============================================================================
; Это назначение кнопки #4 джоя на Scroll Lock. У меня это кнопка центрирования
; взгляда во фритреке в режиме переключателя – первое нажатие включает режим
; центрирования, второе нажатие отключает. В настройках фритрека должно быть
; сделано соответствующее назначение:
; Закладка “Keys” -> секция “Tracking” -> в поле “Center” задано “ScrollLock”,
; галочка в колонке “Hold” убрана.
; На моём джое это правая кнопка под большим пальцем на самом джойстике
;=============================================================================
Joy4::
Send {ScrollLock down}
Sleep 100
Send {ScrollLock up}
return
;=============================================================================
; Это назначение кнопок 5 и 7 джоя на уборку (V) и выпуск (F) закрылков
; У меня это верхняя и нижняя кнопки под большим пальцем на ручке сектора газа
; (между ними кнопка №6, которая работает как PTT)
;=============================================================================
Joy5::
Send {V down}
Sleep 100
Send {V up}
return
Joy7::
Send {F down}
Sleep 100
Send {F up}
return
;=============================================================================
; Это назначение кнопки 1 джоя на функцию «Приблизить»
; У меня это кнопка под указательным пальцем – «спусковой крючок»
;=============================================================================
Joy1::
Send {NumpadAdd down} ; Hold down the Numpad +
SetTimer, WaitForButtonUp1, 10
return
WaitForButtonUp1:
if GetKeyState("Joy1") ; The button is still, down, so keep waiting.
return
; Otherwise, the button has been released.
Send {NumpadAdd up} ; Release the Numpad +
SetTimer, WaitForButtonUp1, off
return