Есть такая связка GlovePie+PPjoy
Я летаю на мышеджое. Для гловпая есть скрипт. По скрипту оси упраления и оси триммеров совмещены и висят на одних и тех же осях PPJoy. По нажатию кнопки триммера фиксируют свое положение, а так работают всегда. Значение осей триммеров и упраления совпадают. Мне нужно сделать так, чтобы триммера вообще на работали пока я не нажму на кнопку. Можно сказать, что мне нужно сделать наоборот. Они всегда по нулям, а нажму кнопку - включаются.

И еще пункт :триммера дают более резкие маневры. А можно их значение сделать не совпадающим с осями управления а всегда меньше на конкретное значение?? Х=10, Хтрим = Х-5.
Как-то так. Если триммер дает резкость, то если его значение будет низким или вообще обратным, то по идее он даст плавность, разве не так???

Часть скрипта выкладываю сюда. Помогите разобраться с моей проблемой.


Пример эмуляции джойстика и трекира с помощью мыши и клавиатуры
// ============================================================
// Для Ил-2 необходимо через "conf.ini" включить использование системного
// курсора (mouseUse=1), джойстика (joyUse=1) и трекира (trackIRUse=1). Обзор
// мышью нужно оставить включенным (SensitivityX=1.0 и SensitivityY=1.0), чтобы
// сохранить возможность управления турельными пулеметами при переключении на
// задних стрелков. Ил-2 автоматически отвязывает обзор от мыши (при сохранении
// мышиного управления турельными пулеметами) после каждого изменения состояния
// трекира.
//
// ...
// [rts]
// mouseUse=1
// joyUse=1
// trackIRUse=1
// ...
// [rts_mouse]
// SensitivityX=1.0
// SensitivityY=1.0
// ...
//
// Для Ил-2 в настройках управления необходимо не использовать клавиши [Q], [W],
// [E], [A], [S], [D], так как в скрипте они используются для управления
// клавотрекиром (в режиме пилотирования) и клаводжойстиком (во вспомогательном
// режиме).
//
// Для полноценного обзора с помощью клавотреикра в Ил-2 рекомендуется
// использовать следующие настройки кнопок и осей:
// - "Оружие 1+2" - кнопка [Пробел]
// - "Сменить сменить угол зрения" - кнопка [C]
// - "Смотреть через прицел. Вкл/Выкл" - кнопка [X]
// ...
// - "Элероны" - Ось X
// - "Руль высоты" - Ось Y
// - "Тяга" - Ось Z
// - "Руль высоты" - Вращение по оси Z
// - "Приближение" - Скольжение по оси U
//
// Для Ил-2 через "settings.ini" в подкаталоге "users\1\" можно совместить рули
// с соответствующими триммерами синхронно на одной оси (для бомбардировщиков
// важен только триммер руля направления на оси RZ, поскольку он позволяет
// доворачить по курсу в автогоризонте):
//
// ...
// [HotKey aircraftView]
// Space=Weapon01
// X=cockpitAim
// C=fovSwitch
// ...
// [HotKey move]
// JoystickDevice0 AXE_X=aileron
// JoystickDevice0 AXE_Y=elevator
// JoystickDevice0 AXE_Z=power
// JoystickDevice0 AXE_RZ=rudder
// JoystickDevice0 AXE_U=zoom
// AXE_X JoystickDevice0=trimaileron
// AXE_Y JoystickDevice0=trimelevator
// AXE_RZ JoystickDevice0=trimrudder
// ...
//
// ============================================================
// [F9] Режим пилотирования (клавотрекир + мышеджойстик)
// ============================================================
// При отжатой [ALT] любая мышь управляет только джойстиком
// (оси трекира сохраняют свое значение или управляются с клавиатуры)
// При зажатой [ALT] любая мышь управляет только трекиром
// (оси джойстика сохраняют свое значение, системный курсор свободен)
//
// В режиме пилотирования доступен клавотрекир, заточенный под левую руку:
// Комбинации [Q, W, E, A, S, D] - быстрый осмотр с клавиатуры (с автовозвратом)
// [SHIFT] + [Q, W, E, A, S, D] - плавный осмотр с клавиатуры (без автовозврата)
// [SHIFT] + [Q] + [E] - центровка по курсу и тангажу трекира
// Сдвиг головы в сторону поворота выполняется автоматически
//
// ============================================================
//
// ============================================================
// Управление мышеджойстиком (только в режиме пилотирования)
// ============================================================
// Оси "X Axis" (элероны) и "Z Rotation" (руль направления, РН) джойстика:
// Управляются горизонтальным движением любой мыши (при отжатой [ALT])
// При зажатой ЛКМ управляются только элероны без руля направления
// [мышь влево/вправо = РУС влево/вправо = крен влево/вправо]
// При зажатой ПКМ управляются только руля направления без элеронов
// [мышь влево/вправо = педали влево/вправо = рысканье влево/вправо]
// Центровка визуальная по горизонтальному положению курсора-крестика на экране,
// а при необходимости откалибровать оси точно по центру можно нажать [F12].
//
// Ось "Y Axis" (руль высоты, РВ) джойстика:
// Управляется вертикальным движением любой мыши (при отжатой [ALT])
// [мышь на себя = РУС на себя = увеличение угла атаки]
// Центровка визуальная по вертикальному положению курсора-крестика на экране,
// а при необходимости откалибровать оси точно по центру можно нажать [F12].
//
// Ось "Z Axis" (рычаг управления двигателем, РУД) джойстика:
// Управляется колесом прокрутки любой мыши (при отжатой ALT)
// При отжатой ПКМ управляется с шагом 5/110 (22 деления)
// При зажатой ПКМ управляется с шагом 25/110 (4-5 делений)
// Центровка РУД не нужна, в Ил-2 тяга от 0% до 110% пишется текстом
//
// ============================================================
//
// Если выполняется первая итерация скрипта (starting = 1) при запуске
// или зажата клавиша [F12] (Keyboard.F12 = 1) для калибровки центра осей,
// то инициализируем параметры скрипта и центруем оси джойстика и трекира
if ((starting = 1) or (Keyboard.F12 = 1)) then begin
// ============================================================
// Настраиваемые параметры, которые можно изменить по желанию
// ============================================================

// Указываем желаемое количество итераций в секунду
PIE.FrameRate = 250;

// Указываем желаемую амплитуду движения мыши (в сантиметрах по горизонтали
// и по вертикали), которая будет соответствовать полному ходу осей
// джойстика и трекира, а так же полному ходу скорректированной позиции
// курсора относительно экрана при визуальной центровке осей джойстика.
// Для повышения разрешения и точности осей джойстика и трекира необходимо
// указать увеличенную амплитуду движения мышью (или завышенный dpi).
var.JoystickCentimetersDX := 5.08;
var.JoystickCentimetersDY := 2.85;
var.TrackIRCentimetersDX := 5.08;
var.TrackIRCentimetersDY := 2.85;

// Указываем реальный DPI сенсора мыши (количество точек на линейный дюйм).
// Возможные значения DPI: от 300 до 4000 (зависит от сенсора мыши).
// Для повышения разрешения и точности осей джойстика и трекирe необходимо
// использовать мышь с высоким dpi (или увеличить амплитуду движения мыши).
var.DotsPerInch := 1000.0;

// Указываем желаемое количество делений колеса прокрутки, которое будет
// соответствовать полному ходу осей Z (РУД) и U (скольжение) джойстика.
// Для управления тягой с шагом 5% в диапазоне от 0% до 110% необходимо
// указать 22 деления (110% / 5. Для повышения разрешения и точности осей
// Z и U необходимо указать увеличенное число делений колеса прокрутки.
var.PowerClicks := 22;
var.ZoomClicks := 24;

// Указываем желаемое количество секунд, которое будет соответствовать
// полному ходу осей при управлении ими с клавиатуры в режиме плавного
// триммирования без автовозврата.
var.KeyDeltaTime := 2.0;

// ============================================================
// Вычисляемые параметры
// ============================================================


// Переключаемся в режим пилотирования (клавотрекир + мышеджойстик)
var.Mode = 0;

// Инициализируем триммирование осей джойстика
var.TrimHorizontal := 0.0;
var.TrimVertical := 0.0;
var.TrimX := 0.0;
var.TrimY := 0.0;
var.TrimZ := 0.0;
var.TrimRZ := 0.0;
var.TrimZoom := 0.0;

// Инициализируем триммирование осей трекира
var.TrimYaw := 0.0;
var.TrimPitch := 0.0;
var.TrimRoll := 0.0;

// Триммируем первые 8 осей джойстика
PPJoy.Analog0 := var.TrimX;
PPJoy.Analog1 := var.TrimY;
PPJoy.Analog2 := var.TrimZ;
PPJoy.Analog3 := var.TrimRZ;
PPJoy.Analog4 := var.TrimZoom;
PPJoy.Analog5 := 0.0;
PPJoy.Analog6 := 0.0;
PPJoy.Analog7 := 0.0;

// Отжимаем первые 8 кнопок джойстика
PPJoy.Digital0 := 0;
PPJoy.Digital1 := 0;
PPJoy.Digital2 := 0;
PPJoy.Digital3 := 0;
PPJoy.Digital4 := 0;
PPJoy.Digital5 := 0;
PPJoy.Digital6 := 0;
PPJoy.Digital7 := 0;

// Триммируем 6 осей трекира
FakeTrackIR.Yaw = var.TrimYaw;
FakeTrackIR.Pitch = var.TrimPitch;
FakeTrackIR.Roll = var.TrimRoll;
FakeTrackIR.X = 0.0;
FakeTrackIR.Y = 0.0;
FakeTrackIR.Z = 0.0;
end else begin
// После нажатия клавиши [F9] переключаемся в режим пилотирования
// После нажатия клавиши [F10] переключаемся во вспомогательный режим
// После нажатия клавиши [F11] переключаемся в режим полета задом наперед
// Клавиша может быть отжата, но режим запоминается для следующих итераций
if (Key.F9 = 1) then var.Mode = 0;
if (Key.F10 = 1) then var.Mode = 1;
if (Key.F11 = 1) then var.Mode = 2;

// Считываем точные изменения осей мыши через DirectInput
// (используем RemoveUnits, чтобы единицы измерения не конвертировались)
var.MouseDeltaX = RemoveUnits(Delta(Mouse.DirectInputX));
var.MouseDeltaY = RemoveUnits(Delta(Mouse.DirectInputY));
var.MouseDeltaZ = (RemoveUnits(Delta(Mouse.DirectInputZ)) / 120);
var.MouseButton1 = RemoveUnits(Mouse.Button1);
var.MouseButton2 = RemoveUnits(Mouse.Button2);

// Если активен режим пилотирования и отжата клавиша [ALT],
// то любая мышь управляет джойстиком
if ((var.Mode = 0) and (Key.Alt = 0)) then begin
// ============================================================
// Эмулируем джойстик мышью (мышеджойстик)
// ============================================================

// Если мышь сдвинулась по горизонтали, то двигаем оси X и RZ
// (при неподвижной мыши оси X и RZ сохранят свое значение)
if (var.MouseDeltaX <> 0) then begin
// Суммируем относительные сдвиги мыши по горизонтали
// в масштабированное абсолютное значение в диапазоне [-1..+1]
var.TrimHorizontal := (var.TrimHorizontal + var.MouseSensX * var.MouseDeltaX);
if (var.TrimHorizontal < -1.0) then var.TrimHorizontal := -1.0;
if (var.TrimHorizontal > 1.0) then var.TrimHorizontal := 1.0;

// Если отжата правая кнопка мыши (ПКМ),
// то ось X мыши управляет осью X (элероны) джойстика
// (при зажатой ПКМ элероны сохраняют свое положение)
if (var.MouseButton2 = 0) then var.TrimX := var.TrimHorizontal;

// Если отжата левая кнопка мыши (ЛКМ),
// то ось X мыши управляет осью RZ (руль направления) джойстика
// (при зажатой ЛКМ руль направления сохраняет свое положение)
if (var.MouseButton1 = 0) then var.TrimRZ := var.TrimHorizontal;
end;

// Если мышь сдвинулась по вертикали, то двигаем ось Y (руль высоты)
// (при неподвижной мыши ось Y сохранит свое значение)
if (var.MouseDeltaY <> 0) then begin
// Суммируем относительные сдвиги мыши по вертикали
// в масштабированное абсолютное значение в диапазоне [-1..+1]
var.TrimVertical := (var.TrimVertical + var.MouseSensY * var.MouseDeltaY);
if (var.TrimVertical < -1.0) then var.TrimVertical := -1.0;
if (var.TrimVertical > 1.0) then var.TrimVertical := 1.0;

var.TrimY := var.TrimVertical;
end;

// Если колесо прокрутки сдвинулось, то двигаем ось Z (РУД)
// (при неподвижном колесе прокрутке ось Z сохранит свое значение)
if (var.MouseDeltaZ <> 0) then begin
// При зажатой ПКМ регулируем тягу в 5 раз быстрее
if (var.MouseButton2 = 1) then var.MouseDeltaZ = 5.0 * var.MouseDeltaZ;

// Суммируем относительные повороты колеса прокрутки
// в масштабированное абсолютное значение в диапазоне [-1..+1]
var.TrimZ := (var.TrimZ + var.MouseSensZ * var.MouseDeltaZ);
if (var.TrimZ < -1.0) then var.TrimZ := -1.0;
if (var.TrimZ > 1.0) then var.TrimZ := 1.0;
end;

// ============================================================


// ============================================================
// Режим пилотирования (клавотрекир + мышеджойстик)
// ============================================================
if (var.Mode = 0) then begin
// В режиме пилотирования клаводжойстик не используется,
// поэтому используем текущее затриммированное положение джойстика
var.JoyX := var.TrimX;
var.JoyY := var.TrimY;
var.JoyZ := var.TrimZ;
var.JoyRZ := var.TrimRZ;

// ============================================================

// ============================================================