Pull to refresh

Альтернативный метод ввода для Android OS

Reading time4 min
Views4.7K
StrokeIME - screenshot
Добрый день, уважаемое хабрасообщество!

Не претендуя на инновационность и революционность, хочу представить вам очередной метод ввода текста (IME) для OS Android. Я собирался сначала довести его до ума, а потом уже выложить на всеобщее обозрение, но до ума так и не довёл, а прятать надоело.

Этот пост — буквально премьера программы, до этого момента о ней знало всего с десяток человек. Надеюсь, широкая общественность не примет её в штыки.

Под катом — описание и ссылки. Деталей реализации сейчас приводить не буду — они не слишком мудрёные, да и некоторых необходимых нормальной мобильной клавиатуре функций пока недостаёт.


История


Идея метода родилась ещё три года назад, когда я наткнулся на какую-то клавиатуру (ещё под WM 2003), похожую на нынешний 8pen и показавшуюся мне чрезвычайно неудобной. Захотелось сделать что-нибудь своё, проще, быстрее, и «не как у них» :) Однако, дело тогда не зашло дальше нескольких подобных картинок для разных раскладок:
Прототип

Вновь напомнила мне о той идее публикация на хабре про 8pen: habrahabr.ru/blogs/android/107463, да и под Android хотелось попробовать что-нибудь написать. Результат можно видеть на скриншоте.

Как этим пользоваться


Вся область разделена на семь зон: три в верхнем ряду, три в нижнем, одна — в центре. В каждой зоне выписаны семь букв. Их расположение также соответствует зонам (три буквы в верхнем ряду, три в нижнем, одна — в центре). Чтобы ввести букву, надо поставить палец в ту зону, где эта буква нарисована, и, протащив в зону, которой соответствует расположение буквы внутри стартовой зоны, поднять палец.
Объяснение малопонятное, так что добавлю несколько примеров:
  • 'a' находится в центральной зоне, значит росчерк начинается в центре. В пределах центральной зоны буква 'a' расположена слева сверху. Таким образом, необходимый росчерк — из центра в левый верхний угол;
  • 'g' — из левого нижнего угла в центр;
  • '(' — из левого верхнего угла в правый нижний;
  • 'n' — кликнуть в правом нижнем углу;
  • пробел — кликнуть в центре.

Помимо обычных росчерков «из зоны — в зону», есть ещё росчерки «из зоны — в никуда». Они используются для переключения раскладок. В верхних трёх зонах тёмно-серыми буквами на фоне выписаны названия раскладок. Чтобы, например, переключиться на цифры, надо провести палец из левой верхней зоны за пределы клавиатуры. Обратное переключение осуществляется точно таким же жестом.

Дополнительные символы В данный момент имеются раскладки для русского и английского языков. Помимо этого, есть специальная раскладка, куда были помещены недостающие буквы украинского и беларусского алфавитов (правый верхний угол), языка Эсперанто (правый нижний угол) и буквы с диакритикой, присутствовавшие в стандартной клавиатуре (видимо, для немецкого и французского языков).

Составляя раскладки, я старался разместить буквы английского и русского алфавитов, похожие по начертанию или звучанию, на одинаковых местах. Дело в том, что расположить буквы в соответствии с какой-либо распространённой раскладкой здесь всё-равно не получится, так что от изучения нового расположения пользователя избавить невозможно, а так можно хотя бы облегчить это изучение и сократить путаницу. И всё же буквы расположены более-менее в соответствии с частотой использования: гласные сгруппированы в центре, часто используемые согласные доступны по одному клику или коротким росчерком по соседним зонам. Раскладка наверняка получилась далёкая от идеала, но всё же и не самая плохая.

Преимущества и недостатки по сравнению со стандартной клавиатурой


  • + проще попасть в нужную букву, особенно в портретном режиме. В метро/электричке это заметно;
  • + меньше места занимает на экране;
  • + можно печатать вслепую, смотря на вводимый текст, а не на клавиатуру;
  • + больше букв и знаков и быстрее доступ к редко используемым знакам;
  • — существенного ускорения набора скорее всего не будет, а поначалу — гарантированное замедление;
  • — в горизонтальном режиме пользоваться почти невозможно: слишком длинные росчерки.


Заключение и планы на будущее


Есть много изменений, которые хотелось бы реализовать в следующих версиях:
  • добавить поддержку автодополнения, пользовательского словаря (на запись и чтение) и автокапитализации (сам не пользуюсь, но функции почти стандартные, придётся делать);
  • реализовать модификаторы alt и ctrl для использования с ConnectBot'ом;
  • как-нибудь решить проблему с горизонтальным режимом, возможно, поделив в нём панель на две независимых;
  • мне понравился ввод цифр в стандартной клавиатуре, где при выведении пальца за её пределы появляется дополнительная панель с несколькими кнопками. Думаю, можно что-нибудь похожее и здесь реализовать.


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

Скачать apk можно здесь:
github.com/lxyd/StrokeIME/raw/master/StrokeIME.apk
А исходный код можно взять тут:
git clone github.com/lxyd/StrokeIME.git

Вот, в общем-то и всё. Хотелось бы услышать ваше мнение и конструктивную критику. Спасибо за внимание!

UPD: По просьбе kapji, добавляю скриншот русской раскладки. Заодно — в светлых тонах.
ru-light
Tags:
Hubs:
Total votes 62: ↑55 and ↓7+48
Comments49

Articles