Устройство ошибочно определяется как мышь с последовательным интерфейсом

Я работаю над устройством, которое связывается с ПК через (виртуальный) последовательный порт. Проблема в том, что данные, которые мы отправляем, иногда неправильно идентифицируются Windows как мышь шины, после чего загружается драйвер «Microsoft Serial Ballpoint», и указатель мыши начинает прыгать по экрану и случайным образом щелкать мышью.

Небольшой поиск в Google показывает, что это старая и хорошо известная проблема, связанная с устройствами с последовательным интерфейсом, где обычным решением является взлом реестра, чтобы отключить драйвер, вызывающий нарушение. Однако от наших пользователей требуется много, и я бы предпочел, чтобы наше приложение не возилось с реестром пользователя. Особенно, если исправление зависит от версии Windows, и пользователь вполне может использовать шинную мышь.

Вместо этого я хотел бы избежать проблемы, изменив наш протокол, чтобы не отправлять какие-либо данные, которые могут привести к ошибочной идентификации нас как мыши. Единственная проблема в том, что я не совсем уверен, каких шаблонов следует избегать. Очевидно, протокол Microsoft Mouse состоит из пакетов по четыре байта, где старший бит первого установлен, а последний трех - пуст.

Достаточно ли отправки только 7-битного ASCII? Есть ли еще какие-то устройства, которые меня могут определить как устройства?

36
задан doynax 10 February 2012 в 10:12
поделиться