О чем эта заметка.
В этой заметке вы не найдете рассуждений о целесообразности замены механических устройств ввода (клавиатура, мышь, планшеты, в будущем, возможно и сканеры) и вывода (мониторы) на некое универсальное мультитач-устройство. Так же, я не собираюсь рассматривать эволюционно-революционное изменение пользовательских интерфейсов. Думаю, гораздо более компетентные люди написали не одну статью по этим вопросам.
Прошу прощения у искушенных читателей, данный опус совсем не претендует на серьезную статью, написан фривольно и несколько профански, но все же, я хочу поделится некоторыми мыслями и, возможно, устроить дискуссию по этому поводу. Так же, к сожалению, пока нет возможности нарисовать парочку человеческих схем, вечером будут обязательно!
Преамбула (можно пропустить)
Основным недостатком мультитач-технологии (кроме цены и надежности, разумеется) считается отсутствие обратной связи. Если для небольших устройств, подобных КПК или смартфонам, проблема стоит не очень остро (хотя и существует: представим, насколько удобнее набирать номер телефона на ярком солнце с механической клавиатуры), то для больших устройств, вроде столов и панелей она довольна актуальна, и я постараюсь пояснить почему.
Я попытался поразмышлять на тему обратного отклика на примере будничной рутины простого программиста из две тысячи @$@#го года.
Итак, на дворе две тысячи @$@#й год. Злая корпорация N выкупила все патенты на мультитач (этого слова в статье будет еще много, прошу прощения) и резонно решила получать деньги, активно внедряя концепции мультитачевости во все UI, до которых может дотянуться. И даже в линейку своих IDE, Casual Studio, дизайнеры злобной корпорации внедрили новаторское управление. И вот, перед средним программистом Ровшаном, стоит задача ребром переучиваться на новый лад (или переходить на vim :) Ровшан прикупает себе сенсорную доску в ближайшем магазине и приступает к процессу обучения.
И тут Ровшан понимает, что писать код неприятно! Как часто наш герой в порыве архитекторской задумчивости держал пальцы на клавишах, прислушиваясь к мыслям в голове, легонько подавливая, но не нажимая их. А как же он любил поглаживать клавиатуру в размышлениях над кодом, нежно поводя рукой над ней и ощущая подушечками пальцев ее упругие клавиши… кхм, простите. Теперь же нужно держать руки над сенсорами, и не дай Бог случайно что-то нажмешь! А еще как тяжело стало писать слепым четырехпальцевым методом, все время приходится смотреть куда нажимаешь.
Как быть? У меня есть мысли. Разделю их на части.
Догоняем клавиатуру.
Задачи:
- получить тактильное ощущение нажатия клавиши от участка мультитача;
- при этом обязательно придать участку
многотыкамультитача некоторый запас упругости, что бы хоть немного уменьшить количество случайных нажатий; - учитывая что разрабатываем не модную клавиатуру а совершенно универсальный прибор.
Давайте поразмышляем. Понятно, что необходимо разделить рабочую поверхность на некоторое количество областей/ячеек, каждая из которых может принимать минимум 2 состояния: состояние возбуждения и состояние покоя. Понятно, что наиболее простой схемой является двухмерная матрица из большого числа квадратных ячеек (вид сверху)
Условная схема тактильной матрицы, пара скобок символизирует ячейку
[][][][][][][][][][]
[][][][][][][][][][]
[][][][][][][][][][]
[][][][][][][][][][]
[][][][][][][][][][]
[][][][][][][][][][]
[][][][][][][][][][]
Предположим, что у нас есть эластичный материал покрытия, на который непосредственно выводится изображение. Предлагаю подумать над вариантами реализации тактильных ощущений. Мне видится такая схема (вид сбоку в разрезе):
Состояние покоя
[][][][][][][][][][][][][][][][][][][][][][] эластичный слой с изображением в состоянии покоя
[][][][][][][][][][][][][][][][][][][][][][] управляющий слой
Состояние возбуждения некоторого участка
_____ [-][-][-][-]
[][][]___________ [][][][][][][][][][][][][] эластичный слой с возбужденным участком
[][][][+][+][+][+][][][][][][][][][][][][][] управляющий слой
Итак, мысль ясна, что же с реализацией. Есть несколько подходов: классический механический — каждая ячейка поднимается с помощью механики в каком-либо виде, например с помощью реле; электромагнитный — поднимаем ячейку магнитным полем;
multitouch API.
Мне кажется, с точки зрения программиста-пользователя тут ничего сложного нет, с матрицами все умеют работать. К тому же стандартные библиотеки виждетов могут относительно прозрачно поддерживать тактильный мультитач по умолчанию без лишних телодвижений программиста. Позже поясню на примере.
Хочу подвести краткий итог вышесказанному и сделать некоторые выводы:
- есть вполне реальная возможность прямо сейчас создать multitouch-устройство с тактильным откликом.
- так же, в некоторой мере решается проблема слепого управления и случайных нажатий
- для программиста-пользователя достаточно просто реализовать API для управления на уровне ОС либо отдельных библиотек
Какие проблемы могут поджидать:
- искажение изображения на устройстве: в возбужденном состоянии ячеек часть изображения может искажаться, либо при выводе изображения будут пустые участки на местах сгибов эластичного слоя.
- стандартизация и проблема разрешающей способности для ячеистого способа: физический размер ячейки и общее количество их на квадратную единицу устройства скорее всего необходимо будет вынести в стандарт.
- скорость перехода между состояниями ячейки: должна быть достаточно шустрой, почему — читайте далее.
- при матричном форм-факторе важно высокое разрежение «тактелей»-ячеек, иначе трюки с поворотом квадратных выступающих областей, скажем на 30 градусов не очень будут радовать хозяина устройства.
Перегоняем клавиатуру. Полет фантазии.
Буду сдерживать себя рамками краткости, иначе получится фантастический роман :) Привожу по мере интереса:
Один стол на 10 человек: кроме размеров устройства нас никто не ограничивает, мы можем «выпучить» хоть 10 клавиатур — хватит всем.
Библиотека виджетов ОС: теперь message box'ы вашей любимой ОС с сообщением о фатальной ошибке будут содержать выпуклую кнопку ОК :) Вы, наконец, сможете пощупать менюшку вашей ОС в прямом смысле.
Невообразимые элементы управления для приложения — никаких внешних устройств: ваша любимая стратегия теперь может выводить свою собственную невообразимую клавиатуру для игры, почему бы и нет? А кто мешает вам самим сделать пульт управления по собственному вкусу?
А теперь, пожалуйста, представьте это все в движении.
Благодарю вас за внимание.