"Проблема в том, что мышь использует относительные координаты" То что нужно! Можно было бы сделать так: Мышь своё положение изменяет (приходят данные о смещениях по осям) передаём это как сообщения джойстика (то есть рулим ). Как только такие данные прекращаются (или 0 по оси приходит, я не знаю как там это организованно), забываем про старый центр по оси и создаём новый (центруем соответсвующий руль). То есть "отпускание" джойстика аналогично прекращению движения мыши. Тогда например вираж будет состоять из короткого движения мыши в сторону (настраиваем элероны, кладём плоскости вертикально земле поддержании) и с относительным постоянством поддерживаем скорости движения мыши вверх (удерживаем вертикальный руль), а выход из виража - простая остановка мыши. То есть по сути получаем управление аналогичное клавиатурному (когда прекращение "сессии" нажатой клавиши рули автоцентровались), но с мышиной спсобностью к диференцированной чувствительности (сообщение клавы - нажато/ненажато, сответсвенно имеем единую чувствительность и резкие смены курса, сообщения мыши - какие-то числа по оси, то есть величина угла изменения курса может варьроваться в зависимости от корости передвижения мышки, таким образом мы получаем и интуитивную простоту центровки как на клаве и мягкость управления джойстика, долго же перемещать мышь в одном направлении придётся разве что при выполнении очень уж затяжной бочки или виража, в моей практике этого не случалось) Дело в том, что при сложном и непредсказуемом курсе (например при приследовании самолёта) нужно иметь интуитивную возможность выравнить рули и быстро (не теряя драгоценного времени на поиск центра мыши) переложиться на новый курс.
Я думаю что это проблему отключения мыши решить достаточно просто. Координаты от мыши надо учитывать в любом случае. А передавать их на оси джоя только в случае "вклюенной мыши". Таким образом, центр не будет сбиваться.
На самом деле проблема центрирования в большой степени надуманная (как мне видится с высоты моего изрядного опыта полетов на мышаке в птичках (без видимого курсора) ). Первоначально да, испытываешь некоторые неудобства, а потом просто по поведению самолета прекрасно чувствуешь положение органов управления.
Да, это все так. Но при одном условии. Что центр джойстика (мыши) соответствует приблизительно центру экрана. если же он после некоторых манипуляций съезжает на край, то это уже плохо. А при отключении мыши будет происходить именно это, если не продолжать обсчитывать координаты. Собственно это я и хочу сделать. Чтобы центровка не сбивалась
"центр джойстика (мыши) соответствует приблизительно центру экрана. если же он после некоторых манипуляций съезжает на край, то это уже плохо." А почему плохо? Я могу сильно ошибаться, но мне кажется, что в этом случае получится как раз то, что мне было нужно. Если я прав и это несложно может быть сделаешь оба варианта и с сохранением центра мыши и без (когда мышь общитывается с новым центром каждый раз после того как её остановишь, то есть центр сохраняется пока мышка двигается).
Можно было бы устанавливать новый центр, но только в случае если не сушествует граничных значений. А они всегда присутствуют, те которые задаешь при калибровке. Сместив центр к правой границе, свобода движения вправо будет ограничена расстоянием от нового центра до края области. Т.е. может получиться, что правый крен дать вообще не удасться.
А вообще я не очень понимаю проблему. Т.е. зачем обязательно нужно менять центровку. Почему нельзя скажем при отпущенной кнопке просто возращать управление в центральное положение? (MAP_JX=MA[M1]MX) либо оставлять его в последнем положении до нового нажатия? (MAP_JX=MN[M1]MX)
В первом случае получаю приблизительно следуюущее: перемещаю мышку с нажатой кнопкой влево (ложусь на крыло то есть), далее хочу стабилизировать своё положение и отпускаю кнопку (элероны центруются). Допустим потом мне потребуется выравнять самолёт, интуитивно снова зажимаю кнопку и двигаю мышку вправо - самолёт совершает резкий кувырок влево вокруг своей продольной оси. Дело в том, что я не отцентровал мышку, и в тот момент, когда нажал кнопку намереваясь повернуть элероны для правого манёвра, мышь имела уже какое-то (и довольно большое) отклонение влево от центра. Вообщем то чего я хотел избежать (обязанности центровать мышь) мне не только избежать не удалось, но наоборот, сделав центровку неочевидной лишь усугубил проблему и занял дефицитную кнопку (перемещая мышь без зажатой кнопки я лишаюсь возможности чувствовать положение своих рулей - результат вообще почти непредсказуем). Второй вариант, так же никак не решает поставленной задачи (избежать необходимости центровать мышь самому). Ясно, ну что ж, мне не повезло. В любом случае спасибо за внимание.
В общем, проблема ясна. Подумаю, что тут можно сделать. Насчет повезло, не повезло Я все-таки из исходников драйвер скомпилил а не из коробки вынул так что все можно сделать - переделать если действительно нужно
Хде? Как там с разработкой дела? Долголь исчо ждать? Уж больно в Иле колесико на газ повесить хоцца...
Еще немного Сейчас работаю надо поддержкой winXP и разных мышей. Следующая версия будет поддерживать: - WinXP - разные мыши - отключение-включение нажатием кнопки - инстал-package
А у меня все работает!!! 2 Ivan_004 У меня все работает: WinXP, беспроводная крыса - без проблем... P.S. ...я правда не сторонник замены джойстика мышью, но когда приспичет, то...
Я заканчиваю новый патч. Протестировал под XP - все нормально вроде, единственное, при добавлении девайса (в gaming options) сначала XP пытается ему поставить стандартный драйвер гейм-порта (hidgame), видимо потому что мой драйв не подписан. Приходится руками апдейтить драйвер. Под 2К сразу находит нужный драйвер. Мышь теперь тоже работает (точнее устанавливается) по-другому. Просто добавляется фильтр для класс-девайсов. Т.е. скорее всего должно работать с разными тапами мыши (в том числе USB) это надо еще тестировать. Работы много основной, так что мало времени Но уже скоро закончу. Перед установкой надо старый драйвер замочить, и драйвер мыши проапдейтить стандартным драйвером.