Известно, что тач-скрин нужно калибровать. Ибо это штука аналоговая по сути, и при переводе нажатий "в цифру" неизбежны геометрические искажения. Простейшие искажения (сохраняющие прямые прямыми) можно разделить на "сдвиг", "масштаб", "перекос/поворот" и "трапеция". Простейшая функция калибровки, первой приходящая в голову, выглядит как линейная комбинация x и y, то есть x' = a·x + b·y; y' = c·x + d·y.
MS Win Mobile при калибровке экрана просит нажать на пять точек: четыре по углам и одну в центре. Это даже на одну больше чем необходимо знать для исправления всех перечисленных выше искажений. А теперь внимание, вопрос: что делать программисту, пишущему функцию калибровки, после того как он выяснил что приведенная выше простейшая (линейная) функция калибровки не может исправить искажения типа "трапеция" (не сохраняющие параллельность прямых)?
Казавшийся очевидным мне ответ: "добавить перекрестные члены вида C·x·y".
Решение от Микрософт: "всё равно использовать линейную функцию, при получающейся ошибке более допустимой считать тачпад не прошедшим калибровку и попросить нажать точки заново". И так в бесконечном цикле - то есть, если тачпад имеет чуть более чем ничтожные искажения типа "трапеция" - пользователя будут гонять по экрану калибровки вечно (а в сервисе предложат заменить экран).
Любопытно, что под Palm OS есть утилита, калибрующая тачпад аж по 100 точкам, то есть позволяющая нормально работать даже с полуубитым тачпадом, не то что со слегка перекошенным. Под винду же - только вопли о проблеме (а она существует), и решения вида "замена тачпада". Не думаю что из-за низкой квалификации пользователей винды - в форумах встречаются весьма низкоуровневые и нетривиальные решения виндовых проблем. Похоже из-за того, что работа с тачпадом (вместе с формулой) вшита так глубоко в пузо винды, что подобраться к ней не представляется возможным.
Пример два. В ранних партиях некоторых коммуникаторов одной известной фирмы (имён не называю чтобы не пугать народ - косяков у всех хватает, а в остальном там всё хорошо) часто "летели" динамики. А потом фирма приняла меры, и динамики лететь перестали. Внимание, вопрос - какие меры приняла фирма?
Казавшийся очевидным мне ответ: стали ставить другие динамики, чуть большей мощности.
Фирменное решение оказалось куда более простым: надо программно снизить громкость.
Правда, после этого пользователи стали жаловаться на низкую громкость, зато перестали приносить аппараты по гарантии, а это несомненно важнее для производителя. Но народ не успокоился, и выяснил. Что у этой серии на плате есть аж целый эквалайзер, и эквалайзер этот может не только регулировать тембр, но и (логично) громкость. Эквалайзер этот нигде не показан (в системе его как бы нет, штатно покрутить ручки нельзя), но винда при загрузке принудительно выставляет громкость "на два шага" ниже номинальной - чтобы не летели динамики. Ну, и тут же появилась утилита, при помощи которой любой пользователь сможет сжигать динамики наиболее эффективным способом :-)
И ещё одно забавное решение. Называется WiFi-рация. Программка, умеющая при нажатии кнопки и при наличии WiFi (или BT) соединения вещать (броадкастами, видимо) звук в эфир. Чтобы все остальные такие же программки, находящиеся в той же WiFi сети (в том числе в сети "точка-точка"), могли это слышать. То есть интерфейс - чисто как у раций: нажал, сказал, все услышали, никаких спецдействий (кроме запуска WiFi и собственно программы) не требуется.
Программка называется 4talk (последняя версия 1.4, есть версия 1.3 с "лекарством"), и радует именно тем, что работает сразу, без необходимости что-то там настраивать :-)
Вот такими разными бывают решения проблем в мире КПК.
Disclaimer: инфа не 100%: я не уверен что микрософт пользуется именно этой формулой, и я не могу утверждать что принудительное снижение громкости связано именно с вылетом динамиков. Но мои эксперименты с win mobile и результаты чтения форумов говорят о том, что очень похоже что так оно и есть.